„Dynamics AX 2012 SysOperation Framework“ greita apžvalga
Paskelbta: 2025 m. vasario 15 d. 22:35:26 UTC
Šiame straipsnyje pateikiama greita apžvalga (arba apgaulės lapelis), kaip įdiegti apdorojimo klases ir paketines užduotis „SysOperation“ sistemoje „Dynamics AX 2012“ ir „Dynamics 365 for Operations“.
Dynamics AX 2012 SysOperation Framework Quick Overview
Šiame įraše pateikta informacija pagrįsta Dynamics AX 2012 R3. Jis gali galioti arba negalioja kitoms versijoms. (Atnaujinimas: galiu patvirtinti, kad šiame straipsnyje pateikta informacija galioja ir „Dynamics 365 for Operations“)
Šis įrašas skirtas tik kaip greita apžvalga ir sukčiavimo lapas. Jei dar nesinaudojote SysOperation sistema, primygtinai siūlau perskaityti ir Microsoft baltąją knygą šia tema. Čia pateikta informacija gali būti naudinga, jei jums tiesiog reikia greitai sužinoti apie skirtingas klases, susijusias su operacijų kūrimu naudojant šią sistemą.
Yra variantų, bet kai naudoju sistemą, paprastai įgyvendinu tris klases:
- Duomenų sutartis (turėtų pratęsti SysOperationDataContractBase)
- Paslauga (turėtų išplėsti SysOperationServiceBase)
- Valdiklis ( turi išplėsti SysOperationServiceController)
Be to, aš taip pat galiu įdiegti UIBuilder klasę ( turi išplėsti SysOperationUIBuilder), bet tai būtina tik tuo atveju, jei dialogo langas dėl kokių nors priežasčių turi būti pažangesnis, nei sistema generuoja automatiškai.
Duomenų sutartis
Duomenų sutartyje saugomi jūsų veiklai reikalingi duomenų nariai. Ją galima palyginti su tipine CurrentList makrokomanda, apibrėžta RunBase sistemoje, bet vietoj jos įdiegta kaip klasė. Duomenų sutartis turėtų pratęsti SysOperationDataContractBase, bet veiks, net jei ne. Super klasės išplėtimo pranašumas yra tas, kad ji suteikia tam tikros sesijos informacijos, kuri gali būti naudinga.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Šiame pavyzdyje itemId yra duomenų narys. Turite įdiegti parm metodą kiekvienam duomenų nariui ir pažymėti jį DataMemberAttribute, kad sistema žinotų, kas tai yra. Tai leidžia sistemai automatiškai sukurti dialogo langą už jus.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Aptarnavimas
Paslaugų klasė yra klasė, kurioje yra tikroji verslo logika. Tai nesusiję su dialogų rodymu, paketiniu apdorojimu ar panašiu dalyku – tai yra valdiklio klasės atsakomybė. Atskirdami tai, labiau tikėtina, kad gerai sukursite savo kodą ir sukursite daugiau daugkartinio naudojimo kodo.
Kaip ir duomenų sutarties klasei, paslaugų klasei nereikia paveldėti iš nieko konkretaus, tačiau ji turėtų būti paveldima iš SysOperationServiceBase klasės, bent jau jei tikitės, kad paslauga bus paleista kaip paketinė užduotis, nes super klasė suteikia šiek tiek informacijos apie paketinį kontekstą. Metodas, kuris pradeda operaciją (ty vykdo verslo logiką), kaip įvestį turi priimti jūsų duomenų sutarties klasės objektą ir turi būti papuoštas [SysEntryPointAttribute]. Pavyzdžiui:
{
}
naudojant metodą, vadinamą paleisti:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Valdiklis
Valdiklio klasė tvarko jūsų operacijos vykdymą ir paketinį apdorojimą. Ji taip pat užtikrina, kad kodas būtų vykdomas CIL, kad būtų užtikrintas maksimalus našumas. Valdiklio klasė paprastai paveldima iš SysOperationServiceController klasės, nors yra ir kitų parinkčių.
{
}
Super klasės konstruktorius kaip parametrus pasirenka klasės pavadinimą, metodo pavadinimą ir (pasirinktinai) vykdymo režimą. Klasės ir metodų pavadinimai turėtų būti jūsų paslaugų klasės pavadinimas ir metodas, kuris turėtų būti joje paleidžiamas. Taigi, savo valdiklio konstravimo metodą galite įgyvendinti taip:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Tada pagrindinis MyController klasės metodas gali būti toks paprastas kaip
{
;
MyController::construct().startOperation();
}
Ir iš esmės viskas. Akivaizdu, kad aukščiau pateiktas pavyzdys yra labai paprastas, o sistemoje yra daugybė kitų parinkčių ir galimybių, tačiau tai yra greita apžvalga, jei jums reikia atnaujinti, kai kurį laiką nenaudojote sistemos.