Miklix

Dynamics AX 2012 SysOperation Framework Արագ ակնարկ

Հրապարակվել է՝ 15 փետրվարի, 2025 թ., 22:37:32 UTC
Վերջին թարմացումը՝ 12 հունվարի, 2026 թ., 08:40:10 UTC

Այս հոդվածը ներկայացնում է Dynamics AX 2012 և Dynamics 365 for Operations-ի SysOperation շրջանակում մշակման դասերի և խմբային աշխատանքների ներդրման համառոտ նկարագրություն (կամ բացատրական թերթիկ):


Այս էջը ավտոմատ կերպով թարգմանվել է անգլերենից՝ հնարավորինս շատ մարդկանց համար հասանելի դարձնելու համար: Ցավոք, մեքենայական թարգմանությունը դեռ կատարելագործված տեխնոլոգիա չէ, ուստի կարող են սխալներ առաջանալ: Եթե ​​նախընտրում եք, կարող եք դիտել բնօրինակ անգլերեն տարբերակը այստեղ.

Dynamics AX 2012 SysOperation Framework Quick Overview

Այս գրառման մեջ տեղեկատվությունը հիմնված է Dynamics AX 2012 R3-ի վրա: Այն կարող է վավեր լինել կամ չլինել այլ տարբերակների համար: (Թարմացում. Ես կարող եմ հաստատել, որ այս հոդվածի տեղեկատվությունը վավեր է նաև Dynamics 365 for Operations-ի համար):


Այս գրառումը նախատեսված է որպես համառոտ ակնարկ և խորհրդատվություն։ Եթե դուք նորեկ եք SysOperation framework-ում, խորհուրդ եմ տալիս կարդալ նաև Microsoft-ի սպիտակ թուղթը այս թեմայի վերաբերյալ։ Այստեղ ներկայացված տեղեկատվությունը կարող է օգտակար լինել, եթե ձեզ անհրաժեշտ է արագ ծանոթանալ այս framework-ով գործողություններ մշակելու հետ կապված տարբեր դասերին։

Կան տարբեր տարբերակներ, բայց երբ ես օգտագործում եմ շրջանակը, ես սովորաբար իրականացնում եմ երեք դաս՝

  • Տվյալների պայմանագիր (պետք է երկարաձգի SysOperationDataContractBase-ը)
  • Ծառայություն (պետք է ընդլայնի SysOperationServiceBase-ը)
  • Կառավարիչ (պետք է ընդլայնել SysOperationServiceController-ը)

Բացի այդ, ես կարող եմ նաև իրականացնել UIBuilder դաս (պետք է ընդլայնի SysOperationUIBuilder-ը), բայց դա անհրաժեշտ է միայն այն դեպքում, եթե որևէ պատճառով երկխոսության պատուհանը պետք է լինի ավելի առաջադեմ, քան այն, ինչ framework-ը ավտոմատ կերպով ստեղծում է։


Տվյալների պայմանագիր

Տվյալների պայմանագիրը պարունակում է ձեր գործողության համար անհրաժեշտ տվյալների անդամները: Այն կարելի է համեմատել RunBase framework-ում սահմանված CurrentList տիպիկ մակրոյի հետ, բայց դրա փոխարեն այն իրականացվում է որպես դաս: Տվյալների պայմանագիրը պետք է ընդլայնի SysOperationDataContractBase-ը, բայց կաշխատի նույնիսկ եթե այդպես չլինի: Սուպեր դասի ընդլայնման առավելությունն այն է, որ այն տրամադրում է որոշ սեսիայի տեղեկություններ, որոնք կարող են օգտակար լինել:

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

Այս օրինակում itemId-ն տվյալների անդամ է: Դուք պետք է իրականացնեք parm մեթոդ յուրաքանչյուր տվյալների անդամի համար և նշեք այն DataMemberAttribute-ով, որպեսզի շրջանակը իմանա, թե դա ինչ է: Սա թույլ է տալիս շրջանակին ավտոմատ կերպով կառուցել երկխոսության պատուհանը ձեզ համար:

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

    itemId = _itemId;
    return itemId;
}


Ծառայություն

