📔规则文件格式
LiteFlow支持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.el.xml
zk方式:liteflow.rule-source=el_xml:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
自定义配置源:liteflow.rule-source=el_xml:com.yomahub.liteflow.test.TestCustomParser
<?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"/>
</nodes>
<chain name="chain1">
THEN(
a, b, WHEN(c,d)
);
</chain>
</flow>
JSON在三种模式下的配置示例
在json形式下的rule-source的配置方式如下:
本地文件:liteflow.rule-source=config/flow.el.json
zk方式:liteflow.rule-source=el_json:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
自定义配置源:liteflow.rule-source=el_json:com.yomahub.liteflow.test.TestCustomParser
{
"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))"
}
]
}
}
YAML在三种模式下的配置示例
在yaml形式下的rule-source的配置方式如下:
本地文件:liteflow.rule-source=config/flow.el.yml
zk方式:liteflow.rule-source=el_yml:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
自定义配置源:liteflow.rule-source=el_yml:com.yomahub.liteflow.test.TestCustomParser
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))"
// Make sure to add code blocks to your code group