My Tasks

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

my tasks view
  • Узел Assigned Tasks содержит задачи, где пользователь является непосредственным исполнителем, а узел Group Tasks содержит задачи, где пользователь является кандидатом на выполнение.

  • Столбец Process instance business key содержит значение бизнес-ключа вашего процесса. Это даёт пользователям понять с каким объектом связан процесс.

    При проектировании процессов старайтесь указывать бизнес-ключ. В большинстве случаев имя экземпляра сущности может служить эффективным бизнес-ключом.
  • Столбец Due Date показывает, когда задача должна быть завершена. Это поле предназначено только для справки. Если вы хотите отслеживать просроченные задачи и выполнять действия на основе этой информации, это нужно делать программно.

Альтернативный экран задач

Фреймворк позволяет создать и настроить альтернативный экран для просмотра задач. Он является самостоятельным и не заменяет стандартный экран My Tasks. Также его можно легко настроить под нужды вашего проекта.

advanced my tasks view
  • Слева находится компонент фильтра, который предлагает фильтрацию по имени задачи, имени процесса или исполнитель.

  • Справа расположена таблица, которая отображает список пользовательских задач.

Создание альтернативного экрана задач

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

advanced my tasks view template

После завершения шагов в мастере, 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 пункта меню. Если требуется, замените его на свой.