Slickflow 一款.NET、.NET CORE 跨平台支持多数据库的开源企业级工作流引擎介绍

前言:工作流系统通常是作为中间组件嵌入到企业业务系统应用中去,作为业务流程构造和重整的重要工具,工作流系统的实现主要要考虑以下几点要素:1. 工作流模型要符合一些标准化模型的定义;2. 工作流管理系统的功能是否能够满足特定应用的需求,而同时不阻碍业务应用的整体性;3. 工作流技术是否跟SOA技术融合,可以作为服务总线的方式供外部调用。

Slickflow 在开发工作流系统期间,选取BPMN模型作为工作流模型的语义表达,BPMN模型消除技术和业务之间的隔阂,注重业务人员对流程的需求和理解,而不是以技术为本位,相对来说,更近一步体现技术服务于业务需求的概念。其次,由于工作流模型跟业务需求的紧密结合,还有新技术的出现,认为有必要构建新的工作流系统;鉴于以上认识,总结了在构建独立工作流系统的关键模型和算法,实现了Wf5 工作流引擎,作为.NET平台上的开源工作流引擎,希望能够为企业应用开发人员提供借鉴和学习,也欢迎提出修改建议。

Slickflow 博客园开发系列技术文档资料介绍:

http://www.cnblogs.com/slickflow


一:功能介绍:

  1. 参考BPMN标准的流程定义解析;

  2. 递归解析实现的工作流引擎;

    2.1 顺序流转;

    2.2 分支/合并;

    2.3 条件表达式;

    2.4 自身循环;

    2.5 撤销/退回/返签;

    2.6 角色资源;

  3. 集成嵌入Dapper MicroORMapping 框架;

  4. 流程定义BPMN文件的缓存读取;

  5. 异常日志记录Wflog;

  6. 工作流服务WebApi 接口示例;

  7. Test 代码示例。

 

二:工作流技术介绍

 

1. 工作流模式

 

工作流引擎中已经提供了串行,分支等基本模式,目前需要做的工作是对这些模式进行抽象,为后续的图形化定义界面上提供代码支持。

1.1 串行

是指工作流流程中的任务是依照次序顺序执行,没有分支选择,循环等路由功能。

1.2 分支/合并

分支模式是指对工作流流程中的任务执行条件进行限定,在执行过程中,根据条件判断执行路径。

 

1.2.1分支情况

AndSplit : 并行分支,所有连线都可以执行后续节点;

OrSplit:或分支,满足条件的连线,可行执行后续节点

XOrSplit: 异或分支,有第一个满足条件的连线,即可执行后续节点。

ComplexSplit:复杂情况的分支,未明确给定。

1.2.2合并情况:

         AndJoin:并行合并,所有连线上的条件必须都满足,才可以执行该Gateway节点。

         OrJoin:或合并,有条件定义的连线,如果条件都满足,才可以执行该Gateway节点。

         XOrJoin:异或合并,只要有第一个连线的条件满足,不用再做其他连线的条件判断,直接执行该Gateway节点。

         ComplexJoin:复杂情况的合并,未明确给定。

 

1.2.3 分支的图形元素示例

gatewaySplitJoinType

gatewayDirection

bPMN Graph

description

Split(分支)

AndSplit

(并行分支)

Transition的属性包括:

1.        Condition

2.        parallelOption: (necessary, optional)

解析所有必需类型连线上的条件是否都满足,如果满足,则执行AndSplit节点的所有后续节点。

OrSplit

(多选分支)

解析满足条件的分支连线,如果条件为真,则执行这些连线上的后续节点。

XOrSplit

(互斥分支)

Transition的属性包括:

1.        Condition

2.        priority: [1,..n]

根据优先级,解析出第一个满足条件的连线,然后执行该连线的后续节点,其它分支上的节点不再执行。

Join(合并)

AndJoin

(并行合并)

Transition的属性包括:

1.        Condition

2.        parallelOption: (necessary, optional)

当所有必需连线上的条件都满足时候,才能执行AndJoin节点的后续节点。

OrJoin

(选择合并)

根据连线上的条件定义,解析条件,如果满足,则OrJoin节点之后的节点可以被执行;此时,其它前驱分支节点可以继续执行,但不再实例化XOrJoin节点。

XOrJoin

(互斥合并)

Transition的属性包括:

1.        Condition

2.        priority: [1,..n]

根据优先级解析第一个满足条件的连线,如果有,XOrJoin节点的后续节点可以被执行,其它前驱分支节点不能再执行。

 

 1.2.4 多实例

节点执行有多个实例后,才可以继续向下执行。

 

2. 工作流节点UML图

 

 

3. 获取流程下一步的算法




4. 总结

Wf5已经用于实际项目生产环境,为不断完善和创新,已经提供100%开放源代码版本,方便大家下载使用;此外考虑后期建立社区或在线交流群,供.NET平台工作流开发人员和有兴趣的同学一起交流学习,深入探讨工作流的发展趋势,也欢迎大家提出后期开发的建议。

 

 

Slickflow .NET开源工作流引擎:

http://github.com/besley/slickflow

 

Slickflow .NET 交流群
QQ: 233248778


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章