A Dynamics AX 2012 SysOperation Framework gyors áttekintése
Megjelent: 2025. február 15. 22:35:19 UTC
Ez a cikk egy gyors áttekintést (vagy csalólapot) nyújt arról, hogyan valósíthat meg feldolgozási osztályokat és kötegelt feladatokat a SysOperation keretrendszerben a Dynamics AX 2012 és a Dynamics 365 for Operations rendszerben.
Dynamics AX 2012 SysOperation Framework Quick Overview
A bejegyzésben található információk a Dynamics AX 2012 R3-on alapulnak. Lehet, hogy más verziókra érvényes, de lehet, hogy nem. (Frissítés: Megerősíthetem, hogy a cikkben szereplő információk a Dynamics 365 for Operations esetében is érvényesek)
Ez a bejegyzés csak egy gyors áttekintésnek és csalólapnak készült. Ha még nem ismeri a SysOperation keretrendszert, erősen javaslom, hogy olvassa el a Microsoft fehér könyvét is a témában. Az itt található információk hasznosak lehetnek, ha csak egy gyors áttekintésre van szükséged az ezzel a keretrendszerrel végzett műveletek fejlesztésében részt vevő különböző osztályokról.
Vannak változatok, de amikor a keretrendszert használom, általában három osztályt valósítok meg:
- Adatszerződés (a SysOperationDataContractBase-t meg kell hosszabbítani)
- Szolgáltatás (ki kell bővítenie a SysOperationServiceBase-t)
- Vezérlő ( ki kell bővítenie a SysOperationServiceController-t)
Ezenkívül megvalósíthatok egy UIBuilder osztályt is (ki kell terjeszteni a SysOperationUIBuilder-t), de ez csak akkor szükséges, ha a párbeszédpanelnek valamilyen okból fejlettebbnek kell lennie, mint amit a keretrendszer automatikusan generál.
Adatszolgáltatási szerződés
Az adatszerződés az Ön működéséhez szükséges adattagokat tartalmazza. Összehasonlítható a RunBase keretrendszerben definiált tipikus CurrentList makróval, de ehelyett osztályként implementálva. Az adatszerződésnek ki kell terjesztenie a SysOperationDataContractBase-t, de akkor is működik, ha nem. A szuperosztály kiterjesztésének előnye, hogy olyan munkamenet-információkat biztosít, amelyek hasznosak lehetnek.
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Ebben a példában az itemId egy adattag. Meg kell valósítania egy parm metódust minden adattaghoz, és meg kell címkéznie a DataMemberAttribute-vel, hogy a keretrendszer tudja, mi az. Ez lehetővé teszi a keretrendszer számára, hogy automatikusan felépítse a párbeszédpanelt.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Szolgáltatás
A szolgáltatási osztály az az osztály, amely a tényleges üzleti logikát tartalmazza. Nem foglalkozik a párbeszédpanelek megjelenítésével, a kötegelt feldolgozással vagy bármi ilyesmivel – ez a vezérlő osztály felelőssége. Ennek szétválasztásával nagyobb valószínűséggel tervezi meg jól a kódot, és több újrafelhasználható kódot készít.
Az adatszerződéses osztályhoz hasonlóan a szolgáltatási osztálynak sem kell különösebben semmiből örökölnie, de a SysOperationServiceBase osztályból örökölnie kell, legalábbis akkor, ha arra számít, hogy a szolgáltatás kötegelt feladatként fog futni, mivel a szuper osztály ad némi információt a kötegelt kontextusról. A műveletet elindító metódusnak (azaz az üzleti logikát futtatónak) bemenetként az adatszerződés osztályának egy objektumát kell vennie, és a [SysEntryPointAttribute]-vel kell díszítenie. Például:
{
}
futtatás nevű módszerrel:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Vezérlő
A vezérlő osztály kezeli a művelet végrehajtását és kötegelt feldolgozását. Azt is biztosítja, hogy a kód CIL-ben kerül végrehajtásra a maximális teljesítmény érdekében. A vezérlőosztály jellemzően a SysOperationServiceController osztálytól örökli, bár vannak más lehetőségek is.
{
}
A szuperosztály konstruktora egy osztálynevet, metódusnevet és (opcionálisan) végrehajtási módot vesz fel paraméterként. Az osztály- és metódusneveknek meg kell egyeznie a szolgáltatási osztály és a rajta futtatandó metódus nevével. Tehát megvalósíthatja a vezérlő konstrukciós módszerét a következőképpen:
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Ekkor a MyController osztály fő metódusa olyan egyszerű lehet, mint
{
;
MyController::construct().startOperation();
}
És lényegében kész. A fenti nyilvánvalóan egy nagyon egyszerű példa, és a keretrendszer rengeteg más lehetőséget és lehetőséget is tartalmaz, de ez egy gyors áttekintést nyújt, ha felfrissítésre van szüksége, ha egy ideje nem használta a keretrendszert.