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 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 Process instance business key column displays the business key value. This helps users understand which object the process is associated with.
When designing processes, aim to specify a business key. The data-model:entities.adoc#instance-name can serve as an effective business key. -
The Due Date shows when the task is expected to be completed. This field is for reference only. If you want to track overdue tasks and take action based on this information, it should be done programmatically.
Advanced Task List View
The framework allows for the creation and customization of an alternative screen for viewing tasks. This screen is standalone and does not replace the standard My Tasks screen. It can also be easily tailored to meet the needs of your project.

-
The left side features a filter component that allows filtering by task name, process name, or assignee.
-
The right side displays a table containing the list of user tasks.
Creating Advanced Task View
The process of creating an alternative task screen is similar to creating other screens in the Jmix application. The xref:studio:view-wizard.adoc in Jmix Studio provides the BPM: Advanced Task List View template.

After completing the steps in the wizard, Studio generates descriptor and controller files. These files include detailed comments to facilitate understanding and modification of the view.
Access to the View
Similar to other views in you project, users will need access to this new view and the associated entities. Therefore, they have to be granted an appropriate resource role
The code below defines the BpmProcessTaskPerformerRole
, which includes the complete set of necessary permissions.
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. |