Custom Work Item Handler Error in jBPM maven project

693 views
Skip to first unread message

Vnay kndl

unread,
Jul 22, 2017, 3:46:25 AM7/22/17
to jBPM Usage
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!



Maciej Swiderski

unread,
Jul 22, 2017, 6:54:32 AM7/22/17
to Vnay kndl, jBPM Usage
This complains about missing work item handler for human task. Seems you have user task in your process so make sure you have handler for it registered as well

Maciej 
--
You received this message because you are subscribed to the Google Groups "jBPM Usage" group.
To unsubscribe from this group and stop receiving emails from it, send an email to jbpm-usage+...@googlegroups.com.
To post to this group, send email to jbpm-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/jbpm-usage/0953edd5-bbda-417f-90a9-60d479b8f988%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Vnay kndl

unread,
Jul 22, 2017, 7:05:35 AM7/22/17
to jBPM Usage, aug....@gmail.com
Hi Maciej,

After I have registered handler.. I'm getting below error while i'm trying to retrieve getTasksAssignedAsPotentialOwner method..


Exception in thread "main" java.lang.NullPointerException
at org.jbpm.runtime.manager.impl.task.SynchronizedTaskService.getTasksAssignedAsPotentialOwner(SynchronizedTaskService.java:328)



Thanks!

Vnay kndl

unread,
Jul 22, 2017, 8:12:38 AM7/22/17
to jBPM Usage, aug....@gmail.com
Hi Maciej,

I'm getting taskservice as null from runtime engine....

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieBase kbase = kContainer.getKieBase("kbase");
SimpleRegisterableItemsFactory factory = new SimpleRegisterableItemsFactory();
    factory.addWorkItemHandler("Human Task", CustomWorkItemHandler1.class);
RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get()
.newEmptyBuilder().persistence(false).knowledgeBase(kbase).registerableItemsFactory(factory);
RuntimeManager manager = RuntimeManagerFactory.Factory.get()
.newPerRequestRuntimeManager(builder.get(), "com.sample:example:1.0");
RuntimeEngine engine = manager.getRuntimeEngine(null);
KieSession ksession = engine.getKieSession();
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new CustomWorkItemHandler1());
TaskService taskService = engine.getTaskService();

//  getting taskService null and because of that while invoking getTasksAssignedAsPotentialOwner ..getting the error that mentioned earlier..

Could you please look at this 

Thanks!

Maciej Swiderski

unread,
Jul 23, 2017, 11:30:10 AM7/23/17
to Vnay kndl, jBPM Usage
You can't run task service without persistence

Since you use custom handler for human task work item then task service from runtime engine is useless. 

Maciej 
Reply all
Reply to author
Forward
0 new messages