当部署一个新的流程时,Flowable 会经过如下步骤来初始化流程 key、流程 version、流程 name与流程定义 id 参数:
* XML 文件中的流程定义 id 属性用作流程定义的 key 参数。
* XML 文件中的流程定义 name 属性用作流程定义的 name 参数。如果未给定 name 属性,会使用 id 作为 name。
* 对同一个流程重复部署多次,则每重复部署一次版本号就`+1`。
* 流程定义 id 参数设置为`{processDefinitionKey}:{processDefinitionVersion}:{generated-id}`,其中`generated-id`是一个唯一数字,用以保证在集群环境下,流程定义缓存中,流程 id 的唯一性。
```xml
<definitions id="myDefinitions" >
<process id="myProcess" name="My important process" >
...
```
<br/>
如果重复部署同一个流程(Flowable 用`<process id="myProcess"`其中的`id`来识别是否是同一个流程),那么在数据库中就会增加一条数据,并且版本号`+1`。
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">id</th>
<th class="tableblock halign-left valign-top">key</th>
<th class="tableblock halign-left valign-top">name</th>
<th class="tableblock halign-left valign-top">version</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">myProcess:1:676</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">myProcess</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">My important process</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">myProcess:2:870</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">myProcess</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">My important process</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
</tr>
</tbody>
</table>
<br/>
当调用`runtimeService.startProcessInstanceByKey("myProcess")`时,会使用版本 2 的流程定义,因为这是这个流程定义的最新版本。
****
参考文档:https://tkjohn.github.io/flowable-userguide/#versioningOfProcessDefinitions
- Activiti流程引擎
- 工作流介绍
- Activiti是什么
- Activiti流程处理步骤
- Activiti环境搭建
- 搭建步骤
- 表结构介绍
- ActivitiAPI结构
- 认识流程符号
- 流程设计器的使用
- 流程处理步骤
- 乱码问题
- 流程实例
- 流程实例是什么
- 业务标识
- 查询流程实例
- 挂起/激活流程实例
- 个人任务
- 分配任务负责人
- 查询待办任务
- 办理权限
- 流程变量
- 流程变量类型
- 流程变量作用域
- 使用流程变量控制流程
- 组任务
- 设置任务候选人
- 组任务办理流程
- 网关
- 4种网关类型
- 排他网关
- 并行网关
- 包含网关
- 事件网关
- Spring整合Activiti
- SpringBoot整合Activiti
- Flowable流程引擎
- Flowable是什么
- Flowable与Activiti
- Flowable环境搭建
- FlowableAPI
- 流程引擎API与服务
- 流程处理步骤
- 流程部署
- 流程部署方式
- 流程定义版本
- 删除已部署的流程
- 下载资源
- 流程实例
- 什么是流程实例
- 业务标识
- 查询流程实例
- 挂起/激活流程实例
- 分配任务负责人
- 固定分配
- UEL表达式分配
- 监听器分配
- 办理权限
- 流程变量
- 流程变量类型
- 流程变量作用域
- 流程变量控制流程
- 组任务
- 设置任务候选人
- 组任务办理流程
- 网关
- 排他网关
- 并行网关
- 包含网关
- 事件网关
- 历史查询
- 查询历史
- Spring整合Flowable
- 配置文件整合
- 配置类整合
- SpringBoot整合Flowable