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.
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.
{
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:
{
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.