My Tasks
This view provides access to the active tasks of the currently authenticated user. It organizes tasks in a tree structure, grouping them by their respective processes.
The task tree features two root nodes: Assigned Tasks and Group Tasks. The Assigned Tasks node contains tasks where the user is the assignee, while the Group Tasks node includes tasks where the user is a candidate.
The user navigates to a certain process and selects a task to open. How to work with tasks, see in the Process Forms section.

The Due Date shows when the task is expected to be completed. However, this field is for informational purposes only. If you want to monitor when tasks are overdue and perform any actions based on that, it should be done programmatically.
When designing your processes, use a business key. A business key makes the task list more informative, allowing users to understand which business object is associated with each process.
For example, see group tasks without the business key:

In most cases, the entity instance name can serve as an effective business key. |
Advanced Task List View
The framework includes a BPM task view with advanced features for task management, including filtering, pagination, and sorting. This view is customizable to fit specific project requirements.
To simplify this task view creation, Jmix Studio provides the BPM: Advanced Task List View template in its view creation wizard:

Creating an advanced task view involves similar steps as creating a standard blank view.
After all steps are executed, the studio produces the descriptor and controller files. Despite their significant size, these files include extensive inline comments, making the code easier to understand and customize.
The generated view will not extend or override the My Tasks view provided by the BPM add-on, and it can be customized to fit the project’s needs.
Let’s see how the generated view looks in the application.

The left side of the view includes a custom filter component, which offers filtering capabilities based on task name, process, and assignment type.
The right side of the view contains a data grid, which displays a sortable list of user tasks retrieved from the database.
Security
Because this view is a custom view at the project level, you must manually grant permissions to it and its related entities.
Create new BpmProcessTaskPerformerRole
resource role.
This role grants the user access to view user tasks and work with process forms in the generated Advanced Task List view.
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 | Specify the generated view id here. |
2 | Provide the id of the menu item that navigates to the generated view. |