规则文件格式
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'
 
 

