我的任务

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 会自动生成视图 XML 以及 Java 控制器,并带有注释解释如何定制。

访问权限

与项目中的其他视图一样,用户需要特定权限才能访问任务列表视图和相关实体。可以为用户分配合适的 资源角色。

下面的 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。