我想映射一个在WebMethods中是文档列表的数组。我认为你可以在不映射所有孩子的情况下映射该变量。我已经完成了这一切,并且没有在PassArea中显示任何内容。 (PassArea是之后发送到大型机程序的数据数组。)
A --> B
Field1 F1
Field2 F2
field3 F3
文档是A,自然程序中的输入文档是B. - >是将它们连接在一起的链接。
我没有要展示的图片,因为这会泄露一些公司信息。
答案 0 :(得分:6)
如果文件列表的字段" A"具有与文档列表字段不同的名称" B"那么不,你不能映射文件清单" A"记录清单" B"。 WebMethods不知道A中的哪个字段对应于" B"中的哪个字段。
您必须执行以下操作:
第二步截屏
第3步截图
答案 1 :(得分:0)
有很多方法可以在文档数组之间进行映射。但在创建之前,请考虑以下文章:
正如#2提示的那样,他们有6种方式从最快到最慢排列如下(但我会在前三个中给出一个例子,因为后三者是相当的显然很慢,这被认为是避免的):
public static final void mappingDocuments(IData pipeline) throws ServiceException {
// pipeline
IDataCursor pipelineCursor = pipeline.getCursor();
// Instantiate input A
IData[] A = IDataUtil.getIDataArray(pipelineCursor, "A");
// Initiate output B
IData[] B = new IData[A.length];
if (A != null)
{
for (int i = 0; i < A.length; i++)
{
// Populate the Field in doc A
IDataCursor ACursor = A[i].getCursor();
String Field1 = IDataUtil.getString(ACursor, "Field1");
String Field2 = IDataUtil.getString(ACursor, "Field2");
String Field3 = IDataUtil.getString(ACursor, "Field3");
ACursor.destroy();
// Create IData[i] and cursors finally put all Fields into B[i] variable output
B[i] = IDataFactory.create();
IDataCursor BCursor = B[i].getCursor();
IDataUtil.put(BCursor, "F1", Field1);
IDataUtil.put(BCursor, "F2", Field2);
IDataUtil.put(BCursor, "F3", Field3);
BCursor.destroy();
// OR JUST USE CLONE BELOW IF YOU DON'T HAVE ANY MODIFICATION INSIDE THE VARIABLE
// B[i] = IDataUtil.clone(A[i]);
}
}
pipelineCursor.destroy();
// Finally to put the B Map(IData) to output.
// Actually you can use only single pipelineCursor throughout all code but it's just for readable
IDataUtil.put(pipelineCursor, "B", B);
pipelineCursor.destroy();
}
希望这些有帮助...