🍕定义脚本组件
脚本节点定义是在规则文件中,你需要做如下定义(这里以xml文件格式举例):
<?xml version="1.0" encoding="UTF-8"?>
<flow>
<nodes>
<node id="s1" name="普通脚本" type="script" language="groovy">
<![CDATA[
def a=3;
def b=2;
defaultContext.setData("s1",a*b);
]]>
</node>
<node id="s2" name="选择脚本" type="switch_script" language="groovy">
<![CDATA[
def count = defaultContext.getData("count");
if(count > 100){
return "a";
}else{
return "b";
}
]]>
</node>
<node id="s3" name="条件脚本" type="if_script" language="groovy">
<![CDATA[
return false;
]]>
</node>
<node id="s4" name="数值循环脚本" type="for_script" language="groovy">
<![CDATA[
//此处可以用来获取你的循环次数,可以调用java对象来获取,这里演示直接返回循环次数
return 10;
]]>
</node>
<node id="s5" name="条件循环脚本" type="while_script" language="groovy">
<![CDATA[
//此处用来获取什么时候继续循环的标识,可以调用java对象来获取,这里只是演示
def flag = yourJavaBean.getFlag();
return flag;
]]>
</node>
<node id="s6" name="退出循环脚本" type="break_script" language="groovy">
<![CDATA[
//此处用来获取什么时候退出循环的标识,可以调用java对象来获取,这里只是演示
def breakFlag = yourJavaBean.getFlag();
return flag;
]]>
</node>
</nodes>
<chain name="chain1">
THEN(a, b, c, s1);
</chain>
<chain name="chain2">
THEN(d, SWITCH(s2).to(a, b));
</chain>
<chain name="chain3">
THEN(d, IF(s3, b, c));
</chain>
<chain name="chain4">
FOR(s4).DO(THEN(a,b)).BREAK(s6);
</chain>
<chain name="chain5">
WHILE(s5).DO(THEN(a,b));
</chain>
</flow>
要注意的是,type
分为6种:
script
:普通脚本节点,脚本里无需返回。
switch_script
:选择脚本节点,脚本里需要返回选择的节点Id。
if_script
:条件脚本节点,脚本里需要返回true/false。
for_script
:数量循环节点,脚本里需要返回数值,表示循环次数。
while_script
:条件循环节点,脚本里需要返回true/false,表示什么条件才继续循环。
break_script
:退出循环节点,脚本里需要返回true/false,表示什么时候退出循环。
你可以在示例的位置进行编写动态脚本来处理业务逻辑。
提示
这里language
并不是必须的,由于LiteFlow是根据你依赖的jar包里动态选择脚本语言,采用的是SPI机制。
这里的language
声明主要是用来给LiteFlowX
插件用来做语法高亮提示处理用的。如果你不加,则不会有相应的语法高亮和提示。
当然得确保你的LiteFlowX
插件的版本在1.1.1
及以上。
提示
这里示例是传入的上下文bean是默认的DefaultContext
,如果是你自定义的上下文Bean,请调用相应的方法来设置和获取数据。
帮助我们改善此文档 (opens new window)
上次更新: 2023/03/17, 01:44:42