My Tasks
Экран My Tasks предоставляет доступ к активным задачам текущего пользователя. Задачи организованы в виде дерева и сгруппированы по процессам.

-
Узел Assigned Tasks содержит задачи, где пользователь является непосредственным исполнителем, а узел Group Tasks содержит задачи, где пользователь является кандидатом на выполнение.
-
Столбец Process instance business key содержит значение бизнес-ключа вашего процесса. Это даёт пользователям понять с каким объектом связан процесс.
При проектировании процессов старайтесь указывать бизнес-ключ. В большинстве случаев имя экземпляра сущности может служить эффективным бизнес-ключом. -
Столбец Due Date показывает, когда задача должна быть завершена. Это поле предназначено только для справки. Если вы хотите отслеживать просроченные задачи и выполнять действия на основе этой информации, это нужно делать программно.
Альтернативный экран задач
Фреймворк позволяет создать и настроить альтернативный экран для просмотра задач. Он является самостоятельным и не заменяет стандартный экран My Tasks. Также его можно легко настроить под нужды вашего проекта.

-
Слева находится компонент фильтра, который предлагает фильтрацию по имени задачи, имени процесса или исполнитель.
-
Справа расположена таблица, которая отображает список пользовательских задач.
Создание альтернативного экрана задач
Процесс создания альтернативного экрана задач аналогичен созданию прочих экранов в приложении Jmix. Мастер создания экранов Jmix Studio предоставляет специальный шаблон BPM: Advanced Task List View.

После завершения шагов в мастере, Studio создаст файлы дескриптора и контроллера. Файлы снабжены подробными комментариями упрощая понимание и дальнейшую модификацию экрана.
Доступ к экрану
Новый экран задач является пользовательским на уровне проекта. Чтобы обеспечить доступ пользователей этому экрану и связанным сущностям, необходимо создать и назначить соответствующую ресурсную роль.
Код, приведенный ниже, описывает роль BpmProcessTaskPerformerRole
с полным набором необходимых разрешений.
import io.jmix.bpm.entity.*;
import io.jmix.security.model.*;
import io.jmix.security.role.annotation.EntityAttributePolicy;
import io.jmix.security.role.annotation.EntityPolicy;
import io.jmix.security.role.annotation.ResourceRole;
import io.jmix.securityflowui.role.annotation.MenuPolicy;
import io.jmix.securityflowui.role.annotation.ViewPolicy;
@ResourceRole(name = "BPM: process task performer", code = BpmProcessTaskPerformerRole.CODE, scope = SecurityScope.UI)
public interface BpmProcessTaskPerformerRole {
String CODE = "bpm-process-task-performer";
@ViewPolicy(viewIds = {
"AdvancedTaskListView", (1)
"bpm_DefaultStartProcessForm",
"bpm_DefaultTaskProcessForm",
"bpm_InputDialogStartProcessForm",
"bpm_InputDialogTaskProcessForm"
})
@MenuPolicy(menuIds = {
"AdvancedTaskListView" (2)
})
@EntityPolicy(entityClass = ContentStorage.class, actions = {EntityPolicyAction.READ})
@EntityPolicy(entityClass = ProcessDefinitionData.class, actions = {EntityPolicyAction.READ})
@EntityPolicy(entityClass = TaskData.class, actions = {EntityPolicyAction.READ})
@EntityAttributePolicy(entityClass = ContentStorage.class, attributes = "*", action = EntityAttributePolicyAction.VIEW)
@EntityAttributePolicy(entityClass = ProcessDefinitionData.class, attributes = "*", action = EntityAttributePolicyAction.VIEW)
@EntityAttributePolicy(entityClass = TaskData.class, attributes = "*", action = EntityAttributePolicyAction.VIEW)
void bpmProcessTaskPerformer();
}
1 | Указан стандартный id экрана. Если требуется, замените его на свой. |
2 | Указан стандартный id пункта меню. Если требуется, замените его на свой. |