Dynamics AX 2012 SysOperation Framework Fljótt yfirlit
Birt: 19. mars 2025 kl. 21:29:33 UTC
Þessi grein veitir fljótlegt yfirlit (eða svindlblað) um hvernig á að innleiða vinnsluflokka og runuvinnu í SysOperation ramma í Dynamics AX 2012 og Dynamics 365 for Operations.
Dynamics AX 2012 SysOperation Framework Quick Overview
Upplýsingarnar í þessari færslu eru byggðar á Dynamics AX 2012 R3. Þær gætu verið giltar fyrir aðrar útgáfur eða ekki. (Uppfærsla: Ég get staðfest að upplýsingarnar í þessari grein gilda einnig fyrir Dynamics 365 for Operations)
Þessi færsla er einungis ætluð sem fljótleg yfirlit og hjálparblað. Ef þú ert nýr í SysOperation rammagerðinni, þá mæli ég eindregið með því að þú lesir einnig hvítapappír Microsoft um efnið. Upplýsingarnar hér kunna að vera gagnlegar ef þú þarft bara fljótlega ábendingar um mismunandi klassa sem taka þátt í þróun aðgerða með þessari rammagerð.
Það eru breytingar, en þegar ég nota rammagerðina útfæri ég yfirleitt þrjá klassa:
- Gagnasamningur (ætti að stækka SysOperationDataContractBase)
- Þjónusta (ætti að stækka SysOperationServiceBase)
- Stýring (verður að stækka SysOperationServiceController)
Auk þess gæti ég einnig útfært UIBuilder klassa (verður að stækka SysOperationUIBuilder), en það er aðeins nauðsynlegt ef samtalið þarf af einhverjum ástæðum að vera flóknara en það sem rammagerðin býr til sjálfkrafa.
Gagnasamningur
Gagnasamningurinn heldur utan um gagnamenn sem þarf fyrir aðgerðina þína. Hann má líkja við hefðbundna CurrentList makrón sem skilgreind er í RunBase rammagerðinni, en útfærður sem klassi í staðinn. Gagnasamningurinn ætti að stækka SysOperationDataContractBase, en mun virka jafnvel þó hann geri það ekki. Kosturinn við að stækka yfirklassa er að hann veitir sum gögn um lotuna sem geta verið hentug.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Í þessu dæmi er itemId gagnamen. Þú þarft að útfæra parm aðferð fyrir hverja gagnamen og merkja hana með DataMemberAttribute svo rammagerðin viti hvað það er. Þetta gerir rammagerðinni kleift að byggja upp samtalið sjálfkrafa fyrir þig.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Þjónusta
Þjónustuklassinn er sá klassi sem inniheldur eiginlega viðskiptavélrænu rökréttina. Hann hefur ekki með það að gera að sýna samtöl, vinna í flokkum eða eitthvað þess háttar – það er á ábyrgð stýringarklassans. Með því að skilja þetta að þá eru meiri líkur á að þú hönnir kóðann þinn vel og gerir hann endurnýjanlegan.
Líkt og gagnasamningur, þá þarf þjónustuklassinn ekki að erfa frá neinu sérstakri, en hann ætti að erfa frá SysOperationServiceBase, a.m.k. ef þú býst við að þjónustan verði keyrð sem flokkavinna, þar sem yfirklassi veitir sumar upplýsingar um flokkaástandið. Aðferðin sem byrjar á framkvæmdinni (þ.e. keyrir viðskiptarökréttina) verður að taka við hlut af gagnasamningsklassa þínum sem inntak og ætti að vera merkt með [SysEntryPointAttribute]. Til dæmis:
{
}
með aðferð sem heitir run:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Stýring
Stýringarklassinn annast framkvæmd og flokkun vinnslu aðgerðarinnar. Hann tryggir einnig að kóðinn sé keyrður í CIL fyrir hámarks frammistöðu. Stýringarklassinn erfir venjulega frá SysOperationServiceController, þó að það séu einnig aðrar valkostir.
{
}
Smíðaraðferð yfirklassa tekur við klassaheiti, aðferðarheiti og (valfrjálst) keyrslumódel sem inntak. Klassar- og aðferðarheitin ættu að vera heiti þjónustuklassans þíns og aðferðarinnar sem á að keyra á honum. Þannig gætir þú útfært smíðar-aðferð stýringarinnar þinnar eins og þetta:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Þá getur aðal-aðferðin í MyController klassanum verið jafn einföld og
{
;
MyController::construct().startOperation();
}
Og þú ert í rauninni búinn. Ofangreint er auðvitað mjög einfalt dæmi og rammagerðin inniheldur fjölmarga aðra valkosti og möguleika, en þetta þjónar sem fljótleg yfirlit ef þú þarft ábendingar þegar þú hefur ekki notað rammagerðina í smá tíma.