Miklix

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.


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 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.

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

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

class MyService extends SysOperationServiceBase
{
}

futtatás nevű módszerrel:

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

class MyController extends SysOperationServiceController
{
}

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:

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. 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.

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 Bang Christensen

A szerzőről

Mikkel Bang 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.