在jBPM 6.2中,我们可以将用户任务分配给actor
或group
,使它们成为这些任务的潜在所有者。是否存在一个用户,我们可以在代码或bpmn文件中定义,以便他可以执行所有用户任务,而不管任务是否分配给他?
创建用户名为"Administrator"的用户,或者使用现有用户并将其添加到组"Administrators"中。这使相关用户能够以业务管理员的身份访问任务。这应该可以满足您的大多数需求。
如果您使用这种方法遇到任何挑战,另一种选择可能是在"人工任务"WorkItemHandler
中实现您自己的自定义任务分配行为,但让我们首先尝试上面提到的方法。
按照要求,这种方法的代码示例如下:
- 实现类测试。CustomHTWorkItemHandler扩展LocalHTWorkItemHandler (https://github.com/droolsjbpm/jbpm/blob/master/jbpm-human-task/jbpm-human-task-workitems/src/main/java/org/jbpm/services/task/wih/LocalHTWorkItemHandler.java)。
-
给它一个新的导体:
public CustomHTWorkItemHandler(RuntimeManager runtimeManager){ super.setRuntimeManager(runtimeManager); }
-
重写方法createTaskBasedOnWorkItemParams:
protected Task createTaskBasedOnWorkItemParams(KieSession session, WorkItem workItem) { InternalTask task =(InternalTask)super.createTaskBasedOnWorkItemParams(session,workItem); Group adminGroup = TaskModelProvider.getFactory().newGroup(); ((InternalOrganizationalEntity) adminGroup).setId("MySpecialAdminGroup"); task.getPeopleAssignments().getBusinessAdministrators().add(adminGroup); return task; }
-
在部署描述符XML文件中,注册新的
CustomHTWorkItemHandler
:<work-item-handler> <resolver>mvel</resolver> <identifier>new test.CustomHTWorkItemHandler(runtimeManager)</identifier> <name>Human Task</name> </work-item-handler>