Miklix

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 အချို့ကို ပေးစွမ်းနိုင်ခြင်းပါပဲ။

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

ဒီဥပမာမှာ itemId က data member တစ်ခုပါ။ data member တစ်ခုချင်းစီအတွက် parm method တစ်ခုကို implement လုပ်ပြီး framework က ဘာလဲဆိုတာ သိအောင်လုပ်ဖို့ DataMemberAttribute နဲ့ tag လုပ်ရပါမယ်။ ဒါက framework ကို သင့်အတွက် dialog ကို အလိုအလျောက်တည်ဆောက်နိုင်စေပါတယ်။

[DataMemberAttribute]
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] နဲ့ အလှဆင်ထားရပါမယ်။ ဥပမာ -

class MyService extends SysOperationServiceBase
{
}

run လို့ခေါ်တဲ့ method နဲ့:

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


ထိန်းချုပ်ကိရိယာ

controller class က သင့်ရဲ့ operation ရဲ့ execution နဲ့ batch processing တွေကို ကိုင်တွယ်ပါတယ်။ အမြင့်ဆုံးစွမ်းဆောင်ရည်အတွက် code ကို CIL မှာ execute လုပ်ကြောင်းလည်း သေချာစေပါတယ်။ controller class က ပုံမှန်အားဖြင့် SysOperationServiceController class ကနေ inherit လုပ်လေ့ရှိပေမယ့် တခြား option တွေလည်း ရှိပါတယ်။

class MyController extends SysOperationServiceController
{
}

super class ရဲ့ constructor က class name၊ method name နဲ့ (ရွေးချယ်နိုင်တဲ့) execution mode တွေကို parameter တွေအဖြစ်ယူပါတယ်။ class နဲ့ method name တွေက သင့်ရဲ့ service class ရဲ့နာမည်နဲ့ ၎င်းမှာ run မယ့် method ဖြစ်သင့်ပါတယ်။ ဒါကြောင့် controller ရဲ့ construct method ကို ဒီလို implement လုပ်နိုင်ပါတယ်။

public static MyController construct()
{
    ;

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

ထို့နောက် MyController class ၏ main method သည် ရိုးရှင်းနိုင်ပါသည်။

public static void main(Args _args)
{
    ;

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

အခြေခံအားဖြင့် ပြီးပါပြီ။ အထက်ဖော်ပြပါအချက်သည် အလွန်ရိုးရှင်းသော ဥပမာတစ်ခုဖြစ်ပြီး framework တွင် အခြားရွေးချယ်စရာများနှင့် ဖြစ်နိုင်ခြေများစွာ ပါဝင်သော်လည်း framework ကို အတော်ကြာ အသုံးမပြုရသေးသည့်အခါ ပြန်လည်ပြင်ဆင်ရန် လိုအပ်ပါက အမြန်ခြုံငုံသုံးသပ်ချက်အဖြစ် အသုံးပြုနိုင်ပါသည်။

နောက်ထပ်စာဖတ်ခြင်း။

ဤပို့စ်ကို သင်နှစ်သက်ပါက၊ ဤအကြံပြုချက်များကို သင်လည်း နှစ်သက်နိုင်ပါသည်-


Bluesky တွင်မျှဝေပါ။Facebook တွင်မျှဝေပါ။LinkedIn တွင်မျှဝေပါ။Tumblr တွင်မျှဝေပါ။X တွင်မျှဝေပါ။LinkedIn တွင်မျှဝေပါ။ပင်တရက်စ်တွင် ပင်ထားပါ

Mikkel Christensen

စာရေးသူအကြောင်း

Mikkel Christensen
မိုက်ကယ် သည် miklix.com ၏ ဖန်တီးရှင်နှင့် ပိုင်ရှင်ဖြစ်သည်။ သူသည် ပရော်ဖက်ရှင်နယ် ကွန်ပြူတာ ပရိုဂရမ်မာ/ဆော့ဖ်ဝဲလ် တီထွင်သူအဖြစ် နှစ်ပေါင်း 20 ကျော် အတွေ့အကြုံရှိပြီး ဥရောပ အိုင်တီကော်ပိုရေးရှင်းကြီးတစ်ခုတွင် လက်ရှိအချိန်ပြည့် အလုပ်ခန့်ထားသည်။ ဘလော့ဂ်မရေးဖြစ်သောအခါတွင် သူသည် ၎င်း၏အားလပ်ချိန်များကို စိတ်ဝင်စားမှု၊ ဝါသနာနှင့် လှုပ်ရှားမှုများစွာတွင် ဖြုန်းတီးခဲ့ပြီး၊ ဤဝဘ်ဆိုက်တွင် ဖော်ပြထားသော အကြောင်းအရာမျိုးစုံကို အတိုင်းအတာတစ်ခုအထိ ထင်ဟပ်စေနိုင်သည်။