Dynamics AX-i 2012 SysOperation Frameworki kiirülevaade
Avaldatud: 15. veebruar 2025, kell 22:34:49 UTC
See artikkel annab kiire ülevaate (või petulehe) selle kohta, kuidas rakendada Dynamics AX-i 2012 ja Dynamics 365 for Operationsi raamistikus SysOperationi raamistikus töötlemisklasse ja paketttöid.
Dynamics AX 2012 SysOperation Framework Quick Overview
Selles postituses olev teave põhineb Dynamics AX-i 2012 R3-l. See võib teiste versioonide jaoks kehtida, kuid ei pruugi kehtida. (Värskendus: võin kinnitada, et selles artiklis olev teave kehtib ka Dynamics 365 for Operationsi jaoks)
See postitus on mõeldud lihtsalt kiire ülevaate ja petulehena. Kui te pole SysOperationi raamistikus uus, soovitan teil kindlasti lugeda ka Microsofti valget raamatut sellel teemal. Siinne teave võib olla kasulik, kui vajate lihtsalt kiiret ülevaadet erinevatest klassidest, mis on seotud selle raamistikuga toimingute arendamisega.
Variatsioone on, kuid raamistiku kasutamisel rakendan tavaliselt kolme klassi:
- Andmeleping (peaks SysOperationDataContractBase'i pikendama)
- Teenus (peaks laiendama SysOperationServiceBase'i)
- Kontroller ( peab laiendama SysOperationServiceControlleri)
Lisaks võin rakendada ka UIBuilderi klassi ( peab SysOperationUIBuilderit laiendama), kuid see on vajalik ainult siis, kui dialoog peab mingil põhjusel olema arenenum kui see, mida raamistik automaatselt genereerib.
Andmeleping
Andmeleping sisaldab teie tegevuseks vajalikke andmeliikmeid. Seda saab võrrelda tüüpilise CurrentListi makroga, mis on määratletud RunBase'i raamistikus, kuid rakendatakse selle asemel klassina. Andmeleping peaks pikendama SysOperationDataContractBase'i, kuid see toimib ka siis, kui seda ei tehta. Superklassi laiendamise eeliseks on see, et see pakub seansi teavet, mis võib olla kasulik.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Selles näites on itemId andmeliige. Peate rakendama iga andmeliikme jaoks parm-meetodi ja märgistama selle DataMemberAttribute'iga, et raamistik teaks, mis see on. See võimaldab raamistikul teie eest dialoogi automaatselt luua.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Teenindus
Teenuseklass on klass, mis sisaldab tegelikku äriloogikat. See ei puuduta dialoogide näitamist, paketttöötlust ega midagi muud sarnast – see on kontrolleriklassi vastutus. Selle eraldamisel kujundate oma koodi suurema tõenäosusega hästi ja muudate korduvkasutatavat koodi.
Sarnaselt andmelepinguklassiga ei pea ka teenuseklass kelleltki konkreetselt pärima, kuid see peaks pärima klassist SysOperationServiceBase, vähemalt siis, kui eeldate, et teenust käitatakse pakktööna, kuna superklass annab pakkkonteksti kohta teavet. Toimingut alustav (st äriloogikat käivitav) meetod peab võtma sisendiks teie andmelepinguklassi objekti ja olema kaunistatud atribuudiga [SysEntryPointAttribute]. Näiteks:
{
}
meetodiga, mida nimetatakse käivitamiseks:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Kontroller
Kontrolleriklass tegeleb teie toimingu täitmise ja paketttöötlusega. Samuti tagab see, et kood käivitatakse CIL-is, et tagada maksimaalne jõudlus. Kontrolleriklass pärineb tavaliselt klassist SysOperationServiceController, kuigi on ka teisi võimalusi.
{
}
Superklassi konstruktor võtab parameetritena klassi nime, meetodi nime ja (valikuliselt) täitmisrežiimi. Klassi ja meetodi nimed peaksid olema teie teenuseklassi nimi ja sellel käivitatav meetod. Seega võite oma kontrolleri konstruktsioonimeetodi rakendada järgmiselt:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Siis võib MyController klassi põhimeetod olla sama lihtne kui
{
;
MyController::construct().startOperation();
}
Ja sa oled põhimõtteliselt valmis. Ülaltoodu on ilmselgelt väga lihtne näide ja raamistik sisaldab hulgaliselt muid võimalusi ja võimalusi, kuid see annab kiire ülevaate, kui vajate värskendust, kui te pole raamistikku mõnda aega kasutanud.