Dynamics AX 2012 SysOperation Framework īss pārskats
Publicēts: 2025. gada 15. februāris 22:35:27 UTC
Šajā rakstā ir sniegts ātrs pārskats (vai apkrāptu lapa) par to, kā ieviest apstrādes klases un pakešu darbus ietvarā SysOperation programmās Dynamics AX 2012 un Dynamics 365 for Operations.
Dynamics AX 2012 SysOperation Framework Quick Overview
Šajā ziņā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tas var būt un var nebūt derīgs citām versijām. (Atjauninājums: varu apstiprināt, ka šajā rakstā sniegtā informācija ir derīga arī Dynamics 365 for Operations)
Šī ziņa ir domāta tikai kā ātrs pārskats un krāpšanās lapa. Ja esat iesācējs SysOperation ietvarā, noteikti iesaku izlasīt arī Microsoft balto grāmatu par šo tēmu. Šeit sniegtā informācija var būt noderīga, ja jums vienkārši nepieciešams īss ieskats dažādās klasēs, kas iesaistītas darbību izstrādē ar šo sistēmu.
Ir varianti, taču, izmantojot ietvaru, es parasti ieviešu trīs klases:
- Datu līgums (vajadzētu pagarināt SysOperationDataContractBase)
- Pakalpojums (vajadzētu paplašināt SysOperationServiceBase)
- Kontrolieris ( jāpaplašina SysOperationServiceController)
Turklāt es varu ieviest arī UIBuilder klasi ( jāpaplašina SysOperationUIBuilder), bet tas ir nepieciešams tikai tad, ja dialogam kāda iemesla dēļ ir jābūt progresīvākam par to, ko sistēma ģ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 parasto CurrentList makro, kas definēts RunBase ietvarā, bet tā vietā ieviests kā klase. Datu līgumam ir jāpagarina SysOperationDataContractBase, taču tas darbosies pat tad, ja tas nedarbosies. Superklases paplašināšanas priekšrocība ir tā, ka tā sniedz zināmu informāciju par sesiju, kas var būt noderīga.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Šajā piemērā itemId ir datu dalībnieks. Katram datu dalībniekam ir jāievieš parm metode un jāatzīmē tas ar DataMemberAttribute, lai sistēma zinātu, kas tas ir. Tas ļauj sistēmai automātiski izveidot dialogu jūsu vietā.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Serviss
Pakalpojumu klase ir klase, kas satur faktisko biznesa loģiku. Tas nav saistīts ar dialoglodziņu rādīšanu, pakešu apstrādi vai jebko tamlīdzīgu — par to ir atbildīga kontroliera klase. Atdalot to, jūs, visticamāk, labi izstrādāsit savu kodu un padarīsit vairāk atkārtoti lietojamu kodu.
Tāpat kā datu līguma klasei, arī pakalpojumu klasei nav jāmanto no kaut kā īpaša, taču tai vajadzētu mantot no SysOperationServiceBase klases, vismaz tad, ja sagaidāt, ka pakalpojums tiks palaists kā pakešdarbs, jo superklase sniedz zināmu informāciju par paketes kontekstu. Metodei, kas sāk darbību (ti, palaiž biznesa loģiku), kā ievadi ir jāizmanto jūsu datu līguma klases objekts, un tai jābūt dekorētai ar [SysEntryPointAttribute]. Piemēram:
{
}
ar metodi, ko sauc par palaišanu:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Kontrolieris
Kontrolieru klase apstrādā jūsu darbības izpildi un pakešu apstrādi. Tas arī nodrošina, ka kods tiek izpildīts CIL, lai nodrošinātu maksimālu veiktspēju. Kontrollera klase parasti tiek mantota no SysOperationServiceController klases, lai gan ir arī citas iespējas.
{
}
Superklases konstruktors kā parametrus ņem klases nosaukumu, metodes nosaukumu un (pēc izvēles) izpildes režīmu. Klases un metodes nosaukumiem ir jābūt jūsu pakalpojumu klases nosaukumam un metodei, kas tajā jāpalaiž. Tātad, jūs varētu ieviest kontroliera konstruēšanas 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ā esat pabeidzis. Iepriekš minētais acīmredzami ir ļoti vienkāršs piemērs, un ietvarā ir daudz citu iespēju un iespēju, taču tas kalpo kā ātrs pārskats, ja jums ir nepieciešama atjaunināšana, kad ietvars kādu laiku nav izmantots.