Miklix

AIF Document Services ကို Dynamics AX 2012 တွင် X++ မှ တိုက်ရိုက်ခေါ်ဆိုခြင်း။

ထုတ်ဝေသည်- ၂၀၂၅၊ ဖေဖော်ဝါရီ ၁၆ UTC ၁၁:၂၆:၂၄

ဤဆောင်းပါးတွင်၊ ကျွန်ုပ်သည် Dynamics AX 2012 ရှိ အက်ပလီကေးရှင်းပေါင်းစည်းမှုဘောင် စာရွက်စာတမ်းဝန်ဆောင်မှုများကို X++ ကုဒ်မှ တိုက်ရိုက်ခေါ်ဆိုပုံ၊ အဝင်နှင့်အထွက်ခေါ်ဆိုမှုများကို အတုယူကာ AIF ကုဒ်တွင် အမှားအယွင်းများကို ရှာဖွေရန်နှင့် အမှားရှာရန် သိသိသာသာပိုမိုလွယ်ကူစေမည့် အဝင်နှင့်အထွက်ခေါ်ဆိုမှုများကို အတုယူဖော်ပြပါသည်။


ဤစာမျက်နှာကို လူများတတ်နိုင်သမျှ ဝင်ရောက်ကြည့်ရှုနိုင်စေရန်အတွက် ဤစာမျက်နှာကို အင်္ဂလိပ်မှ စက်ဖြင့် ဘာသာပြန်ထားခြင်းဖြစ်ပါသည်။ ကံမကောင်းစွာဖြင့်၊ စက်ဘာသာပြန်ခြင်းသည် ပြီးပြည့်စုံသောနည်းပညာမဟုတ်သေးသောကြောင့် အမှားအယွင်းများဖြစ်ပေါ်လာနိုင်သည်။ သင်နှစ်သက်ပါက မူရင်းအင်္ဂလိပ်ဗားရှင်းကို ဤနေရာတွင် ကြည့်ရှုနိုင်ပါသည်။

Calling AIF Document Services Directly from X++ in Dynamics AX 2012

ဤပို့စ်ရှိ အချက်အလက်သည် Dynamics AX 2012 R3 ကို အခြေခံထားသည်။ ၎င်းသည် အခြားဗားရှင်းများအတွက် တရားဝင်နိုင်သည် သို့မဟုတ် မမှန်နိုင်ပါ။

ကျွန်ုပ်သည် မကြာသေးမီက ဖောက်သည်တစ်ဦးအား အခြားစနစ်မှရရှိသည့် ဒေတာအပေါ်အခြေခံ၍ ဖောက်သည်များဖန်တီးရန်အတွက် Application Inboundration Framework (AIF) inbound port တစ်ခုကို အကောင်အထည်ဖော်ရန် ကူညီနေပါသည်။ Dynamics AX သည် ဤအတွက် ယုတ္တိဗေဒကို အကောင်အထည်ဖော်ပေးသည့် CustCustomer စာရွက်စာတမ်းဝန်ဆောင်မှုကို ပေးထားပြီးဖြစ်သောကြောင့်၊ ကျွန်ုပ်တို့သည် ၎င်းကို ရိုးရိုးရှင်းရှင်းထား၍ စံဖြေရှင်းချက်ကို အသုံးပြုရန် ဆုံးဖြတ်ခဲ့သည်။

သို့သော်၊ မကြာမီတွင် Dynamics AX လက်ခံမည့် XML ကိုထုတ်လုပ်ရန် ပြင်ပစနစ်အား ရရှိရန် ပြဿနာများစွာရှိခဲ့ကြောင်း မကြာမီတွေ့ရှိခဲ့ရသည်။ Dynamics AX မှထုတ်လုပ်သော XML schema သည်အတော်လေးရှုပ်ထွေးပြီး Dynamics AX တွင် ချို့ယွင်းချက်အနည်းငယ်ရှိပုံပေါ်ပြီး ၎င်းသည် တစ်ခါတစ်ရံတွင် အခြားသောကိရိယာများအတိုင်း XML ကို schema-valid ဖြစ်သည့်အတိုင်း ငြင်းပယ်စေသည့်အတွက် အားလုံးကို ခြုံငုံကြည့်လျှင် ၎င်းသည် ထင်ထားသည်ထက်ရိုးရှင်းကြောင်း သက်သေပြခဲ့သည်။

