Δημιουργία ενημερώσεων κώδικα για την απλοποίηση των ενημερώσεων για τις λύσεις
Αν προσθέσετε μια οντότητα σε μια λύση και εξαγάγετε τη λύση, η οντότητα και όλα τα σχετικά πάγια στοιχεία εξάγονται σε αυτήν τη λύση. Αυτά τα πάγια στοιχεία περιλαμβάνουν χαρακτηριστικά, φόρμες, προβολές, σχέσεις και απεικονίσεις, καθώς και οποιαδήποτε άλλα πάγια στοιχεία που έχουν ομαδοποιηθεί στην οντότητα. Εάν εξαγάγετε όλα τα αντικείμενα, αυτό σημαίνει ότι μπορείτε να τροποποιήσετε ακούσια αντικείμενα στην ανάπτυξη-στόχο ή να μεταφέρετε μη σκόπιμες εξαρτήσεις.
Για να αντιμετωπίσετε αυτό το θέμα, μπορείτε να δημιουργήσετε και να δημοσιεύσετε ενημερώσεις κώδικα λύσης που περιέχουν δευτερεύοντα στοιχεία οντοτήτων και όχι να δημοσιεύσετε ολόκληρη την οντότητα και όλα τα πάγια στοιχεία της. Η αρχική λύση και μία ή περισσότερες σχετικές ενημερώσεις κώδικα μπορούν να συναθροιστούν (να συγχωνευθούν) σε μεταγενέστερη χρονική στιγμή σε μια ενημερωμένη έκδοση της λύσης, η οποία, στη συνέχεια, μπορεί να αντικαταστήσει την αρχική λύση στον οργανισμό-στόχο Microsoft Dataverse.
Ενημερώσεις κώδικα
Μπορείτε να εφαρμόσετε ενημερώσεις κώδικα είτε σε διαχειριζόμενες είτε σε μη διαχειριζόμενες λύσεις και να συμπεριλάβετε μόνο τις αλλαγές σε οντότητες και στα σχετικά πάγια στοιχεία οντότητας. Οι ενημερώσεις κώδικα δεν περιέχουν στοιχεία του συστήματος που δεν έχουν προσαρμοστεί ή σχέσεις που εξαρτώνται από αυτά, επειδή αυτά τα στοιχεία υπάρχουν ήδη στον οργανισμό όπου έχουν αναπτυχθεί. Σε κάποιο σημείο του κύκλου ανάπτυξής σας, μπορείτε να συναθροίσετε όλες τις ενημερώσεις κώδικα σε μια νέα έκδοση λύσης για να αντικαταστήσετε την αρχική λύση από την οποία δημιουργήθηκαν οι ενημερώσεις κώδικα.
Οι ενημερώσεις κώδικα αποθηκεύονται στη βάση δεδομένων του Dataverse ως καρτέλες οντότητας Solution
. Ένα χαρακτηριστικό ParentSolutionId
που δεν είναι null υποδεικνύει ότι η λύση είναι μια ενημέρωση κώδικα. Μπορείτε να δημιουργήσετε και να διαχειριστείτε ενημερώσεις κώδικα μέσω SDK για .NET ή των API Web, τα οποία είναι χρήσιμα για την ανάπτυξη αυτοματοποίησης, όπως μια δέσμη ενεργειών εγκατάστασης προϊόντος. Ωστόσο, η εφαρμογή Web Dataverse παρέχει διάφορες φόρμες Web που σας δίνουν τη δυνατότητα να δημιουργείτε και να διαχειρίζεστε διαδραστικά τις ενημερώσεις κώδικα.
Οι ενημερώσεις κώδικα μπορούν να δημιουργηθούν μόνο από μια γονική λύση χρησιμοποιώντας το CloneAsPatchRequest ή το Ενέργεια CloneAsPatch.
Η γονική ενημέρωση κώδικα δεν μπορεί να είναι ενημέρωση κώδικα.
Οι ενημερώσεις κώδικα μπορούν να έχουν μόνο μία γονική λύση.
Μια ενημέρωση κώδικα δημιουργεί μια εξάρτηση (σε επίπεδο λύσης) στη γονική της λύση.
Μπορείτε να εγκαταστήσετε μια ενημερωμένη έκδοση κώδικα μόνο εάν η γονική λύση είναι παρούσα.
Δεν μπορείτε να εγκαταστήσετε μια ενημέρωση κώδικα, εκτός εάν το μοναδικό όνομα και ο αριθμός κύριας/δευτερεύουσας έκδοσης της γονικής λύσης, όπως προσδιορίζεται από το
ParentSolutionId
, δεν συμφωνούν με εκείνα της γονικής λύσης που έχει εγκατασταθεί στον οργανισμό-στόχο.Μια έκδοση ενημέρωσης κώδικα πρέπει να έχει τον ίδιο κύριο και δευτερεύοντα αριθμό, αλλά υψηλότερο αριθμό δόμησης και έκδοσης, από τον αριθμό έκδοσης της γονικής λύσης. Το εμφανιζόμενο όνομα μπορεί να είναι διαφορετικό.
Εάν μια λύση έχει ενημερώσεις κώδικα, οι επόμενες ενημερώσεις κώδικα πρέπει να έχουν έναν αριθμητικά υψηλότερο αριθμό έκδοσης από οποιαδήποτε υπάρχουσα ενημέρωση κώδικα για αυτήν τη λύση.
Οι ενημερώσεις κώδικα υποστηρίζουν τις ίδιες λειτουργίες με τις λύσεις, όπως πρόσθετη ενημέρωση, αλλά όχι κατάργηση. Δεν μπορείτε να καταργήσετε στοιχεία από μια λύση χρησιμοποιώντας μια ενημέρωση κώδικα. Για να καταργήσετε στοιχεία από μια λύση, εκτελέστε μια αναβάθμιση.
Οι ενημερώσεις κώδικα που έχουν εξαχθεί ως διαχειριζόμενες πρέπει να εισαχθούν πάνω από μια διαχειριζόμενη γονική λύση. Ο κανόνας είναι ότι η προστασία των ενημερώσεων κώδικα (διαχειριζόμενη ή μη διαχειριζόμενη) πρέπει να ταιριάζει με τη γονική της.
Μην χρησιμοποιείτε μη διαχειριζόμενες ενημερωμένες εκδόσεις κώδικα για σκοπούς παραγωγής.
Οι ενημερώσεις κώδικα υποστηρίζονται μόνο στους οργανισμούς Dataverse έκδοσης 8.0 ή νεότερης έκδοσης.
Τα εργαλεία SolutionPackager και PackageDeployer σε αυτήν την έκδοση υποστηρίζουν τις ενημερώσεις κώδικα λύσεων. Ανατρέξτε στην ηλεκτρονική βοήθεια του εργαλείου για οποιεσδήποτε επιλογές της γραμμής εντολών που σχετίζονται με τις ενημερώσεις κώδικα.
Δημιουργία ενημέρωσης κώδικα
Δημιουργήστε μια ενημέρωση κώδικα από μια μη διαχειριζόμενη λύση σε έναν οργανισμό με χρήση του μηνύματος CloneAsPatchRequest ή του CloneAsPatch Action ή χρησιμοποιώντας την εφαρμογή Web. Μόλις δημιουργήσετε την ενημέρωση κώδικα, η αρχική λύση κλειδώνεται και δεν μπορείτε να την αλλάξετε ή να την εξαγάγετε για όσο διάστημα υπάρχουν εξαρτώμενες ενημερώσεις κώδικα που υπάρχουν στον οργανισμό και προσδιορίζουν τη λύση ως γονική λύση. Η έκδοση ενημέρωσης κώδικα είναι παρόμοια με την έκδοση λύσης και η οποία καθορίζεται με την ακόλουθη μορφή: major.minor.build.release. Κατά τη δημιουργία μιας ενημέρωσης κώδικα, δεν μπορείτε να κάνετε αλλαγές στις υπάρχουσες κύριες ή δευτερεύουσες εκδόσεις μεγάλων λύσεων.
Εισαγωγή και εξαγωγή μιας ενημέρωσης κώδικα
Μπορείτε να χρησιμοποιήσετε SDK για .NET ή τα API Web, την εφαρμογή Web ή το εργαλείο Package Deployer για την εξαγωγή και την εισαγωγή μιας ενημέρωσης κώδικα. Οι σχετικές κλάσεις αιτήματος SDK για .NET είναι ImportSolutionRequest και ExportSolutionRequest. Οι σχετικές ενέργειες για το API Web είναι η Ενέργεια ImportSolution και η Ενέργεια ExportSolution.
Παραδείγματα ενημέρωσης κώδικα
Ο παρακάτω πίνακας παραθέτει τις λεπτομέρειες ενός παραδείγματος ενημέρωσης κώδικα. Λάβετε υπόψη σας ότι σε αυτό το παράδειγμα, η λύση και οι ενημερώσεις κώδικα έχουν εισαχθεί με αριθμητική σειρά και είναι αθροιστικές, το οποίο συνάδει με την εισαγωγή λύσης σε γενικά γραμμές.
Όνομα ενημέρωσης κώδικα | Περιγραφή |
---|---|
Λύση, έκδοση 1.0 (μη διαχειριζόμενη) | Περιέχει την entityA με 6 πεδία. |
Λύση, έκδοση 1.0.1.0 (μη διαχειριζόμενη) | Περιέχει την entityA με 6 πεδία (3 ενημερωμένα) και προσθέτει την entityB με 10 πεδία. |
Λύση, έκδοση 1.0.2.0 (μη διαχειριζόμενη) | Περιέχει την entityC με 10 πεδία. |
Η διαδικασία εισαγωγής είναι η εξής.
Ο προγραμματιστής ή ο υπεύθυνος προσαρμογής εισάγει πρώτα τη βασική λύση (SolutionA 1.0) στον οργανισμό. Το αποτέλεσμα είναι η entityA με 6 πεδία στον οργανισμό.
Έπειτα, η ενημέρωση κώδικα SolutionA 1.0.1.0 εισάγεται. Ο οργανισμός πλέον περιέχει την entityA με 6 πεδία (3 έχουν ενημερωθεί), συν την entityB με 10 πεδία.
Τέλος, η ενημέρωση κώδικα SolutionA 1.0.2.0 εισάγεται. Ο οργανισμός πλέον περιέχει την entityA με 6 πεδία (3 έχουν ενημερωθεί), την entityB με 10 πεδία, συν την entityC με 10 πεδία.
Ακολουθεί ένα ακόμη παράδειγμα ενημέρωσης κώδικα
Ρίξτε μια ματιά σε ένα άλλο παράδειγμα ενημέρωσης κώδικα, με τις λεπτομέρειες που παρατίθενται στον πίνακα που ακολουθεί.
Όνομα ενημέρωσης κώδικα | Περιγραφή |
---|---|
SolutionA, έκδοση 1.0 (μη διαχειριζόμενη, βασική λύση) | Περιέχει την οντότητα Account , στην οποία το μήκος του πεδίου "Αριθμός λογαριασμού" προσαρμόζεται από 20 σε 30 χαρακτήρες. |
SolutionB, έκδοση 2.0 (μη διαχειριζόμενη, διαφορετικός πωλητής) | Περιέχει την οντότητα Account , στην οποία το μήκος του πεδίου "Αριθμός λογαριασμού" προσαρμόζεται σε 50 χαρακτήρες. |
Λύση, έκδοση 1.0.1.0 (μη διαχειριζόμενη, ενημέρωση κώδικα) | Περιέχει μια ενημέρωση για την οντότητα Account , στην οποία το μήκος του πεδίου "Αριθμός λογαριασμού" προσαρμόζεται σε 35 χαρακτήρες. |
Η διαδικασία εισαγωγής είναι η εξής:
Ο προγραμματιστής ή ο υπεύθυνος προσαρμογής εισάγει πρώτα τη βασική λύση (SolutionA 1.0) στον οργανισμό. Το αποτέλεσμα είναι μια οντότητα
Account
με πεδίο "Αριθμός λογαριασμού" 30 χαρακτήρων.Η SolutionB εισάγεται. Ο οργανισμός τώρα περιέχει μια οντότητα
Account
με πεδίο "Αριθμός λογαριασμού" 50 χαρακτήρων.Η ενημερωμένη έκδοση κώδικα SolutionA 1.0.1.0 εισάγεται. Ο οργανισμός ακόμα περιέχει μια οντότητα
Account
με πεδίο "Αριθμός λογαριασμού" 50 χαρακτήρων, όπως εφαρμόζεται από τη SolutionB.Καταργείται η εγκατάσταση της SolutionB. Ο οργανισμός τώρα περιέχει μια οντότητα
Account
με πεδίο "Αριθμός λογαριασμού" 35 χαρακτήρων, όπως εφαρμόζεται από την ενημέρωση κώδικα SolutionA 1.0.1.0.
Διαγραφή ενημέρωσης κώδικα
Μπορείτε να διαγράψετε μια ενημέρωση κώδικα ή μια βασική λύση (γονική) χρησιμοποιώντας το DeleteRequest ή, για το API Web, χρησιμοποιήστε τη μέθοδο HTTP DELETE
. Η διαδικασία διαγραφής είναι διαφορετική για μια διαχειριζόμενη ή μη διαχειριζόμενη λύση, η οποία περιλαμβάνει μία ή περισσότερες ενημερώσεις κώδικα που υπάρχουν στον οργανισμό.
Για μια μη διαχειριζόμενη λύση, θα πρέπει πρώτα να καταργήσετε την εγκατάσταση όλων των ενημερώσεων κώδικα στη βασική λύση, στη σειρά αντίστροφης έκδοσης που δημιουργήθηκαν, πριν από την κατάργηση της εγκατάστασης της βασικής λύσης.
Για μια διαχειριζόμενη λύση, απλά καταργήστε την εγκατάσταση της βασικής λύσης. Το σύστημα του Dataverse καταργήσει αυτόματα την εγκατάσταση των ενημερώσεων κώδικα με τη σειρά αντίστροφης έκδοσης πριν από την κατάργηση της εγκατάστασης της βασικής λύσης. Μπορείτε, επίσης, να καταργήσετε απλώς την εγκατάσταση μίας μόνο ενημέρωσης κώδικα.
Ενημέρωση λύσης
Η ενημέρωση μιας λύσης προϋποθέτει την συνάθροιση (συγχώνευση) όλων των ενημερώσεων κώδικα σε αυτήν τη λύση σε μια νέα έκδοση της λύσης. Στη συνέχεια, αυτή η λύση ξεκλειδώνεται και μπορεί για άλλη μια φορά να τροποποιηθεί (μη διαχειριζόμενη λύση μόνο) ή να εξαχθεί. Για μια διαχειριζόμενη λύση, δεν επιτρέπονται περαιτέρω τροποποιήσεις της λύσης εκτός από τη δημιουργία επιδιορθώσεων από την πρόσφατα ενημερωμένη λύση. Για τη συνάθροιση ενημερώσεων κώδικα σε μια μη διαχειριζόμενη λύση, χρησιμοποιήστε το CloneAsSolutionRequest ή την Ενέργεια CloneAsSolution. Η κλωνοποίηση μιας λύσης δημιουργεί μια νέα έκδοση της μη διαχειριζόμενης λύσης, που ενσωματώνει όλες τις ενημερώσεις κώδικα, με υψηλότερο αριθμό έκδοσης major.minor, το ίδιο μοναδικό όνομα και ένα εμφανιζόμενο όνομα.
Για μια διαχειριζόμενη λύση τα πράγματα αντιμετωπίζονται ελαφρώς διαφορετικά. Μπορείτε πρώτα να κλωνοποιήσουν μια μη διαχειριζόμενη λύση (Α), ενσωματώνοντας όλες ενημερώσεις κώδικα και, στη συνέχεια, εξάγοντάς της ως διαχειριζόμενη λύση (Β). Στον οργανισμό-στόχο που περιέχει τη διαχειριζόμενη έκδοση της λύσης (A) και των ενημερώσεων κώδικα, εισάγετε τη διαχειριζόμενη λύση (B) και μετά εκτελείτε το DeleteAndPromoteRequest ή την Ενέργεια DeleteAndPromote για να αντικαταστήσετε τη διαχειριζόμενη λύση (A) και τις ενημερώσεις κώδικά της με την αναβαθμισμένη διαχειριζόμενη λύση (B) που έχει υψηλότερο αριθμό έκδοσης.