Miklix

„Dynamics AX 2012 SysOperation Framework“ greita apžvalga

Paskelbta: 2025 m. vasario 15 d. 22:35:26 UTC
Paskutinį kartą atnaujinta: 2026 m. sausio 12 d. 08:38:54 UTC

Šiame straipsnyje pateikiama trumpa apžvalga (arba atmintinė), kaip įdiegti apdorojimo klases ir paketines užduotis „SysOperation“ sistemoje „Dynamics AX 2012“ ir „Dynamics 365 for Operations“.


Šis puslapis buvo mašininiu būdu išverstas iš anglų kalbos, kad juo galėtų naudotis kuo daugiau žmonių. Deja, mašininis vertimas dar nėra tobula technologija, todėl gali pasitaikyti klaidų. Jei pageidaujate, originalią versiją anglų kalba galite peržiūrėti čia:

Dynamics AX 2012 SysOperation Framework Quick Overview

Šiame įraše pateikta informacija pagrįsta „Dynamics AX 2012 R3“. Ji gali tikti kitoms versijoms, o gali ir netikti. (Atnaujinimas: galiu patvirtinti, kad šiame straipsnyje pateikta informacija taip pat tinka „Dynamics 365 for Operations“)


Šis įrašas skirtas tik kaip trumpa apžvalga ir atmintinė. Jei esate naujokas „SysOperation“ sistemoje, primygtinai siūlau perskaityti ir „Microsoft“ informacinį dokumentą šia tema. Čia pateikta informacija gali būti naudinga, jei jums tiesiog reikia trumpai susipažinti su skirtingomis klasėmis, susijusiomis su operacijų kūrimu naudojant šią sistemą.

Yra variantų, bet kai naudoju sistemą, paprastai įgyvendinu tris klases:

  • Duomenų sutartis (turėtų pratęsti „SysOperationDataContractBase“)
  • Paslauga (turėtų išplėsti „SysOperationServiceBase“)
  • Valdiklis (turi būti išplėstas „SysOperationServiceController“)

Be to, galiu įdiegti ir „UIBuilder“ klasę (turi išplėsti „SysOperationUIBuilder“), bet tai būtina tik tuo atveju, jei dėl kokių nors priežasčių dialogas turi būti sudėtingesnis nei tas, kurį sistema generuoja automatiškai.


Duomenų sutartis

Duomenų sutartyje saugomi jūsų operacijai reikalingi duomenų nariai. Ją galima palyginti su tipine „CurrentList“ makrokomanda, apibrėžta „RunBase“ sistemoje, bet vietoj to įdiegta kaip klasė. Duomenų sutartis turėtų išplėsti „SysOperationDataContractBase“, bet veiks net ir be jos. Superklasės išplėtimo privalumas yra tas, kad ji pateikia tam tikrą seanso informaciją, kuri gali būti naudinga.

[DataContractAttribute]
class MyDataContract extends SysOperationDataContractBase
{
    ItemId itemId;
}

Šiame pavyzdyje „itemId“ yra duomenų narys. Kiekvienam duomenų nariui turite įdiegti „parm“ metodą ir pažymėti jį „DataMemberAttribute“, kad sistema žinotų, kas tai yra. Tai leidžia sistemai automatiškai sukurti dialogą už jus.

[DataMemberAttribute]
public ItemId parmItemId(ItemId _itemId = itemId)
{
    ;

    itemId = _itemId;
    return itemId;
}


Paslauga

Aptarnavimo klasė yra klasė, kurioje yra tikroji verslo logika. Ji nesusijusi su dialogų rodymu, paketiniu apdorojimu ar panašiais veiksmais – tai yra valdiklio klasės atsakomybė. Atskyrus šią klasę, didesnė tikimybė, kad gerai suprojektuosite savo kodą ir sukursite daugiau pakartotinai naudojamo kodo.

Kaip ir duomenų sutarties klasė, paslaugos klasė neprivalo paveldėti iš ko nors konkretaus, bet ji turėtų paveldėti iš „SysOperationServiceBase“ klasės, bent jau jei tikitės, kad paslauga bus vykdoma kaip paketinė užduotis, nes superklasė pateikia tam tikrą informaciją apie paketinės užduoties kontekstą. Metodas, kuris pradeda operaciją (t. y. vykdo verslo logiką), turi priimti jūsų duomenų sutarties klasės objektą kaip įvestį ir turėtų būti papuoštas [SysEntryPointAttribute]. Pavyzdžiui:

class MyService extends SysOperationServiceBase
{
}

Su metodu, vadinamu run:

[SysEntryPointAttribute]
public void run(MyDataContract _dataContract)
{
    // run business logic here
}


Valdiklis

Valdiklio klasė tvarko jūsų operacijos vykdymą ir paketinį apdorojimą. Ji taip pat užtikrina, kad kodas būtų vykdomas CIL kalba, siekiant maksimalaus našumo. Valdiklio klasė paprastai paveldi iš „SysOperationServiceController“ klasės, nors yra ir kitų variantų.

class MyController extends SysOperationServiceController
{
}

Superklasės konstruktorius kaip parametrus gauna klasės pavadinimą, metodo pavadinimą ir (nebūtina) vykdymo režimą. Klasės ir metodo pavadinimai turėtų būti jūsų aptarnavimo klasės pavadinimas ir metodas, kuris turėtų būti joje vykdomas. Taigi, valdiklio konstrukto metodą galite įgyvendinti taip:

public static MyController construct()
{
    ;

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

Tuomet pagrindinis „MyController“ klasės metodas gali būti toks paprastas kaip

public static void main(Args _args)
{
    ;

    MyController::construct().startOperation();
}

Ir iš esmės viskas. Akivaizdu, kad aukščiau pateiktas pavyzdys yra labai paprastas, o sistemoje yra daugybė kitų parinkčių ir galimybių, tačiau tai yra trumpa apžvalga, jei prireiktų atnaujinti žinias, kai kurį laiką nenaudojote sistemos.

Papildoma literatūra

Jei jums patiko šis įrašas, jums taip pat gali patikti šie pasiūlymai:


Pasidalinkite „Bluesky“.Dalintis FacebookBendrinkite „LinkedIn“.Bendrinkite „Tumblr“.Dalintis XBendrinkite „LinkedIn“.Prisegti prie Pinterest

Mikkel Christensen

Apie autorių

Mikkel Christensen
Mikkelis yra miklix.com kūrėjas ir savininkas. Jis turi daugiau nei 20 metų profesionalaus kompiuterių programuotojo ir programinės įrangos kūrėjo patirtį ir šiuo metu visą darbo dieną dirba didelėje Europos IT korporacijoje. Kai jis nerašo tinklaraščio, laisvalaikį skiria įvairiems interesams, pomėgiams ir užsiėmimams, kurie tam tikra prasme gali atsispindėti šioje svetainėje nagrinėjamų temų įvairovėje.