Hi, I have created jbpm maven project where I dont want to use the default persistence feature and created a custom work item handler and configured it..
But I'm getting below error.
Exception in thread "main" org.jbpm.workflow.instance.WorkflowRuntimeException: [com.sample.bpmn:1 - Task 1:3] -- Could not find work item handler for Human Task
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:161)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerNodeInstance(NodeInstanceImpl.java:337)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.triggerCompleted(NodeInstanceImpl.java:296)
at org.jbpm.workflow.instance.node.StartNodeInstance.triggerCompleted(StartNodeInstance.java:66)
at org.jbpm.workflow.instance.node.StartNodeInstance.internalTrigger(StartNodeInstance.java:43)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:155)
at org.jbpm.ruleflow.instance.RuleFlowProcessInstance.internalStart(RuleFlowProcessInstance.java:35)
at org.jbpm.process.instance.impl.ProcessInstanceImpl.start(ProcessInstanceImpl.java:222)
at org.jbpm.workflow.instance.impl.WorkflowProcessInstanceImpl.start(WorkflowProcessInstanceImpl.java:358)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcessInstance(ProcessRuntimeImpl.java:189)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:171)
at org.jbpm.process.instance.ProcessRuntimeImpl.startProcess(ProcessRuntimeImpl.java:163)
at org.drools.core.common.AbstractWorkingMemory.startProcess(AbstractWorkingMemory.java:1576)
at org.drools.core.impl.StatefulKnowledgeSessionImpl.startProcess(StatefulKnowledgeSessionImpl.java:361)
at com.sample.ProcessMain.main(ProcessMain.java:41)
Caused by: org.drools.core.WorkItemHandlerNotFoundException: Could not find work item handler for Human Task
at org.drools.core.process.instance.impl.DefaultWorkItemManager.internalExecuteWorkItem(DefaultWorkItemManager.java:71)
at org.jbpm.workflow.instance.node.WorkItemNodeInstance.internalTrigger(WorkItemNodeInstance.java:124)
at org.jbpm.workflow.instance.impl.NodeInstanceImpl.trigger(NodeInstanceImpl.java:155)
My code:
KieBase kbase = kContainer.getKieBase("kbase");
SimpleRegisterableItemsFactory factory = new SimpleRegisterableItemsFactory();
factory.addWorkItemHandler("CustomWorkItemHandler1", CustomWorkItemHandler1.class);
RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get().newEmptyBuilder()
.persistence(false).knowledgeBase(kbase)
.registerableItemsFactory(factory);
RuntimeManager mgr = RuntimeManagerFactory.Factory.get()
.newPerRequestRuntimeManager(builder.get(),
"com.sample:example:1.0");
RuntimeEngine eng = mgr.getRuntimeEngine(EmptyContext.get());
KieSession ksess = eng.getKieSession();
// custom workitem class
public class CustomWorkItemHandler1 implements WorkItemHandler {
public void abortWorkItem(WorkItem wi, WorkItemManager wim) {
System.out.println("Custom Work Item Handler Abort Work Item Method.....! ");
}
public void executeWorkItem(WorkItem wi, WorkItemManager wim) {
System.out.println("Custom Work Item Handler Execute Work Item Method.....! ");
wim.completeWorkItem(wi.getId(), null);
}
}
//
kmodule.xml :
<kbase name="kbase" packages="com.sample">
<ksession name="ksession" default="true" clockType="realtime">
<workItemHandlers>
<workItemHandler type="com.sample.CustomWorkItemHandler1" name="CustomWorkItemHandler1" />
</workItemHandlers>
</ksession>
</kbase>
</kmodule>
//
And I have the task name as "CustomWorkItemHandler1" for the user task in the flow.
Could someone please help
Thanks!