通过java服务将文档添加到另一个文档中

通过java服务将文档添加到另一个文档中,java,webmethods,Java,Webmethods,我正在编写一个java服务,其中我正在为输出构建文档。 但我的结构应该是:输出文档是顶级文档。在里面,我想有另一个文档,比如中间文档,在这个中间文档中,我想有键值 但我的问题是如何将一个文档插入另一个文档。我看到IDataUtil有一个put方法,它要求键作为字符串,值可以是对象 我的代码是IDataUtil.put(idcvalueDoc,“Body”,FullValue.toString()) 但是这个主体不应该是字符串,它应该是文档。我想将一个文档插入到另一个文档中 请帮帮我 只需检查Wm

我正在编写一个java服务,其中我正在为输出构建文档。 但我的结构应该是:输出文档是顶级文档。在里面,我想有另一个文档,比如中间文档,在这个中间文档中,我想有键值

但我的问题是如何将一个文档插入另一个文档。我看到IDataUtil有一个put方法,它要求键作为字符串,值可以是对象

我的代码是
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 Javadoc
    com.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();
      }
    }