一设计流程定义文档
1.1 流程图
1.2 bpmn文件
BPMN 2.0根节点是definitions节点。 这个元素中,可以定义多个流程定义(不过我们建议每个文件只包含一个流程定义, 可以简化开发过程中的维护难度)。 一个空的流程定义看起来像下面这样。注意,definitions元素 最少也要包含xmlns 和 targetNamespace的声明。 targetNamespace可以是任意值,它用来对流程实例进行分类。
说明:流程定义文档有两部分组成:
(1)bpmn文件
流程规则文件。在部署后,每次系统启动时都会被解析,把内容封装成流程定义放入项目缓存中。Activiti框架结合这个xml文件自动管理流程,流程的执行就是按照bpmn文件定义的规则执行的,bpmn文件是给计算机执行用的。
(2)展示流程图的图片
在系统里需要展示流程的进展图片,图片是给用户看的。
二 部署流程定义
2.1 部署流程定义方法一(classpath路径加载文件)
说明:
(1)先获取流程引擎对象:在创建时会自动加载classpath下的activiti.cfg.xml
(2)首先获得默认的流程引擎,通过流程引擎获取了一个RepositoryService对象(仓库对象)
(3)由仓库的服务对象产生一个部署对象配置对象,用来封装部署操作的相关配置。
(4)这是一个链式编程,在部署配置对象中设置显示名,上传流程定义规则文件
(5)向数据库表中存放流程定义的规则信息。
(6)这一步在数据库中将操作三张表:
1. act_re_deployment(部署对象表)
存放流程定义的显示名和部署时间,每部署一次增加一条记录
2. act_re_procdef(流程定义表)
存放流程定义的属性信息,部署每个新的流程定义都会在这张表中增加一条记录。
注意:当流程定义的key相同的情况下,使用的是版本升级
3. act_ge_bytearray(资源文件表)
存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于bpmn规则文件的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图)。两个文件不是很大,都是以二进制形式存储在数据库中。
2.2 部署流程定义方法二 部署流程定义(zip格式文件)
将压缩成zip格式的文件,使用zip的输入流用作部署流程定义
三 查看流程定义
查询流程定义的信息
结果:
再部署一次运行结果为:
可以看到流程定义的key值相同的情况下,版本是从1开始逐次升级的
流程定义的Id是【key:版本:生成ID】
说明:
- 流程定义和部署对象相关的Service都是RepositoryService。
- 创建流程定义查询对象,可以在ProcessDefinitionQuery上设置查询的相关参数
- 调用ProcessDefinitionQuery对象的list方法,执行查询,获得符合条件的流程定义列表
- 由运行结果可以看出:
Key和Name的值为:bpmn文件process节点的id和name的属性值
5. key属性被用来区别不同的流程定义。
6. 带有特定key的流程定义第一次部署时,version为1。之后每次部署都会在当前最高版本号上加1
7. Id的值的生成规则为:{processDefinitionKey}:{processDefinitionVersion}:{generated-id}, 这里的generated-id是一个自动生成的唯一的数字
8. 重复部署一次,deploymentId的值以一定的形式变化规则act_ge_property表生成
四 查询最新版本的流程定义
五 总结
Deployment 部署对象
1、一次部署的多个文件的信息。对于不需要的流程可以删除和修改。
2、对应的表:
act_re_deployment:部署对象表
act_re_procdef:流程定义表
act_ge_bytearray:资源文件表
act_ge_property:主键生成策略表
ProcessDefinition 流程定义
1、解析.bpmn后得到的流程定义规则的信息,工作流系统就是按照流程定义的规则执行的。