Miklix

Γρήγορη επισκόπηση του Dynamics AX 2012 SysOperation Framework

Δημοσιεύθηκε: 15 Φεβρουαρίου 2025 στις 10:33:07 μ.μ. UTC
Τελευταία ενημέρωση: 15 Φεβρουαρίου 2025 στις 10:34:30 μ.μ. 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, αλλά θα λειτουργήσει ακόμα κι αν δεν το κάνει. Το πλεονέκτημα της επέκτασης της super class είναι ότι παρέχει ορισμένες πληροφορίες συνεδρίας που μπορεί να είναι χρήσιμες.

[DataContractAttribute]
class MyDataContract extends SysOperationDataContractBase
{
    ItemId itemId;
}

Σε αυτό το παράδειγμα, το itemId είναι μέλος δεδομένων. Πρέπει να εφαρμόσετε μια μέθοδο parm για κάθε μέλος δεδομένων και να προσθέσετε ετικέτα με το DataMemberAttribute, ώστε το πλαίσιο να γνωρίζει τι είναι. Αυτό επιτρέπει στο πλαίσιο να δημιουργεί αυτόματα το παράθυρο διαλόγου για εσάς.

[DataMemberAttribute]
public ItemId parmItemId(ItemId _itemId = itemId)
{
    ;

    itemId = _itemId;
    return itemId;
}


Υπηρεσία

Η κλάση υπηρεσιών είναι η κλάση που περιέχει την πραγματική επιχειρηματική λογική. Δεν ασχολείται με την εμφάνιση διαλόγων, τη μαζική επεξεργασία ή οτιδήποτε άλλο τέτοιου είδους – αυτό είναι ευθύνη της κλάσης ελεγκτή. Διαχωρίζοντας αυτό, είναι πιο πιθανό να σχεδιάσετε καλά τον κώδικά σας και να κάνετε πιο επαναχρησιμοποιήσιμο κώδικα.

Όπως και η κλάση συμβάσεων δεδομένων, η κλάση υπηρεσιών δεν χρειάζεται να κληρονομήσει από τίποτα συγκεκριμένο, αλλά θα πρέπει να κληρονομήσει από την κλάση SysOperationServiceBase, τουλάχιστον αν αναμένετε ότι η υπηρεσία θα εκτελεστεί ως εργασία δέσμης, καθώς η υπερκλάση παρέχει ορισμένες πληροφορίες σχετικά με το πλαίσιο παρτίδας. Η μέθοδος που ξεκινά τη λειτουργία (δηλαδή εκτελεί την επιχειρηματική λογική) πρέπει να λάβει ως είσοδο ένα αντικείμενο της κλάσης του συμβολαίου δεδομένων και θα πρέπει να διακοσμηθεί με το [SysEntryPointAttribute]. Για παράδειγμα:

class MyService extends SysOperationServiceBase
{
}

με μια μέθοδο που ονομάζεται run:

[SysEntryPointAttribute]
public void run(MyDataContract _dataContract)
{
    // run business logic here
}


Ελεγκτής

Η κλάση ελεγκτή χειρίζεται την εκτέλεση και τη μαζική επεξεργασία της λειτουργίας σας. Διασφαλίζει επίσης ότι ο κώδικας εκτελείται σε CIL για μέγιστη απόδοση. Η κλάση ελεγκτή συνήθως κληρονομείται από την κλάση SysOperationServiceController, αν και υπάρχουν και άλλες επιλογές.

class MyController extends SysOperationServiceController
{
}

Ο κατασκευαστής της super class παίρνει ως παραμέτρους ένα όνομα κλάσης, όνομα μεθόδου και (προαιρετικά) τρόπο εκτέλεσης. Τα ονόματα κλάσεων και μεθόδων πρέπει να είναι το όνομα της κλάσης υπηρεσίας και η μέθοδος που πρέπει να εκτελείται σε αυτήν. Έτσι, μπορείτε να εφαρμόσετε τη μέθοδο κατασκευής του ελεγκτή σας ως εξής:

public static MyController construct()
{
    ;

    return new MyController(classStr(MyService),
    methodStr(MyService, run));
}

Τότε η κύρια μέθοδος της κλάσης MyController μπορεί να είναι τόσο απλή

public static void main(Args _args)
{
    ;

    MyController::construct().startOperation();
}

Και ουσιαστικά τελείωσες. Το παραπάνω είναι προφανώς ένα πολύ απλό παράδειγμα και το πλαίσιο περιέχει μια πληθώρα άλλων επιλογών και δυνατοτήτων, αλλά αυτό χρησιμεύει ως μια γρήγορη επισκόπηση εάν χρειάζεστε ένα πινέλο όταν δεν έχετε χρησιμοποιήσει το πλαίσιο για λίγο.

Μοιραστείτε το στο BlueskyΚοινή χρήση στο FacebookΚοινοποίηση στο LinkedInΜοιραστείτε το στο TumblrΚοινοποίηση στο XΚοινοποίηση στο LinkedInΚαρφιτσώστε στο Pinterest

Μίκελ Μπανγκ Κρίστενσεν

Σχετικά με τον συγγραφέα

Μίκελ Μπανγκ Κρίστενσεν
Ο Μιχαήλ είναι ο δημιουργός και ιδιοκτήτης του miklix.com. Έχει πάνω από 20 χρόνια εμπειρίας ως επαγγελματίας προγραμματιστής υπολογιστών/προγραμματιστής λογισμικού και σήμερα εργάζεται με πλήρη απασχόληση σε μια μεγάλη ευρωπαϊκή εταιρεία πληροφορικής. Όταν δεν ασχολείται με το ιστολόγιο, αφιερώνει τον ελεύθερο χρόνο του σε ένα ευρύ φάσμα ενδιαφερόντων, χόμπι και δραστηριοτήτων, τα οποία μπορεί σε κάποιο βαθμό να αντικατοπτρίζονται στην ποικιλία των θεμάτων που καλύπτονται σε αυτόν τον ιστότοπο.