其实在查这块我们主要涉及到的一些业务无非就是查询当前用户的所有任务,或者说是查看特定流程实例的进展状态,以及对一些流程定义的查询
还有会涉及到对流程变量的一些查询以后再说
首先我们的基本环境的部署工作在前面已经做好了,简单回顾一下
加载配置文件
1 @RunWith(SpringJUnit4ClassRunner.class) 2 @ContextConfiguration(locations = { "classpath:spring.xml", "classpath:spring-hibernate.xml", 3 "classpath:spring-jbpm.xml" })
注入服务
1 @Autowired 2 BaseService baservice; 3 @Autowired 4 IdentityService identityService; 5 @Autowired 6 TaskService taskService; 7 @Autowired 8 FreeDomFlowService freeDomFlowService; 9 @Autowired 10 ProcessEngine processEngine; 11 12 @Autowired 13 ExecutionService executionService;
在这里简单那说明一下那个baseservice,上一篇以及讲到baseservice的一些实现,其实就是对
1 @Autowired 2 private RepositoryService reService; 3 // 创建执行流程实例相关 4 @Autowired 5 ExecutionService executionService; 6 // 提供对任务列表的访问接口 7 @Autowired 8 TaskService taskService;
这三个服务的一些简单的封装以便我们方便部署流程
使用baseservice进行部署流程定义
1 baservice.respositoryService("wf_admin/testSelect.jpdl.xml");
其实查询这快我们无非就是先得到服务然后createXXXQuery()得到相应的
流程定义查询对象ProcessDefinitionQuery
流程实例查询对象ProcessInstanceQuery
当前任务查询对象TaskQuery
流程实例的查询
1 ProcessInstanceQuery instanceQuery = processEngine.getExecutionService().createProcessInstanceQuery(); 2 List<ProcessInstance> processInstances = instanceQuery.list(); 3 for (ProcessInstance processInstance : processInstances) { 4 System.out.println(processInstance.getId()); 5 System.out.println(processInstance.getKey()); 6 System.out.println(processInstance.getName()); 7 System.out.println(processInstance.getProcessDefinitionId()); 8 System.out.println(processInstance.findActiveActivityNames()); 9 System.out.println(processInstance.findActiveExecutionIn("填写采购单")); 10 // testSelectFlow.120001 11 // null 12 // null 13 // testSelectFlow-1 14 // [填写采购单] 15 //execution[testSelectFlow.120001] 16 }
流程定义的查询
1 ProcessDefinitionQuery processQuery = processEngine.getRepositoryService().createProcessDefinitionQuery(); 2 List<ProcessDefinition> processDefinitions = processQuery.list(); 3 for (ProcessDefinition processDefinition : processDefinitions) { 4 System.out.println(processDefinition.getDeploymentId()); 5 System.out.println(processDefinition.getDescription()); 6 System.out.println(processDefinition.getKey()); 7 System.out.println(processDefinition.getName()); 8 System.out.println(processDefinition.getImageResourceName()); 9 System.out.println(processDefinition.getVersion()); 10 // 20001 11 // null 12 // adminKey 13 // admin 14 // null 15 // 1 16 17 // 110001 18 // null 19 // testSelectFlow 20 // testSelect 21 // null 22 // 1 23 }
当前任务的查询
1 TaskQuery taskQuery = processEngine.getTaskService().createTaskQuery(); 2 List<Task> tasks = taskQuery.list(); 3 for (Task task : tasks) { 4 System.out.println(task.getActivityName()); 5 System.out.println(task.getAssignee()); 6 System.out.println(task.getDescription()); 7 System.out.println(task.getExecutionId()); 8 System.out.println(task.getFormResourceName()); 9 System.out.println(task.getId()); 10 System.out.println(task.getCreateTime()); 11 System.out.println(task.getProgress()); 12 // 填写采购单 13 // user1 14 // null 15 // testSelectFlow.120001 16 // null 17 // 120002 18 // 2016-08-18 21:48:25.221 19 // null 20 }
特定用户的查询
当然我们也可以指定特定的用户进行相应信息的查询工作
1 TaskQuery taskQuery = processEngine.getTaskService().createTaskQuery(); 2 List<Task> tasks = taskQuery.assignee("user1").list(); 3 for (Task task : tasks) { 4 System.out.println(task.getActivityName()); 5 System.out.println(task.getAssignee()); 6 System.out.println(task.getDescription()); 7 System.out.println(task.getExecutionId()); 8 System.out.println(task.getFormResourceName()); 9 System.out.println(task.getId()); 10 System.out.println(task.getCreateTime()); 11 System.out.println(task.getProgress()); 12 // 填写采购单 13 // user1 14 // null 15 // testSelectFlow.120001 16 // null 17 // 120002 18 // 2016-08-18 21:48:25.221 19 // null 20 }
其实我们也可以这样得到这个list<task>
1 List<Task> tasks = taskService.findPersonalTasks("user1"); 2 System.out.println("任务数量" + tasks.size()); 3 System.out.println("任务名词" + tasks.get(0).getActivityName()); 4 System.out.println("任务ID" + tasks.get(0).getId()); 5 // 任务数量1 6 // 任务名词填写采购单 7 // 任务ID120002
其实还有获得组的任务以及一些流程变量的查询