如何构造
要说明的是,构造模式和规则配置模式,其实并不是只能二选一。他们既可以单独使用,也可以结合起来使用,并不冲突。事实上,即便是规则配置模式,底层也使用了构造模式。所以,您随意就是。
# 什么时候构造
建议在项目启动时构造,以下只需要构造一次。千万不要每次执行的时候都去构造!!!
# 构造Node
提示
你可以像以下那样构造一个普通的Node,当然在spring/springboot环境,大多数情况你无需去构建一个Node,因为只要你的组件上标有@Component
/@LiteflowComponent
,并且被scan到的话,组件会自动注册。
我这里只是告诉您,可以这样去通过代码去构造,如果你的组件是动态代理类而不是一个静态存在的java类,或是脚本节点,这样的构建就显得很有意义了。
关于脚本节点的概念,可以查看脚本组件
//构建一个普通组件
LiteFlowNodeBuilder.createCommonNode().setId("a")
.setName("组件A")
.setClazz("com.yomahub.liteflow.test.builder.cmp.ACmp")
.build();
//构建一个普通条件组件
LiteFlowNodeBuilder.createCommonCondNode().setId("a")
.setName("组件A")
.setClazz("com.yomahub.liteflow.test.builder.cmp.ACmp")
.build();
//构建一个脚本组件
LiteFlowNodeBuilder.createScriptNode().setId("a")
.setName("组件A")
.setScript("你的脚本")
.build();
//构建一个脚本条件组件
LiteFlowNodeBuilder.createScriptCondNode().setId("a")
.setName("组件A")
.setScript("你的脚本")
.build();
//构建一个脚本组件,从file载入脚本
LiteFlowNodeBuilder.createScriptNode().setId("a")
.setName("组件A")
.setFile("xml-script-file/s1.groovy")
.build();
提示
这里的节点类,不需要你去声明@LiteflowComponent
或者@Component
,如果项目是spring体系的话,LiteFlow框架会自动的把节点类注入到spring上下文中。
所以你仍旧可以在这个类里使用@Autowired和@Resource等等之类的spring任何注解。
# 构建一个Chain
你可以像以下那样构造一个chain,由于和规则定义的没冲突。你也可以和规则文件结合起来用。当build的时候,如果没有则添加,如果有则修改。
LiteFlowChainBuilder.createChain().setChainName("chain2").setCondition(
LiteFlowConditionBuilder.createThenCondition().setValue("c,d").build()
).build();
LiteFlowChainBuilder.createChain().setChainName("chain1").setCondition(
LiteFlowConditionBuilder.createThenCondition().setValue("a,b").build()
).setCondition(
LiteFlowConditionBuilder.createWhenCondition().setValue("e(f|g|chain2)").build()
).build();
值得提一下的是,由于用构造模式是一个链路一个链路的添加,如果你的链路之间有依赖关系,比如上面的代码,chain1依赖chain2,那么chain2要先构建。否则会报错。
如果使用规则文件,那顺序无所谓,因为规则文件是统一解析好的。用构造模式,如果有依赖,顺序问题要注意下。
# 销毁一个Chain
LiteFlow从2.6.13
开始支持了流程的销毁,你可以手动运行以下代码来销毁一个流程:
FlowBus.removeChain("你的流程ID")
帮助我们改善此文档 (opens new window)
上次更新: 2022/10/07, 00:22:18