Dynamics AX 2012 SysOperation Framework -pikakatsaus
Julkaistu: 15. helmikuuta 2025 klo 22.34.49 UTC
Tämä artikkeli tarjoaa nopean yleiskatsauksen (tai huijausarkin) käsittelyluokkien ja erätöiden toteuttamisesta SysOperation-kehyksessä Dynamics AX 2012:ssa ja Dynamics 365 for Operationsissa.
Dynamics AX 2012 SysOperation Framework Quick Overview
Tämän viestin tiedot perustuvat Dynamics AX 2012 R3:een. Se voi tai ei välttämättä ole voimassa muille versioille. (Päivitys: Voin vahvistaa, että tämän artikkelin tiedot koskevat myös Dynamics 365 for Operationsia)
Tämä viesti on tarkoitettu vain nopeaksi yleiskatsaukseksi ja huijausarkkiksi. Jos olet uusi SysOperation-kehyksessä, suosittelen, että luet myös Microsoftin valkoisen kirjan aiheesta. Tässä olevista tiedoista voi olla hyötyä, jos tarvitset vain nopean selvityksen eri luokista, jotka osallistuvat toimintojen kehittämiseen tällä viitekehyksellä.
Variaatioita on, mutta kun käytän kehystä, toteutan yleensä kolme luokkaa:
- Tietosopimus (pitäisi jatkaa SysOperationDataContractBasea)
- Palvelu (pitäisi laajentaa SysOperationServiceBasea)
- Ohjain ( täytyy laajentaa SysOperationServiceController)
Lisäksi voin toteuttaa myös UIBuilder-luokan ( täytyy laajentaa SysOperationUIBuilderiä), mutta se on tarpeen vain, jos dialogin on jostain syystä oltava edistyneempi kuin kehyksen automaattisesti luoma.
Datasopimus
Tietosopimus sisältää toimintasi edellyttämät tiedot. Sitä voidaan verrata tyypilliseen CurrentList-makroon, joka on määritelty RunBase-kehyksessä, mutta toteutettu sen sijaan luokkana. Tietosopimuksen pitäisi laajentaa SysOperationDataContractBasea, mutta se toimii, vaikka se ei toimisi. Superluokan laajentamisen etuna on, että se tarjoaa joitain istuntotietoja, jotka voivat olla käteviä.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Tässä esimerkissä itemId on datajäsen. Sinun täytyy ottaa käyttöön parm-menetelmä jokaiselle datajäsenelle ja merkitä se DataMemberAttribute-määritteellä, jotta kehys tietää, mikä se on. Tämä mahdollistaa kehyksen automaattisesti rakentavan dialogin puolestasi.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Palvelu
Palveluluokka on luokka, joka sisältää varsinaisen liiketoimintalogiikan. Se ei koske valintaikkunoiden näyttämistä, eräkäsittelyä tai mitään sellaista – se on ohjainluokan vastuulla. Erottamalla tämän voit todennäköisemmin suunnitella koodisi hyvin ja tehdä uudelleenkäytettävästä koodista.
Datasopimusluokan tapaan palveluluokan ei tarvitse periytyä mistään erityisestä, mutta sen pitäisi periytyä SysOperationServiceBase-luokasta, ainakin jos olettaa, että palvelua ajetaan erätyönä, sillä superluokka antaa jotain tietoa eräkontekstista. Menetelmän, joka käynnistää toiminnon (eli ajaa liiketoimintalogiikkaa), on otettava syötteeksi datasopimusluokkasi objekti ja se tulee koristella [SysEntryPointAttribute]-määritteellä. Esimerkiksi:
{
}
menetelmällä run:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Ohjain
Ohjainluokka hoitaa toimintosi suorittamisen ja eräkäsittelyn. Se myös varmistaa, että koodi suoritetaan CIL:ssä parhaan mahdollisen suorituskyvyn saavuttamiseksi. Ohjainluokka periytyy yleensä SysOperationServiceController-luokasta, vaikka muitakin vaihtoehtoja on olemassa.
{
}
Superluokan rakentaja ottaa parametreiksi luokan nimen, menetelmän nimen ja (valinnaisesti) suoritustavan. Luokan ja menetelmän nimien tulee olla palveluluokkasi nimi ja siinä ajettava menetelmä. Joten voit toteuttaa ohjaimesi rakennusmenetelmän seuraavasti:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Silloin MyController-luokan päämenetelmä voi olla yhtä yksinkertainen kuin
{
;
MyController::construct().startOperation();
}
Ja olet periaatteessa valmis. Yllä oleva on ilmeisesti hyvin yksinkertainen esimerkki ja kehys sisältää joukon muita vaihtoehtoja ja mahdollisuuksia, mutta tämä toimii nopeana yleiskatsauksena, jos tarvitset sivellintä, kun et ole käyttänyt kehystä vähään aikaan.