Nelepon AIF Document Services Langsung ti X++ dina Dynamics AX 2012
Diterbitkeun: 16 Pébruari 2025 jam 11.25.05 UTC
Dina artikel ieu, kuring ngajelaskeun kumaha carana nelepon jasa dokumén Aplikasi Integration Framework dina Dinamika AX 2012 langsung ti X ++ kode, emulating duanana telepon asup jeung kaluar, nu bisa nyieun nyata gampang manggihan tur debug kasalahan dina kode AIF.
Calling AIF Document Services Directly from X++ in Dynamics AX 2012
Inpormasi dina tulisan ieu dumasar kana Dynamics AX 2012 R3. Ieu bisa atawa bisa jadi teu valid pikeun vérsi séjén.
Kuring nembe nulungan hiji customer nerapkeun hiji Aplikasi Integration Framework (AIF) port inbound pikeun konsumén nyieun dumasar kana data aranjeunna nampi ti sistem sejen. Kusabab Dynamics AX parantos nyayogikeun jasa dokumén CustCustomer, anu ngalaksanakeun logika pikeun ieu, kami mutuskeun pikeun tetep saderhana sareng nganggo solusi standar.
Tapi, geura-giru tétéla yén aya loba masalah meunang sistem éksternal keur ngahasilkeun XML nu Dynamics AX bakal nampa. Skéma XML anu dihasilkeun ku Dynamics AX mangrupikeun anu rada rumit sareng éta ogé katingalina aya sababaraha bug dina Dynamics AX anu kadang-kadang nyababkeun éta nampik XML anu skéma-valid numutkeun alat-alat anu sanés, janten sadayana, éta kabuktosan kirang saderhana tibatan anu disangka.
Salila usaha, kuring sering bajoang pikeun terang naon masalahna sareng file XML anu tangtu sabab pesen kasalahan anu disayogikeun ku AIF kirang informatif. Éta ogé pikaboseneun, sabab kuring kedah ngantosan sistem éksternal ngirim pesen anyar dina MSMQ teras deui pikeun AIF nyandak pesen sareng ngolah éta sateuacan kuring ningali kasalahan.
Ku kituna kuring nalungtik naha kasebut nyaéta dimungkinkeun pikeun nelepon kodeu jasa langsung kalayan file XML lokal pikeun nguji rada speedier tur tétéla yén éta téh - teu ngan éta, éta bener basajan pikeun ngalakukeun tur sabenerna nyadiakeun pesen kasalahan beuki loba bermakna.
Proyék conto di handap maca file XML lokal sarta nyoba make eta kalawan kelas AxdCustomer (nu kelas dokumen dipaké ku layanan CustCustomer) pikeun nyieun customer a. Anjeun tiasa ngadamel padamelan anu sami pikeun sadaya kelas dokumén anu sanés, contona AxdSalesOrder, upami anjeun peryogi.
{
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');
}
Obyék AifEntityKey balik ku customer.create () métode (nu pakait jeung "nyieun" operasi jasa di AIF) ngandung émbaran ngeunaan nu customer dijieun, diantara hal séjén RecId tina rékaman CustTable dijieun.
Upami anjeun badé nguji mangrupikeun port Outbound atanapi upami anjeun peryogi conto kumaha XML kedah katingali dina port Inbound, anjeun ogé tiasa nganggo kelas dokumen pikeun ngékspor palanggan kana file ku cara nelepon metode baca () (cocog sareng operasi jasa "baca"), sapertos:
{
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');
}
Anjeun tangtosna kedah ngagentos '123456' sareng nomer rekening nasabah anu anjeun hoyong baca.