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-ը, բայց կաշխատի նույնիսկ եթե այդպես չլինի: Սուպեր դասի ընդլայնման առավելությունն այն է, որ այն տրամադրում է որոշ սեսիայի տեղեկություններ, որոնք կարող են օգտակար լինել:
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
Այս օրինակում itemId-ն տվյալների անդամ է: Դուք պետք է իրականացնեք parm մեթոդ յուրաքանչյուր տվյալների անդամի համար և նշեք այն DataMemberAttribute-ով, որպեսզի շրջանակը իմանա, թե դա ինչ է: Սա թույլ է տալիս շրջանակին ավտոմատ կերպով կառուցել երկխոսության պատուհանը ձեզ համար:
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
Ծառայություն
Ծառայության դասը այն դասն է, որը պարունակում է իրական բիզնես տրամաբանությունը։ Այն չի զբաղվում երկխոսության պատուհանների ցուցադրմամբ, խմբաքանակային մշակմամբ կամ նմանատիպ այլ բաներով. դա վերահսկիչ դասի պարտականությունն է։ Սա առանձնացնելով՝ դուք ավելի հավանական է, որ լավ կնախագծեք ձեր կոդը և կստեղծեք ավելի բազմակի օգտագործման կոդ։
Ինչպես տվյալների պայմանագրերի դասը, ծառայության դասը նույնպես կարիք չունի ժառանգելու որևէ կոնկրետ բանից, բայց այն պետք է ժառանգի SysOperationServiceBase դասից, գոնե եթե դուք ակնկալում եք, որ ծառայությունը կկատարվի որպես խմբաքանակային աշխատանք, քանի որ գերդասը որոշակի տեղեկատվություն է տրամադրում խմբաքանակային համատեքստի մասին: Գործողությունը սկսող մեթոդը (այսինքն՝ բիզնես տրամաբանությունը գործարկող) պետք է որպես մուտքային արժեք ընդունի ձեր տվյալների պայմանագրերի դասի օբյեկտը և պետք է զարդարված լինի [SysEntryPointAttribute]-ով: Օրինակ՝
{
}
run անունով մեթոդով՝
public void run(MyDataContract _dataContract)
{
// run business logic here
}
Կառավարիչ
Controller դասը կարգավորում է ձեր գործողության կատարումը և խմբաքանակային մշակումը: Այն նաև ապահովում է, որ կոդը կատարվի CIL-ում՝ առավելագույն արդյունավետության համար: Controller դասը սովորաբար ժառանգում է SysOperationServiceController դասից, չնայած կան նաև այլ տարբերակներ:
{
}
Սուպեր դասի կոնստրուկտորը որպես պարամետրեր ընդունում է դասի անունը, մեթոդի անունը և (ըստ ցանկության) կատարման ռեժիմը: Դասի և մեթոդի անունները պետք է լինեն ձեր ծառայության դասի և դրա վրա կատարվող մեթոդի անունները: Այսպիսով, դուք կարող եք իրականացնել ձեր կառավարիչի կոնստրուկտի մեթոդը հետևյալ կերպ.
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
Այնուհետև MyController դասի main մեթոդը կարող է լինել այնքան պարզ, որքան
{
;
MyController::construct().startOperation();
}
Եվ դուք, ըստ էության, ավարտեցիք։ Վերը նշվածը, ակնհայտորեն, շատ պարզ օրինակ է, և շրջանակը պարունակում է բազմաթիվ այլ տարբերակներ և հնարավորություններ, բայց սա ծառայում է որպես արագ ակնարկ, եթե ձեզ անհրաժեշտ է թարմացում, երբ որոշ ժամանակ չեք օգտագործել շրջանակը։
Լրացուցիչ ընթերցանություն
Եթե ձեզ դուր եկավ այս գրառումը, ձեզ կարող են նաև դուր գալ այս առաջարկները.
- Տվյալների () և buf2Buf () միջև տարբերությունը Dynamics AX 2012-ում
- Օգտագործումը հարցումը SysOperation Data Contract Class in Dynamics AX 2012
- AIF փաստաթղթային ծառայությունների կանչը անմիջապես X++ -ից Դինամիկայում AX 2012
