找出候选组任务的最佳方法是什么?
What is the best way to find out the candidate group a task?
在我使用任务查询加载任务列表后
taskService.createTaskQuery()
.processDefinitionKey(PROCESSKEY)
.taskCandidateGroupIn(list).initializeFormKeys().list()
找出每个 task 的候选组的最佳方法是什么?
我想在 JSF 视图中显示它,但是 class 任务没有相应的字段。
您可以使用任务服务获取任务的身份 links。在其他关系中,候选组关系表示为身份link。以下代码过滤了代表候选组的任务的身份 links:
List<IdentityLink> identityLinks = taskService.getIdentityLinksForTask(task.getId());
for (IdentityLink identityLink : identityLinks) {
String type = identityLink.getType();
/* type corresponds to the constants defined in IdentityLinkType.
"candidate" identitifies a candidate relation */
String groupId = identityLink.getGroupId();
if (IdentityLinkType.CANDIDATE.equals(type) && groupId != null) {
// we have found a candidate group; do something
}
}
最好的方法是编写自定义查询,在 select 上以您需要的方式为您提供所有任务信息。您不想开始遍历结果列表并为每个项目发送一个或多个查询,尤其是在高性能应用程序中作为您的任务列表。
查看 custom query documentation 了解详情。
只有 select 个任务有候选组。
List<Task> candidateGroupList = taskService.createTaskQuery().withCandidateGroups().list();
在我使用任务查询加载任务列表后
taskService.createTaskQuery()
.processDefinitionKey(PROCESSKEY)
.taskCandidateGroupIn(list).initializeFormKeys().list()
找出每个 task 的候选组的最佳方法是什么? 我想在 JSF 视图中显示它,但是 class 任务没有相应的字段。
您可以使用任务服务获取任务的身份 links。在其他关系中,候选组关系表示为身份link。以下代码过滤了代表候选组的任务的身份 links:
List<IdentityLink> identityLinks = taskService.getIdentityLinksForTask(task.getId());
for (IdentityLink identityLink : identityLinks) {
String type = identityLink.getType();
/* type corresponds to the constants defined in IdentityLinkType.
"candidate" identitifies a candidate relation */
String groupId = identityLink.getGroupId();
if (IdentityLinkType.CANDIDATE.equals(type) && groupId != null) {
// we have found a candidate group; do something
}
}
最好的方法是编写自定义查询,在 select 上以您需要的方式为您提供所有任务信息。您不想开始遍历结果列表并为每个项目发送一个或多个查询,尤其是在高性能应用程序中作为您的任务列表。
查看 custom query documentation 了解详情。
只有 select 个任务有候选组。
List<Task> candidateGroupList = taskService.createTaskQuery().withCandidateGroups().list();