流程实例
流程实例(ProcessInstance)代表流程定义的执行实例。一个流程实例包括了所有的运行节点。我们可以利用这个对象来了解当前流程实例的进度等信息。例如:用户或程序按照流程定义内容发起一个流程,这就是一个流程实例
流程定义和流程实例的图解:
启动流程实例并添加 BusinessKey(业务标识)
流程定义部署在 activiti 后,就可以在系统中通过 activiti 去管理该流程的执行,执行流程表示流程的一次执行
比如部署系统出差流程后,如果某用户要申请出差这时就需要执行这个流程,如果另外一个用户也要申请出差则也需要执行该流程,每个执行互不影响,每个执行是单独的流程实例
启动流程实例时,指定的 businesskey,就会在 act_ru_execution 流程实例的执行表中存储businesskey
Businesskey,业务标识,通常为业务表的主键,业务标识和流程实例一一对应。业务标识来源于业务系统。存储业务标识就是根据业务标识来关联查询业务系统的数据
比如:出差流程启动一个流程实例,就可以将出差单的 id 作为业务标识存储到 activiti 中,将来查询 activiti 的流程实例信息就可以获取出差单的 id 从而关联查询业务系统数据库得到出差单信息
1 | java复制代码/** |
流程定义的其他操作
1. 流程定义查询
查询流程相关信息,包含流程定义,流程部署,流程定义版本
1 | java复制代码public void queryProcessDefinition() { |
2. 流程定义删除
1 | java复制代码public void deleteDeployment() { |
3. 流程资源下载
我们把流程资源文件上传到数据库,如果其他用户想要查看这些资源文件,可以从数据库下载资源文件
1 | java复制代码/** |
4. 历史记录查询
即使流程定义已经删除了,流程执行的历史信息依然保存在 activiti 的 act_hi_* 相关的表中,我们还是可以查询流程执行的历史信息
1 | java复制代码public void findHistoryInfo() { |
5. 流程的挂起与激活
某些情况可能由于流程变更需要将当前运行的流程暂停而不是直接删除,流程暂停后将不会继续执行。
1 | java复制代码/** |
1 | java复制代码/** |
本文转载自: 掘金