Dynamics AX 2012 SysOperation Framework အမြန်ခြုံငုံသုံးသပ်ချက်
ထုတ်ဝေသည်- ၂၀၂၅၊ ဖေဖော်ဝါရီ ၁၅ UTC ၂၂:၄၁:၁၉
နောက်ဆုံး မွမ်းမံပြင်ဆင်သည်- ၂၀၂၆၊ ဇန်နဝါရီ ၁၂ UTC ၀၈:၄၀:၂၆
ဤဆောင်းပါးသည် Dynamics AX 2012 နှင့် Dynamics 365 for Operations ရှိ SysOperation framework တွင် processing classes များနှင့် batch jobs များကို မည်သို့အကောင်အထည်ဖော်ရမည်ကို အမြန်ခြုံငုံသုံးသပ်ချက် (သို့မဟုတ် cheat sheet) ကို ပေးပါသည်။
Dynamics AX 2012 SysOperation Framework Quick Overview
ဤပို့စ်ရှိ အချက်အလက်များသည် Dynamics AX 2012 R3 ကို အခြေခံထားပါသည်။ အခြားဗားရှင်းများအတွက် မှန်ကန်နိုင်သည် သို့မဟုတ် မမှန်ကန်နိုင်ပါ။ (အပ်ဒိတ်- ဤဆောင်းပါးရှိ အချက်အလက်များသည် Dynamics 365 for Operations အတွက်လည်း မှန်ကန်ကြောင်း ကျွန်ုပ် အတည်ပြုနိုင်ပါသည်)
ဒီပို့စ်က အမြန်ခြုံငုံသုံးသပ်ချက်နဲ့ cheat sheet အနေနဲ့ပဲ ရည်ရွယ်ပါတယ်။ SysOperation framework ကို အသစ်သုံးနေတယ်ဆိုရင် Microsoft ရဲ့ white paper ကိုလည်း ဖတ်ကြည့်ဖို့ အကြံပြုချင်ပါတယ်။ ဒီ framework နဲ့ operation တွေ တည်ဆောက်ရာမှာ ပါဝင်တဲ့ class အမျိုးမျိုးကို အမြန်လေ့လာချင်ရင်တော့ ဒီမှာရှိတဲ့ အချက်အလက်တွေက အသုံးဝင်ပါလိမ့်မယ်။
ကွဲပြားမှုတွေတော့ ရှိပေမယ့် framework ကိုသုံးတဲ့အခါ class သုံးခုကို implement လုပ်လေ့ရှိပါတယ်။
- ဒေတာစာချုပ် (SysOperationDataContractBase ကို တိုးချဲ့သင့်သည်)
- ဝန်ဆောင်မှု (SysOperationServiceBase ကို တိုးချဲ့သင့်သည်)
- ထိန်းချုပ်ကိရိယာ (SysOperationServiceController ကို တိုးချဲ့ရမည်)
ထို့အပြင်၊ UIBuilder class တစ်ခုကိုလည်း implement လုပ်နိုင်ပါသည် (SysOperationUIBuilder ကို extend လုပ်ရမည်)၊ သို့သော် framework မှ အလိုအလျောက်ထုတ်ပေးသည်ထက် dialog သည် တစ်စုံတစ်ရာကြောင့် ပိုမိုအဆင့်မြင့်ရမည်ဆိုပါကသာ လိုအပ်ပါသည်။
ဒေတာစာချုပ်
data contract မှာ သင့်ရဲ့ operation အတွက် လိုအပ်တဲ့ data member တွေကို သိမ်းဆည်းထားပါတယ်။ RunBase framework မှာ သတ်မှတ်ထားတဲ့ ပုံမှန် CurrentList macro နဲ့ နှိုင်းယှဉ်နိုင်ပေမယ့် class အနေနဲ့ implement လုပ်ပါတယ်။ data contract ဟာ SysOperationDataContractBase ကို extend လုပ်သင့်ပေမယ့် extend မလုပ်ရင်တောင် အလုပ်လုပ်ပါလိမ့်မယ်။ super class ကို extending လုပ်ခြင်းရဲ့ အားသာချက်ကတော့ အသုံးဝင်နိုင်တဲ့ session information အချို့ကို ပေးစွမ်းနိုင်ခြင်းပါပဲ။
class MyDataContract extends SysOperationDataContractBase
{
ItemId itemId;
}
ဒီဥပမာမှာ itemId က data member တစ်ခုပါ။ data member တစ်ခုချင်းစီအတွက် parm method တစ်ခုကို implement လုပ်ပြီး framework က ဘာလဲဆိုတာ သိအောင်လုပ်ဖို့ DataMemberAttribute နဲ့ tag လုပ်ရပါမယ်။ ဒါက framework ကို သင့်အတွက် dialog ကို အလိုအလျောက်တည်ဆောက်နိုင်စေပါတယ်။
public ItemId parmItemId(ItemId _itemId = itemId)
{
;
itemId = _itemId;
return itemId;
}
ဝန်ဆောင်မှု
service class ဆိုတာ တကယ့် business logic ပါဝင်တဲ့ class ပါ။ dialog တွေ၊ batch processing တွေ ဒါမှမဟုတ် တခြားဘာတွေပြသတာနဲ့ မသက်ဆိုင်ပါဘူး - အဲဒါက controller class ရဲ့ တာဝန်ပါ။ ဒါကို ခွဲထုတ်ခြင်းအားဖြင့် သင့်ရဲ့ code ကို ကောင်းကောင်းဒီဇိုင်းဆွဲနိုင်ပြီး ပြန်လည်အသုံးပြုနိုင်တဲ့ code တွေကို ပိုမိုဖန်တီးနိုင်ဖွယ်ရှိပါတယ်။
data contract class လိုပဲ service class ဟာ သီးခြားဘာတစ်ခုမှ inherit လုပ်စရာမလိုပေမယ့် super class က batch context အကြောင်း အချက်အလက်တချို့ကို ပေးတဲ့အတွက် service ကို batch job အနေနဲ့ run မယ်လို့ မျှော်လင့်ထားရင် SysOperationServiceBase class ကနေ inherit လုပ်သင့်ပါတယ်။ operation ကိုစတင်တဲ့ method (ဆိုလိုတာက business logic ကို run တဲ့) ဟာ သင့်ရဲ့ data contract class ရဲ့ object တစ်ခုကို input အနေနဲ့ယူရမှာဖြစ်ပြီး [SysEntryPointAttribute] နဲ့ အလှဆင်ထားရပါမယ်။ ဥပမာ -
{
}
run လို့ခေါ်တဲ့ method နဲ့:
public void run(MyDataContract _dataContract)
{
// run business logic here
}
ထိန်းချုပ်ကိရိယာ
controller class က သင့်ရဲ့ operation ရဲ့ execution နဲ့ batch processing တွေကို ကိုင်တွယ်ပါတယ်။ အမြင့်ဆုံးစွမ်းဆောင်ရည်အတွက် code ကို CIL မှာ execute လုပ်ကြောင်းလည်း သေချာစေပါတယ်။ controller class က ပုံမှန်အားဖြင့် SysOperationServiceController class ကနေ inherit လုပ်လေ့ရှိပေမယ့် တခြား option တွေလည်း ရှိပါတယ်။
{
}
super class ရဲ့ constructor က class name၊ method name နဲ့ (ရွေးချယ်နိုင်တဲ့) execution mode တွေကို parameter တွေအဖြစ်ယူပါတယ်။ class နဲ့ method name တွေက သင့်ရဲ့ service class ရဲ့နာမည်နဲ့ ၎င်းမှာ run မယ့် method ဖြစ်သင့်ပါတယ်။ ဒါကြောင့် controller ရဲ့ construct method ကို ဒီလို implement လုပ်နိုင်ပါတယ်။
{
;
return new MyController(classStr(MyService),
methodStr(MyService, run));
}
ထို့နောက် MyController class ၏ main method သည် ရိုးရှင်းနိုင်ပါသည်။
{
;
MyController::construct().startOperation();
}
အခြေခံအားဖြင့် ပြီးပါပြီ။ အထက်ဖော်ပြပါအချက်သည် အလွန်ရိုးရှင်းသော ဥပမာတစ်ခုဖြစ်ပြီး framework တွင် အခြားရွေးချယ်စရာများနှင့် ဖြစ်နိုင်ခြေများစွာ ပါဝင်သော်လည်း framework ကို အတော်ကြာ အသုံးမပြုရသေးသည့်အခါ ပြန်လည်ပြင်ဆင်ရန် လိုအပ်ပါက အမြန်ခြုံငုံသုံးသပ်ချက်အဖြစ် အသုံးပြုနိုင်ပါသည်။
နောက်ထပ်စာဖတ်ခြင်း။
ဤပို့စ်ကို သင်နှစ်သက်ပါက၊ ဤအကြံပြုချက်များကို သင်လည်း နှစ်သက်နိုင်ပါသည်-
- Dynamics AX 2012 တွင် AIF ဝန်ဆောင်မှုအတွက် စာရွက်စာတမ်းအမျိုးအစားနှင့် မေးမြန်းချက်ကို ခွဲခြားသတ်မှတ်ခြင်း။
- Dynamics AX 2012 တွင် X++ ကုဒ်မှ Enum ၏ဒြပ်စင်များကို မည်သို့ပြန်ဆိုရမည်နည်း။
- Dynamics AX 2012 ရှိ SysOperation Data Contract Class တွင် Query တစ်ခုကို အသုံးပြုခြင်း။
