1 2 Previous Next 17 Replies Latest reply on Dec 5, 2015 3:30 PM by Neeraj P

    jBPM Console Server can't find WorkItem Handler Implementation

    José Tomás Tocino Newbie

      Hi there.

       

      I'm having a problem trying to run a process that has a Work Item. The server can't find the implementation for the Work Item Handler. These are the steps I follow.

       

      First I create the work item in drools-guvnor, it is called 'Activo1', and it's defined as follows:

       

      import org.drools.process.core.datatype.impl.type.ObjectDataType;

      import org.drools.process.core.datatype.impl.type.StringDataType;

       

      [

          [

          "name" : "Activo1",

          "parameters" : [

                    "MyFirstParam" : new StringDataType(),

          ],

          "results" : [

              "Result" : new StringDataType()

          ],

          "displayName" : "My Task",

          "icon" : "",

        ]

      ]

       

       

      Then, I create a simple process with a start event, the work item, and the end event. I build a snapshot of the package and the process appears in the list of available processes in the jbpm-console.

       

      Next, I edit the conf/META-INF/CustomWorkItemHandlers.conf so it looks like this:

      [

        "Log": new org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler(),

        "Activo1": new defaultPackage.Activo1()

      ]

       

      I use ant stop.demo, and then ant start.demo, then I check in the console server war that the CustomWorkItemHandlers file is properly updated. So far it's ok.

       

      For the implementation, I created a folder called 'defaultPackage' and, inside, I create an Activo1.java file with the following contents:

       

      package defaultPackage;

       

      import org.drools.runtime.process.*;

       

      public class Activo1 implements WorkItemHandler{

       

          public void executeWorkItem(WorkItem workItem, WorkItemManager manager) {

              System.out.println("GOOD BYE WORLD");

              manager.completeWorkItem(workItem.getId(), null);

          }

       

          public void abortWorkItem (WorkItem workItem, WorkItemManager manager) {

              // Nothing

          }

      }

       

      In order to compile it, I use

      javac -cp "runtime/lib/*" defaultPackage/Activo1.java

       

      And in order to create the JAR file I use this:

      jar cfe Activo1.jar defaultPackage.Activo1 defaultPackage

       

      The previous two commands may be the part that's wrong, because I'm an absolute java noob.

       

      I copy the JAR file in all the 'lib' folders I come across, namely $installer/lib, $installer/runtime/lib and $installer/jboss[...]/standalone/lib.

       

      When I launch the process in the jbpm console, I get the following error in the SERVER.LOG file:

      Could not commit session: org.jbpm.workflow.instance.WorkflowRuntimeException: [defaultPackage.Proceso1:4 - My Task:2] -- Could not find work item handler for Activo1

       

      HOWEVER, If I change the CustomWorkItemHandlers.conf file so it looks like this:

      [

        "Log": new org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler(),

        "Activo1": new org.jbpm.process.instance.impl.demo.SystemOutWorkItemHandler()

      ]

       

      and then I launch the process, the default SystemOut work item handler works OK and I get the following in the LOG file:

      [stdout] (http-localhost-127.0.0.1-8080-1) Executing work item WorkItem 5 [name=Activo1, state=0, processInstanceId=5, parameters{TaskName=Activo1}]

       

      So the work item definition and the model definition seem to be OK. The problem seems to be in the place or the way the JAR was generated.

       

      Please help!

        1 2 Previous Next