当前位置:XML > XML发布历程

LiteFlow逻辑流集成和逻辑流设计器

文案策划招聘求职QQ群 http://cgia.cn/news/chuangyi/1590845.html

本文将介绍开源逻辑流组件LiteFlow的架构、设计思想和适用场景,如何基于springboot集成LiteFlow,并验证DSL多种逻辑流程,以及逻辑流设计器的开发思路。

一、逻辑流解决什么问题

在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻辑,几乎每个需求都和这些核心业务有关,这些核心业务业务逻辑冗长,涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等。时间一长,项目几经易手,维护成本就会越来越高。

如果你要对复杂业务逻辑进行新写或者重构,用LiteFlow最合适不过。它是一个编排式的规则引擎框架,组件编排,帮助解耦业务代码,让每一个业务片段都是一个组件。利用LiteFlow,你可以将瀑布流式的代码,转变成以组件为核心概念的代码结构,这种结构的好处是可以任意编排,组件与组件之间是解耦的,组件可以用脚本来定义,组件之间的流转全靠规则来驱动。LiteFlow拥有开源规则引擎最为简单的DSL语法。十分钟就可上手。

有的时候大家把LiteFlow叫做规则引擎,其实,逻辑引擎和规则引擎还是不一样,我认为LiteFlow是逻辑流引擎,它偏向于组件级接口的编排,粒度更细更底层,而规则引擎(比如:drools),它更偏向于业务规则计算,比如决策树、决策表等,解决某一个特定的业务需求,比如:保险行业投保规则计算。

二、LiteFlow的设计思想

LiteFlow是基于工作台模式进行设计的,何谓工作台模式?

n个工人按照一定顺序围着一张工作台,按顺序各自生产零件,生产的零件最终能组装成一个机器,每个工人只需要完成自己手中零件的生产,而无需知道其他工人生产的内容。每一个工人生产所需要的资源都从工作台上拿取,如果工作台上有生产所必须的资源,则就进行生产,若是没有,就等到有这个资源。每个工人所做好的零件,也都放在工作台上。

这个模式有几个好处:

每个工人无需和其他工人进行沟通。工人只需要关心自己的工作内容和工作台上的资源。这样就做到了每个工人之间的解耦和无差异性。

即便是工人之间调换位置,工人的工作内容和关心的资源没有任何变化。这样就保证了每个工人的稳定性。

如果是指派某个工人去其他的工作台,工人的工作内容和需要的资源依旧没有任何变化,这样就做到了工人的可复用性。

因为每个工人不需要和其他工人沟通,所以可以在生产任务进行时进行实时工位更改:替换,插入,撤掉一些工人,这样生产任务也能实时的被更改。这样就保证了整个生产任务的灵活性。

这个模式映射到LiteFlow框架里,工人就是组件,工人坐的顺序就是流程配置,工作台就是上下文,资源就是参数,最终组装的这个机器就是这个业务。正因为有这些特性,所以LiteFlow能做到统一解耦的组件和灵活的装配。

LiteFlow强大的编排能力LiteFlow的编排语法强大到可以编排出任何你想要的逻辑流程。如下图复杂的语法,如果使用瀑布式的代码去写,那种开发以及维护难度可想而知,但是使用LiteFlow你可以轻松完成逻辑流程的编排,易于维护。

三、LiteFlow使用mysql持久化

LiteFlow支持本地yml文件、mysql等关系型数据库、zookeeper、nacos、Etcd、redis等多种数据持久化方式。

以下介绍用mysql数据库如何持久化LiteFlow的逻辑流。

在mysql数据库中创建2张表:liteflow_chain(逻辑流表)和liteflow_script(脚本节点表)

四、Springboot集成LiteFlow

新建一个springboot工程,在pom.xml中引入如下Jar:

dependencygroupId


转载请注明:http://www.vviuov.com/jbjc/1064332.html

  • 上一篇文章:
  • 下一篇文章: 没有了