Miklix

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.


Ezt az oldalt angolból gépi fordítással készítettük, hogy minél több ember számára elérhető legyen. Sajnos a gépi fordítás még nem tökéletes technológia, ezért előfordulhatnak hibák. Ha szeretné, itt megtekintheti az eredeti angol nyelvű változatot:

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.

[DataContractAttribute]
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.

[DataMemberAttribute]
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:

class MyService extends SysOperationServiceBase
{
}

Egy run nevű metódussal:

[SysEntryPointAttribute]
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.

class MyController extends SysOperationServiceController
{
}

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:

public static MyController construct()
{
    ;

    return new MyController(classStr(MyService),
    methodStr(MyService, run));
}

Ekkor a MyController osztály fő metódusa olyan egyszerű lehet, mint

public static void main(Args _args)
{
    ;

    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:


Oszd meg a Bluesky-nOszd meg a FacebookonOszd meg a LinkedIn-enOszd meg a Tumblr-enOszd meg X-enOszd meg a LinkedIn-enPin a Pinteresten

Mikkel Christensen

A szerzőről

Mikkel Christensen
Mikkel a miklix.com létrehozója és tulajdonosa. Több mint 20 éves tapasztalattal rendelkezik, mint hivatásos számítógépes programozó/szoftverfejlesztő, és jelenleg teljes munkaidőben dolgozik egy nagy európai informatikai vállalatnál. Amikor nem blogol, szabadidejét érdeklődési körének, hobbijainak és tevékenységeinek széles skálájával tölti, ami bizonyos mértékig tükröződhet a weboldalon tárgyalt témák sokféleségében.