Nelepon AIF Document Services Langsung ti X++ dina Dynamics AX 2012
Diterbitkeun: 16 Pébruari 2025 jam 11.25.05 UTC
Panungtungan diropéa: 12 Januari 2026 jam 8.55.41 UTC
Dina tulisan ieu, kuring ngajelaskeun kumaha cara nelepon layanan dokumén Application Integration Framework dina Dynamics AX 2012 langsung tina kode X++, nirukeun telepon asup sareng kaluar, anu tiasa ngagampangkeun sacara signifikan pikeun mendakan sareng ngadebug 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. Éta tiasa valid atanapi henteu pikeun vérsi anu sanés.
Kuring nembe ngabantosan palanggan nerapkeun port inbound Application Integration Framework (AIF) pikeun nyiptakeun palanggan dumasar kana data anu ditampi ti sistem sanés. Kusabab Dynamics AX parantos nyayogikeun layanan dokumén CustCustomer, anu nerapkeun logika pikeun ieu, kami mutuskeun pikeun tetep saderhana sareng nganggo solusi standar.
Nanging, teu lami deui tétéla aya seueur masalah pikeun ngajantenkeun sistem éksternal ngahasilkeun XML anu bakal ditampi ku Dynamics AX. Skéma XML anu dihasilkeun ku Dynamics AX mangrupikeun anu rada rumit sareng sigana ogé aya sababaraha bug dina Dynamics AX anu kadang-kadang nyababkeun éta nolak XML anu valid skéma numutkeun alat sanés, janten sacara umum, éta kabuktian kirang saderhana tibatan anu kuring pikirkeun.
Salila usaha éta, kuring sering hésé pikeun mikanyaho naon masalahna dina file XML anu tangtu sabab pesen kasalahan anu disayogikeun ku AIF kirang informatif. Éta ogé ngabosenkeun, sabab kuring kedah ngantosan sistem éksternal ngirim pesen énggal ngalangkungan MSMQ teras deui ka AIF pikeun ngajemput pesen éta sareng ngolahna sateuacan kuring tiasa ningali kasalahan.
Ku kituna kuring nalungtik naha mungkin pikeun nelepon kode layanan langsung nganggo file XML lokal pikeun uji coba anu langkung gancang sareng tétéla leres - sareng henteu ngan éta, éta gampang pisan dilakukeun sareng leres-leres nyayogikeun pesen kasalahan anu langkung bermakna.
Conto padamelan di handap ieu maca file XML lokal sareng nyobian nganggo éta sareng kelas AxdCustomer (anu mangrupikeun kelas dokumén anu dianggo ku layanan CustCustomer) pikeun nyiptakeun palanggan. 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');
}
Objek AifEntityKey anu dipulangkeun ku metode customer.create() (anu pakait sareng operasi layanan "create" dina AIF) ngandung inpormasi ngeunaan konsumén mana anu didamel, diantarana RecId tina rékaman CustTable anu didamel.
Upami anu anjeun badé uji nyaéta port Outbound atanapi upami anjeun ngan ukur peryogi conto kumaha XML kedah katingali dina port Inbound, anjeun ogé tiasa nganggo kelas dokumén pikeun ngékspor palanggan ka file ku cara nyauran metode read() (anu saluyu sareng operasi layanan "baca"), sapertos kieu:
{
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');
}
Tangtosna anjeun kedah ngagentos '123456' ku nomer rekening palanggan anu anjeun hoyong baca.
Bacaan salajengna
Upami anjeun resep kana tulisan ieu, anjeun ogé tiasa resep saran ieu:
- Bédana antara data () sareng buf2Buf () dina Dynamics AX 2012
- Ngidentipikasi Kelas Dokumén sareng Paménta pikeun Layanan AIF dina Dynamics AX 2012
- Nganggo kerangka SysExtension pikeun Milarian Subkelas mana anu bakal didamel dina Dynamics AX 2012