ကြိုးပမ်းနေစဉ်အတွင်း၊ အချို့သော XML ဖိုင်များတွင် ပြဿနာသည် အတိအကျ သိရှိနိုင်ရန် AIF မှ ပေးသော error message များသည် အချက်အလက်ထက်နည်းသောကြောင့် မကြာခဏ ရုန်းကန်ခဲ့ရပါသည်။ MSMQ မှတစ်ဆင့် မက်ဆေ့ခ်ျအသစ်တစ်ခု ပေးပို့ရန် ပြင်ပစနစ်မှ မက်ဆေ့ချ်အသစ်တစ်ခု ပေးပို့ရန် စောင့်ဆိုင်းရပြီးနောက် AIF သည် အမှားအယွင်းတစ်ခုကို မတွေ့မီ ၎င်းကို ကောက်ယူပြီး စီမံဆောင်ရွက်ရန်အတွက်လည်း ပျင်းသောကြောင့် ဖြစ်ပါသည်။

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

အောက်ပါနမူနာအလုပ်သည် ဒေသခံ XML ဖိုင်ကိုဖတ်ပြီး ဖောက်သည်တစ်ဦးဖန်တီးရန်အတွက် AxdCustomer အတန်းအစား (CustCustomer ဝန်ဆောင်မှုမှအသုံးပြုသည့် စာရွက်စာတမ်းအတန်းအစားဖြစ်သည်) နှင့် ၎င်းကိုအသုံးပြုရန် ကြိုးစားသည်။ သင်လိုအပ်ပါက အခြားစာရွက်စာတမ်းအတန်းများအားလုံးအတွက် အလားတူအလုပ်များကို သင်လုပ်နိုင်သည်၊ ဥပမာ AxdSalesOrder။

static void CustomerCreate(Args _args)
{
    FileNameOpen fileName    = @'C:\\TestCustomerCreate.xml';
    AxdCustomer  customer;
    AifEntityKey key;
    #File
    ;

    new FileIoPermission(fileName, #IO_Read).assert();

    customer = new AxdCustomer();

    key = customer.create(  XmlDocument::newFile(fileName).xml(),
                            new AifEndpointActionPolicyInfo(),
                            new AifConstraintList());

    CodeAccessPermission::revertAssert();

    info('Done');
}

customer.create() နည်းလမ်းဖြင့် ပြန်ပေးသော AifEntityKey အရာဝတ္တုတွင် (AIF ရှိ "ဖန်တီး" ဝန်ဆောင်မှုလုပ်ငန်းဆောင်ရွက်မှုနှင့် သက်ဆိုင်သည်)၊ ဖန်တီးထားသော CustTable မှတ်တမ်း၏ RecId နှင့် အခြားအရာများထဲတွင် မည်သည့်ဖောက်သည်ဖန်တီးထားသည်နှင့်ပတ်သက်သည့် အချက်အလက်ပါရှိသည်။

သင်စမ်းသပ်ရန်ကြိုးစားနေသည့်အရာမှာ Outbound port အစား သို့မဟုတ် XML ၏ Inbound port တွင် ပုံသဏ္ဌာန်ရှိသင့်သည်ဆိုပါက၊ ထိုအစား read() method ("read" service operation နှင့် သက်ဆိုင်သော) ကိုခေါ်ဆိုခြင်းဖြင့် စာရွက်စာတမ်းအမျိုးအစားကို အသုံးပြု၍ ဝယ်ယူသူအား ဖိုင်တစ်ခုသို့တင်ပို့ရန် စာရွက်စာတမ်းအတန်းအစားကိုလည်း အသုံးပြုနိုင်ပါသည်။

static void CustomerRead(Args _args)
{
    FileNameSave    fileName = @'C:\\TestCustomerRead.xml';
    Map             map      = new Map( Types::Integer,
                                        Types::Container);
    AxdCustomer     customer;
    AifEntityKey    key;
    XMLDocument     xmlDoc;
    XML             xml;
    AifPropertyBag  bag;
    #File
    ;

    map.insert(fieldNum(CustTable, AccountNum), ['123456']);
    key = new AifEntityKey();
    key.parmTableId(tableNum(CustTable));
    key.parmKeyDataMap(map);
    customer = new AxdCustomer();

    xml = customer.read(key,
                        null,
                        new AifEndpointActionPolicyInfo(),
                        new AifConstraintList(),
                        bag);

    new FileIoPermission(fileName, #IO_Write).assert();
    xmlDoc = XmlDocument::newXml(xml);
    xmlDoc.save(fileName);
    CodeAccessPermission::revertAssert();
    info('Done');
}

သင်ဖတ်လိုသော ဝယ်ယူသူ၏ အကောင့်နံပါတ်ဖြင့် '123456' ကို အစားထိုးသင့်ပါသည်။

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

မိုက်ကယ်ဘန်ခရစ္စတင်း

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

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