我的任务
这个视图可以查看当前认证用户的已激活任务。 以树状结构显示任务,其中任务按流程进行分组。
任务树具有两个根节点:已分配任务(Assigned Tasks) 和 组任务(Group Tasks) 。 已分配任务 节点该用户作为执行人的任务。 而 组任务 节点包括用户是候选人的任务。
用户选择特定的流程后可以打开该流程中的任务。 如何完成任务,请参阅 流程表单。

Due Date 字段显示任务的预期完成时间。 但是,这个时间仅供参考。 如需监控任务的逾期情况并基于该信息执行操作,则需要以编程方式实现。
在设计流程时,请使用 业务键值。 有了业务键值之后,任务列表能提供更多信息,使用户能够了解业务对象与流程的关系。
例如,没有业务键值的组任务显示如下:

多数情况下,实体实例名 可作为有效的业务键值使用。 |
高级任务列表视图
框架还提供了另外一个 BPM 任务视图,带有高级的任务管理功能,包括:过滤、分页和排序。这个视图可以根据项目的特定需求进行自定义。
为了简化创建该任务视图的过程,Jmix Studio 在 视图创建向导 中提供了 BPM: Advanced Task List View 模板:

创建高级任务视图的步骤与创建标准空白视图的步骤类似。
完成所有步骤之后,Studio 会生成页面的 XML 和 Java 代码。虽然这些代码量有点大,但是其中包含了丰富的注释,使得代码更易于理解并进行定制化。
生成的视图不会对 BPM 扩展组件提供的 My Tasks 视图进行扩展或覆盖,并可以根据需要进行自定义。
下面是生成的视图样式:

视图左侧包含一个自定义的过滤器组件,提供了根据任务名称、流程和分配类型进行过滤的功能。
视图的右侧是一个表格,显示根据条件从数据库获取的可排序任务列表。
安全
由于该视图是在项目级别的自定义视图,因此需要手动分配视图及其相关实体的权限。
创建新的 BpmProcessTaskPerformerRole
资源角色。
该角色支持用户在生成的 Advanced Task List 视图中查看用户任务并处理流程表单。
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。 |