Как лучше всего определить группу кандидатов с заданием?
После того, как я загрузил список задач с TaskQuery
taskService.createTaskQuery()
.processDefinitionKey(PROCESSKEY)
.taskCandidateGroupIn(list).initializeFormKeys().list()
Как лучше всего определить группу кандидатов для каждого задания? Я хочу отобразить его в представлении JSF, но у класса Task нет соответствующего поля.
2 ответа
Наилучшим подходом является написание пользовательского запроса, который предоставляет всю информацию о задании так, как вам нужно при выборе. Вы не хотите начинать циклически повторять списки результатов и отправлять один или несколько запросов на элемент, особенно если это не высокопроизводительное приложение в качестве списка задач.
Проверьте подробности в документации по пользовательскому запросу.
Вы можете получить идентификационные ссылки задачи, используя службу задач. В отношении других отношений групповое отношение кандидата выражается в виде индивидуальной связи. Следующий код фильтрует идентификационные ссылки задачи для тех, которые представляют группы кандидатов:
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
}
}
Выбирайте только задачи, у которых есть группы кандидатов.
List<Task> candidateGroupList = taskService.createTaskQuery().withCandidateGroups().list();