Java 从jbpm6 WorkItemHandler访问会话
我正在使用带有自定义工作项处理程序的jbpm控制台(6.0.0.Final)。我在jbpm控制台WAR中嵌入了一个自定义工作项处理程序JAR,如第7篇文章所述: 到目前为止,这一切都很好,因为我可以在jbpm控制台中成功地启动一个进程定义,并启动我的自定义WorkItemHandler代码 但是,在我的WorkItemHandler中,我想在ProcessInstance上设置一些变量。当我尝试这样的事情时:Java 从jbpm6 WorkItemHandler访问会话,java,drools,jbpm,business-process-management,kie,Java,Drools,Jbpm,Business Process Management,Kie,我正在使用带有自定义工作项处理程序的jbpm控制台(6.0.0.Final)。我在jbpm控制台WAR中嵌入了一个自定义工作项处理程序JAR,如第7篇文章所述: 到目前为止,这一切都很好,因为我可以在jbpm控制台中成功地启动一个进程定义,并启动我的自定义WorkItemHandler代码 但是,在我的WorkItemHandler中,我想在ProcessInstance上设置一些变量。当我尝试这样的事情时: public void executeWorkItem(WorkItem workI
public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
// BLOWS UP HERE
//
KieSession session = kContainer.newKieSession();
WorkflowProcessInstance processInstance =
session.getProcessInstance(workItem.getProcessInstanceId());
// SET VARIABLE
processInstance.setVariable("foo", "bar");
}
它“找不到默认会话”:
我错过了什么?我需要设置一些额外的设置吗?我只是在这里使用开箱即用(自定义工作项处理程序嵌入jar除外)“demo”安装:
谢谢 资源文件夹中是否有kmodule.xml?如果不是,也许这就是问题所在。您可以有一个非常简单的xml文件,如:
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://jboss.org/kie/6.0.0/kmodule">
</kmodule>
将会话作为构造函数参数传递到workItemHandler中。 然后,workItemHandler可以使用您的会话 当需要时,您可以在适当的会话中注册workItemHandler,而不必只注册一次 或者在开始时传递rulesManager并根据需要生成一个会话
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://jboss.org/kie/6.0.0/kmodule">
</kmodule>