Miklix

Kushayelwa i-AIF Document Services ngqo kusuka ku-X++ ku-Dynamics AX 2012

Kushicilelwe: 16 Pébruari 2025 jam 11.26.28 UTC

Kulesi sihloko, ngichaza indlela yokubiza izinsiza zedokhumenti ye-Application Integration Framework ku-Dynamics AX 2012 ngokuqondile kusuka kukhodi ye-X++, ilingisa kokubili izingcingo ezingenayo neziphumayo, ezingenza kube lula kakhulu ukuthola nokususa amaphutha kukhodi ye-AIF.


Leli khasi lihunyushwe ngomshini lisuka esiNgisini ukuze lenze lifinyeleleke kubantu abaningi ngangokunokwenzeka. Ngeshwa, ukuhumusha ngomshini akukabi ubuchwepheshe obuphelele, ngakho-ke amaphutha angenzeka. Uma uthanda, ungabuka inguqulo yokuqala yesiNgisi lapha:

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

Ulwazi kulokhu okuthunyelwe lusekelwe ku-Dynamics AX 2012 R3. Ingase ivumeleke noma ingasebenzi kwezinye izinguqulo.

Muva nje bengisiza ikhasimende ukuthi lisebenzise i-Application Integration Framework (AIF) port yangaphakathi ukuze lidale amakhasimende ngokusekelwe kudatha eliyithola kwenye isistimu. Njengoba i-Dynamics AX isivele inikeza isevisi yedokhumenti ye-CustCustomer, esebenzisa ingqondo yalokhu, sinqume ukuyigcina ilula futhi sisebenzise isisombululo esivamile.

Kodwa-ke, kusheshe kwavela ukuthi kube nezinkinga eziningi ukuze uhlelo lwangaphandle lukhiqize i-XML ezokwamukela i-Dynamics AX. I-schema se-XML esikhiqizwe i-Dynamics AX siyinkimbinkimbi kakhulu futhi kubonakala sengathi kunezimbungulu ezimbalwa ku-Dynamics AX okubangela ukuthi kwesinye isikhathi yenqabe i-XML evumelekile ku-schema ngokuya kwamanye amathuluzi, ngakho-ke, ibonakale ilula kunalokho ebengikucabanga.

Ngesikhathi somzamo, ngangihlala ngizabalaza ukuthola ukuthi iyiphi inkinga ngempela ngamafayela athile e-XML ngoba imilayezo yamaphutha enikezwe i-AIF incane kuneyokufundisa. Bekuyisicefe futhi, ngoba bekumele ngilinde uhlelo lwangaphandle ukuthi luthumele umlayezo omusha nge-MSMQ bese ngiphinda ukuze i-AIF ithathe umlayezo bese iwucubungula ngaphambi kokuthi ngibone iphutha.

Ngakho-ke ngiphenyile ukuthi kungenzeka yini ukushayela ikhodi yesevisi ngqo ngefayela lendawo le-XML ukuze lihlolwe ngokushesha futhi kwavela ukuthi kunjalo - futhi hhayi lokho kuphela, kulula ngempela ukukwenza futhi empeleni kuhlinzeka ngemilayezo eminingi yamaphutha enengqondo.

Umsebenzi oyisibonelo ongezansi ufunda ifayela lendawo le-XML bese uzama ukulisebenzisa nesigaba se-AxdCustomer (okuyisigaba sedokhumenti esetshenziswa isevisi ye-CustCustomer) ukuze udale ikhasimende. Ungenza imisebenzi efanayo kuwo wonke amanye amakilasi amadokhumenti, isibonelo i-AxdSalesOrder, uma uyidinga.

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');
}

Into ye-AifEntityKey ebuyiswe indlela ye-customer.create() (ehambisana nomsebenzi wesevisi othi "dala" ku-AIF) iqukethe ulwazi mayelana nokuthi iliphi ikhasimende eladalwa, phakathi kwezinye izinto i-RecId yerekhodi elidaliwe le-CustTable.

Uma ozama ukukuhlola kuyimbobo Ephumayo esikhundleni salokho noma uma udinga nje isibonelo sokuthi i-XML kufanele ibukeke kanjani embobeni Engenayo, ungasebenzisa isigaba sedokhumenti ukuthumela ikhasimende kufayela esikhundleni salokho ngokubiza indlela ye-read() (ehambisana nokusebenza kwesevisi "funda") esikhundleni salokho:

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');
}

Kufanele nakanjani esikhundleni sika-'123456' ufake inombolo ye-akhawunti yekhasimende ofisa ukulifunda.

Yabelana ku-BlueskyYabelana ku-FacebookYabelana ku-LinkedInYabelana ku-TumblrYabelana ku-XYabelana ku-LinkedInPhina ku-Pinterest

Mikkel Bang Christensen

Mayelana Nombhali

Mikkel Bang Christensen
U-Mikkel ungumdali nomnikazi we-miklix.com. Unesipiliyoni seminyaka engaphezu kwengu-20 njengochwepheshe bezinhlelo zekhompyutha/unjiniyela wesoftware futhi njengamanje uqashwe ngokugcwele enkampanini enkulu ye-IT yaseYurophu. Lapho engabhali, uchitha isikhathi sakhe sokuphumula ezintweni eziningi azithandayo, azilibazisa, nemisebenzi, okungenzeka ngokwezinga elithile ibonakale ezihlokweni ezihlukahlukene ezitholakala kule webhusayithi.