📙自定义配置源
# 说明
LiteFlow原生只允许一种配置源,比如你使用了数据库配置源,那么就无法使用redis配置源了,你无法一部分规则/脚本从数据库取,另一部分从redis中取。
如果你希望整合两种或以上的配置源,又或者你想从其他框架不支持的地方获取规则/脚本,就需要用到自定义配置源了。
这部分LiteFlow只提供扩展接口,需要开发者自己开发的。
事实上LiteFlow支持的配置源,也是扩展这个接口来实现的。有兴趣的,可以看看源码。
LiteFlow提供三种格式的扩展源,分别是:
XML形式的规则文件请继承ClassXmlFlowELParser
JSON形式的规则文件请继承ClassJsonFlowELParser
YML形式的规则文件请继承ClassYmlFlowELParser
提示
框架原生提供的配置源插件其实都是继承于ClassXmlFlowELParser
的,其实格式对于插件来说没那么重要,因为真正存储的地方可以只存关键数据,而不用是xml/json/yaml。插件拿到关键数据后,可以组装成相应格式形式。
这部分对于具体使用者来说,是黑盒的。
以下以XML形式的自定义源配置类举例:
public class TestCustomParser extends ClassXmlFlowELParser {
@Override
public String parseCustom() {
System.out.println("进入自定义parser");
String xmlContent = null;
//这里需要自己扩展从自定义的地方获取配置
return xmlContent;
}
}
无论你数据存在几个地方,或者是存于哪个存储。中间逻辑需要开发者自己实现,并组装成完成的xml并返回。就是这种形式:
<flow>
<nodes>
<node id="脚本id1" name="脚本名称" type="script" language="脚本语言">
...
</node>
<node id="脚本id2" name="脚本名称" type="script" language="脚本语言">
...
</node>
...
</nodes>
<chain name="chain1">
...
</chain>
<chain name="chain2">
...
</chain>
...
</flow>
提示
自定义配置源这个类也会自动注入到spring的上下文中,所以在这个类里可以随意注入spring上下文中的bean,可以使用@Autowired
和@Resources
等标签
# 配置路径
以下以Springboot的配置做例子,Spring以及非Spring的环境配置可以详细阅读配置项这章节。
你只需要把rule-source改成你自定义规则配置源的类即可
liteflow.rule-source=el_xml:com.yomahub.liteflow.test.TestCustomParser
关于el_xml这种标签头
LiteFlow不光支持xml配置方式,还支持json,yml的配置方式,这里el_xml:
开头是表明这里读取的内容是xml形式的配置,并以EL的方式进行解析。关于规则文件支持格式请详细阅读规则文件格式这章。