jbpm4.4怎么查询某一个流程实例的所有已完成的(历史)Task列表?

yycdaizi 2012-04-09

jbpm4.4怎么查询某一个流程实例的所有已完成的(历史)Task列表啊?就是已知某一流程实例的id,我想要知道这一流程实例所关联的所有任务。

我查了HistorySerivce的api,里面的HistoryTaskQuery只有一个executionId的参数,但是有分支的时候,executionId和processInstanceId是不一样的,所以如果将processInstanceId当做executionId传进去的话,分支的任务就没包含,不行。

我现在的想法是这样的:

 

//先查询到流程实例经过的所有activity
List<HistoryActivityInstance> activityList 
	= historyService.createHistoryActivityInstanceQuery()
				.processInstanceId(processInstanceId).list();
//得到所有的executionId,去掉重复的
Set<String> executionIdSet = new HashSet<String>();
for(HistoryActivityInstance activityInstance:activityList){
	executionIdSet.add(activityInstance.getExecutionId());
}
//根据所有executionId,得到所有的historyTask
List<HistoryTask> taskList = new ArrayList<HistoryTask>();
for(String executionId:executionIdSet){
	List<HistoryTask> tasks = historyService.createHistoryTaskQuery()
								.executionId(executionId).list();
	taskList.addAll(tasks);
}
return taskList;
 

 

但是这样感觉很麻烦,还不如自己写hql呢!请教高手,不知道有没有更好的方法?

Global site tag (gtag.js) - Google Analytics