My Tasks

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

my tasks view

Список задач

Доступны следующие действия:

  • Assigned Tasks — содержит задачи, назначенные непосредственно текущему пользователю.

  • Group Tasks — содержит задачи, для которых текущий пользователь указан как кандидат.

  • Open task — открыть форму процесса для выбранной задачи, чтобы просмотреть или выполнить ее.

  • Refresh — перезагрузить задачи.

Столбец Process instance business key содержит бизнес-ключ, который определяет объект, связанный с процессом.

При проектировании процессов старайтесь указывать бизнес-ключ. Имя экземпляра сущности может служить подходящим бизнес-ключом.

Столбец Due Date показывает ожидаемый срок выполнения задачи. Значение носит справочный характер. Для отслеживания просроченных задач и реагирования на них требуется пользовательская логика приложения.

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

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

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

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

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

В мастере создания экранов 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 Укажите здесь идентификатор сгенерированного экрана.
2 Укажите идентификатор пункта меню, который ведет на сгенерированный экран.