JDK支持度
LiteFlow要求的最低的JDK版本为8,支持JDK8~JDK17所有的版本。
如果你使用JDK11以上,确保LiteFlow的版本为v2.10.6及其以上版本。
因为LiteFlow从v2.10.6开始,对JDK11和JDK17进行了详细的用例测试,通过了全部的900多个测试用例。而在v2.10.6以下版本,在JDK11以上是未经过测试用例保障的。
特别需要注意的是,如果你使用JDK11及其以上的版本,请确保jvm参数加上以下参数
--add-opens java.base/sun.reflect.annotation=ALL-UNNAMED
Springboot支持度
LiteFlow要求的Springboot的最低的版本是2.0。
支持的范围是Springboot 2.X ~ Springboot 3.X。
当然如果你使用了最新的Springboot 3.X,相应的JDK版本也要切换为JDK17。
<dependency>
<groupId>com.yomahubgroupId>
<artifactId>liteflow-spring-boot-starterartifactId>
<version>2.11.4.2version>
dependency>
@Component("a")
public class ACmp extends NodeComponent {
@Override
public void process() {
//do your business
}
}
@Component("b")
public class BCmp extends NodeComponent {
@Override
public void process() {
//do your business
}
}
liteflow.rule-source=config/flow.el.xml
在resources下的config/flow.el.xml中定义规则:
<flow>
<chain name="chain1">
THEN(a, b);
chain>
flow>
SpringBoot在启动时会自动装载规则文件。
#规则文件路径
liteflow.rule-source=config/flow.el.xml
#-----------------以下非必须-----------------
#liteflow是否开启,默认为true
liteflow.enable=true
#liteflow的banner是否开启,默认为true
liteflow.print-banner=true
#zkNode的节点,只有使用zk作为配置源的时候才起作用
liteflow.zk-node=/lite-flow/flow
#上下文的最大数量槽,默认值为1024
liteflow.slot-size=1024
#FlowExecutor的execute2Future的线程数,默认为64
liteflow.main-executor-works=64
#FlowExecutor的execute2Future的自定义线程池Builder,LiteFlow提供了默认的Builder
liteflow.main-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultMainExecutorBuilder
#自定义请求ID的生成类,LiteFlow提供了默认的生成类
liteflow.request-id-generator-class=com.yomahub.liteflow.flow.id.DefaultRequestIdGenerator
#并行节点的线程池Builder,LiteFlow提供了默认的Builder
liteflow.thread-executor-class=com.yomahub.liteflow.thread.LiteFlowDefaultWhenExecutorBuilder
#异步线程最长的等待时间(只用于when),默认值为15000
liteflow.when-max-wait-time=15000
#异步线程最长的等待时间单位(只用于when),默认值为MILLISECONDS,毫秒
liteflow.when-max-wait-time-unit=MILLISECONDS
#when节点全局异步线程池最大线程数,默认为16
liteflow.when-max-workers=16
#when节点全局异步线程池等待队列数,默认为512
liteflow.when-queue-limit=512
#并行循环子项线程池最大线程数,默认为16
liteflow.parallelLoop-max-workers=16
#并行循环子项线程池等待队列数,默认为512
liteflow.parallelLoop-queue-limit=512
#并行循环子项的线程池Builder,LiteFlow提供了默认的Builder
liteflow.parallelLoop-executor-class=com.yomahub.liteflow.test.customThreadPool.CustomThreadBuilder
#是否在启动的时候就解析规则,默认为true
liteflow.parse-on-start=true
#全局重试次数,默认为0
liteflow.retry-count=0
#是否支持不同类型的加载方式混用,默认为false
liteflow.support-multiple-type=false
#全局默认节点执行器
liteflow.node-executor-class=com.yomahub.liteflow.flow.executor.DefaultNodeExecutor
#是否打印执行中过程中的日志,默认为true
liteflow.print-execution-log=true
#是否开启本地文件监听,默认为false
liteflow.enable-monitor-file=false
#是否开启快速解析模式,默认为false
liteflow.fast-load=false
#监控是否开启,默认不开启
liteflow.monitor.enable-log=false
#监控队列存储大小,默认值为200
liteflow.monitor.queue-limit=200
#监控一开始延迟多少执行,默认值为300000毫秒,也就是5分钟
liteflow.monitor.delay=300000
#监控日志打印每过多少时间执行一次,默认值为300000毫秒,也就是5分钟
liteflow.monitor.period=300000
LiteFlow支持3种配置方式
<flow>
<nodes>
<node id="a" class="com.yomahub.liteflow.test.parser.cmp.ACmp"/>
<node id="b" class="com.yomahub.liteflow.test.parser.cmp.BCmp"/>
<node id="c" class="com.yomahub.liteflow.test.parser.cmp.CCmp"/>
<node id="d" class="com.yomahub.liteflow.test.parser.cmp.DCmp"/>
nodes>
<chain name="chain1">
THEN(
a, b, WHEN(c,d)
);
chain>
flow>
{
"flow": {
"nodes": {
"node": [
{
"id": "a",
"class": "com.yomahub.liteflow.test.parser.cmp.ACmp"
},
{
"id": "b",
"class": "com.yomahub.liteflow.test.parser.cmp.BCmp"
},
{
"id": "c",
"class": "com.yomahub.liteflow.test.parser.cmp.CCmp"
},
{
"id": "d",
"class": "com.yomahub.liteflow.test.parser.cmp.DCmp"
}
]
},
"chain": [
{
"name": "chain1",
"value": "THEN(a, b, WHEN(c, d))"
}
]
}
}
flow:
nodes:
node:
- id: a
class: com.yomahub.liteflow.test.parser.cmp.ACmp
- id: b
class: com.yomahub.liteflow.test.parser.cmp.BCmp
- id: c
class: com.yomahub.liteflow.test.parser.cmp.CCmp
- id: d
class: com.yomahub.liteflow.test.parser.cmp.DCmp
chain:
- name: chain1
value: "THEN(a, b, WHEN(c, d))"
常规配置
liteflow.rule-source=config/flow.el.xml
工程内指定多个路径
规则文件之间可以用,或者;隔开:
liteflow.rule-source=config/flow1.el.xml,config/flow2.el.xml,config/flow3.el.xml
你也可以使用Spring EL表达式进行模糊匹配,加载多个配置文件:
liteflow.rule-source=config/**/*.el.xml
依赖
<dependency>
<groupId>com.yomahubgroupId>
<artifactId>liteflow-rule-sqlartifactId>
<version>2.11.4.2version>
dependency>
yml配置
liteflow:
rule-source-ext-data-map:
url: jdbc:mysql://localhost:3306/poseidon
driverClassName: com.mysql.cj.jdbc.Driver
username: root
password: 123456
applicationName: demo
#是否开启SQL日志
sqlLogEnabled: true
#是否开启SQL数据轮询自动刷新机制 默认不开启
pollingEnabled: true
pollingIntervalSeconds: 60
pollingStartSeconds: 60
#以下是chain表的配置,这个一定得有
chainTableName: chain
chainApplicationNameField: application_name
chainNameField: chain_name
elDataField: el_data
chainEnableField: enable
#以下是script表的配置,如果你没使用到脚本,下面可以不配置
scriptTableName: script
scriptApplicationNameField: application_name
scriptIdField: script_id
scriptNameField: script_name
scriptDataField: script_data
scriptTypeField: script_type
scriptLanguageField: script_language
scriptEnableField: enable
参考资料
https://liteflow.cc/pages/df6982/
https://liteflow.cc/pages/6fa87e/