liteflow流程引擎

一、简介

        公司的核心系统往往拥有复杂的业务逻辑,条件分支多,硬编码判断多,维护成本高。

        liteflow框架是一个现代化的规则引擎框架,实现了组件编排与规则引擎,并且实现组件的热变更。

二、使用教程

1.配置

组件配置

@Component("a")
public class ACmp extends NodeComponent {

	@Override
	public void process() {
		//do your business
	}
}

规则文件配置



    
        THEN(a, b, c);
    

2.执行

@Component
public class YourClass{
    
    @Resource
    private FlowExecutor flowExecutor;
    
    public void testConfig(){
        LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
    }
}

三、系统设计

1.flow element (组合模式)

liteflow流程引擎_第1张图片

逻辑是 Chain -> Condition -> Node -> NodeComponent

Chain -> 流程

Condition -> 流程表达式中的条件元素,如Then(a,b,c),when(a,b,c)

Node -> 条件的元素,如a,b,c

NodeComponent -> 业务组件逻辑        

2.配置解析流程

liteflow流程引擎_第2张图片

        借助阿里 的QLExpression框架,将配置解析成Chain,Condition,Node等组件,并进行编排(利用操作数栈去进行构建)。

qlexpression教程&&自定义操作符

QLExpression学习使用教程_ql表达式-CSDN博客文章目录QLExpress简介支持特性Maven引入例子github源码图分解提示例子初次使用Runner执行器设置执行器执行命令的设置支持普通的Java语法执行运算符支持运算符分类示例部分运算符列举样例使用表达式样例三目运算符样例数组定义Java对象使用数组遍历map遍历定义函数示例预定义装载函数定义操作符中文操作符替换二元操作符自定义自定义操作符需注意多元操作符操作符的使用操作符定义addOp..._ql表达式https://blog.csdn.net/YuYunTan/article/details/101436910

3.初始化流程

liteflow流程引擎_第3张图片

1.通过ComponentScanner(spring BeanPostProcessor)加载NodeComponent并放入flowbus中

        a.继承NodeComponent的bean

        b。@LiteFlowComponent和LiteFlowMethod标记的类

2.通过QLExpression解析流程配置文件,根据配置将NodeComponent编排到流程中。 

 

你可能感兴趣的:(基础服务,java)