My Tasks
Экран My Tasks содержит активные задачи текущего пользователя. В дереве задачи сгруппированы по типу назначения, процессу и имени задачи.
Список задач
Доступны следующие действия:
-
Assigned Tasks — содержит задачи, назначенные непосредственно текущему пользователю.
-
Group Tasks — содержит задачи, для которых текущий пользователь указан как кандидат.
-
Open task — открыть форму процесса для выбранной задачи, чтобы просмотреть или выполнить ее.
-
Refresh — перезагрузить задачи.
Столбец Process instance business key содержит бизнес-ключ, который определяет объект, связанный с процессом.
| При проектировании процессов старайтесь указывать бизнес-ключ. Имя экземпляра сущности может служить подходящим бизнес-ключом. |
Столбец Due Date показывает ожидаемый срок выполнения задачи. Значение носит справочный характер. Для отслеживания просроченных задач и реагирования на них требуется пользовательская логика приложения.
Альтернативный экран задач
Вы можете создать отдельный экран списка задач и настроить его для своего приложения. Он не заменяет стандартный экран My Tasks.
-
Слева расположен компонент фильтра, который позволяет отбирать задачи по имени задачи, имени процесса или исполнителю.
-
Справа расположена таблица со списком пользовательских задач.
Создание альтернативного экрана задач
В мастере создания экранов 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 | Укажите здесь идентификатор сгенерированного экрана. |
| 2 | Укажите идентификатор пункта меню, который ведет на сгенерированный экран. |