2015-03-13 48 views
0

我希望能够使用Activiti查询分配给用户列表的工作流任务。例如,分配给user1或user2的查询任务。 我已阅读WorkflowServiceImpl.java和ActivitiWorkflowEnginge.java的代码,实际上WorkflowTaskQuery能够查询仅分配给1个用户的任务。 我找不到如何创建一个新的方法来添加我需要的功能:我不明白查询是如何转换的以及我可以修改的。 我想如果有可能使用luceneSearch这样的查询。Alfresco:查询用户列表的工作流任务

感谢,

回答

1

如果用户的列表中,您的意思是一组可以使用与签名

List<WorkflowTask> getPooledTasks(String authority)的方法是这样的:

getWorkflowService().getPooledTasks(groupName); 

一般来说,你可以用这样的方法:

List<WorkflowTask> queryTasks(WorkflowTaskQuery query, 
           boolean sameSession) 

然后类似:

WorkflowTaskQuery query = new WorkflowTaskQuery(); 
query.setActive(true); 
query.setTaskState(WorkflowTaskState.IN_PROGRESS); 
query.setActorId("username"); 
List<WorkflowTask> results = workflowService.queryTasks(query, false); 

其中用户名代表您正在查找的用户。 您可以轻松地遍历用户列表以实现所需内容,但如果此列表很长,则可能会遇到性能问题。

您可以考虑创建一个临时存储库组,然后将其添加到列表的所有用户,并最终对该组执行池查询。

请记住,WorkflowTaskQuery对象不过是您可以为queryTasks方法编写的过滤器。

+0

我需要查询在同一组下不需要的用户 – amekki 2015-03-13 15:14:19

+0

通过用户列表迭代不是一个好的解决方案。实际上,对列表用户进行1次查询的执行时间少于对用户的迭代次数。 – amekki 2015-03-13 16:24:27

相关问题