万字+28张图带你探秘小而美的规则引擎框架LiteFlow(三)

pivoteic
发布于 2022-6-17 16:55
浏览
0收藏

 

三、LiteFlow核心组件讲解

 

讲解核心组件的时候如果有什么不是太明白的,可以继续往下看,后面会有源码解析。

 

下图为LiteFlow整体架构图

万字+28张图带你探秘小而美的规则引擎框架LiteFlow(三)-鸿蒙开发者社区

1)Parser

这个组件的作用就是用来解析流程配置的规则,也就是将你配置的规则文件解析成Java代码来运行。支持的文件格式有xml、json、yaml,其实不论是什么格式,只是形式的不同,用户可根据自身配置的习惯来选择规则文件的格式。

 

同时,规则文件的存储目前官方支持基于zk或者本地文件的形式,同时也支持自定义的形式。

 

对于xml来说,Parser会将<node/>标签解析成Node对象,将<chain/>解析成Chain对象,将<chain/>内部的比如<when/>、<then/>等标签都会解析成Condition对象。

如下图所示。

万字+28张图带你探秘小而美的规则引擎框架LiteFlow(三)-鸿蒙开发者社区

  • Node其实就是代表了你具体业务执行的节点,就是真正的业务是在Node中执行的
  • Condition可以理解为一种条件,比如前置条件,后置条件,里面一个Condition可以包含许多需要执行的Node
  • Chain可以理解成整个业务执行的流程,按照一定的顺序来执行Condition中的Node也就是业务节点

 

Condition和Node的关系

万字+28张图带你探秘小而美的规则引擎框架LiteFlow(三)-鸿蒙开发者社区

Condition分为以下几种

  • PreCondition:在整个业务执行前执行,就是前置的作用
  • ThenCondition:内部的Node是串行执行的
  • WhenCondition:内部的Node是并行执行的
  • FinallyCondition:当前面的Condition中的Node都执行完成之后,就会执行这个Condition中的Node节点

 

Chain和Condition的关系

万字+28张图带你探秘小而美的规则引擎框架LiteFlow(三)-鸿蒙开发者社区

Chain内部其实就是封装了一堆Condition,Chain的执行就是指从不同的Condition中拿出里面的Node来执行,首先会拿出来PreCondition中的Node节点来执行,执行完之后会执行ThenCondition和WhenCondition中的Node节点,最后执行完之后才会执行FinallyCondition中的Node节点。

 

2)FlowBus

 

这个组件主要是用来存储上一步骤解析出来的Node和Chain的

万字+28张图带你探秘小而美的规则引擎框架LiteFlow(三)-鸿蒙开发者社区

3)FlowExecutor

 

这个其实是用来执行上面解析出来的业务流程,从FlowBus找到需要执行的业务流程Chain,然后执行Chain,也就是按照Condition的顺序来分别执行每个Condition的Node,也就是业务节点。

万字+28张图带你探秘小而美的规则引擎框架LiteFlow(三)-鸿蒙开发者社区

文章转自公众号:三友的java日记

标签
已于2022-6-17 16:55:43修改
收藏
回复
举报
回复
    相关推荐