Flowable工作流引擎

一、BPMN2.0协议:

模型与符号说明:http://www.bpmb.de/images/BPMN2_0_Poster_CHN.PDF

 BPMN 2.0(Business Process Model and Notation)是一种用于描述业务流程的图形化标准。它提供了一套统一的符号和规范,用于创建可视化的流程模型,以便更好地理解、分析和改进业务流程。BPMN 2.0协议定义了一系列元素和符号,用于表示流程中的活动、事件、网关、任务、序列流等。这些元素包括:

1、Start Event(开始事件):

表示流程的起点。它是流程的第一个元素,标志着流程的开始。可以有不同类型的开始事件,如None(无特定行为)、Message(消息触发)、Timer(定时触发)等。

2、End Event(结束事件):

表示流程的终点。它标志着流程的结束,可以有不同类型的结束事件,如None(无特定行为)、Message(消息结束)等。

3、Intermediate Event(中间事件):

表示在流程执行过程中发生的事件,位于流程的中间位置。可以用于触发某个操作或引起流程的变化。常见的中间事件包括Message(消息触发)、Timer(定时触发)、Signal(信号触发)等。

4、Task(任务):

表示需要执行的具体工作或活动。任务可以是人工任务(Human Task),需要由人员完成,也可以是自动任务(Service Task),由系统或服务执行。任务通常用一个方框表示,可以定义任务的属性、输入和输出数据。

5、Gateway(网关):

表示流程中的决策点。根据不同的条件,网关可以控制流程的分支和合并。常见的网关包括:

  • 互斥网关(Exclusive Gateway):又称排他网关,有且仅有一个有效出口,可以理解为if......else
  • 并行网关(Parallel Gateway):所有出口路径均会被执行,无需等待其他分支完成,可以理解为开多线程同时执行多个任务。
  • 包含网关(Inclusive Gateway):只要满足条件的出口都会执行,可以理解为 if(......) do,所有的条件判断都是同级别的。

6、Sequence Flow(序列流):

表示流程中不同元素之间的连接线,表示流程的执行顺序。序列流用箭头表示,从一个元素指向另一个元素。

7、Data Object(数据对象):

表示流程中用于存储和传递数据的对象。数据对象可以是输入、输出或中间结果数据。它们可以是具体的数据实体、文档或消息。

8、Sub-Process(子流程):

表示一个独立的子流程,可以在主流程中嵌套使用。子流程可以有自己的开始事件、结束事件和任务等。子流程通常用一个矩形框表示,并与主流程以边界事件或调用活动进行连接。

9、Pool(泳道):

用于将不同的参与者或角色分组,以显示流程中的不同业务单位或组织。泳道可以帮助清晰地表示各个参与者之间的责任和关系。

10、Message(消息):

用于在不同的流程之间发送和接收消息。消息可以触发特定的行为或引起流程的变化,可以是同步消息或异步消息。

通过使用这些BPMN 2.0协议元素,并结合其属性和连接关系,可以创建清晰、可视化且易于理解的业务流程模型。这些元素提供了一种统一的符号系统,使得不同的利益相关者能够共享和交流对于业务流程的理解和设计。

 

二、Flowable工作流引擎:

官方手册:https://tkjohn.github.io/flowable-userguide/#_introduction

1、简介:

Flowable是BPMN的一个基于java的软件实现,不过Flowable不仅仅包括BPMN,还有DMN决策表和CMMN Case管理引擎,并且有自己的用户管理、微服务API等一系列功能,是一个服务平台。

 

2、Flowable数据库说明:

工作流程的相关操作都是操作存储在对应的表结构中,为了能更好的弄清楚Flowable的实现原理和细节,有必要先弄清楚Flowable的相关表结构及其作用。

在Flowable中的表结构在初始化的时候会创建五类表结构,具体如下:

  • ACT_RE_* 表:'RE’表示 repository,这些表存储流程模型相关的信息,包括流程定义、流程图、表单等。其中,ACT_RE_PROCDEF 表存储流程定义信息,包括流程定义 ID、名称、版本号、是否挂起等。
  • ACT_RU_* 表:'RU’表示 runtime,这些表存储流程运行时的数据,如任务实例、执行实例等。其中,ACT_RU_TASK 表存储任务相关的信息,包括任务 ID、名称、所属流程实例 ID、受理人、创建时间、到期时间、优先级等。
  • ACT_HI_* 表:'HI’表示 history,这些表存储历史数据,如历史任务、历史变量等。其中,ACT_HI_TASKINST 表存储历史任务相关的信息,包括任务 ID、名称、所属流程实例 ID、受理人、开始时间、结束时间、耗时等。
  • ACT_ID_* 表:'ID'表示identity,这些表存储身份认证相关的数据,如用户、用户组等信息。其中,ACT_ID_USER 表存储用户相关的信息,包括用户 ID、用户名、密码、邮箱等。
  • ACT_GE_* 表:'GE' 表示 general,这些表存储通用的流程引擎数据,如定时任务、变量等。其中,ACT_GE_PROPERTY 表存储引擎属性相关的信息,如数据库类型、版本号、时间戳等。

