Java Webmethods:我们可以在循环时从documentList中删除一个元素吗

Java Webmethods:我们可以在循环时从documentList中删除一个元素吗,java,jakarta-ee,webmethods,Java,Jakarta Ee,Webmethods,在WEBMETHODS中,在DocumentList中循环时是否可以从DocumentList中删除元素?如果是,那怎么办?如果否,那么我们如何将DocumentList变量的值设置为null 感谢nohsib我进行了一些测试,可以将特定文档项设置为null(使用服务发布列表:setListItem),但文档列表将保持相同的大小 另一种方法是循环文档列表,并将您感兴趣的文档添加到新的文档列表中(pub.list:appendToDocumentList) 关于如何将变量设置为null的另一个问题

在WEBMETHODS中,在DocumentList中循环时是否可以从DocumentList中删除元素?如果是,那怎么办?如果否,那么我们如何将DocumentList变量的值设置为null


感谢nohsib

我进行了一些测试,可以将特定文档项设置为null(使用服务发布列表:setListItem),但文档列表将保持相同的大小

另一种方法是循环文档列表,并将您感兴趣的文档添加到新的文档列表中(pub.list:appendToDocumentList)

关于如何将变量设置为null的另一个问题,可以使用管道上的Drop

PS:using webMethods 7.1.2

包括从文档列表中删除项目的服务(
com.wm.data.IData[]
):
tundra.list.document:drop($list[],$index)

  • $list
    是要从中删除项目的文档列表(
    com.wm.data.IData[]
  • $index
    是要删除的项的从零开始的数组索引
相关Java代码如下所示:

publicstaticfinalvoiddrop(IDatapipeline)抛出ServiceException{
IDataCursor cursor=pipeline.getCursor();
试一试{
Object[]list=IDataUtil.getObjectArray(光标,$list);
字符串索引=IDataUtil.getString(光标,$index);
如果(index!=null)IDataUtil.put(光标“$list”,drop(list,index));
}最后{
cursor.destroy();
}
}
//返回一个新数组,其中包含给定数组中的所有元素
公共静态T[]串联(T[]数组,T[]项){
if(array==null)返回项目;
if(items==null)返回数组;
java.util.List List=new java.util.ArrayList(array.length+items.length);
java.util.Collections.addAll(列表,数组);
java.util.Collections.addAll(列表,项);
return list.toArray(java.util.Arrays.copyOf(array,0));
}
//从给定列表中移除给定索引处的元素
公共静态T[]删除(T[]数组,字符串索引){
返回drop(数组,Integer.parseInt(索引));
}
//从给定列表中移除给定索引处的元素
公共静态T[]删除(T[]数组,int索引){
if(数组!=null){
//支持反向/尾部索引
如果(索引<0)索引+=array.length;

如果(index<0 | | array.length,您可以为此使用文档的remove document内置服务

下面是一个非常简单的示例,希望这反映了函数的用法

  • 循环浏览那些文件
  • 分支以在映射步骤中收集循环中不需要的文档的索引
  • 在循环之外,使用pub.document:deleteDocuments从原始文档中删除这些文档列表

  • 希望这有帮助。

    请注意要删除的索引=$iteration-1!索引是从零开始的,$iteration从1开始