JBPM 6.3:如何为任务设置自定义业务管理员

时间:2016-09-06 14:19:38

标签: jbpm

我的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 ....}]

  1. 如果我从构造函数中删除runtimeManager,那么我看到构造函数被调用,但JBPM永远不会调用方法createTaskBasedOnWorkItemParams
  2. 我做错了什么?或者是否有更好的方法来定义自定义业务管理员?

    我使用JBPM 6.3。

1 个答案:

答案 0 :(得分:0)

好的,我明白了。我从CustomWorkItemHandlers.conf中删除了我的工作项处理程序,并在开始该过程之前添加了以下行:

ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new LeaHTWorkItemHandler(runtimeManager));