Γρήγορη επισκόπηση του Dynamics AX 2012 SysOperation Framework
Δημοσιεύθηκε: 15 Φεβρουαρίου 2025 στις 10:33:07 μ.μ. UTC
Τελευταία ενημέρωση: 12 Ιανουαρίου 2026 στις 8:38:47 π.μ. UTC
Αυτό το άρθρο παρέχει μια γρήγορη επισκόπηση (ή ένα σύντομο οδηγό) σχετικά με τον τρόπο υλοποίησης κλάσεων επεξεργασίας και εργασιών δέσμης στο πλαίσιο SysOperation στο Dynamics AX 2012 και στο Dynamics 365 for Operations.
Dynamics AX 2012 SysOperation Framework Quick Overview
Οι πληροφορίες σε αυτήν την ανάρτηση βασίζονται στο Dynamics AX 2012 R3. Ενδέχεται να ισχύουν ή όχι για άλλες εκδόσεις. (Ενημέρωση: Μπορώ να επιβεβαιώσω ότι οι πληροφορίες σε αυτό το άρθρο ισχύουν επίσης για το Dynamics 365 for Operations)
Αυτή η ανάρτηση προορίζεται απλώς ως μια γρήγορη επισκόπηση και ένα σύντομο οδηγό. Εάν είστε νέοι στο πλαίσιο SysOperation, σας προτείνω ανεπιφύλακτα να διαβάσετε και τη λευκή βίβλο της Microsoft σχετικά με το θέμα. Οι πληροφορίες εδώ μπορεί να είναι χρήσιμες εάν χρειάζεστε απλώς μια γρήγορη ενημέρωση σχετικά με τις διαφορετικές κλάσεις που εμπλέκονται στην ανάπτυξη λειτουργιών με αυτό το πλαίσιο.
Υπάρχουν παραλλαγές, αλλά όταν χρησιμοποιώ το πλαίσιο συνήθως υλοποιώ τρεις κλάσεις:
- Σύμβαση δεδομένων (θα πρέπει να επεκτείνει το SysOperationDataContractBase)
- Υπηρεσία (θα πρέπει να επεκτείνει το SysOperationServiceBase)
- Ελεγκτής (πρέπει να επεκτείνει το SysOperationServiceController)
Επιπλέον, μπορώ επίσης να υλοποιήσω μια κλάση UIBuilder (πρέπει να επεκτείνει το SysOperationUIBuilder), αλλά αυτό είναι απαραίτητο μόνο εάν το παράθυρο διαλόγου για κάποιο λόγο πρέπει να είναι πιο προηγμένο από αυτό που δημιουργεί αυτόματα το πλαίσιο.
Σύμβαση δεδομένων
Η σύμβαση δεδομένων περιέχει τα μέλη δεδομένων που απαιτούνται για τη λειτουργία σας. Μπορεί να συγκριθεί με την τυπική μακροεντολή CurrentList που ορίζεται στο πλαίσιο RunBase, αλλά υλοποιείται ως κλάση. Η σύμβαση δεδομένων θα πρέπει να επεκτείνει το SysOperationDataContractBase, αλλά θα λειτουργήσει ακόμα κι αν δεν το κάνει. Το πλεονέκτημα της επέκτασης της υπερκλάσης είναι ότι παρέχει ορισμένες πληροφορίες περιόδου λειτουργίας που μπορεί να είναι χρήσιμες.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Σε αυτό το παράδειγμα, το itemId είναι ένα μέλος δεδομένων. Πρέπει να εφαρμόσετε μια μέθοδο parm για κάθε μέλος δεδομένων και να του προσθέσετε την ετικέτα DataMemberAttribute, ώστε το πλαίσιο να γνωρίζει τι είναι. Αυτό επιτρέπει στο πλαίσιο να δημιουργεί αυτόματα το παράθυρο διαλόγου για εσάς.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Υπηρεσία
Η κλάση υπηρεσιών είναι η κλάση που περιέχει την πραγματική επιχειρηματική λογική. Δεν ασχολείται με την εμφάνιση διαλόγων, την επεξεργασία παρτίδας ή οτιδήποτε τέτοιο – αυτή είναι ευθύνη της κλάσης ελεγκτή. Διαχωρίζοντας αυτό, είναι πιο πιθανό να σχεδιάσετε καλά τον κώδικά σας και να δημιουργήσετε πιο επαναχρησιμοποιήσιμο κώδικα.
Όπως και η κλάση σύμβασης δεδομένων, η κλάση υπηρεσίας δεν χρειάζεται να κληρονομήσει από κάτι συγκεκριμένο, αλλά θα πρέπει να κληρονομήσει από την κλάση SysOperationServiceBase, τουλάχιστον αν αναμένετε ότι η υπηρεσία θα εκτελεστεί ως μαζική εργασία, καθώς η υπερκλάση παρέχει ορισμένες πληροφορίες σχετικά με το περιβάλλον της μαζικής εκτέλεσης. Η μέθοδος που ξεκινά τη λειτουργία (δηλαδή εκτελεί την επιχειρηματική λογική) πρέπει να λάβει ένα αντικείμενο της κλάσης σύμβασης δεδομένων σας ως είσοδο και θα πρέπει να διακοσμηθεί με το [SysEntryPointAttribute]. Για παράδειγμα:
{
}
Με μια μέθοδο που ονομάζεται run:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Ελεγκτής
Η κλάση ελεγκτή χειρίζεται την εκτέλεση και την μαζική επεξεργασία της λειτουργίας σας. Επίσης, διασφαλίζει ότι ο κώδικας εκτελείται σε CIL για μέγιστη απόδοση. Η κλάση ελεγκτή συνήθως κληρονομεί από την κλάση SysOperationServiceController, αν και υπάρχουν και άλλες επιλογές.
{
}
Ο κατασκευαστής της υπερκλάσης δέχεται ως παραμέτρους ένα όνομα κλάσης, ένα όνομα μεθόδου και (προαιρετικά) έναν τρόπο εκτέλεσης. Τα ονόματα κλάσης και μεθόδου θα πρέπει να είναι το όνομα της κλάσης υπηρεσίας σας και της μεθόδου που θα πρέπει να εκτελεστεί σε αυτήν. Έτσι, μπορείτε να υλοποιήσετε τη μέθοδο κατασκευής του ελεγκτή σας ως εξής:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Τότε η μέθοδος main της κλάσης MyController μπορεί να είναι τόσο απλή όσο
{
;
MyController::construct().startOperation();
}
Και ουσιαστικά τελειώσατε. Τα παραπάνω είναι προφανώς ένα πολύ απλό παράδειγμα και το πλαίσιο περιέχει μια πληθώρα άλλων επιλογών και δυνατοτήτων, αλλά αυτό χρησιμεύει ως μια γρήγορη επισκόπηση αν χρειάζεστε μια ανανέωση όταν δεν έχετε χρησιμοποιήσει το πλαίσιο για κάποιο χρονικό διάστημα.
Περαιτέρω ανάγνωση
Αν σας άρεσε αυτή η ανάρτηση, ίσως σας αρέσουν και αυτές οι προτάσεις:
- Διαγραφή Νομικής οντότητας (Εταιρικοί Λογαριασμοί) στο Dynamics AX 2012
- Κλήση υπηρεσιών εγγράφων AIF απευθείας από την X++ στο Dynamics AX 2012
- Μορφοποίηση συμβολοσειρών με Macro και strFmt στο Dynamics AX 2012
