Я использую jbpm-console (6.0.0.Final) с пользовательскими обработчиками рабочих элементов. Я встроил пользовательский JAR-файл обработчиков рабочих элементов в свою jbpm-console WAR, как описано в сообщении № 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
Спасибо!