Miklix

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

Kushicilelwe: Februwari 16, 2025 11:26:28 UTC
Igcine ukubuyekezwa: Januwari 12, 2026 08:55:44 UTC

Kulesi sihloko, ngichaza indlela yokubiza izinsizakalo zedokhumenti ye-Application Integration Framework ku-Dynamics AX 2012 ngqo kusuka kukhodi ye-X++, ngilingisa kokubili izingcingo ezingenayo neziphumayo, okungenza kube lula kakhulu ukuthola nokulungisa 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 olukulesi sihloko lusekelwe ku-Dynamics AX 2012 R3. Lungase lusebenze noma lungasebenzeli ezinye izinguqulo.

Muva nje bengisiza ikhasimende ukuthi lisebenzise i-Application Integration Framework (AIF) port yokudala amakhasimende ngokusekelwe kudatha abayitholayo kolunye uhlelo. Njengoba i-Dynamics AX isivele inikeza isevisi yedokhumenti ye-CustCustomer, esebenzisa i-logic yalokhu, sinqume ukukugcina kulula futhi sisebenzise ikhambi elijwayelekile.

Kodwa-ke, kwasheshe kwavela ukuthi kwakunezinkinga eziningi zokwenza uhlelo lwangaphandle lukhiqize i-XML olwaluzokwamukelwa yi-Dynamics AX. I-schema ye-XML ekhiqizwe yi-Dynamics AX iyinkimbinkimbi kakhulu futhi kubonakala sengathi kuneziphazamiso ezimbalwa ku-Dynamics AX ezibangela ukuthi ngezinye izikhathi yenqabe i-XML evumelekile ngokwe-schema ngokwamanye amathuluzi, ngakho-ke konke, kwabonakala kungalula kunalokho engangikucabanga.

Ngesikhathi somzamo, ngangivame ukuba nobunzima bokuthola ukuthi inkinga yayiyini ngempela ngamafayela athile e-XML ngoba imiyalezo yamaphutha enikezwa yi-AIF ayinikezi ulwazi oluningi. Kwakuyinto ekhathazayo futhi, ngoba kwadingeka ngilinde uhlelo lwangaphandle ukuthi luthumele umlayezo omusha nge-MSMQ bese kuthi futhi i-AIF ithathe umlayezo bese iwucubungula ngaphambi kokuba ngibone iphutha.

Ngakho-ke ngiphenye ukuthi kungenzeka yini ukushayela ikhodi yesevisi ngqo ngefayela le-XML lendawo ukuze kuhlolwe ngokushesha futhi kwavela ukuthi kunjalo - futhi hhayi lokho kuphela, kulula kakhulu ukukwenza futhi empeleni kunikeza imiyalezo yamaphutha enenjongo kakhulu.

Umsebenzi wesibonelo ongezansi ufunda ifayela le-XML lendawo bese uzama ukulisebenzisa nekilasi le-AxdCustomer (okuyikilasi ledokhumenti elisetshenziswa yisevisi ye-CustCustomer) ukudala ikhasimende. Ungenza imisebenzi efanayo kuzo zonke ezinye izigaba zedokhumenti, isibonelo i-AxdSalesOrder, uma udinga.

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 yindlela ye-customer.create() (ehambisana nokusebenza kwesevisi "yokudala" ku-AIF) iqukethe ulwazi mayelana nokuthi yiliphi ikhasimende elidalwe, phakathi kwezinye izinto i-RecId yerekhodi le-CustTable elidalwe.

Uma lokho ozama ukukuhlola kuyi-Outbound port esikhundleni salokho noma uma udinga nje isibonelo sokuthi i-XML kufanele ibukeke kanjani ku-Inbound port, ungasebenzisa futhi isigaba sedokhumenti ukuthumela ikhasimende kufayela esikhundleni salokho ngokubiza indlela ye-read() (ehambisana nokusebenza kwensizakalo "yokufunda") esikhundleni salokho, njengokuthi:

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 ufake inombolo ye-akhawunti yekhasimende ofuna ukulifunda esikhundleni sika-'123456'.

Ukufunda Okuqhubekayo

Uma ukujabulele lokhu okuthunyelwe, ungaphinda uthande lezi ziphakamiso:


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

Mikkel Christensen

Mayelana Nombhali

Mikkel 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.