LiteFlow 流程引擎引入Spring boot项目集成pg数据库
官网地址
简要
如果你要对复杂业务逻辑进行新写或者重构,用LiteFlow最合适不过。它是一个编排式的规则引擎框架,组件编排,帮助解耦业务代码,让每一个业务片段都是一个组件。
利用LiteFlow,你可以将瀑布流式的代码,转变成以组件为核心概念的代码结构,这种结构的好处是可以任意编排,组件与组件之间是解耦的,组件可以用脚本来定义,组件之间的流转全靠规则来驱动。LiteFlow拥有开源规则引擎最为简单的DSL语法。十分钟就可上手。
LiteFlow的脚本组件,支持众多脚本语言,完全和Java打通,你可以用脚本来实现任何逻辑。
项目引入
maven 所需jar包
- liteflow-spring-boot-starter:
这是 LiteFlow 的核心依赖,它集成了 LiteFlow 与 Spring Boot 框架,使得你可以轻松地在 Spring Boot 项目中使用 LiteFlow 来进行流程管理。
- liteflow-rule-sql:
此模块提供了从 SQL 数据库加载规则的能力,使你可以将流程定义存储在数据库中,并根据需要动态加载它们。
- liteflow-script-groovy:
该依赖项允许你在 LiteFlow 中使用 Groovy 脚本语言来编写脚本节点。Groovy 是一种强大的动态语言,非常适合编写简短而灵活的脚本逻辑。
- liteflow-script-javax:
提供了使用 Java 编写的脚本节点支持,允许更深入地集成业务逻辑。
- liteflow-script-aviator:
Aviator 是一个轻量级的表达式语言引擎,这个依赖允许你在 LiteFlow 中使用 Aviator 表达式来简化条件判断和其他逻辑操作。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36<properties>
<liteflow.version>2.12.4.1</liteflow.version>
</properties>
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-spring-boot-starter</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-rule-sql</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-groovy</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-javax</artifactId>
<version>${liteflow.version}</version>
</dependency>
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>liteflow-script-aviator</artifactId>
<version>${liteflow.version}</version>
</dependency>
</dependencies>
配置 PostgreSQL 数据库表使用LiteFlow
配置 yml 文件
rule-source-ext-data-map
- 这部分定义了 LiteFlow 如何从外部数据源加载规则信息。具体来说:
applicationName: 应用名称,这里是 dataprocessing,它用于标识当前应用。chainTableName: 规则链表名,即 sys_rule_chain,LiteFlow 将从此表中读取规则链信息。- 字段映射:
chainApplicationNameField: 表示规则链所属的应用名称字段,这里为 application_name。chainNameField: 规则链名称字段,对应 chain_name。elDataField: 表达式数据字段,即 el_data,通常用于存储条件表达式或执行逻辑。routeField: 路由字段,表示 route。namespaceField: 命名空间字段,对应 namespace。chainEnableField: 启用状态字段,表示 enable,用于控制是否启用该规则链。
- Script 表配置(可选)
- 如果你的应用使用脚本来增强规则链的功能,可以配置这些选项:
scriptTableName: 脚本表名,这里是 sys_rule_script。- scriptIdField, scriptNameField, scriptDataField, scriptTypeField, scriptLanguageField, scriptEnableField `: 分别指定了脚本 ID、名称、数据(内容)、类型、语言和启用状态的字段名。
- 轮询机制
pollingEnabled: 设置为 true 表示启用了轮询机制,LiteFlow 将定期检查是否有新的或更新的规则需要加载。pollingStartSeconds: 定义首次轮询开始的时间点,设置为 0 意味着服务启动后立即开始第一次轮询。pollingIntervalSeconds: 定义两次轮询之间的间隔时间,这里是每5秒一次。- 解析模式 (parse-mode)
- parse_one_on_first_exec: 这个模式意味着当一个链首次被执行时,LiteFlow 会解析该链,并在后续执行中使用缓存的结果。只有当检测到有变更时(如通过轮询发现),才会重新解析。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25liteflow:
rule-source-ext-data-map:
applicationName: demo
#以下是chain表的配置,这个一定得有
chainTableName: chain
chainApplicationNameField: application_name
chainNameField: chain_name
elDataField: el_data
routeField: route
namespaceField: namespace
chainEnableField: enable
#以下是script表的配置,如果你没使用到脚本,下面可以不配置
scriptTableName: script
scriptApplicationNameField: application_name
scriptIdField: script_id
scriptNameField: script_name
scriptDataField: script_data
scriptTypeField: script_type
scriptLanguageField: language
scriptEnableField: enable
#以下是轮询机制的配置
pollingEnabled: true
pollingStartSeconds: 0
pollingIntervalSeconds: 5
parse-mode: parse_one_on_first_exec
通过 代码方式使用 liteflow
@LiteflowComponent 是 LiteFlow 框架中的一个注解,用于标识一个类为 LiteFlow 组件。这个注解类似于 Spring 框架中的 @Component 注解,但它具有特定于 LiteFlow 的功能和用途。
a,b,c, d 代码实例
1 | @LiteflowComponent("a") |
数据库sql
1 | CREATE TABLE public.chain ( |
数据在流程中周转
liteflow 是进行流程上下文的方式去 读取存储数据
我们在组件里面写业务,首先肯定就是要拿到上下文,在声明式组件里通常的写法为:
1 |
|
