Hitri pregled Dynamics AX 2012 SysOperation Framework
Objavljeno: 15. februar 2025 ob 10:35:42 pop. UTC
Nazadnje posodobljeno: 12. januar 2026 ob 8:39:07 dop. UTC
Ta članek ponuja hiter pregled (ali preglednico) o tem, kako implementirati razrede obdelave in paketna opravila v ogrodju SysOperation v programih Dynamics AX 2012 in Dynamics 365 for Operations.
Dynamics AX 2012 SysOperation Framework Quick Overview
Informacije v tej objavi temeljijo na programu Dynamics AX 2012 R3. Morda veljajo za druge različice, morda pa tudi ne. (Posodobitev: Lahko potrdim, da so informacije v tem članku veljavne tudi za Dynamics 365 for Operations.)
Ta objava je mišljena le kot hiter pregled in pregled. Če ste novi v svetu ogrodja SysOperation, vam toplo priporočam, da preberete tudi Microsoftovo belo knjigo na to temo. Informacije v tem dokumentu vam bodo morda v pomoč, če se boste le na hitro seznanili z različnimi razredi, ki sodelujejo pri razvoju operacij s tem ogrodjem.
Obstajajo različice, vendar ko uporabljam ogrodje, običajno implementiram tri razrede:
- Podatkovna pogodba (naj bi razširila SysOperationDataContractBase)
- Storitev (naj razširi SysOperationServiceBase)
- Krmilnik (mora razširiti SysOperationServiceController)
Poleg tega lahko implementiram tudi razred UIBuilder (mora razširiti SysOperationUIBuilder), vendar je to potrebno le, če mora biti pogovorno okno iz nekega razloga naprednejše od tistega, kar ogrodje ustvari samodejno.
Pogodba o podatkih
Podatkovna pogodba vsebuje podatkovne člane, potrebne za vaše delovanje. Primerjamo jo lahko s tipičnim makrom CurrentList, definiranim v ogrodju RunBase, vendar je implementirana kot razred. Podatkovna pogodba bi morala razširjati SysOperationDataContractBase, vendar bo delovala tudi, če ne bo. Prednost razširitve nadrazreda je, da zagotavlja nekatere informacije o seji, ki so lahko koristne.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
V tem primeru je itemId podatkovni član. Za vsak podatkovni član morate implementirati metodo parm in ga označiti z DataMemberAttribute, da ogrodje ve, kaj je to. To ogrodju omogoča, da samodejno zgradi pogovorno okno namesto vas.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Storitev
Razred storitev je razred, ki vsebuje dejansko poslovno logiko. Ne ukvarja se s prikazovanjem pogovornih oken, paketno obdelavo ali čimer koli podobnim – to je odgovornost razreda krmilnika. Z ločitvijo tega je večja verjetnost, da boste dobro oblikovali svojo kodo in ustvarili več kode za ponovno uporabo.
Tako kot razred podatkovnih pogodb tudi razred storitev ne deduje od ničesar posebnega, vendar bi moral dedovati od razreda SysOperationServiceBase, vsaj če pričakujete, da se bo storitev izvajala kot paketno opravilo, saj nadrejeni razred zagotavlja nekaj informacij o paketnem kontekstu. Metoda, ki zažene operacijo (tj. izvede poslovno logiko), mora kot vhod sprejeti objekt vašega razreda podatkovnih pogodb in mora biti okrašena z [SysEntryPointAttribute]. Na primer:
{
}
Z metodo, imenovano run:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Krmilnik
Razred krmilnika upravlja izvajanje in paketno obdelavo vaše operacije. Prav tako zagotavlja, da se koda izvaja v CIL za maksimalno zmogljivost. Razred krmilnika običajno podeduje razred SysOperationServiceController, čeprav obstajajo tudi druge možnosti.
{
}
Konstruktor nadrazreda kot parametre sprejme ime razreda, ime metode in (neobvezno) način izvajanja. Imena razredov in metod naj bodo ime vašega storitvenega razreda in metode, ki naj se na njem izvaja. Metodo konstruiranja krmilnika lahko torej implementirate takole:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Potem je glavna metoda razreda MyController lahko tako preprosta kot
{
;
MyController::construct().startOperation();
}
In v bistvu ste končali. Zgornji primer je očitno zelo preprost in ogrodje vsebuje obilico drugih možnosti, vendar to služi kot hiter pregled, če potrebujete osvežitev znanja, ko ogrodja že nekaj časa niste uporabljali.
Nadaljnje branje
Če vam je bila ta objava všeč, vam bodo morda všeč tudi ti predlogi:
- Razlika med data() in buf2Buf() v Dynamics AX 2012
- Identifikacija razreda dokumenta in poizvedbe za storitev AIF v Dynamics AX 2012
- Pretvorite realno v niz z vsemi decimalkami v Dynamics AX 2012
