我将 jbpm-console (6.0.0.Final) 与自定义工作项处理程序一起使用。我已经在我的 jbpm-console WAR 中嵌入了一个自定义工作项处理程序 JAR,如这里的帖子 #7 中所述:
https://community.jboss.org/thread/221748
到目前为止一切都很好,因为我可以在 jbpm-console 中成功启动流程定义,并且它会启动我的自定义 WorkItemHandler 代码。
但是,在我的 WorkItemHandler 中,我想在 ProcessInstance 上设置一些变量。当我尝试这样的事情时:
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");
}
它“找不到默认的 KieSession”:
11:21:03,177 ERROR Exception: java.lang.RuntimeException: Cannot find a default KieSession
at org.drools.compiler.kie.builder.impl.KieContainerImpl.findKieSessionModel(KieContainerImpl.java:302) [drools-compiler-6.0.0.Final.jar:6.0.0.Final]
at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:295) [drools-compiler-6.0.0.Final.jar:6.0.0.Final]
at org.drools.compiler.kie.builder.impl.KieContainerImpl.newKieSession(KieContainerImpl.java:278) [drools-compiler-6.0.0.Final.jar:6.0.0.Final]
我在这里想念什么?我必须设置一些额外的东西吗?我只是使用开箱即用(自定义工作项处理程序嵌入式 jar 除外)“演示”从这里安装:
http://sourceforge.net/projects/jbpm/files/jBPM%206/jbpm-6.0.0.Final
谢谢!