通过java服务将文档添加到另一个文档中
我正在编写一个java服务,其中我正在为输出构建文档。 但我的结构应该是:输出文档是顶级文档。在里面,我想有另一个文档,比如中间文档,在这个中间文档中,我想有键值 但我的问题是如何将一个文档插入另一个文档。我看到IDataUtil有一个put方法,它要求键作为字符串,值可以是对象 我的代码是通过java服务将文档添加到另一个文档中,java,webmethods,Java,Webmethods,我正在编写一个java服务,其中我正在为输出构建文档。 但我的结构应该是:输出文档是顶级文档。在里面,我想有另一个文档,比如中间文档,在这个中间文档中,我想有键值 但我的问题是如何将一个文档插入另一个文档。我看到IDataUtil有一个put方法,它要求键作为字符串,值可以是对象 我的代码是IDataUtil.put(idcvalueDoc,“Body”,FullValue.toString()) 但是这个主体不应该是字符串,它应该是文档。我想将一个文档插入到另一个文档中 请帮帮我 只需检查Wm
IDataUtil.put(idcvalueDoc,“Body”,FullValue.toString())代码>
但是这个主体不应该是字符串,它应该是文档。我想将一个文档插入到另一个文档中
请帮帮我
只需检查WmPublic软件包中的以下内容是否有帮助:
pub.list:appendToDocumentList
或
要完成您所追求的目标,您需要执行以下操作:
创建一个intermediateDoc IData对象
根据需要向intermediateDoc添加键值元组
创建outputDoc IData对象
将intermediateDoc作为键值元组添加到outputDoc
将outputDoc添加到管道中
下面是一个示例Java服务,演示了这一点(注意,为了方便起见,添加到intermediateDoc的键值元组在这里是硬编码的):
使用该库,您可以编写以下内容:
public static final void exampleService(IData管道)抛出ServiceException{
Document outputDoc=Documents.create();
documentintermediatedoc=outputDoc.docEntry(“intermediateDoc”).putNew();
中间交易分录(“第1项”)。卖出(“价值1”);
中间交易分录(“第2项”)。卖出(“价值2”);
文档.wrap(管道).entry(“outputDoc”).put(outputDoc);
}
守则:
创建顶级文档outputDoc
将intermediateDoc创建为嵌套文档(另一种方法是独立创建它,稍后将其附加到其父文档)
将条目值分配给intermediateDoc
将outputDoc添加到管道中
免责声明:我是wmboost数据的作者。假设和设计输入/输出
假设
ValuesInput[]
的文档是输入,与Values[]
的输出相同
ValuesInput[]
文档下的columnValue
文档具有名为additionalString
的字符串变量(如果文档内/下没有变量,则没有意义)
所以总体来说是这样的:
当然,在设计输入/输出后,您可以通过右键单击鼠标并生成代码->来生成代码,以实现此服务
但是,我没有使用生成的代码,而是尝试给出一个IDataMap示例,您可以在webMethods Javadoccom.softwareag.util.IDataMap
中找到它。使用起来非常方便
伊达达玛
IDataMap
结合了IData
、IDataCursor
、IDataUtil
的功能,
和IDataFactory
IDataMap
从实现java.util.Map
接口
Java集合框架,提供了一个熟悉且简单的
接口IDataMap
扩展地图界面,添加getAs
方法,将返回的值转换为特定类型
事情是这样的:
public静态最终void映射文档(IData管道)引发ServiceException
{
//IDataMap的管道输入
IDataMap pipelineMap=新的IDataMap(管道);
//提取IData[]变量数组中输入的值
IData[]ValuesInput=pipelineMap.getAsIDataArray(“ValuesInput”);
//根据值输入长度初始化输出文档值长度
IData[]值=新IData[ValuesInput.length];
//OutDoc.值
//迭代并将所有值InputDoc复制到OutDoc.Values中
对于(int i=0;i
结果呢
这里有两件事。1-此服务可以将一个文档添加到文档列表中。这类似于将一个值添加到数组中。我需要将一个文档插入到另一个文档中。这意味着一个文档对象将有另一个文档对象作为子对象。2-我希望在java服务中执行此操作。
pub.document:insertDocument
public static final void exampleService(IData pipeline) throws ServiceException {
IDataCursor pipelineCursor = pipeline.getCursor();
try {
// create an intermediateDoc IData object
IData intermediateDoc = IDataFactory.create();
// create a cursor to use to add key value tuples to the intermediateDoc
IDataCursor intermediateCursor = intermediateDoc.getCursor();
// add key value tuples as required to the intermediateDoc
IDataUtil.put(intermediateCursor, "key1", "value1");
IDataUtil.put(intermediateCursor, "key2", "value2");
// ...
// destroy the intermediateCursor when done adding key value tuples
intermediateCursor.destroy();
// create an outputDoc IData object
IData outputDoc = IDataFactory.create();
// create a cursor to use to add key value tuples to the outputDoc
IDataCursor outputCursor = outputDoc.getCursor();
// add the intermediateDoc to the outputDoc
IDataUtil.put(outputCursor, "intermediateDoc", intermediateDoc);
// destroy the outputCursor when done adding key value tuples
outputCursor.destroy();
// add the outputDoc to the pipeline
IDataUtil.put(pipelineCursor, "outputDoc", outputDoc);
} finally {
// destroy the pipelineCursor
pipelineCursor.destroy();
}
}