规则文件格式
LiteFlow从2.5.0
版本开始支持3种配置方式
- xml
- json
- yml
json,yml,xml配置起来都差不多,不会增加你额外的学习负担。只是形式不同而已。
提示
在后面的章节中,示例基本都是以xml配置来进行,如要换成json和yml,则自行参考这章给出的配置范本。
# 规则组成部分
LiteFlow的规则文件非常轻量,非常容易上手。主要由Node
节点和Chain
节点组成。
而Node
节点在Springboot/Spring环境体系中是非必须的,只要将相应的组件注册到上下文中即可。当然如果配置在规则文件中,框架也会将节点注册到Spring上下文中。
在非Spring环境体系中,Node
节点是必须的。如果不配置Node
,系统会报找不到节点的错误。这点要务必注意下。
以下的格式是只作为一个范本,提供给使用者参考。
# xml格式
在xml形式下的rule-source的配置方式如下:
本地文件:liteflow.rule-source=config/flow.xml
zk方式:liteflow.rule-source=xml:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
自定义配置源:liteflow.rule-source=xml:com.yomahub.liteflow.test.TestCustomParser
xml的完整形式举例:
<?xml version="1.0" encoding="UTF-8"?>
<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"/>
<node id="e" class="com.yomahub.liteflow.test.parser.cmp.ECmp"/>
<node id="f" class="com.yomahub.liteflow.test.parser.cmp.FCmp"/>
<node id="g" class="com.yomahub.liteflow.test.parser.cmp.GCmp"/>
</nodes>
<chain name="chain1">
<then value="a,c"/>
<when value="b,d,e(f|g)"/>
<then value="chain2"/>
</chain>
<chain name="chain2">
<then value="c,g,f"/>
</chain>
</flow>
# json格式
在json形式下的rule-source的配置方式如下:
本地文件:liteflow.rule-source=config/flow.json
zk方式:liteflow.rule-source=json:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
自定义配置源:liteflow.rule-source=json:com.yomahub.liteflow.test.TestCustomParser
json的完整形式举例:
{
"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"
},
{
"id": "e",
"class": "com.yomahub.liteflow.test.parser.cmp.ECmp"
},
{
"id": "f",
"class": "com.yomahub.liteflow.test.parser.cmp.FCmp"
},
{
"id": "g",
"class": "com.yomahub.liteflow.test.parser.cmp.GCmp"
}
]
},
"chain": [
{
"name": "chain2",
"condition": [
{"type": "then", "value": "c,g,f"}
]
},
{
"name": "chain1",
"condition": [
{"type": "then", "value": "a,c"},
{"type": "when", "value": "b,d,e(f|g)"},
{"type": "then", "value": "chain2"}
]
}
]
}
}
# yml格式
在yml形式下的rule-source的配置方式如下:
本地文件:liteflow.rule-source=config/flow.yml
zk方式:liteflow.rule-source=yml:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
自定义配置源:liteflow.rule-source=yml:com.yomahub.liteflow.test.TestCustomParser
yml的完整形式举例:
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
- id: e
class: com.yomahub.liteflow.test.parser.cmp.ECmp
- id: f
class: com.yomahub.liteflow.test.parser.cmp.FCmp
- id: g
class: com.yomahub.liteflow.test.parser.cmp.GCmp
chain:
- name: chain1
condition:
- type: then
value: 'a,c'
- type: when
value: 'b,d,e(f|g)'
- type: then
value: 'chain2'
- name: chain2
condition:
- type: then
value: 'c,g,f'