jbpm流程实例,流程定义以及一些常用的查询

其实在查这块我们主要涉及到的一些业务无非就是查询当前用户的所有任务,或者说是查看特定流程实例的进展状态,以及对一些流程定义的查询

还有会涉及到对流程变量的一些查询以后再说

首先我们的基本环境的部署工作在前面已经做好了,简单回顾一下

加载配置文件

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

 

其实还有获得组的任务以及一些流程变量的查询

 

转载于:https://www.cnblogs.com/holdouts/articles/5812419.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值