Как лучше всего определить группу кандидатов с заданием?

После того, как я загрузил список задач с 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();
Другие вопросы по тегам