Dynamics AX 2012 SysOperation Framework īss pārskats
Publicēts: 2025. gada 15. februāris 22:35:27 UTC
Pēdējo reizi atjaunināts: 2026. gada 12. janvāris 08:38:54 UTC
Šajā rakstā sniegts īss pārskats (vai špikerlapa) par to, kā ieviest apstrādes klases un pakešuzdevumus SysOperation ietvarā programmās Dynamics AX 2012 un Dynamics 365 for Operations.
Dynamics AX 2012 SysOperation Framework Quick Overview
Šajā ierakstā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tā var būt vai nebūt derīga citām versijām. (Atjauninājums: varu apstiprināt, ka šajā rakstā sniegtā informācija ir derīga arī Dynamics 365 for Operations).
Šis ieraksts ir paredzēts tikai kā īss pārskats un apkrāptu lapa. Ja esat jauns SysOperation ietvarā, es ļoti iesaku izlasīt arī Microsoft informatīvo dokumentu par šo tēmu. Šeit sniegtā informācija var būt noderīga, ja jums vienkārši nepieciešams ātri atsvaidzināt zināšanas par dažādām klasēm, kas iesaistītas operāciju izstrādē, izmantojot šo ietvaru.
Pastāv variācijas, bet, izmantojot šo sistēmu, es parasti ieviešu trīs klases:
- Datu līgums (jāpaplašina SysOperationDataContractBase)
- Pakalpojums (vajadzētu paplašināt SysOperationServiceBase)
- Kontrolieris (jāpaplašina SysOperationServiceController)
Turklāt es varu ieviest arī UIBuilder klasi (tai ir jāpaplašina SysOperationUIBuilder), bet tas ir nepieciešams tikai tad, ja dialoglodziņam kāda iemesla dēļ ir jābūt sarežģītākam nekā tas, ko ietvars ģenerē automātiski.
Datu līgums
Datu līgumā ir jūsu darbībai nepieciešamie datu dalībnieki. To var salīdzināt ar tipisko CurrentList makro, kas definēts RunBase ietvarā, bet tā vietā ieviests kā klase. Datu līgumam vajadzētu paplašināt SysOperationDataContractBase, bet tas darbosies pat tad, ja tas to nedarīs. Superklases paplašināšanas priekšrocība ir tā, ka tas sniedz zināmu sesijas informāciju, kas var būt noderīga.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Šajā piemērā itemId ir datu elements. Katram datu elementam ir jāievieš parm metode un jāatzīmē tas ar DataMemberAttribute, lai ietvars zinātu, kas tas ir. Tas ļauj ietvaram automātiski izveidot dialoglodziņu jūsu vietā.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Pakalpojums
Pakalpojumu klase ir klase, kas satur faktisko biznesa loģiku. Tā nav saistīta ar dialoglodziņu rādīšanu, partiju apstrādi vai kaut ko tamlīdzīgu — tas ir kontroliera klases pienākums. Atdalot to, jūs, visticamāk, varēsiet labi izstrādāt savu kodu un izveidot vairāk atkārtoti izmantojamu kodu.
Tāpat kā datu līguma klasei, pakalpojuma klasei nav jāpārmanto no kaut kā konkrēta, bet tai vajadzētu pārmantot no SysOperationServiceBase klases, vismaz tad, ja paredzat, ka pakalpojums tiks palaists kā pakešuzdevums, jo superklase sniedz informāciju par pakešu kontekstu. Metodei, kas sāk darbību (t. i., palaiž biznesa loģiku), kā ievadi ir jāņem jūsu datu līguma klases objekts, un tai jābūt apzīmētai ar [SysEntryPointAttribute]. Piemēram:
{
}
Ar metodi, ko sauc par run:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Kontrolieris
Kontroliera klase apstrādā jūsu darbības izpildi un pakešapstrādi. Tā arī nodrošina, ka kods tiek izpildīts CIL, lai nodrošinātu maksimālu veiktspēju. Kontroliera klase parasti manto no SysOperationServiceController klases, lai gan ir arī citas iespējas.
{
}
Superklases konstruktors kā parametrus saņem klases nosaukumu, metodes nosaukumu un (pēc izvēles) izpildes režīmu. Klases un metodes nosaukumiem jābūt jūsu pakalpojuma klases nosaukumam un metodei, kas tajā jāizpilda. Tātad, jūs varētu ieviest sava kontrollera konstrukcijas metodi šādi:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Tad MyController klases galvenā metode var būt tikpat vienkārša kā
{
;
MyController::construct().startOperation();
}
Un būtībā viss ir paveikts. Iepriekš minētais, protams, ir ļoti vienkāršs piemērs, un ietvars satur daudz citu opciju un iespēju, taču šis kalpo kā īss pārskats, ja nepieciešams atsvaidzināt zināšanas pēc tam, kad kādu laiku neesat lietojis ietvaru.
Papildu lasāmviela
Ja jums patika šī ziņa, jums varētu patikt arī šie ieteikumi:
- Virknes formatēšana, izmantojot makro un strFmt programmā Dynamics AX 2012
- Kļūda "Datu līguma objektam nav definēta metadatu klase" programmā Dynamics AX 2012
- Dokumentu klases un vaicājuma identificēšana AIF pakalpojumam programmā Dynamics AX 2012
