flowable 四大流程引擎简析

1,270 阅读5分钟

一、Flowable 是什么

Flowable 是一个使用 Java 编写的轻量级业务流程引擎,使用 Apache V2 license 协议开源。2016 年 10 月,Activiti 工作流引擎的主要开发者离开 Alfresco 公司并在 Activiti 分支基础上开启了 Flowable 开源项目。以 JAR 形式发布,使得 Flowable 可以轻易加入任何 Java 环境:Java SE、Tomcat、Jetty 或 Spring 之类的 servlet 容器;JBoss 或 WebSphere 之类的 Java EE 服务器等;另外,也可以使用 Flowable REST API 进行 HTTP 调用。

Flowable 项目中包括 BPMN引擎、CMMN引擎、DMN引擎、表单引擎等几个主要模块,其核心引擎是一组服务的集合,并提供管理与执行业务流程的 API。此外,还有许多 Flowable 应用:Flowable Modeler、Flowable Admin、Flowable IDM、Flowable Task、Flowable Work、Flowable Engage等。

二、工作流引擎使用场景

工作流在企业管理系统中是高频使用的功能,几乎所有涉及到业务流转、多人按流程完成工作的场景背后都可以通过工作流引擎作为支撑。基于 Flowable 生态做定制化开发,可以搭建协同办公系统(OA)、客户销售管理系统(CRM)、运输管理系统(TMS)、仓储管理系统(WMS)、财务费用系统等多种复杂业务系统。对于达到一定规模的企业,良好的 BPM 体系可以支持创建公司内横跨不同部门的复杂业务流程,既可提高工作效率、降低企业成本,又可推动企业规范化发展。下面,简要介绍下 Flowable 中几个主要的引擎模块。

三、Flowable 的四大引擎

1)、 Flowable BPMN 业务流程引擎

Flowable 支持 BPMN 2.0 行业标准,同时提供了一些 Flowable 自定义的 BPMN 扩展可选用,允许通过导入 XML 文件或通过前端可视化界面建立流程。Flowable 本身也提供了一个流程绘制的 UI 界面(Flowable Modeler 应用),如下图所示:

Flowable支持两种方式使用表单:使用表单定义的内置表单渲染,以及外部表单渲染。

Flowable 以事务的方式执行流程,可按照需求进行配置。如果 Flowable 被触发,Flowable 将沿流程执行,直到到达每个执行路径的等待状态。等待状态是「之后」再执行的任务,也就是说着 Flowable 将当前执行持久化,并等待再次触发。触发可以来自外部来源如用户任务或消息接受任务,也可以来自 Flowable 自身如定时器事件。

Flowable自带身份管理模块,但是从 Flowable V6 起身份管理组件从 Flowable 引擎模块中抽出,并将其逻辑移至几个不同的模块,默认情况下,IDM 引擎在 Flowable 引擎启动时初始化并启动。Flowable 提供的几个 web 应用中就包括 Flowable IDM,为所有 Flowable UI 应用提供单点登录认证功能,并且为拥有 IDM 管理员权限的用户提供了管理用户、组与权限的功能。所有其他的应用都需要 Flowable IDM 提供认证。

2)、 Flowable DMN 决策引擎

作为以 BPMN 为核心的工作流引擎,Flowable 原本与规则引擎的关联并不强,但实际业务流程中,有时需要由多个决策来决定流程走向,而每个决策都要根据自身的规则来决定,每个决策之间也可能存在关联,此时就需要规则引擎来提供决策支撑。在规则引擎开源产品中,Drools 是最知名的一款,它实现了 PMML 规范,同时支持 DMN 标准。所以,Flowable 具有相对强大的业务规则的处理能力。

Flowable Modeler 应用中 DMN 引擎体现为「决策表」菜单,可以通过界面进行 Input 与 Output 的配置,可导入 .dmn 扩展名格式的 DMN 定义,在 OMG 制定的 DMN 规范中也有相应的 XML 格式约束。如果 DMN 引擎已经插入流程引擎,就可以与其他流程相关资源一起,将 DMN 定义打包进业务存档(BAR)文件中,流程引擎部署服务会将 DMN 资源部署至 DMN 引擎。DMN 可以被 BPMN 定义的流程调用:在流程中引入一个决策任务,并选中引用决策表,来使用新创建的选择表。

3)、 Flowable CMMN 案例模型引擎

CMMN 是 Case Management Model and Notation 的缩写,在 Flowable Modeler 应用中体现为「案例模型」菜单,使用时可以类似于流程引擎可视化配置流程,也可通过 XML 格式文件。与 BPMN 引擎相比,CMMN引擎适用于如下几种场景:

(1)重复与并行的工作分发。BPMN 引擎在处理顺序执行、职责分工明确的工作流程时有优势,但面对动态、自由、并行的情况时,BPMN 显得灵活性不足,此时CMMN 则更适合应对。

(2)处理带有生命周期特征的场景,如客户、产品、项目、雇员等。以项目为例,项目的立项、中止、收尾、交付等阶段,可以在 CMMN 中通过阶段概念在更高层次进行描述。

CMMN 中一个案例模型呈现为一个公文夹的样式。每个案例模型都包含一个用于安置计划元素的「计划模型」,每个计划元素包含一个明确其类型和可能配置选项的计划元素定义,常见计划元素如用户任务、里程碑、流程任务、案例任务和阶段等。

4)、 Flowable Form 表单引擎

Flowable 框架中将表单作为一个独立的子模块,可以将表单作为一个服务在其他模块中进行调用,表单服务就可以控制所有流程所使用的表单以及表单字段的可读、可写等操作。表单相关的使用可分为表单的定义以及表单的运行实例两个阶段。表单定义支持导入以 .form 为后缀的表单定义文件,在 Flowable Modeler 应用中,「表单」菜单下可以进行简单的表单拖拽拼接可视化配置定义。

以上便是 Flowable 四大流程引擎的主要简析,更多了解请查看工作流引擎、流程设计器专题。