- 1. 简介
- 2. 开始
- 3. 配置
- 4. Flowable API
- 5. 集成 Spring
- 6. 部署
- 7. BPMN 2.0 介绍
- 8. BPMN 2.0 结构
- 9. 表单
- 10. JPA
- 11. 历史
- 12. 身份管理
- 13. Eclipse Designer
- 14. Flowable UI 应用
- 15. REST API
- 16. 集成 CDI
- 17. 集成 LDAP
- 18. 高级
- 19. 工具
6.3. 流程定义的版本
BPMN并没有版本的概念。这其实很好,因为可执行的BPMN流程文件很可能已经作为开发项目的一部分,保存在版本管理系统仓库中了(例如Subversion,Git,或者Mercurial)。但是,作为部署过程的一部分,引擎会创建流程定义的版本。在部署时,Flowable会在保存至Flowable数据库前,为ProcessDefinition
指定版本。
对于业务存档中的每个流程定义,为了初始化key
、version
、name
与id
参数,会执行下列步骤:
XML文件中的流程定义
id
属性用作流程定义的key
参数。XML文件中的流程定义
name
属性用作流程定义的name
参数。如果未给定name
属性,会使用id作为name。当每个key的流程第一次部署时,指定版本为1。对其后所有使用相同key的流程定义,部署时版本会在该key当前已部署的最高版本号基础上加1。key参数用于区分流程定义。
id参数设置为{processDefinitionKey}:{processDefinitionVersion}:{generated-id},其中
generated-id
是一个唯一数字,用以保证在集群环境下,流程定义缓存中,流程id的唯一性。
以下面的流程为例
<definitions >
<process name="My important process" >
...
当部署这个流程定义时,数据库中的流程定义会是这个样子:
id | key | name | version |
---|---|---|---|
myProcess:1:676 | myProcess | My important process | 1 |
如果我们现在部署同一个流程的更新版本(例如修改部分用户任务),且保持流程定义的id
不变,那么流程定义表中会包含下面的记录:
id | key | name | version |
---|---|---|---|
myProcess:1:676 | myProcess | My important process | 1 |
myProcess:2:870 | myProcess | My important process | 2 |
当调用runtimeService.startProcessInstanceByKey("myProcess")
时,会使用版本2
的流程定义,因为这是这个流程定义的最新版本。
如果再创建第二个流程,如下定义并部署至Flowable,表中会增加第三行。
<definitions >
<process name="My important process" >
...
表数据类似:
id | key | name | version |
---|---|---|---|
myProcess:1:676 | myProcess | My important process | 1 |
myProcess:2:870 | myProcess | My important process | 2 |
myNewProcess:1:1033 | myNewProcess | My important process | 1 |
请注意新流程的key与第一个流程的key不同。即使name是相同的(我们也可以修改它),Flowable也只用id
属性来区分流程。因此新的流程部署时版本为1.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论