JBPM4.4工作流引擎学习(五)
2016-07-05 11:44
429 查看
执行服务ExecutionService
ExecutionService主要用于维护流程实例,执行等待状态的流程,并且包含了流程实例的查询和流程变量的操作。
1.启动新的流程实例
1)使用Key启动最新的流程实例
上述方法会以Key为VWIN流程定义的最新版本启动一个新的流程实例,是最简单且最常用的方法。
指定流程版本
上述方法会以流程为VWIN-2的定义启动一个新的流程实例,VWIN是流程定义的Key,2是流程定义的版本。
指定流程实例的ID
上述方法与第a种方法类似,唯一区别是手动指定了流程实例的ID,这个ID可以用我们的业务对象ID,例如采购单。
使用变量
上述方法在启动流程实例时,就会将设置的变量保存,启动后可以使用这些变量。任务服务TaskService
任务列表的访问
TaskService主要是提供了对任务列表的访问及操作,如:
2)
读写相关数据
一般情况下,我们在执行任务时都会对应一个表单,表单可以读写任务的相关数据。
3)
完成任务
我们可以通过以下几种方式完成任务:
我们可以提供一个map,在任务完成之前作为流程变量添加到流程实例中,也可以提供一个outcome(出口),以决定任务完成后的流向。但是我们需要注意任务的不同配置将会带来的问题:
taskService.getOutComes(taskId)
如果一个任务拥有一个没有name的transition:
如果一个任务拥有一个有name的transition:
如果一个任务拥有多个transition,而其中一个没有name,其他都有name:
如果一个任务拥有多个transition,并且都有唯一的name:
历史服务HistoryService
历史服务顾名思义就是对流程实例的运行时历史进行访问,如果想查询某流程定义的所有历史流程实例,可以使用如下方法:
以上是我们常用的几个服务
执行服务ExecutionService
ExecutionService主要用于维护流程实例,执行等待状态的流程,并且包含了流程实例的查询和流程变量的操作。
1.启动新的流程实例
1)使用Key启动最新的流程实例
executionService.startProcessInstanceByKey("VWIN"); |
指定流程版本
executionService.startProcessInstanceById("VWIN-2"); |
指定流程实例的ID
executionService.startProcessInstanceByKey("VWIN","CGD0008"); |
使用变量
Map<String,Object> variables = new HashMap<String,Object>(); variables.put("customer", "John Doe"); variables.put("type", "Accident"); variables.put("amount", new Float(763.74)); executionService.startProcessInstanceByKey("VWIN",variables); |
任务列表的访问
TaskService主要是提供了对任务列表的访问及操作,如:
//查找指定用户的任务列表 List<Task> taskList=taskService.findPersonalTasks("marker"); //查找指定组的任务列表 List<Task> groupTaskList = taskService.findGroupTasks("hr-group"); for (Task task : taskList) { //TODO taskService.completeTask(task.getId()); } |
读写相关数据
一般情况下,我们在执行任务时都会对应一个表单,表单可以读写任务的相关数据。
taskService.getVariable(taskId, variableName); taskService.getVariables(taskId,variableNames); taskService.getVariableNames(taskId); taskService.setVariables(taskId, variables); |
完成任务
我们可以通过以下几种方式完成任务:
taskService.completeTask(taskId); taskService.completeTask(taskId,variables); taskService.completeTask(taskId,outcome); taskService.completeTask(taskId,outcome,variables); |
taskService.getOutComes(taskId)
如果一个任务拥有一个没有name的transition:
<task name="myTask"> <transition to="end"/> </task> taskService.getOutcomes(taskId);//返回一个包含null值的集合 taskService.completeTask(taskId);//使用这个 transition taskService.completeTask(taskId, variables);//使用这个transition taskService.completeTask(taskId,outcome);//抛出异常 taskService.completeTask(taskId, outcome, variables);//抛出异常 |
<task name="myTask"> <transition name="to end" to="end"/> </task> taskService.getOutcomes(taskId);//返回包含这个transition名称的集合 taskService.completeTask(taskId);//使用这个transition taskService.completeTask(taskId, variables); //抛出异常(因为没有无名的transition) taskService.completeTask(taskId, outcome);//根据指定的名称执行转移(如果没有该名称,则抛出异常) taskService.completeTask(taskId, outcome, variables);//抛出异常(因为没有无名的transition) |
<task name="myTask"> <transition to="next"/> <transition name="to other task" to="otherTask"/> <transition name="to end" to="end"/> </task> taskService.getOutcomes(taskId);//返回一个包含null值和其他transition名称的集合 taskService.completeTask(taskId);//使用没有名称的transition taskService.completeTask(taskId, variables);//使用没有名称的transition taskService.completeTask(taskId, outcome);//使用指定名称的transition taskService.completeTask(taskId, outcome, variables);//使用指定名称的transition |
<task name="myTask"> <transition name="to next" to="next"/> <transition name="to other task" to="otherTask"/> <transition name="to end" to="end"/> </task> taskService.getOutcomes(taskId);//返回一个包含null值和其他transition名称的集合 taskService.completeTask(taskId);//抛出异常(因为没有无名的transition) taskService.completeTask(taskId, variables); //抛出异常(因为没有无名的 transition) taskService.completeTask(taskId, outcome);//使用指定名称的transition taskService.completeTask(taskId, outcome, variables);//使用指定名称的transition |
历史服务顾名思义就是对流程实例的运行时历史进行访问,如果想查询某流程定义的所有历史流程实例,可以使用如下方法:
historyService.createHistoryProcessInstanceQuery() .processDefinitionId(processDefinitionId .orderAsc(HistoryProcessInstanceQuery.PROPERTY_STARTTIME) .list(); | |
相关文章推荐
- JBPM4.4工作流引擎学习(四)--流程资源RepositoryService
- JBPM4.4工作流引擎学习(三)
- JBPM4.4工作流引擎学习(二)--安装GPD
- 职场职位缩写 PM,TM,PL,TL,SE,PG,CEO,CFO
- PMF Model
- mysql rpm || .tar 下载地址
- C#开发中Windows域认证登录2016(扩展吉日嘎拉GPM系统V4.2)
- rpm 安装和卸载 rpm 查询
- 20160702如何做好一个创业团队的产品经理?
- PPM / PGM / PBM 图像文件格式
- 源码编译RPM包
- DPM学习
- NPM小结
- ES6转码ES5---gulp的使用
- 从P6 EPPM 8 R3 到P6 EPPM 16 R1 有哪些改变?
- 项目管理概述
- 互联网产品经理常用软件及工作平台
- 互联网产品经理常用软件及工作平台
- 产品思维之获得喜爱的生日礼物
- npm -g默认安装地址