(1)、一般数据对应表:

表名表说明
ACT_GE_BYTEARRAY 通用的流程定义和流程资源
ACT_GE_PROPERTY 系统相关属性

(2)、流程历史记录表:

表名表说明
ACT_HI_ACTINST 历史的流程实例
ACT_HI_ATTACHMENT 历史的流程附件
ACT_HI_COMMENT 历史的说明性信息
ACT_HI_DETAIL 历史的流程运行中的细节信息
ACT_HI_IDENTITYLINK 历史的流程运行过程中用户关系
ACT_HI_PROCINST 历史的流程实例
ACT_HI_TASKINST 历史的任务实例
ACT_HI_VARINST 历史的流程运行中的变量信息

(3)、用户用户组表:

表名表说明
ACT_ID_BYTEARRAY 二进制数据表
ACT_ID_GROUP 用户组信息表
ACT_ID_INFO 用户信息详情表
ACT_ID_MEMBERSHIP 人与组关系表
ACT_ID_PRIV 权限表
ACT_ID_PRIV_MAPPING 用户或组权限关系表
ACT_ID_PROPERTY 属性表
ACT_ID_TOKEN 系统登录日志表
ACT_ID_USER 用户表

(4)、流程定义表:

表名表说明
ACT_RE_DEPLOYMENT 部署单元信息
ACT_RE_MODEL 模型信息
ACT_RE_PROCDEF 已部署的流程定义

(5)、运行实例表:

表名表说明
ACT_RU_DEADLETTER_JOB 正在运行的任务表
ACT_RU_EVENT_SUBSCR 运行时事件
ACT_RU_EXECUTION 运行时流程执行实例
ACT_RU_DEADLETTER_JOB 历史作业表
ACT_RU_EVENT_SUBSCR 运行时用户关系信息
ACT_RU_EXECUTION 运行时作业表
ACT_RU_DEADLETTER_JOB 暂停作业表
ACT_RU_EVENT_SUBSCR 运行时任务表
ACT_RU_EXECUTION 定时作业表
ACT_RU_EXECUTION 运行时变量表

(6)、其他表:

表名表说明
ACT_EVT_LOG 事件日志表
ACT_PROCDEF_INFO 流程定义信息

 

3、Flowable-Service-API:

引擎API是与Flowable交互的最常用手段。总入口点是ProcessEngine。像配置章节中介绍的一样,ProcessEngine可以使用多种方式创建。使用ProcessEngine,可以获得各种提供工作流/BPM方法的服务。ProcessEngine与服务对象都是线程安全的,因此可以在服务器中保存并共用同一个引用。

Service-API

说明

RepositoryService

用于管理和操作流程定义和部署相关的操作

相关实现

1、createDeployment():创建一个新的流程部署,并将流程定义部署到Flowable引擎中。

2、deploy():部署已创建的流程定义。

3、deleteDeployment():删除已部署的流程定义。

 

RuntimeService

用于启动、查询和管理流程实例和执行流程任务

相关实现

1、startProcessInstanceByKey():根据流程定义的key启动一个新的流程实例。

2、startProcessInstanceById():根据流程定义的ID启动一个新的流程实例。

3、createExecutionQuery():创建一个查询,用于查询流程实例和执行流程任务。

4、signal():向流程实例发送一个信号,触发相应的流程执行。

 

TaskService

用于管理和操作流程任务

相关实现

1、createTaskQuery():创建一个查询,用于查询流程任务。

2、complete():完成一个流程任务。

3、claim():领取一个未被领取的流程任务。

 

HistoryService

用于访问和查询历史数据

相关实现

1、createHistoricProcessInstanceQuery():创建一个查询,用于查询历史流程实例。

2、createHistoricTaskInstanceQuery():创建一个查询,用于查询历史任务。

 

三、Spring Boot整合流程引擎Flowable:

1、审批人管理:

相关参考

2、动态表单:

相关参考

3、网关:

相关参考

4、相关案例参考:

相关参考

 

四、相关参考:

BPMN2.0模型与符号说明

Flowable官方手册

 

posted on 2024-02-03 02:48  爱文(Iven)  阅读(320)  评论(0编辑  收藏  举报

导航