新建查询
组织需要输出的数据,新建一个Query。注意新建的表需要有Index。

文档服务
路径:工具 -> 开发工具 -> AIF -> 创建、更新文档服务


自动创建Pravite Project
通过系统工具可以自动创建下图中的所有类,其中Job可以生成XML的XSD,CIG_ICTradeOrderService是对应的文档服务名称

XML文件
如下代码描述了如何在服务器指定位置生成对应XML文件,执行如下程序可以把CIG_ICTradeOrderTable中的指定数据根据Query中的数据结构生成对应的XML文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| static void ExportOrderXml(CIG_ICTradeOrderTable _tradeOrderTable)
{
AxdCIG_ICTradeOrder TradeOrder;
AifEntityKey key;
Map map;
AifPropertyBag bag;
XmlDocument xmlDocument = new XmlDocument();
FileIoPermission perm;
CIG_ICTradeOrderTable tradeOrderTable;// = CIG_ICTradeOrderTable::find(_transRefId);
CIG_ICTradeOrderLine tradeOrderLine;
filename filename;// = strfmt("//editest/AX-TEST/%1_%2.xml",strrem(strrem(salesTable.SalesId,'/'),'-'),timenow());
Boolean loadStatus;
;
if(_tradeOrderTable)
{
filename = strfmt("//edilive/edi_live/FileSystem/Root/Inbound/ORDER/ORDER_%2.xml",strrem(strrem(_tradeOrderTable.SalesPurchOrderId,'/'),'-'),_tradeOrderTable.EDIGUID);
perm = new FileIoPermission(fileName,"wr");
perm.assert();
map = new Map(Types::Integer, Types::Container);
map.insert(fieldnum(CIG_ICTradeOrderTable, EDIGUID), [_tradeOrderTable.EDIGUID]);
map.insert(fieldnum(CIG_ICTradeOrderTable, OrderType), [_tradeOrderTable.OrderType]);
key = new AifEntityKey();
key.parmTableId(tablenum(CIG_ICTradeOrderTable));
key.parmKeyDataMap(map);
try
{
tradeOrder = new AxdCIG_ICTradeOrder();
loadStatus = xmlDocument.loadXml(tradeOrder.read(key, null, new AifEndPointActionPolicyInfo(), new AifConstraintList(), bag));
if(loadStatus)
{
xmlDocument.save(filename);
CIG_QueueManager::createQueueManagerData(_tradeOrderTable
,xmlDocument.xml()
,""
,AifMessageDirection::Outbound
,filename);
CIG_TradeInterCompany_EDI::updateStatus(_tradeOrderTable,"Sent");
}
CodeAccessPermission::revertAssert();
}
catch
{
throw error('Error in document service outbound');
}
}
}
|