Ծառայության դասը այն դասն է, որը պարունակում է իրական բիզնես տրամաբանությունը։ Այն չի զբաղվում երկխոսության պատուհանների ցուցադրմամբ, խմբաքանակային մշակմամբ կամ նմանատիպ այլ բաներով. դա վերահսկիչ դասի պարտականությունն է։ Սա առանձնացնելով՝ դուք ավելի հավանական է, որ լավ կնախագծեք ձեր կոդը և կստեղծեք ավելի բազմակի օգտագործման կոդ։

Ինչպես տվյալների պայմանագրերի դասը, ծառայության դասը նույնպես կարիք չունի ժառանգելու որևէ կոնկրետ բանից, բայց այն պետք է ժառանգի SysOperationServiceBase դասից, գոնե եթե դուք ակնկալում եք, որ ծառայությունը կկատարվի որպես խմբաքանակային աշխատանք, քանի որ գերդասը որոշակի տեղեկատվություն է տրամադրում խմբաքանակային համատեքստի մասին: Գործողությունը սկսող մեթոդը (այսինքն՝ բիզնես տրամաբանությունը գործարկող) պետք է որպես մուտքային արժեք ընդունի ձեր տվյալների պայմանագրերի դասի օբյեկտը և պետք է զարդարված լինի [SysEntryPointAttribute]-ով: Օրինակ՝

class MyService extends SysOperationServiceBase
{
}

run անունով մեթոդով՝

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


Կառավարիչ

Controller դասը կարգավորում է ձեր գործողության կատարումը և խմբաքանակային մշակումը: Այն նաև ապահովում է, որ կոդը կատարվի CIL-ում՝ առավելագույն արդյունավետության համար: Controller դասը սովորաբար ժառանգում է SysOperationServiceController դասից, չնայած կան նաև այլ տարբերակներ:

class MyController extends SysOperationServiceController
{
}

Սուպեր դասի կոնստրուկտորը որպես պարամետրեր ընդունում է դասի անունը, մեթոդի անունը և (ըստ ցանկության) կատարման ռեժիմը: Դասի և մեթոդի անունները պետք է լինեն ձեր ծառայության դասի և դրա վրա կատարվող մեթոդի անունները: Այսպիսով, դուք կարող եք իրականացնել ձեր կառավարիչի կոնստրուկտի մեթոդը հետևյալ կերպ.

public static MyController construct()
{
    ;

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

Այնուհետև MyController դասի main մեթոդը կարող է լինել այնքան պարզ, որքան

public static void main(Args _args)
{
    ;

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

Եվ դուք, ըստ էության, ավարտեցիք։ Վերը նշվածը, ակնհայտորեն, շատ պարզ օրինակ է, և շրջանակը պարունակում է բազմաթիվ այլ տարբերակներ և հնարավորություններ, բայց սա ծառայում է որպես արագ ակնարկ, եթե ձեզ անհրաժեշտ է թարմացում, երբ որոշ ժամանակ չեք օգտագործել շրջանակը։

Լրացուցիչ ընթերցանություն

Եթե ​​ձեզ դուր եկավ այս գրառումը, ձեզ կարող են նաև դուր գալ այս առաջարկները.


Կիսվեք Bluesky-ումԿիսվել Facebook-ումԿիսվեք LinkedIn-ումԿիսվեք Tumblr-ումԿիսվեք X-ումԿիսվեք LinkedIn-ումԿպցնել Պինթրեսթում

Միկել Քրիստենսեն

Հեղինակի մասին

Միկել Քրիստենսեն
Mikkel-ը miklix.com-ի ստեղծողն ու սեփականատերն է: Նա ունի ավելի քան 20 տարվա աշխատանքային փորձ՝ որպես պրոֆեսիոնալ համակարգչային ծրագրավորող/ծրագրային ապահովման մշակող և ներկայումս լրիվ դրույքով աշխատում է եվրոպական խոշոր ՏՏ կորպորացիայի մեջ: Երբ նա բլոգ չի գրում, նա իր ազատ ժամանակն անցկացնում է հետաքրքրությունների, հոբբիների և գործունեության լայն շրջանակի վրա, որոնք որոշ չափով կարող են արտացոլվել այս կայքում ընդգրկված թեմաների բազմազանության մեջ: