A Dynamics AX 2012 SysOperation Framework gyors áttekintése
Megjelent: 2025. február 15. 22:35:19 UTC
Utolsó frissítés: 2026. január 12. 8:38:50 UTC
Ez a cikk egy gyors áttekintést (vagy összefoglalót) nyújt arról, hogyan lehet feldolgozási osztályokat és kötegelt feladatokat implementálni a Dynamics AX 2012 és a Dynamics 365 for Operations SysOperation keretrendszerében.
Dynamics AX 2012 SysOperation Framework Quick Overview
A bejegyzésben szereplő információk a Dynamics AX 2012 R3 rendszeren alapulnak. Előfordulhat, hogy más verziókra érvényesek. (Frissítés: Megerősíthetem, hogy a cikkben szereplő információk a Dynamics 365 for Operations rendszerre is érvényesek.)
Ez a bejegyzés csak egy gyors áttekintésnek és összefoglalónak szántam. Ha még nem ismered a SysOperation keretrendszert, erősen javaslom, hogy olvasd el a Microsoft témával foglalkozó tanulmányát is. Az itt található információk hasznosak lehetnek, ha csak egy gyors áttekintésre van szükséged a keretrendszerrel történő műveletek fejlesztésében részt vevő különböző osztályokról.
Vannak variációk, de amikor a keretrendszert használom, általában három osztályt valósítok meg:
- Adatszerződés (ki kell terjednie a SysOperationDataContractBase-re)
- Szolgáltatás (ki kell terjednie a SysOperationServiceBase-re)
- Vezérlő (ki kell terjesztenie a SysOperationServiceController-t)
Ezenkívül implementálhatok egy UIBuilder osztályt is (ki kell terjesztenie 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 tartalmazza a művelethez szükséges adattagokat. Összehasonlítható a RunBase keretrendszerben definiált tipikus CurrentList makróval, de ehelyett osztályként van megvalósítva. Az adatszerződésnek ki kellene terjesztenie a SysOperationDataContractBase-t, de akkor is működni fog, ha nem. A szuperosztály kiterjesztésének az az 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. Minden adattaghoz implementálni kell egy parm metódust, és meg kell címkézni a DataMemberAttribute-tal, hogy a keretrendszer tudja, mi az. Ez lehetővé teszi a keretrendszer számára, hogy automatikusan felépítse a párbeszédablakot.
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Szolgáltatás
Szolgáltatás osztály az az osztály, amely a tényleges üzleti logikát tartalmazza. Nem foglalkozik párbeszédablakok megjelenítésével, kötegelt feldolgozással vagy hasonlókkal – ez a vezérlő osztály felelőssége. Ennek elkülönítésével nagyobb valószínűséggel tervezheted meg a kódodat, és több újrafelhasználható kódot hozhatsz létre.
Az adatszerződés osztályhoz hasonlóan a szolgáltatás osztálynak sem kell semmi konkréttól örökölnie, de a SysOperationServiceBase osztálytól kell örökölnie, legalábbis akkor, ha azt várjuk, hogy a szolgáltatás kötegelt feldolgozásként fog futni, mivel a szuperosztály információkat nyújt a kötegelt környezetről. A műveletet indító metódusnak (azaz az üzleti logikát futtató metódusnak) bemenetként az adatszerződés osztály egy objektumát kell kapnia, és a [SysEntryPointAttribute] attribútummal kell ellátni. Például:
{
}
Egy run nevű metódussal:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Vezérlő
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 fusson a maximális teljesítmény érdekében. A vezérlő osztály jellemzően a SysOperationServiceController osztálytól örököl, bár más lehetőségek is vannak.
{
}
A szuperosztály konstruktora paraméterként fogadja az osztálynevet, a metódusnevet és (opcionálisan) a végrehajtási módot. Az osztály- és metódusnevek a szolgáltatásosztály neve és a rajta futtatandó metódus neve kell, hogy legyenek. Tehát a vezérlő konstruktor metódusát a következőképpen implementálhatod:
{
;
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 is vagy. A fenti nyilvánvalóan egy nagyon egyszerű példa, és a keretrendszer rengeteg más opciót és lehetőséget is tartalmaz, de ez egy gyors áttekintésként szolgál, ha felfrissítésre van szükséged, ha egy ideje nem használtad a keretrendszert.
További olvasmányok
Ha tetszett ez a bejegyzés, akkor ezek a javaslatok is érdekelhetik:
- Lekérdezés használata SysOperation adatszerződési osztályban a Dynamics AX 2012-ben
- Az AIF-szolgáltatás dokumentumosztályának és lekérdezésének azonosítása a Dynamics AX 2012-ben
- "Nincs metaadatosztály meghatározva az adatszerződés objektumhoz" hiba a Dynamics AX 2012-ben
