Merge branch 'feature/REQ-1309' of https://axzsource.com/universal/infrastructure/backend/workflow-engine into feature/REQ-1609
This commit is contained in:
commit
a598a94fc0
117
README.md
117
README.md
@ -17,14 +17,28 @@
|
||||
- ACT_GE_*:“GE“代表自动生成的数据,包括bpmn.xml、flowable自带流程图等文件,用于各种用例。
|
||||
```
|
||||
|
||||
[库表定义](https://blog.csdn.net/qq_31237581/article/details/130132221)
|
||||
[库表字段定义大致含义参考](https://blog.csdn.net/qq_31237581/article/details/130132221)
|
||||
|
||||
**Flowable 的扩展:**
|
||||
```text
|
||||
- flw_*:Flowable 新版本扩展功能相关的表,流程迁移的表。
|
||||
```
|
||||
|
||||
### 2.1 本工程常用的库表
|
||||
### 2.1 术语表
|
||||
|
||||
| 术语名称 | 描述 |
|
||||
|----------|---------------------------------------------------------------------------------|
|
||||
| 流程引擎 | 是一种按照某种特性配置或程序进行执行的工具, 在此特征 Flowable 业务框架。 |
|
||||
| 流程模型 | 模型类似一种盒子,用来装东西,在 Flowable 中,模型用来装“流程定义”, 且只能装一个流程定义。 |
|
||||
| 流程定义 | 流程定义是一种告诉流程引擎该如何运行、流转的元配置数据。通常它会产生 BPMN 协议文件和 png 的可视化流程图片文件。一个模型下的流程定义可以有多个版本。 |
|
||||
| 活动(审批节点) | 特指流程定义中需要被外部介入的节点,例如"用户任务"节点。 |
|
||||
| 网关 | 流程定义中的某种节点类型, 在流程实例中,主要是用于条件分支,协助引擎确定下一步的执行路径。 |
|
||||
| 多实例任务 | 针对"任务"节点的特色树形,代表该任务分配多个人后可以会签/或签, 而如果未设置多实例树形,那么就是是多个候选人审批,也仅会只有一个人 |
|
||||
| 租户 | 在本工程中,租户数据等于工作台 ID,主要用于较强判断相关数据的归属。 |
|
||||
| 流程实例 | 按照流程定义创建的一个具体的实例,在业务场景实际使用过程中,通常都需要关注流程实例相关信息,如实例 ID。 |
|
||||
| 流程任务 | 流程定义中标记的“审批节点"的实例,在业务场景实例使用过程中,某个人能审批一个或多个任务时,这个“任务”就是流程任务。 |
|
||||
|
||||
### 2.2 本工程常用的库表
|
||||
|
||||
```text
|
||||
// 运行时(仅保存运行中的流程相关数据)
|
||||
@ -44,6 +58,7 @@ act_hi_varinst (历史的变量实例)
|
||||
|
||||
act_ge_bytearray (很多元数据)
|
||||
```
|
||||
|
||||
## 3.国内工作流常用操作的名称解释
|
||||
|
||||
| 流程操作 | 描述 |
|
||||
@ -170,8 +185,8 @@ act_ge_bytearray (很多元数据)
|
||||
点击查看完整的[BPMN 协议规范](BPMN_Spec_2.0.2.pdf)文件
|
||||
|
||||
> 通过上面的 BPMN 协议的具体内容, 我们可以发现协议内容主要分为两大块, 一块是以`<process>`包裹, 它是主要的规则描述,
|
||||
> 另一块是以`<bpmndi:BPMNDiagram>`包裹, 它是规则可视化的元数据, 这部分一般我们无需关系, 但只要我们的业务涉及到流程配置的反显,
|
||||
> 它又比不可少.
|
||||
> 另一块是以`<bpmndi:BPMNDiagram>`包裹, 它是规则可视化的元数据, 这部分一般我们无需关心, 但只要我们的业务涉及到流程配置的反显,
|
||||
> 它又必不可少.
|
||||
|
||||
### 4.2 Process 节点内容简易描述
|
||||
|
||||
@ -242,28 +257,108 @@ act_ge_bytearray (很多元数据)
|
||||
## 6. 流程引擎内部是如何运行的?
|
||||
|
||||
> Flowable 分为多个引擎, 包括 BPMN 引擎/CMMN 引擎/DMN 引擎/Form 引擎/IDM 引擎, 而我们主要关注 BPMN 引擎即可.
|
||||
> 所有的引擎的采用的设计模式是一致的, 统一的采用了命令模式. 引擎内部的每一步动作都是依靠一个Agenda(待办)
|
||||
> 所有的引擎的内部功能统一的采用了命令模式, 引擎内部的每一步动作都是依靠一个Agenda(待办)
|
||||
> 来临时存储后续动作的"命令".
|
||||
>
|
||||
> 所以我们研究引擎需要研究各种命令(XXXCmd). 这些命令是进入引擎内部的入口, 可以通过查看
|
||||
> org.flowable.common.engine.impl.interceptor.Command 的继承关系看到具体的命令. 当然引擎还有更多的逻辑,
|
||||
> 真正处理各种类型节点的是对应的行为(XXXBehavior), 可以通过查看 `org.flowable.engine.impl.delegate.ActivityBehavior`
|
||||
> 例如真正处理各种类型任务节点的是对应的行为(XXXBehavior),
|
||||
> 可以通过查看 `org.flowable.engine.impl.delegate.ActivityBehavior`
|
||||
> 的继承关系看到具体的行为.
|
||||
>
|
||||
> 例如: 想看发起过程需要研究: StartProcessInstanceCmd#execute
|
||||
|
||||
## 6. 如何与外部交互?
|
||||
### 6.1 运行逻辑与操作库表总结
|
||||
|
||||
> 通常情况系下,业务要接入引擎,需要从模型配置开始,整体操作逻辑如下:
|
||||
> 流程模型配置 -> 流程定义配置 -> 发布模型及定义 -> 业务发起指定模型 -> 引擎生成对应审批任务及事件 ->
|
||||
> 业务操作任务通过/拒绝或撤销 -> 引擎流转节点直至结束.
|
||||
>
|
||||
> 大致逻辑了解后,再描述下具体调用 API 以及每个步骤操作的库表
|
||||
|
||||
### 6.2 创建模型
|
||||
|
||||
> 创建模型可以同步将定义传入,形成原子操作,当然操作上也是允许分步配置的.
|
||||
>
|
||||
API: cn.axzo.workflow.client.feign.bpmn.ProcessModelApi#create
|
||||
|
||||
操作的库表: act_re_model/act_ge_bytearray
|
||||
|
||||
### 6.3 创建/更新流程定义
|
||||
|
||||
> 如果未在模型创建时,同步传入定义内容, 则可以通过独立更新方式,仅更新定义内容. 需要注意的是流程定义是有版本概念的,
|
||||
> 但激活的仅能只有一个版本,其他均为挂起
|
||||
> API:
|
||||
|
||||
**(模型中更新)**: cn.axzo.workflow.client.feign.bpmn.ProcessModelApi#update
|
||||
|
||||
**(独立更新)**: cn.axzo.workflow.client.feign.bpmn.ProcessDefinitionApi#updateProcessDefinition
|
||||
|
||||
操作的库表: act_re_model/act_ge_bytearray
|
||||
|
||||
### 6.4 发布模型
|
||||
|
||||
> 发布模型的方式有很多,这里只列举了一种, 通过 ID 部署, 也可以通过 Key 部署, Key 是模型的必要属性, 业务也可以通过这个 Key
|
||||
> 进行流程的发起.
|
||||
>
|
||||
API: cn.axzo.workflow.client.feign.bpmn.ProcessModelApi#deployById
|
||||
|
||||
操作的库表: act_re_procdef/act_re_deployment
|
||||
|
||||
### 6.5 创建流程实例
|
||||
|
||||
> 业务接入后,主要使用的 API, 基于某个流程模型进行实例的发起.
|
||||
>
|
||||
API: cn.axzo.workflow.client.feign.bpmn.ProcessInstanceApi#createProcessInstance
|
||||
|
||||
操作的库表:
|
||||
|
||||
**(运行时)**: act_ru_execution/act_ru_task/act_ru_actinst/act_ru_variable/
|
||||
|
||||
**(历史数据)**: act_hi_procinst/act_hi_taskinst/act_hi_actinst/act_hi_varinst/
|
||||
|
||||
### 6.6 流程任务审批
|
||||
|
||||
> 单纯操作流程任务相关的 API, 可以被业务使用.
|
||||
>
|
||||
API:
|
||||
|
||||
**(通过任务)**: cn.axzo.workflow.client.feign.bpmn.ProcessTaskApi.approveTask
|
||||
|
||||
**(拒绝任务)**: cn.axzo.workflow.client.feign.bpmn.ProcessTaskApi.rejectTask
|
||||
|
||||
操作的库表:
|
||||
|
||||
**(运行时)**: act_ru_task/act_ru_variable/act_ru_actinst/
|
||||
|
||||
**(历史数据)**: act_hi_taskinst/act_hi_varinst/act_hi_actinst/act_hi_procinst/
|
||||
|
||||
### 6.7 流程评论+附件
|
||||
|
||||
API:
|
||||
|
||||
**(添加评论)**: cn.axzo.workflow.core.service.BpmnTaskService.commentTask
|
||||
|
||||
**(添加附件)**: cn.axzo.workflow.core.service.BpmnTaskService.attachmentTask
|
||||
|
||||
操作的库表:
|
||||
|
||||
**(评论)**: act_hi_comment
|
||||
|
||||
**(附件)**: act_hi_attachment
|
||||
|
||||
## 7. 如何与外部交互?
|
||||
|
||||
> 工作流引擎作为服务端, 与外部系统交互分为两类, 一类是操作引擎, 一般提供 API 入口, 由外部推动. 另一类是引擎内部状态通知给使用方,
|
||||
> 是由服务端广播出去.
|
||||
|
||||
### 6.1 外部操作引擎
|
||||
### 7.1 外部操作引擎
|
||||
|
||||
> 本工程提供两种使用接入方式, 一种是 jar 包集成, 可参考[这个说明](workflow-engine-core/src/main/resources/readme.md),
|
||||
> 另一种是 Feign API 集成, 主要参考`workflow-engine-server`module
|
||||
> 中包路径为 `src/main/java/cn/axzo/workflow/server/controller/web` 下的文件.
|
||||
|
||||
### 6.2 引擎内部事件广播
|
||||
### 7.2 引擎内部事件广播
|
||||
|
||||
> 引擎内部的事件类型非常多, org.flowable.common.engine.api.delegate.event.FlowableEngineEventType 通过这个类可以看到引擎会触发的事件类型.
|
||||
>
|
||||
@ -275,7 +370,7 @@ act_ge_bytearray (很多元数据)
|
||||
- cn.axzo.workflow.core.listener.BpmnTaskEventListener
|
||||
- cn.axzo.workflow.core.listener.BpmnProcessEventListener
|
||||
|
||||
**以下总结下哪些接口触发哪些事件**
|
||||
**以下总结哪些接口触发哪些事件**
|
||||
|
||||
- cn.axzo.workflow.client.feign.bpmn.ProcessInstanceApi.createProcessInstance
|
||||
|
||||
@ -303,7 +398,7 @@ act_ge_bytearray (很多元数据)
|
||||
> 1. 当前审批任务会触发 process-task-deleted 事件
|
||||
> 2. 当前流程实例会触发 process-instance-rejected 事件
|
||||
|
||||
## 7. Flowable 过时的中文文档参考
|
||||
## 8. Flowable 过时的中文文档参考
|
||||
|
||||
[Flowable BPMN 用户手册 v6.3.0](https://tkjohn.github.io/flowable-userguide/)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user