工作流开源库 Activiti/Flowable/Bpmn.js 对比

前言

讲工作流其实离不开BPMN,那BPMN是什么呢?

什么是BPMN

在Activiti工作流中用到了一个BPMN的文件,主要是用来描述业务流程的基本的符号,利用各个组件能够组成一个业务流程图,整个业务也是根据这个图来走的,其实用xml格式打开,就是一个xml文件。
BPMN是一套标准,BPMN的主要目标是提供一些被所有业务用户容易理解的符号,从创建流程轮廓的业务分析到这些流程的实现,直到最终用户的管理监控。

BPMN基础

业务流程图由一系列的图形化元素组成。这些元素简化了模型的开发,且业务分析者看上去非常熟悉。这些元素每个都有各自的特性,且与大多数的建模器类似。比如,活动是矩形,条件是菱形。应该强调的是:开发BPMN的动力就是为了在创建业务流程模型时提供一个简单的机制,同时又能够处理来自业务流程的复杂性。要处理这两个矛盾的需求的方法就是将标记的图形化方面组织分类为特定的类别。这里提供标记类别中的一小部分,以便业务流程图的读者可以简单地识别出元素的基本类型从而理解图形。
以下是四种基本的类型:
1)流对象(Flow)
2)连接对象(Connection)
3)泳道(Swimlane)
4)人工信息(Artifact)

  • 流对象:
    一个业务流程图有三个流对象的核心元素。这三种流对象是
    (1)事件:一个事件用圆圈来描述,表示一个业务流程期间发生的东西。事件影响流程的流动,一般有一个原因(触发器)或一个影响(结果)。基于它们对流程的影响,有三种事件:开始,中间以及终止事件
    (2)活动:一个活动用圆角矩形表示,是要处理工作的一般术语。一个活动可以是原子性的也可以是非原子性的(可以是由多个活动组合而成的更大粒度的活动)。活动的类型包括:任务和子流程。子流程在图形的下方中间外加一个小加号(+)来区分。
    (3)条件:条件用熟悉的菱形表示,用于控制序列流的分支与合并。另外,它还可以作为传统的选择,还包括路径的分支与合并。其内部的标记会给出控制流的类型。
  • 连接对象:
    连接对象将流对象连接起来形成一个业务流程的基本结构。提供此功能的三个连接对象是:
    (1)顺序流:顺序流用一个带实心箭头的实心线表示,用于指定活动执行的顺序。
    (2)消息流:消息流用一条带有开箭头的虚线表示,用于描述两个独立的业务参与者(业务实体或业务角色)之间发送和接受的消息流动。在BPMN中,用两个独立的池代表两个参与者。
    (3)关联:用一根带有线箭头的点线表示关联,用于将相关的数据、文本和其他人工信息与流对象联系起来。关联用于展示活动的输入和输出。
  • 泳道:
    许多建模技术利用泳道这个概念将活动划分到不同的可视化类别中来描述由不同的参与者的责任与职责。BPMN支持2种主要的泳道构件。
    (1)池:池描述流程中的一个参与者。可以看做是将一系列活动区别于其他池的一个图形容器,一般用于B2B的上下文中。
    (2)道:道就是在池里面再细分,可以是垂直的也可以是水平的。道也是用于组织和分类活动。
  • 人工信息:
    人工信息添加到建模的业务流程上下文中作为信息备注,便于人员理解,当前BPMN规范的版本预定义了3种人工信息:
    (1)数据对象:数据对象是一个显示活动是如何需要或产生数据的。它们通过关联与活动连接起来。
    (2)组:组用一个虚线的圆角矩形表示,用于记录或分析的目的,但不影响顺序流。
    (3)注释:注释是建模者为BPMN图的读者提供附加文本信息的一个机制。

BPMN示意图

工作流开源库 Activiti/Flowable/Bpmn.js 对比_第1张图片

Activiti

简介

Activiti是领先的轻量级、以java为中心的开源BPMN引擎,支持流程自动化需求。
Activiti可以在任何Java应用程序、服务器、集群或云中运行。它与Spring完美集成,非常轻量级。

开发语言:angluar+java
目前最新版本是Activiti7,我们在信贷系统中使用的版本是5.22

工作流引擎

ProcessEngine对象,这是Activiti工作的核心。负责生成流程运行时的各种实例及数据、监控和管理流程的运行。

数据库

在我们进行业务流程开发的时候,是会产生很多的数据的,那么这些数据都是放在哪里呢?
是的,其实就是存放在数据库的。
在Activiti工作流的后台是有数据库的支持的,所有的表都以ACT_开头,利用这些数据库的表,就能够把整个业务流程的数据保存下来,然后利用这些数据进行不同的业务的开发。

总结

  • 优势:
    1. 可以将JAR形式发布的库加入应用或服务,来嵌入引擎。
    2. 可以使用API进行HTTP调用,比如启动任务等
    3. 提供了可使用简单方便的UI应用
    4. 项目中长期使用,故而进行定制化开发更为简单。
  • 劣势:
    1. 因相互关联较多,代码层面有较多冗余。

Flowable

简介

flowable的代码是基于Activiti5的代码重新拉取了分支开发而来,根源一样。

开发语言:angluar+java
目前最新版本是6.6.0
中文文档地址:https://tkjohn.github.io/flowable-userguide/#Tooling

总结

  • 优势:
    1. 可以将JAR形式发布的Flowable库加入应用或服务,来嵌入引擎
    2. 可以使用Flowable API进行HTTP调用,比如启动任务等
    3. 提供了可使用简单方便的UI的Flowable应用
    4. 提供了动态表单功能,可以将流程与表单进行完美结合
  • 劣势:
    1. 因其具有动态表单功能,所以数据库中数据表的数量较多,有74张表。而activiti仅有28张数据表。
    2. 因相互关联较多,代码层面有较多冗余。

Bpmn.js

简介

bpmn.js是一个BPMN2.0渲染工具包和web建模器。使用JavaScript编写,在不需要后端服务器支持的前提下向现代浏览器内嵌入BPMN2.0流程图。这使得它很容易的嵌入到任何web应用中。
这个库既可以是web查看器也可以是web建模器。使用查看器将BPMN2.0流程图嵌入到你的应用中并可以使用数据丰富你的流程图。使用建模器在你的应用内部创建BPMN2.0流程图。

开发语言:javascript

总结

  • 优势:
    • 页面简洁、提供properties panel属性面板、个性化成本较低、可以结合到vue项目中
  • 劣势:
    • 没有后端服务,只是一个前端画图工具
    • 与后端交互采用xml格式,后端使用Activiti工作流引擎解析与执行,但在交互过程中会存在未知风险。

你可能感兴趣的:(开发知识,activiti,activiti工作流,flowable,flowable,工作流,bpmn.js)