jBPM 6.2 如何添加可以执行所有任务的用户?
jBPM 6.2 How to add an user that can execute all tasks?
在 jBPM 6.2 中,我们可以将用户任务分配给 actor
或 group
,这样他们就是这些任务的潜在所有者。有没有我们可以在代码或bpmn文件中定义一个用户,这样他就可以执行所有用户任务,而不管任务是否分配给他?
使用用户名 "Administrator" 创建一个用户,或者使用您现有的一个用户并将其添加到组 "Administrators"。这使相关用户能够以业务管理员身份访问任务。这应该可以满足您的大部分要求。
如果您在使用此方法时遇到任何挑战,另一种选择是在 'Human Task' WorkItemHandler
中实现您自己的自定义任务分配行为,但让我们先尝试上述方法。
根据要求,此方法的代码示例为:
- 实现一个扩展 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) 的 class test.CustomHTWorkItemHandler。
给它一个新的消费者:
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>
在 jBPM 6.2 中,我们可以将用户任务分配给 actor
或 group
,这样他们就是这些任务的潜在所有者。有没有我们可以在代码或bpmn文件中定义一个用户,这样他就可以执行所有用户任务,而不管任务是否分配给他?
使用用户名 "Administrator" 创建一个用户,或者使用您现有的一个用户并将其添加到组 "Administrators"。这使相关用户能够以业务管理员身份访问任务。这应该可以满足您的大部分要求。
如果您在使用此方法时遇到任何挑战,另一种选择是在 'Human Task' WorkItemHandler
中实现您自己的自定义任务分配行为,但让我们先尝试上述方法。
根据要求,此方法的代码示例为:
- 实现一个扩展 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) 的 class test.CustomHTWorkItemHandler。
给它一个新的消费者:
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>