一、简介
公司的核心系统往往拥有复杂的业务逻辑,条件分支多,硬编码判断多,维护成本高。
liteflow框架是一个现代化的规则引擎框架,实现了组件编排与规则引擎,并且实现组件的热变更。
二、使用教程
1.配置
组件配置
@Component("a")
public class ACmp extends NodeComponent {
@Override
public void process() {
//do your business
}
}
规则文件配置
<?xml version="1.0" encoding="UTF-8"?>
<flow>
<chain name="chain1">
THEN(a, b, c);
</chain>
</flow>
2.执行
@Component
public class YourClass{
@Resource
private FlowExecutor flowExecutor;
public void testConfig(){
LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
}
}
三、系统设计
1.flow element (组合模式)
逻辑是 Chain -> Condition -> Node -> NodeComponent
Chain -> 流程
Condition -> 流程表达式中的条件元素,如Then(a,b,c),when(a,b,c)
Node -> 条件的元素,如a,b,c
NodeComponent -> 业务组件逻辑
2.配置解析流程
借助阿里 的QLExpression框架,将配置解析成Chain,Condition,Node等组件,并进行编排(利用操作数栈去进行构建)。
qlexpression教程&&自定义操作符
3.初始化流程
1.通过ComponentScanner(spring BeanPostProcessor)加载NodeComponent并放入flowbus中
a.继承NodeComponent的bean
b。@LiteFlowComponent和LiteFlowMethod标记的类
2.通过QLExpression解析流程配置文件,根据配置将NodeComponent编排到流程中。