Dynamics AX-i 2012 SysOperation Frameworki kiirülevaade
Avaldatud: 15. veebruar 2025, kell 22:34:49 UTC
Viimati uuendatud: 12. jaanuar 2026, kell 08:38:48 UTC
See artikkel annab kiire ülevaate (või spikkerlehe) töötlemisklasside ja pakk-tööde rakendamisest Dynamics AX 2012 ja Dynamics 365 for Operationsi SysOperationi raamistikus.
Dynamics AX 2012 SysOperation Framework Quick Overview
Selle postituse teave põhineb Dynamics AX 2012 R3-l. See ei pruugi kehtida teiste versioonide puhul. (Värskendus: võin kinnitada, et selle artikli teave kehtib ka Dynamics 365 for Operationsi kohta)
See postitus on mõeldud vaid kiire ülevaate ja spikrina. Kui olete SysOperationi raamistikuga alles algaja, soovitan tungivalt lugeda ka Microsofti ametlikku dokumenti sellel teemal. Siinne teave võib olla kasulik, kui vajate lihtsalt kiiret ülevaadet selle raamistikuga operatsioonide arendamisega seotud erinevatest klassidest.
Variatsioone on, aga raamistiku kasutamisel rakendan tavaliselt kolme klassi:
- Andmeleping (peaks laiendama SysOperationDataContractBase'i)
- Teenus (peaks laiendama SysOperationServiceBase'i)
- Kontroller (peab laiendama SysOperationServiceControllerit)
Lisaks võin rakendada ka UIBuilderi klassi (see peab laiendama SysOperationUIBuilderit), aga see on vajalik ainult siis, kui dialoog peab mingil põhjusel olema keerukam kui see, mida raamistik automaatselt genereerib.
Andmeleping
Andmeleping sisaldab teie toiminguks vajalikke andmeliikmeid. Seda saab võrrelda tüüpilise CurrentList makroga, mis on defineeritud RunBase'i raamistikus, kuid rakendatud klassina. Andmeleping peaks laiendama SysOperationDataContractBase'i, kuid töötab ka siis, kui see seda ei tee. Superklassi laiendamise eeliseks on see, et see pakub seansiteavet, mis võib olla kasulik.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Selles näites on itemId andmeliige. Iga andmeliikme jaoks peate rakendama parm-meetodi ja sildistama selle DataMemberAttribute'iga, et raamistik teaks, mis see on. See võimaldab raamistikul dialoogi teie eest automaatselt luua.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Teenindus
Teenuseklass on klass, mis sisaldab tegelikku äriloogikat. See ei tegele dialoogide kuvamise, partiitöötluse ega millegi sellisega – see on kontrolleriklassi ülesanne. Selle eraldamisega on suurem tõenäosus, et saate oma koodi paremini kujundada ja luua rohkem korduvkasutatavat koodi.
Nagu andmelepingu klass, ei pea ka teenuseklass pärima millestki konkreetsest, kuid see peaks pärima SysOperationServiceBase klassist, vähemalt siis, kui eeldatakse, et teenust käivitatakse paketitöötlusena, kuna superklass annab teavet paketi konteksti kohta. Toimingut käivitav meetod (st äriloogikat käivitav meetod) peab sisendiks võtma teie andmelepingu klassi objekti ja see peaks olema kaunistatud atribuudiga [SysEntryPointAttribute]. Näiteks:
{
}
Meetodiga nimega run:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Kontroller
Kontrolleriklass tegeleb teie toimingute täitmise ja partiitöötlusega. See tagab ka, et kood käivitatakse CIL-is maksimaalse jõudluse saavutamiseks. Kontrolleriklass pärineb tavaliselt SysOperationServiceController klassist, kuigi on ka teisi valikuid.
{
}
Superklassi konstruktor võtab parameetriteks klassi nime, meetodi nime ja (valikuliselt) täitmisrežiimi. Klassi ja meetodi nimed peaksid olema teie teenuseklassi nimi ja meetodi nimi, mida sellel käivitada. Seega võiksite oma kontrolleri konstruktimeetodi rakendada järgmiselt:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Siis võib MyController klassi peamine meetod olla sama lihtne kui
{
;
MyController::construct().startOperation();
}
Ja oletegi põhimõtteliselt valmis. Ülaltoodu on ilmselgelt väga lihtne näide ja raamistik sisaldab hulgaliselt muid valikuid ja võimalusi, kuid see on kiire ülevaade, kui vajate värskendamist, kui te pole raamistikku mõnda aega kasutanud.
Lisalugemist
Kui see postitus teile meeldis, võivad teile meeldida ka need soovitused:
- Data() ja buf2Buf() erinevus rakenduses Dynamics AX 2012
- Stringi vormindamine makro ja strFmt abil rakenduses Dynamics AX 2012
- Kuidas itereerida X++ koodi enumi elemente rakenduses Dynamics AX 2012
