Miklix

Dynamics AX-i 2012 SysOperation Frameworki kiirülevaade

Avaldatud: 15. veebruar 2025, kell 22:34:49 UTC

See artikkel annab kiire ülevaate (või petulehe) selle kohta, kuidas rakendada Dynamics AX-i 2012 ja Dynamics 365 for Operationsi raamistikus SysOperationi raamistikus töötlemisklasse ja paketttöid.


See lehekülg on inglise keelest masintõlgitud, et muuta see võimalikult paljudele inimestele kättesaadavaks. Kahjuks ei ole masintõlge veel täiuslik tehnoloogia, mistõttu võivad esineda vead. Kui soovite, võite vaadata ingliskeelset originaalversiooni siin:

Dynamics AX 2012 SysOperation Framework Quick Overview

Selles postituses olev teave põhineb Dynamics AX-i 2012 R3-l. See võib teiste versioonide jaoks kehtida, kuid ei pruugi kehtida. (Värskendus: võin kinnitada, et selles artiklis olev teave kehtib ka Dynamics 365 for Operationsi jaoks)


See postitus on mõeldud lihtsalt kiire ülevaate ja petulehena. Kui te pole SysOperationi raamistikus uus, soovitan teil kindlasti lugeda ka Microsofti valget raamatut sellel teemal. Siinne teave võib olla kasulik, kui vajate lihtsalt kiiret ülevaadet erinevatest klassidest, mis on seotud selle raamistikuga toimingute arendamisega.

Variatsioone on, kuid raamistiku kasutamisel rakendan tavaliselt kolme klassi:

  • Andmeleping (peaks SysOperationDataContractBase'i pikendama)
  • Teenus (peaks laiendama SysOperationServiceBase'i)
  • Kontroller ( peab laiendama SysOperationServiceControlleri)

Lisaks võin rakendada ka UIBuilderi klassi ( peab SysOperationUIBuilderit laiendama), kuid see on vajalik ainult siis, kui dialoog peab mingil põhjusel olema arenenum kui see, mida raamistik automaatselt genereerib.


Andmeleping

Andmeleping sisaldab teie tegevuseks vajalikke andmeliikmeid. Seda saab võrrelda tüüpilise CurrentListi makroga, mis on määratletud RunBase'i raamistikus, kuid rakendatakse selle asemel klassina. Andmeleping peaks pikendama SysOperationDataContractBase'i, kuid see toimib ka siis, kui seda ei tehta. Superklassi laiendamise eeliseks on see, et see pakub seansi teavet, mis võib olla kasulik.

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

Selles näites on itemId andmeliige. Peate rakendama iga andmeliikme jaoks parm-meetodi ja märgistama selle DataMemberAttribute'iga, et raamistik teaks, mis see on. See võimaldab raamistikul teie eest dialoogi automaatselt luua.

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

    itemId = _itemId;
    return itemId;
}


Teenindus

Teenuseklass on klass, mis sisaldab tegelikku äriloogikat. See ei puuduta dialoogide näitamist, paketttöötlust ega midagi muud sarnast – see on kontrolleriklassi vastutus. Selle eraldamisel kujundate oma koodi suurema tõenäosusega hästi ja muudate korduvkasutatavat koodi.

Sarnaselt andmelepinguklassiga ei pea ka teenuseklass kelleltki konkreetselt pärima, kuid see peaks pärima klassist SysOperationServiceBase, vähemalt siis, kui eeldate, et teenust käitatakse pakktööna, kuna superklass annab pakkkonteksti kohta teavet. Toimingut alustav (st äriloogikat käivitav) meetod peab võtma sisendiks teie andmelepinguklassi objekti ja olema kaunistatud atribuudiga [SysEntryPointAttribute]. Näiteks:

class MyService extends SysOperationServiceBase
{
}

meetodiga, mida nimetatakse käivitamiseks:

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


Kontroller

Kontrolleriklass tegeleb teie toimingu täitmise ja paketttöötlusega. Samuti tagab see, et kood käivitatakse CIL-is, et tagada maksimaalne jõudlus. Kontrolleriklass pärineb tavaliselt klassist SysOperationServiceController, kuigi on ka teisi võimalusi.

class MyController extends SysOperationServiceController
{
}

Superklassi konstruktor võtab parameetritena klassi nime, meetodi nime ja (valikuliselt) täitmisrežiimi. Klassi ja meetodi nimed peaksid olema teie teenuseklassi nimi ja sellel käivitatav meetod. Seega võite oma kontrolleri konstruktsioonimeetodi rakendada järgmiselt:

public static MyController construct()
{
    ;

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

Siis võib MyController klassi põhimeetod olla sama lihtne kui

public static void main(Args _args)
{
    ;

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

Ja sa oled põhimõtteliselt valmis. Ülaltoodu on ilmselgelt väga lihtne näide ja raamistik sisaldab hulgaliselt muid võimalusi ja võimalusi, kuid see annab kiire ülevaate, kui vajate värskendust, kui te pole raamistikku mõnda aega kasutanud.

Jagage Bluesky'sJaga FacebookisJagage LinkedInisJaga TumblrisJaga X-isJagage LinkedInisKinnitage Pinterestis

Mikkel Bang Christensen

Autorist

Mikkel Bang Christensen
Mikkel on miklix.com looja ja omanik. Tal on üle 20 aasta kogemust professionaalse programmeerija/tarkvaraarendajana ning praegu töötab ta täiskohaga suures Euroopa IT-ettevõttes. Kui ta ei kirjuta blogi, veedab ta oma vaba aega mitmesuguste huvide, hobide ja tegevustega, mis võib mingil määral kajastuda sellel veebisaidil käsitletavate teemade mitmekesisuses.