我的JBPM系统使用LDAP进行身份管理。由于用户Administrator
并且组Administrators
在我的环境中无效,我需要将自己的组BPMUL-admin
设置为所有任务的业务管理员。根据这个answer,我将“人工任务”工作项处理程序添加到 CustomWorkItemHandlers.conf :
[
"Log": new org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler(),
"WebService": new org.jbpm.process.workitem.webservice.WebServiceWorkItemHandler(ksession),
"Rest": new org.jbpm.process.workitem.rest.RESTWorkItemHandler(),
"Service Task" : new org.jbpm.process.workitem.bpmn2.ServiceTaskHandler(ksession),
"Human Task" : new ru.rshb.kie.LeaHTWorkItemHandler(runtimeManager)
]
drools.session.conf:
drools.workItemHandlers = CustomWorkItemHandlers.conf
这里是 LeaHTWorkItemHandler :
public class LeaHTWorkItemHandler extends LocalHTWorkItemHandler {
public static final String ADMIN_GROUP = "BPMUL-admin";
public LeaHTWorkItemHandler(RuntimeManager runtimeManager){
super.setRuntimeManager(runtimeManager);
}
@Override
protected Task createTaskBasedOnWorkItemParams(KieSession session, WorkItem workItem) {
InternalTask task =(InternalTask)super.createTaskBasedOnWorkItemParams(session,workItem);
Group adminGroup = TaskModelProvider.getFactory().newGroup();
((InternalOrganizationalEntity) adminGroup).setId(ADMIN_GROUP);
task.getPeopleAssignments().getBusinessAdministrators().add(adminGroup);
return task;
}
}
1。当我尝试部署它时,我收到一个错误:
引起:javax.ejb.EJBException:[错误:没有这样的方法或函数:runtimeManager] [近:{...“人类任务”:新的ru.rshb.kie.LeaHTWorkItemHandl ....}]
runtimeManager
,那么我看到构造函数被调用,但JBPM永远不会调用方法createTaskBasedOnWorkItemParams
。我做错了什么?或者是否有更好的方法来定义自定义业务管理员?
我使用JBPM 6.3。
答案 0 :(得分:0)
好的,我明白了。我从CustomWorkItemHandlers.conf中删除了我的工作项处理程序,并在开始该过程之前添加了以下行:
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new LeaHTWorkItemHandler(runtimeManager));