📘SQL数据库配置源
LiteFlow从v2.9.0开始,原生支持了标准关系型结构化数据库的配置源,只要你的数据库兼容标准SQL语法,都可以支持。
# 依赖
如果使用数据库作为规则配置源,你需要添加以下额外插件依赖:
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-rule-sql</artifactId>
<version>2.9.7</version>
</dependency>
# 配置
依赖了插件包之后,你无需再配置liteflow.ruleSource
路径。
只需要配置插件的额外参数即可:
liteflow:
rule-source-ext-data-map:
url: jdbc:mysql://localhost:3306/poseidon
driverClassName: com.mysql.cj.jdbc.Driver
username: root
password: 123456
applicationName: demo
#以下是chain表的配置,这个一定得有
chainTableName: chain
chainApplicationNameField: application_name
chainNameField: chain_name
elDataField: el_data
#以下是script表的配置,如果你没使用到脚本,下面可以不配置
scriptTableName: script
scriptApplicationNameField: application_name
scriptIdField: script_id
scriptNameField: script_name
scriptDataField: script_data
scriptTypeField: script_type
liteflow.rule-source-ext-data={\
"url":"jdbc:mysql://localhost:3306/poseidon",\
"driverClassName":"com.mysql.cj.jdbc.Driver",\
"username":"root",\
"password":"123456",\
"applicationName": "demo",\
"chainTableName": "chain",\
"chainApplicationNameField": "application_name",\
"chainNameField": "chain_name",\
"elDataField": "el_data",\
"scriptTableName": "script",\
"scriptApplicationNameField": "application_name",\
"scriptIdField": "script_id",\
"scriptNameField": "script_name",\
"scriptDataField": "script_data",\
"scriptTypeField": "script_type"
}
// Make sure to add code blocks to your code group
# 配置说明
LiteFlow并不约束你的表名和表结构,你只需要把表名和相关的字段名配置在参数里即可。
对于配置项说明如下:
配置项 | 说明 |
---|---|
url | jdbc的连接url |
driverClassName | 驱动器类名 |
username | 数据库用户名 |
password | 数据库密码 |
applicationName | 你的应用名称 |
chainTableName | 编排规则表的表名 |
chainApplicationNameField | 编排规则表中应用名称存储字段名 |
chainNameField | 规则名称存储的字段名 |
elDataField | EL表达式的字段(只存EL) |
scriptTableName | 你的脚本存储表的表名 |
scriptApplicationNameField | 脚本表中应用名称存储字段名 |
scriptIdField | 脚本组件的Id的字段名 |
scriptNameField | 脚本组件名称的字段名 |
scriptDataField | 脚本数据的字段名 |
scriptTypeField | 脚本类型的字段名(类型参照定义脚本组件) |
在数据库中,你至少需要一张表来存储编排规则,这是必须的。
如果你使用到了脚本,那么需要第二张表来存储脚本。
在规则表中,一行数据就是一个规则。在脚本表中,一行数据就是一个脚本组件。
举例:
规则表:liteflow_chain
id | application_name | chain_name | chain_desc | el_data | create_time |
---|---|---|---|---|---|
1 | demo | chain1 | 测试流程1 | THEN(a, b, c, s1,s2); | 2022-09-19 19:31:00 |
脚本表:liteflow_script
id | application_name | script_id | script_name | script_data | script_type | create_time |
---|---|---|---|---|---|---|
1 | demo | s1 | 脚本s1 | import cn.hutool.core.date.DateUtil def date = DateUtil.parse("2022-10-17 13:31:43") println(date) defaultContext.setData("demoDate", date) class Student { int studentID String studentName } Student student = new Student() student.studentID = 100301 student.studentName = "张三" defaultContext.setData("student",student) def a=3 def b=2 defaultContext.setData("s1",a*b) | script | 2022-09-19 19:31:00 |
2 | demo | s2 | 脚本s2 | defaultContext.setData("s2","hello") | script | 2022-09-19 19:31:00 |
# 自动刷新
由于结构化数据库并不提供监听机制,所以当你的规则在数据库中发生变化,LiteFlow是感知不到变化的。不会自动刷新规则。
你需要手动调用LiteFlow提供的相关API来完成规则刷新。在实际应用中,你可以把这个刷新做成页面上的一个按钮或者一个http链接来进行操作。
具体如何调用API进行规则刷新请参照平滑热刷新。
# 小例子
为了让大家能简单上手SQL规则文件的配置和运行,这里有一个小demo,大家可以拉到本地来运行,需要你替换数据库的配置信息。
运行项目前,先读项目里的readme.txt
文件。
https://github.com/bryan31/liteflow-ext-rule-demo
帮助我们改善此文档 (opens new window)
上次更新: 2023/03/17, 01:44:42