Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

基于xml的事件编排框架,轻量级事件流引擎,免去事件判断的if-else,方便分支测试

Notifications You must be signed in to change notification settings

braveMind/eventflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

eventflow

基于xml的事件编排框架,简易的轻量级事件流引擎

EventFlow设计文档

一、项目概述

Event-Flow(事件流引擎)是一个基于流程图可配置的事件驱动引擎。可以根据流程图的配置流决定事件的流向,解决项目中对流程处理的硬编码问题,在不修改代码的情况下做到流程可配置。

#二、 设计思想 把业务处理逻辑和事件分开,业务逻辑描述采用xml元数据的方式进行描述,定义流程跳转条件的布尔条件,事件根据这些条件进行触发。参考(决策树算法),如图:xml流程文件只要描述跳转,在文档中定义每一步跳转需要触发的函数,这些函数提交数据到"流程引擎"流程引擎就可以进行决策下次跳转调用那个事件。

决策树

三、模块架构图

如图:

模块架构图

模块描述

XML流程文件:用来定义用户流程信息,包括 开始节点,跳转条件,下个节点信息,以及一些触发函数等。
解析模块:负责解析XML文档信息,生成JVM中的与流程对应的Java对象。
上下文容器:负责存放流程引擎启动时的一些Bean对象,以及存放流程运行过程中的环境变量等。
流程模型模块:定义流程中的一些活动对象,连线,决策节点等。
依赖注入模块:负责流程启动时候,注入流程引擎用到的Java类,以及用户需要的扩展的Java对象等,
决策判断模块:根据流程定义的EL表达式负责调整流程运行的下个节点。
缓存模块:流程引擎启动时缓存XML文件,Java对象等。
用户配置模块:每个节点对象提供用户一些可配置的Handler接口,用户只要实现这些接口,就可以处理自己的业务逻辑,同时根据业务处理结果,可以影响流程引擎下步骤的跳转。

四、流程处理时序图

流程时序图

五、项目依赖

cglib-nodep,jackson-mapper-asl,jackson-mapper-asl,commons-beanutils,juel,org.slf4j

六、引入方式

EventFlow打的是jar包,接入方只要引入jar包后自定义事件流了。

七、事件流XML文件描述

start:开始节点 transition:节点之间的连线 decision:决策节点,决策事件流向。 task:用户事件 end:结束节点。

八、决策支持情况

1,目前决策支持 "排它节点"满足条件只会有一个事件被触发。 2,支持并接"并行行节点"",任务会被依次调度。 3,支持事件回调。

九、与Activiti 对比

Activiti是基于BPMN2.0规范的一个开源的工作流引擎,功能比较强大,但是需要与业务紧耦合在一起,比较重量级,需要数据库的支持,用来做审批,流程查询等比较适合企业OA系统。 Event-Flow的关注点是:事件编排。所以不会依赖数据库,对流程信息进行保存,非常轻量级,适合基于事件触发的业务逻辑处理。

十、未来展望

提供画图工具自动生成XML,以及图片。 根据业务需求,可进行再扩展,例如事件:fork/join 事件之间等待聚合,事件异步执行,事件执行前后可拦截等。

十一、设计参考:

Activiti源码:https://github.com/Activiti/Activiti Activiti工作流https://www.activiti.org/ BPMN规范:https://camunda.org/bpmn/reference/

运行式例

com.event.flow.core.Test 包下。

逻辑执行流程图:

执行结果:

About

基于xml的事件编排框架,轻量级事件流引擎,免去事件判断的if-else,方便分支测试

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /