一个使用示例,五个操作步骤!从此轻松掌握项目中工作流的开发
创建流程
要想操作 Activiti 引擎,需要通过 org.activiti.engine.ProcessEngine 实例暴露的服务.就可以操作一个 org.activiti.engine.ProcessEngine
创建一个请假申请的工作业务流程:
发布流程
任何与“静态”资源有关的数据(比如流程定义)都可以通过 RepositoryService 访问,从概念上讲,所有静态数据都是 Activiti 的资源内容
在 src/test/resources/org/activiti/test 目录下创建一个新的 xml 文件 VacationRequest.bpmn20.xml:
为了让 Activiti 引擎知道这个流程,我们必须先进行[发布],发布意味着引擎会把 BPMN 2.0 xml 解析成可以执行的东西,发布包中的所有流程定义都会添加到数据库中.这样,当引擎重启时,它依然可以获得[已发布]的流程:
启动一个流程实例
把流程定义发布到 Activiti 引擎后,可以基于它发起新流程实例.
对每个流程定义,都可以有很多流程实例.流程定义是"蓝图",流程实例是它的一个运行的执行
所有与流程运行状态相关的东西都可以通过 RuntimeService 获得.有很多方法可以启动一个新流程实例.
可以在流程实例启动时添加一些流程变量, 因为第一个用户任务的表达式需要这些变量.流程变量经常会被用到,因为它们赋予来自同一个流程定义的不同流程实例的特别含义
流程变量是区分流程实例的关键
下面使用定义在流程定义 xml 中的 key 来启动流程实例:
完成任务
流程启动后,第一步就是用户任务.这是必须由系统用户处理的一个环节.
用户会有一个"任务列表",展示了所有必须由整个用户处理的任务.下面是对应的查询:
为了让流程实例继续运行,我们**需要完成整个任务.**对 Activiti 来说,就是需要 complete 任务:
然后流程实例就会进入到下一个环节
下一环节允许员工通过表单调整原始的请假申请.员工可以重新提交请假申请,这会使流程重新进入到第一个任务
挂起或激活一个流程
可以挂起一个流程定义,当挂起流程定义时,就不能创建新流程了,会抛出一个异常.可以通过 RepositoryService 挂起一个流程:
要想重新激活一个流程定义,可以调用 repositoryService.activateProcessDefinitionXXX 方法
也可以挂起一个流程实例:
挂起时,流程不能继续执行:比如,完成任务会抛出异常,异步操作(比如定时器)也不会执行.挂起流程实例可以调用 runtimeService.suspendProcessInstance 方法
激活流程实例可以调用 runtimeService.activateProcessInstanceXXX 方法
版权声明: 本文为 InfoQ 作者【攻城狮Chova】的原创文章。
原文链接:【http://xie.infoq.cn/article/feb7b780c1f54f3f4e2753ad9】。文章转载请联系作者。
评论