⌛️迭代循环组件
版本支持:v2.9.7+
# 用法
LiteFlow支持了迭代循环组件,相当于Java语言的Iterator
关键字,主要用于ITERATOR...DO...
表达式。
关于ITERATOR...DO...
表达式的用法,可以参考循环编排这一章。
比如要进行迭代循环操作,可以如下定义:
<chain name="chain1">
ITERATOR(x).DO(THEN(a, b));
</chain>
x节点的定义,需要继承NodeIteratorComponent
,需要实现processIterator
方法:
@LiteflowComponent("x")
public class XCmp extends NodeIteratorComponent {
@Override
public Iterator<?> processIterator() throws Exception {
List<String> list = ListUtil.toList("jack", "mary", "tom");
return list.iterator();
}
}
内部可以覆盖的方法和this关键字可调用的方法见普通组件这一章。
# 当前迭代对象的获取
关键字ITERATOR...DO...
中DO
里面所有的节点都可以通过this.getCurrLoopObj()
获得迭代循环的当前对象。
在脚本中通过_meta.loopObject
来获取。
# 多层嵌套循环中获取迭代对象v2.12.3+
如果在一个3层嵌套循环里:
<chain name="chain1">
ITERATOR(x).DO(
ITERATOR(y).DO(
ITERATOR(z).DO(
THEN(a,b)
)
)
);
</chain>
a组件要取到当前迭代对象:this.getCurrLoopObj()
或者this.getPreNLoopObj(0)
,这2者是等价的
a组件要取到第二层迭代对象:this.getPreLoopObj()
或者this.getPreNLoopObj(1)
,这2者是等价的
a组件要取到第一层迭代对象:this.getPreNLoopObj(2)
唯一要关注的就是getPreNLoopObj
这个方法,里面的数字代表了往前取多少层,数字0就代表了当前层。以此类推。
帮助我们改善此文档 (opens new window)
上次更新: 2024/09/06, 11:44:23