我的任务

这个视图可以查看当前认证用户的已激活任务。 以树状结构显示任务,其中任务按流程进行分组。

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 会生成页面的 XML 描述和控制器文件。这些文件中具有详细的注释,帮助理解和编辑视图。

访问视图

与项目中的其他视图一样,用户需要有权限才能访问这个新视图及其关联实体。因此,需要给用户相应的 资源角色

下面的代码定义了一个 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。