1 Reply Latest reply on Nov 10, 2005 11:50 AM by Edward Mack

    AssignmentHandler deployment, NullPointerException

    Edward Mack Newbie

      I've go jBPM (3.0.1 from the starters kit) up and running on jBoss AS 4.0.2
      (the server is on localhost) with a MS SQL 2000 database. This is running
      in our test environmnet on Windows XP.
      I using GPD (3.0.2) on Eclipse 3.1.0 (from JBossIDE-1.5RC1).

      My problem is can get an assignment handler to work.
      I'm getting a NullPointerException when the toke reaches the task that needs assignment.
      I suspect that this error is because the Assignment Handler class can't be found.
      I don't know where to put it.
      I've been deploying the process with GPD from the context menu "Deploy Process Archive",
      then context menu Deployment -> Deploy To.... Am I doing this correctly?
      Are both Deploy Process Archive and Deployment -> Deploy To... necessary?
      What is the difference between the two?

      I've also copied the class to the deploy/testProcess.par/classes/... folder
      on the test server, didn't help.
      I made a jar containing the assignment handler class and copied that to deploy/testProcess.par/ didn't work.
      Then I put the jar in deploy/testProcess.par/lib didn't work.
      Then I tried JBOSS_ROOT/server/default/lib didn't work,
      then I tried JBOSS_ROOT/server/default/deploy and that didn't work.

      I saw a post suggesting that a property in jbpm.properties needed to be set to
      tell it what assignment handler class to use. Is this necessary, if so what is the name of the property?
      I wouldn't think that you would set the assignment handler in the properties file because:

      A) you might need to use different assignment handlers for different tasks or process definitions.
      B) The class name is set in the assignment tag of the process definition, so it doesn't seem necessary to set it in the properties file.

      Please let me know what I'm missing.
      Below is the code, config and stack trace for this issue:

      Process definition:

      <?xml version="1.0" encoding="UTF-8"?>
      
      <process-definition
       xmlns="http://jbpm.org/3/jpdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://jbpm.org/3/jpdl http://jbpm.org/xsd/jpdl-3.0.xsd"
       name="testProcess">
       <start-state name="start">
       <transition name="tr1" to="task1"></transition>
       </start-state>
       <task-node name="task1">
       <task name="task1">
       <assignment class="com.benderson.jbpm.poprocess.task.POProcessApprovePOTask"></assignment>
       </task>
       <transition name="tr1" to="end1">
      
       </transition>
       </task-node>
       <end-state name="end1"></end-state>
      </process-definition>
      


      Assignment Handler:

      package com.benderson.jbpm.poprocess.task;
      
      import org.jbpm.graph.exe.ExecutionContext;
      import org.jbpm.taskmgmt.def.AssignmentHandler;
      import org.jbpm.taskmgmt.exe.Assignable;
      
      public class POProcessApprovePOTask implements AssignmentHandler {
       private static final long serialVersionUID = 2L;
      
       public POProcessApprovePOTask() {}
      
       public void assign(Assignable assignable, ExecutionContext executionContext)
       throws Exception {
       System.out.println("WWWWWWWWWWWW in Process TASK");
       assignable.setActorId("ejm");
      
       }
      
      }
      


      jbpm.properties file:

      jbpm.scheduler.service.factory=org.jbpm.scheduler.impl.SchedulerServiceImpl
      jbpm.task.instance.class=org.jbpm.taskmgmt.exe.TaskInstance
      
      # uncomment the next line if JbpmSessionFactory.getInstance()
      # should lookup the singleton instance from JNDI instead of creating
      # a default one.
      #
      jbpm.session.factory.jndi.name=java:/jbpm/JbpmSessionFactory
      
      # uncomment the next line to use the file system instead of the database for
      # storing files related to a process definition
      #
      # jbpm.files.dir=c:/jbpm.data
      
      # resource path to a properties file that will overwrite all the hibernate
      # properties. For database specific builds in db project there is a different
      # hibernate.properties file on the classpath for each database. You could change
      # the default database for any testing runs by uncommenting the next line and
      # adding a hibernate.properties file in the basedir.
      #
      jbpm.hibernate.cfg.xml=jbpm.hibernate.cfg.xml
      jbpm.hibernate.properties=jbpm.hibernate.properties
      
      


      jbpm.hibernate.properties

      hibernate.dialect=org.hibernate.dialect.SQLServerDialect
      hibernate.connection.driver_class=net.sourceforge.jtds.jdbc.Driver
      hibernate.connection.url=jdbc:jtds:sqlserver://b00jh:1433/jbpmtest
      hibernate.connection.username=JRun
      hibernate.connection.password=yellowsnow
      
      hibernate.show_sql=false
      hibernate.c3p0.min_size=1
      hibernate.c3p0.max_size=3
      hibernate.query.substitutions=true 1, false 0
      


      Test code:

      package com.benderson.test;
      
      import org.jbpm.db.JbpmSession;
      import org.jbpm.db.JbpmSessionFactory;
      import org.jbpm.graph.def.ProcessDefinition;
      import org.jbpm.graph.exe.ProcessInstance;
      import org.jbpm.graph.exe.Token;
      
      import junit.framework.TestCase;
      
      public class testProcessTest extends TestCase {
       static JbpmSessionFactory jbpmSessionFactory =
       JbpmSessionFactory.buildJbpmSessionFactory();
      
       public void testTestProcess() {
       // start po process
       startTestProcess();
       }
      
       private void startTestProcess() {
       // Let's open a new persistence session
       JbpmSession jbpmSession = jbpmSessionFactory.openJbpmSession();
       // ... and begin a transaction on the persistence session.
       jbpmSession.beginTransaction();
      
       // Now we can query the database for the process definition that we
       // deployed above.
       ProcessDefinition processDefinition =
       jbpmSession
       .getGraphSession()
       .findLatestProcessDefinition("testProcess");
      
       // With the processDefinition that we retrieved from the database, we
       // can create an execution of the process definition just like in the
       // hello world example (which was without persistence).
       ProcessInstance processInstance =
       new ProcessInstance(processDefinition);
      
      
       // confirm we are at the start
       Token token = processInstance.getRootToken();
       assertEquals("start", token.getNode().getName());
      
      
       // assign PO Number and Department
       processInstance.getContextInstance().setVariable("PONumber", "123");
       processInstance.getContextInstance().setVariable("Department", "IT");
      
       token.signal();
      
       // Now the processInstance is saved in the database. So the
       // current state of the execution of the process is stored in the
       // database.
       jbpmSession
       .getGraphSession()
       .saveProcessInstance(processInstance);
       // The method below will get the process instance back out
       // of the database and resume execution by providing another
       // external signal.
      
       // At the end of the webapp action, the transaction is committed.
       jbpmSession.commitTransaction();
       // And close the jbpmSession.
       jbpmSession.close();
      
       }
      }
      


      And finally the output from the test code:

      09:39:42,406 DEBUG JbpmConfiguration : jbpm.hibernate.properties=hibernate.properties
      09:39:42,453 INFO Environment : Hibernate 3.0.5
      09:39:42,453 INFO Environment : loaded properties from resource hibernate.properties: {hibernate.connection.driver_class=net.sourceforge.jtds.jdbc.Driver, hibernate.cglib.use_reflection_optimizer=true, hibernate.c3p0.max_size=3, hibernate.dialect=org.hibernate.dialect.SQLServerDialect, hibernate.c3p0.min_size=1, hibernate.query.substitutions=true 1, false 0, hibernate.connection.username=JRun, hibernate.connection.url=jdbc:jtds:sqlserver://b00jh:1433/jbpmtest , hibernate.show_sql=false, hibernate.connection.password=****}
      09:39:42,453 INFO Environment : using CGLIB reflection optimizer
      09:39:42,453 INFO Environment : using JDK 1.4 java.sql.Timestamp handling
      09:39:42,531 DEBUG JbpmSessionFactory : using the default hibernate configuration file: hibernate.cfg.xml
      09:39:42,531 INFO Configuration : configuring from resource: /hibernate.cfg.xml
      09:39:42,531 INFO Configuration : Configuration resource: /hibernate.cfg.xml
      09:39:42,859 INFO Configuration : Mapping resource: org/jbpm/identity/User.hbm.xml
      09:39:42,999 INFO HbmBinder : Mapping class: org.jbpm.identity.User -> JBPM_ID_USER
      09:39:43,031 INFO HbmBinder : Mapping collection: org.jbpm.identity.User.permissions -> JBPM_ID_PERMISSIONS
      09:39:43,031 INFO Configuration : Mapping resource: org/jbpm/identity/Group.hbm.xml
      09:39:43,062 INFO HbmBinder : Mapping class: org.jbpm.identity.Group -> JBPM_ID_GROUP
      09:39:43,078 INFO HbmBinder : Mapping collection: org.jbpm.identity.Group.permissions -> JBPM_ID_PERMISSIONS
      09:39:43,078 INFO Configuration : Mapping resource: org/jbpm/identity/Membership.hbm.xml
      09:39:43,109 INFO HbmBinder : Mapping class: org.jbpm.identity.Membership -> JBPM_ID_MEMBERSHIP
      09:39:43,187 INFO HbmBinder : Mapping collection: org.jbpm.identity.Membership.permissions -> JBPM_ID_PERMISSIONS
      09:39:43,187 INFO Configuration : Mapping resource: org/jbpm/graph/def/ProcessDefinition.hbm.xml
      09:39:43,218 INFO HbmBinder : Mapping class: org.jbpm.graph.def.ProcessDefinition -> JBPM_PROCESSDEFINITION
      09:39:43,249 INFO Configuration : Mapping resource: org/jbpm/graph/def/Node.hbm.xml
      09:39:43,312 INFO HbmBinder : Mapping class: org.jbpm.graph.def.Node -> JBPM_NODE
      09:39:43,328 INFO Configuration : Mapping resource: org/jbpm/graph/def/Transition.hbm.xml
      09:39:43,343 INFO HbmBinder : Mapping class: org.jbpm.graph.def.Transition -> JBPM_TRANSITION
      09:39:43,343 INFO Configuration : Mapping resource: org/jbpm/graph/def/Event.hbm.xml
      09:39:43,359 INFO HbmBinder : Mapping class: org.jbpm.graph.def.Event -> JBPM_EVENT
      09:39:43,359 INFO Configuration : Mapping resource: org/jbpm/graph/def/Action.hbm.xml
      09:39:43,374 INFO HbmBinder : Mapping class: org.jbpm.graph.def.Action -> JBPM_ACTION
      09:39:43,374 INFO Configuration : Mapping resource: org/jbpm/graph/def/SuperState.hbm.xml
      09:39:43,468 INFO HbmBinder : Mapping subclass: org.jbpm.graph.def.SuperState -> JBPM_NODE
      09:39:43,468 INFO Configuration : Mapping resource: org/jbpm/graph/def/ExceptionHandler.hbm.xml
      09:39:43,484 INFO HbmBinder : Mapping class: org.jbpm.graph.def.ExceptionHandler -> JBPM_EXCEPTIONHANDLER
      09:39:43,484 INFO Configuration : Mapping resource: org/jbpm/instantiation/Delegation.hbm.xml
      09:39:43,515 INFO HbmBinder : Mapping class: org.jbpm.instantiation.Delegation -> JBPM_DELEGATION
      09:39:43,515 INFO Configuration : Mapping resource: org/jbpm/graph/node/StartState.hbm.xml
      09:39:43,515 INFO HbmBinder : Mapping subclass: org.jbpm.graph.node.StartState -> JBPM_NODE
      09:39:43,531 INFO Configuration : Mapping resource: org/jbpm/graph/node/EndState.hbm.xml
      09:39:43,531 INFO HbmBinder : Mapping subclass: org.jbpm.graph.node.EndState -> JBPM_NODE
      09:39:43,531 INFO Configuration : Mapping resource: org/jbpm/graph/node/ProcessState.hbm.xml
      09:39:43,546 INFO HbmBinder : Mapping subclass: org.jbpm.graph.node.ProcessState -> JBPM_NODE
      09:39:43,546 INFO Configuration : Mapping resource: org/jbpm/graph/node/Decision.hbm.xml
      09:39:43,609 INFO HbmBinder : Mapping subclass: org.jbpm.graph.node.Decision -> JBPM_NODE
      09:39:43,609 INFO HbmBinder : Mapping collection: org.jbpm.graph.node.Decision.decisionConditions -> JBPM_DECISIONCONDITIONS
      09:39:43,609 INFO Configuration : Mapping resource: org/jbpm/graph/node/Fork.hbm.xml
      09:39:43,624 INFO HbmBinder : Mapping subclass: org.jbpm.graph.node.Fork -> JBPM_NODE
      09:39:43,624 INFO Configuration : Mapping resource: org/jbpm/graph/node/Join.hbm.xml
      09:39:43,624 INFO HbmBinder : Mapping subclass: org.jbpm.graph.node.Join -> JBPM_NODE
      09:39:43,624 INFO Configuration : Mapping resource: org/jbpm/graph/node/State.hbm.xml
      09:39:43,656 INFO HbmBinder : Mapping subclass: org.jbpm.graph.node.State -> JBPM_NODE
      09:39:43,656 INFO Configuration : Mapping resource: org/jbpm/graph/node/TaskNode.hbm.xml
      09:39:43,671 INFO HbmBinder : Mapping subclass: org.jbpm.graph.node.TaskNode -> JBPM_NODE
      09:39:43,671 INFO Configuration : Mapping resource: org/jbpm/graph/action/Script.hbm.xml
      09:39:43,703 INFO HbmBinder : Mapping subclass: org.jbpm.graph.action.Script -> JBPM_ACTION
      09:39:43,703 INFO Configuration : Mapping resource: org/jbpm/context/def/ContextDefinition.hbm.xml
      09:39:43,718 INFO Configuration : Mapping resource: org/jbpm/context/def/VariableAccess.hbm.xml
      09:39:43,718 INFO HbmBinder : Mapping class: org.jbpm.context.def.VariableAccess -> JBPM_VARIABLEACCESS
      09:39:43,765 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/def/TaskMgmtDefinition.hbm.xml
      09:39:43,781 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/def/Swimlane.hbm.xml
      09:39:43,796 INFO HbmBinder : Mapping class: org.jbpm.taskmgmt.def.Swimlane -> JBPM_SWIMLANE
      09:39:43,796 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/def/Task.hbm.xml
      09:39:43,812 INFO HbmBinder : Mapping class: org.jbpm.taskmgmt.def.Task -> JBPM_TASK
      09:39:43,828 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/def/TaskController.hbm.xml
      09:39:43,828 INFO HbmBinder : Mapping class: org.jbpm.taskmgmt.def.TaskController -> JBPM_TASKCONTROLLER
      09:39:43,828 INFO Configuration : Mapping resource: org/jbpm/module/def/ModuleDefinition.hbm.xml
      09:39:43,843 INFO HbmBinder : Mapping class: org.jbpm.module.def.ModuleDefinition -> JBPM_MODULEDEFINITION
      09:39:43,843 INFO Configuration : Mapping resource: org/jbpm/bytes/ByteArray.hbm.xml
      09:39:43,859 INFO HbmBinder : Mapping class: org.jbpm.bytes.ByteArray -> JBPM_BYTEARRAY
      09:39:43,859 INFO HbmBinder : Mapping collection: org.jbpm.bytes.ByteArray.byteBlocks -> JBPM_BYTEBLOCK
      09:39:43,859 INFO Configuration : Mapping resource: org/jbpm/file/def/FileDefinition.hbm.xml
      09:39:43,906 INFO HbmBinder : Mapping subclass: org.jbpm.file.def.FileDefinition -> JBPM_MODULEDEFINITION
      09:39:43,921 INFO Configuration : Mapping resource: org/jbpm/scheduler/def/CreateTimerAction.hbm.xml
      09:39:43,921 INFO HbmBinder : Mapping subclass: org.jbpm.scheduler.def.CreateTimerAction -> JBPM_ACTION
      09:39:43,921 INFO Configuration : Mapping resource: org/jbpm/scheduler/def/CancelTimerAction.hbm.xml
      09:39:43,937 INFO HbmBinder : Mapping subclass: org.jbpm.scheduler.def.CancelTimerAction -> JBPM_ACTION
      09:39:43,937 INFO Configuration : Mapping resource: org/jbpm/graph/exe/Comment.hbm.xml
      09:39:43,953 INFO HbmBinder : Mapping class: org.jbpm.graph.exe.Comment -> JBPM_COMMENT
      09:39:43,953 INFO Configuration : Mapping resource: org/jbpm/graph/exe/ProcessInstance.hbm.xml
      09:39:43,953 INFO HbmBinder : Mapping class: org.jbpm.graph.exe.ProcessInstance -> JBPM_PROCESSINSTANCE
      09:39:43,968 INFO Configuration : Mapping resource: org/jbpm/graph/exe/Token.hbm.xml
      09:39:43,968 INFO HbmBinder : Mapping class: org.jbpm.graph.exe.Token -> JBPM_TOKEN
      09:39:43,984 INFO Configuration : Mapping resource: org/jbpm/graph/exe/RuntimeAction.hbm.xml
      09:39:43,999 INFO HbmBinder : Mapping class: org.jbpm.graph.exe.RuntimeAction -> JBPM_RUNTIMEACTION
      09:39:43,999 INFO Configuration : Mapping resource: org/jbpm/module/exe/ModuleInstance.hbm.xml
      09:39:43,999 INFO HbmBinder : Mapping class: org.jbpm.module.exe.ModuleInstance -> JBPM_MODULEINSTANCE
      09:39:43,999 INFO Configuration : Mapping resource: org/jbpm/context/exe/ContextInstance.hbm.xml
      09:39:44,062 INFO HbmBinder : Mapping subclass: org.jbpm.context.exe.ContextInstance -> JBPM_MODULEINSTANCE
      09:39:44,062 INFO Configuration : Mapping resource: org/jbpm/context/exe/TokenVariableMap.hbm.xml
      09:39:44,078 INFO HbmBinder : Mapping class: org.jbpm.context.exe.TokenVariableMap -> JBPM_TOKENVARIABLEMAP
      09:39:44,078 INFO Configuration : Mapping resource: org/jbpm/context/exe/VariableInstance.hbm.xml
      09:39:44,093 INFO HbmBinder : Mapping class: org.jbpm.context.exe.VariableInstance -> JBPM_VARIABLEINSTANCE
      09:39:44,093 INFO Configuration : Mapping resource: org/jbpm/context/exe/variableinstance/ByteArrayInstance.hbm.xml
      09:39:44,109 INFO HbmBinder : Mapping subclass: org.jbpm.context.exe.variableinstance.ByteArrayInstance -> JBPM_VARIABLEINSTANCE
      09:39:44,109 INFO Configuration : Mapping resource: org/jbpm/context/exe/variableinstance/DateInstance.hbm.xml
      09:39:44,124 INFO HbmBinder : Mapping subclass: org.jbpm.context.exe.variableinstance.DateInstance -> JBPM_VARIABLEINSTANCE
      09:39:44,124 INFO Configuration : Mapping resource: org/jbpm/context/exe/variableinstance/DoubleInstance.hbm.xml
      09:39:44,140 INFO HbmBinder : Mapping subclass: org.jbpm.context.exe.variableinstance.DoubleInstance -> JBPM_VARIABLEINSTANCE
      09:39:44,140 INFO Configuration : Mapping resource: org/jbpm/context/exe/variableinstance/HibernateLongInstance.hbm.xml
      09:39:44,140 INFO HbmBinder : Mapping subclass: org.jbpm.context.exe.variableinstance.HibernateLongInstance -> JBPM_VARIABLEINSTANCE
      09:39:44,140 INFO Configuration : Mapping resource: org/jbpm/context/exe/variableinstance/HibernateStringInstance.hbm.xml
      09:39:44,187 INFO HbmBinder : Mapping subclass: org.jbpm.context.exe.variableinstance.HibernateStringInstance -> JBPM_VARIABLEINSTANCE
      09:39:44,187 INFO Configuration : Mapping resource: org/jbpm/context/exe/variableinstance/LongInstance.hbm.xml
      09:39:44,203 INFO HbmBinder : Mapping subclass: org.jbpm.context.exe.variableinstance.LongInstance -> JBPM_VARIABLEINSTANCE
      09:39:44,203 INFO Configuration : Mapping resource: org/jbpm/context/exe/variableinstance/StringInstance.hbm.xml
      09:39:44,218 INFO HbmBinder : Mapping subclass: org.jbpm.context.exe.variableinstance.StringInstance -> JBPM_VARIABLEINSTANCE
      09:39:44,218 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/exe/TaskMgmtInstance.hbm.xml
      09:39:44,249 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.exe.TaskMgmtInstance -> JBPM_MODULEINSTANCE
      09:39:44,249 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/exe/TaskInstance.hbm.xml
      09:39:44,265 INFO HbmBinder : Mapping class: org.jbpm.taskmgmt.exe.TaskInstance -> JBPM_TASKINSTANCE
      09:39:44,281 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.exe.TaskInstance.pooledActors -> JBPM_TASKACTORPOOL
      09:39:44,281 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/exe/PooledActor.hbm.xml
      09:39:44,296 INFO HbmBinder : Mapping class: org.jbpm.taskmgmt.exe.PooledActor -> JBPM_POOLEDACTOR
      09:39:44,312 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.exe.PooledActor.taskInstances -> JBPM_TASKACTORPOOL
      09:39:44,312 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/exe/SwimlaneInstance.hbm.xml
      09:39:44,328 INFO HbmBinder : Mapping class: org.jbpm.taskmgmt.exe.SwimlaneInstance -> JBPM_SWIMLANEINSTANCE
      09:39:44,328 INFO Configuration : Mapping resource: org/jbpm/scheduler/exe/Timer.hbm.xml
      09:39:44,343 INFO HbmBinder : Mapping class: org.jbpm.scheduler.exe.Timer -> JBPM_TIMER
      09:39:44,343 INFO Configuration : Mapping resource: org/jbpm/logging/log/ProcessLog.hbm.xml
      09:39:44,374 INFO HbmBinder : Mapping class: org.jbpm.logging.log.ProcessLog -> JBPM_LOG
      09:39:44,374 INFO Configuration : Mapping resource: org/jbpm/logging/log/MessageLog.hbm.xml
      09:39:44,453 INFO HbmBinder : Mapping subclass: org.jbpm.logging.log.MessageLog -> JBPM_LOG
      09:39:44,453 INFO Configuration : Mapping resource: org/jbpm/logging/log/CompositeLog.hbm.xml
      09:39:44,468 INFO HbmBinder : Mapping subclass: org.jbpm.logging.log.CompositeLog -> JBPM_LOG
      09:39:44,468 INFO Configuration : Mapping resource: org/jbpm/graph/log/ActionLog.hbm.xml
      09:39:44,484 INFO HbmBinder : Mapping subclass: org.jbpm.graph.log.ActionLog -> JBPM_LOG
      09:39:44,484 INFO Configuration : Mapping resource: org/jbpm/graph/log/NodeLog.hbm.xml
      09:39:44,499 INFO HbmBinder : Mapping subclass: org.jbpm.graph.log.NodeLog -> JBPM_LOG
      09:39:44,515 INFO Configuration : Mapping resource: org/jbpm/graph/log/ProcessInstanceCreateLog.hbm.xml
      09:39:44,531 INFO HbmBinder : Mapping subclass: org.jbpm.graph.log.ProcessInstanceCreateLog -> JBPM_LOG
      09:39:44,531 INFO Configuration : Mapping resource: org/jbpm/graph/log/ProcessInstanceEndLog.hbm.xml
      09:39:44,531 INFO HbmBinder : Mapping subclass: org.jbpm.graph.log.ProcessInstanceEndLog -> JBPM_LOG
      09:39:44,531 INFO Configuration : Mapping resource: org/jbpm/graph/log/SignalLog.hbm.xml
      09:39:44,546 INFO HbmBinder : Mapping subclass: org.jbpm.graph.log.SignalLog -> JBPM_LOG
      09:39:44,546 INFO Configuration : Mapping resource: org/jbpm/graph/log/TokenCreateLog.hbm.xml
      09:39:44,562 INFO HbmBinder : Mapping subclass: org.jbpm.graph.log.TokenCreateLog -> JBPM_LOG
      09:39:44,562 INFO Configuration : Mapping resource: org/jbpm/graph/log/TokenEndLog.hbm.xml
      09:39:44,578 INFO HbmBinder : Mapping subclass: org.jbpm.graph.log.TokenEndLog -> JBPM_LOG
      09:39:44,578 INFO Configuration : Mapping resource: org/jbpm/graph/log/TransitionLog.hbm.xml
      09:39:44,656 INFO HbmBinder : Mapping subclass: org.jbpm.graph.log.TransitionLog -> JBPM_LOG
      09:39:44,656 INFO Configuration : Mapping resource: org/jbpm/context/log/VariableLog.hbm.xml
      09:39:44,671 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.VariableLog -> JBPM_LOG
      09:39:44,671 INFO Configuration : Mapping resource: org/jbpm/context/log/VariableCreateLog.hbm.xml
      09:39:44,687 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.VariableCreateLog -> JBPM_LOG
      09:39:44,687 INFO Configuration : Mapping resource: org/jbpm/context/log/VariableDeleteLog.hbm.xml
      09:39:44,687 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.VariableDeleteLog -> JBPM_LOG
      09:39:44,687 INFO Configuration : Mapping resource: org/jbpm/context/log/VariableUpdateLog.hbm.xml
      09:39:44,718 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.VariableUpdateLog -> JBPM_LOG
      09:39:44,718 INFO Configuration : Mapping resource: org/jbpm/context/log/variableinstance/ByteArrayUpdateLog.hbm.xml
      09:39:44,734 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.variableinstance.ByteArrayUpdateLog -> JBPM_LOG
      09:39:44,734 INFO Configuration : Mapping resource: org/jbpm/context/log/variableinstance/DateUpdateLog.hbm.xml
      09:39:44,749 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.variableinstance.DateUpdateLog -> JBPM_LOG
      09:39:44,749 INFO Configuration : Mapping resource: org/jbpm/context/log/variableinstance/DoubleUpdateLog.hbm.xml
      09:39:44,765 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.variableinstance.DoubleUpdateLog -> JBPM_LOG
      09:39:44,765 INFO Configuration : Mapping resource: org/jbpm/context/log/variableinstance/HibernateLongUpdateLog.hbm.xml
      09:39:44,828 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.variableinstance.HibernateLongUpdateLog -> JBPM_LOG
      09:39:44,828 INFO Configuration : Mapping resource: org/jbpm/context/log/variableinstance/HibernateStringUpdateLog.hbm.xml
      09:39:44,843 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.variableinstance.HibernateStringUpdateLog -> JBPM_LOG
      09:39:44,843 INFO Configuration : Mapping resource: org/jbpm/context/log/variableinstance/LongUpdateLog.hbm.xml
      09:39:44,843 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.variableinstance.LongUpdateLog -> JBPM_LOG
      09:39:44,843 INFO Configuration : Mapping resource: org/jbpm/context/log/variableinstance/StringUpdateLog.hbm.xml
      09:39:44,859 INFO HbmBinder : Mapping subclass: org.jbpm.context.log.variableinstance.StringUpdateLog -> JBPM_LOG
      09:39:44,859 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/log/TaskLog.hbm.xml
      09:39:44,859 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.log.TaskLog -> JBPM_LOG
      09:39:44,859 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/log/TaskCreateLog.hbm.xml
      09:39:44,874 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.log.TaskCreateLog -> JBPM_LOG
      09:39:44,874 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/log/TaskAssignLog.hbm.xml
      09:39:44,890 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.log.TaskAssignLog -> JBPM_LOG
      09:39:44,890 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/log/TaskEndLog.hbm.xml
      09:39:44,890 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.log.TaskEndLog -> JBPM_LOG
      09:39:44,937 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/log/SwimlaneLog.hbm.xml
      09:39:44,937 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.log.SwimlaneLog -> JBPM_LOG
      09:39:44,937 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/log/SwimlaneCreateLog.hbm.xml
      09:39:44,953 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.log.SwimlaneCreateLog -> JBPM_LOG
      09:39:44,953 INFO Configuration : Mapping resource: org/jbpm/taskmgmt/log/SwimlaneAssignLog.hbm.xml
      09:39:44,953 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.log.SwimlaneAssignLog -> JBPM_LOG
      09:39:44,953 INFO Configuration : Configured SessionFactory: null
      09:39:44,953 DEBUG JbpmSessionFactory : overriding hibernate properties with {hibernate.connection.driver_class=net.sourceforge.jtds.jdbc.Driver, hibernate.c3p0.max_size=3, hibernate.dialect=org.hibernate.dialect.SQLServerDialect, hibernate.c3p0.min_size=1, hibernate.query.substitutions=true 1, false 0, hibernate.connection.username=JRun, hibernate.connection.url=jdbc:jtds:sqlserver://b00jh:1433/jbpmtest , hibernate.show_sql=false, hibernate.connection.password=yellowsnow}
      09:39:44,953 DEBUG JbpmSessionFactory : building hibernate session factory
      09:39:44,968 INFO Configuration : processing extends queue
      09:39:44,968 INFO HbmBinder : Mapping subclass: org.jbpm.context.def.ContextDefinition -> JBPM_MODULEDEFINITION
      09:39:44,968 INFO HbmBinder : Mapping subclass: org.jbpm.taskmgmt.def.TaskMgmtDefinition -> JBPM_MODULEDEFINITION
      09:39:44,968 INFO Configuration : processing collection mappings
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.identity.User.memberships -> JBPM_ID_MEMBERSHIP
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.identity.Group.memberships -> JBPM_ID_MEMBERSHIP
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.ProcessDefinition.events -> JBPM_EVENT
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.ProcessDefinition.exceptionHandlers -> JBPM_EXCEPTIONHANDLER
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.ProcessDefinition.nodes -> JBPM_NODE
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.ProcessDefinition.actions -> JBPM_ACTION
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.ProcessDefinition.definitions -> JBPM_MODULEDEFINITION
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.Node.events -> JBPM_EVENT
      09:39:44,968 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.Node.exceptionHandlers -> JBPM_EXCEPTIONHANDLER
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.Node.leavingTransitions -> JBPM_TRANSITION
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.Node.arrivingTransitions -> JBPM_TRANSITION
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.Transition.events -> JBPM_EVENT
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.Transition.exceptionHandlers -> JBPM_EXCEPTIONHANDLER
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.Event.actions -> JBPM_ACTION
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.SuperState.nodes -> JBPM_NODE
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.def.ExceptionHandler.actions -> JBPM_ACTION
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.node.ProcessState.variableAccesses -> JBPM_VARIABLEACCESS
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.node.TaskNode.tasks -> JBPM_TASK
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.action.Script.variableAccesses -> JBPM_VARIABLEACCESS
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.def.Swimlane.tasks -> JBPM_TASK
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.def.Task.events -> JBPM_EVENT
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.def.Task.exceptionHandlers -> JBPM_EXCEPTIONHANDLER
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.def.TaskController.variableAccesses -> JBPM_VARIABLEACCESS
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.file.def.FileDefinition.processFiles -> JBPM_BYTEARRAY
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.exe.ProcessInstance.runtimeActions -> JBPM_RUNTIMEACTION
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.exe.ProcessInstance.instances -> JBPM_MODULEINSTANCE
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.exe.Token.children -> JBPM_TOKEN
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.graph.exe.Token.comments -> JBPM_COMMENT
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.context.exe.ContextInstance.tokenVariableMaps -> JBPM_TOKENVARIABLEMAP
      09:39:44,984 INFO HbmBinder : Mapping collection: org.jbpm.context.exe.TokenVariableMap.variableInstances -> JBPM_VARIABLEINSTANCE
      09:39:44,999 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.exe.TaskMgmtInstance.swimlaneInstances -> JBPM_SWIMLANEINSTANCE
      09:39:44,999 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.exe.TaskMgmtInstance.taskInstances -> JBPM_TASKINSTANCE
      09:39:44,999 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.exe.TaskInstance.comments -> JBPM_COMMENT
      09:39:44,999 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.exe.SwimlaneInstance.pooledActors -> JBPM_POOLEDACTOR
      09:39:44,999 INFO HbmBinder : Mapping collection: org.jbpm.logging.log.CompositeLog.children -> JBPM_LOG
      09:39:44,999 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.def.TaskMgmtDefinition.swimlanes -> JBPM_SWIMLANE
      09:39:44,999 INFO HbmBinder : Mapping collection: org.jbpm.taskmgmt.def.TaskMgmtDefinition.tasks -> JBPM_TASK
      09:39:44,999 INFO Configuration : processing association property references
      09:39:44,999 INFO Configuration : processing foreign key constraints
      09:39:45,062 INFO C3P0ConnectionProvider : C3P0 using driver: net.sourceforge.jtds.jdbc.Driver at URL: jdbc:jtds:sqlserver://b00jh:1433/jbpmtest
      09:39:45,062 INFO C3P0ConnectionProvider : Connection properties: {user=JRun, password=****}
      09:39:45,078 INFO C3P0ConnectionProvider : autocommit mode: false
      Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@19113f8 [ connectionPoolDataSource ->
       com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@2db19d [ acquireIncrement -> 1
      , acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose ->
      false, automaticTestTable -> null, breakAfterAcquireFailure ->
      false, checkoutTimeout -> 0, connectionTesterClassName ->
       com.mchange.v2.c3p0.impl.DefaultConnectionTester, factoryClassLocation -> null,
      forceIgnoreUnresolvedTransactions -> false, idleConnectionTestPeriod -> 0, initialPoolSize -> 1,
      maxIdleTime -> 0, maxPoolSize -> 3, maxStatements -> 0, maxStatementsPerConnection -> 0,
      minPoolSize -> 1,
      nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@1e13e07 [ description -> null, driverClass -> null,
      factoryClassLocation -> null, jdbcUrl -> jdbc:jtds:sqlserver://b00jh:1433/jbpmtest ,
      properties -> {user=******, password=******} ] , preferredTestQuery -> null,
      propertyCycle -> 300, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false,
      usesTraditionalReflectiveProxies -> false ] ,
      factoryClassLocation -> null, numHelperThreads -> 3, poolOwnerIdentityToken -> 19113f8 ]
      09:39:45,499 INFO SettingsFactory : RDBMS: Microsoft SQL Server, version: 08.00.0534
      09:39:45,499 INFO SettingsFactory : JDBC driver: jTDS Type 4 JDBC Driver for MS SQL Server and Sybase, version: 1.1
      09:39:45,515 INFO Dialect : Using dialect: org.hibernate.dialect.SQLServerDialect
      09:39:45,515 INFO TransactionFactoryFactory : Using default transaction strategy (direct JDBC transactions)
      09:39:45,531 INFO TransactionManagerLookupFactory : No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
      09:39:45,531 INFO SettingsFactory : Automatic flush during beforeCompletion(): disabled
      09:39:45,531 INFO SettingsFactory : Automatic session close at end of transaction: disabled
      09:39:45,531 INFO SettingsFactory : Scrollable result sets: enabled
      09:39:45,531 INFO SettingsFactory : JDBC3 getGeneratedKeys(): enabled
      09:39:45,531 INFO SettingsFactory : Connection release mode: null
      09:39:45,531 INFO SettingsFactory : Default batch fetch size: 1
      09:39:45,531 INFO SettingsFactory : Generate SQL with comments: disabled
      09:39:45,531 INFO SettingsFactory : Order SQL updates by primary key: disabled
      09:39:45,531 INFO SettingsFactory : Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
      09:39:45,531 INFO ASTQueryTranslatorFactory : Using ASTQueryTranslatorFactory
      09:39:45,546 INFO SettingsFactory : Query language substitutions: {true=1, false=0}
      09:39:45,546 INFO SettingsFactory : Second-level cache: enabled
      09:39:45,546 INFO SettingsFactory : Query cache: disabled
      09:39:45,546 INFO SettingsFactory : Cache provider: org.hibernate.cache.EhCacheProvider
      09:39:45,546 INFO SettingsFactory : Optimize cache for minimal puts: disabled
      09:39:45,546 INFO SettingsFactory : Structured second-level cache entries: disabled
      09:39:45,546 INFO SettingsFactory : Statistics: disabled
      09:39:45,546 INFO SettingsFactory : Deleted entity synthetic identifier rollback: disabled
      09:39:45,546 INFO SettingsFactory : Default entity-mode: pojo
      09:39:45,656 INFO SessionFactoryImpl : building session factory
      09:39:45,952 WARN EhCacheProvider : Could not find configuration [org.jbpm.graph.def.Node]; using defaults.
      09:39:46,046 WARN EhCacheProvider : Could not find configuration [org.jbpm.instantiation.Delegation]; using defaults.
      09:39:46,156 WARN EhCacheProvider : Could not find configuration [org.jbpm.taskmgmt.def.Task]; using defaults.
      09:39:46,343 WARN EhCacheProvider : Could not find configuration [org.jbpm.graph.def.ProcessDefinition]; using defaults.
      09:39:46,452 WARN EhCacheProvider : Could not find configuration [org.jbpm.graph.def.ExceptionHandler]; using defaults.
      09:39:46,452 WARN EhCacheProvider : Could not find configuration [org.jbpm.module.def.ModuleDefinition]; using defaults.
      09:39:46,796 WARN EhCacheProvider : Could not find configuration [org.jbpm.graph.def.Action]; using defaults.
      09:39:46,827 WARN EhCacheProvider : Could not find configuration [org.jbpm.graph.def.Event]; using defaults.
      09:39:46,890 WARN EhCacheProvider : Could not find configuration [org.jbpm.context.def.VariableAccess]; using defaults.
      09:39:46,937 WARN EhCacheProvider : Could not find configuration [org.jbpm.graph.def.Transition]; using defaults.
      09:39:47,171 WARN EhCacheProvider : Could not find configuration [org.jbpm.taskmgmt.def.TaskController]; using defaults.
      09:39:47,999 INFO SessionFactoryObjectFactory : Not binding factory to JNDI, no JNDI name configured
      09:39:47,999 INFO SessionFactoryImpl : Checking 0 named queries
      09:39:48,374 DEBUG GraphElement : event 'process-start' on 'ProcessDefinition(testProcess)' for 'Token(/)'
      09:39:48,406 DEBUG GraphElement : event 'before-signal' on 'StartState(start)' for 'Token(/)'
      09:39:48,406 DEBUG GraphElement : event 'node-leave' on 'StartState(start)' for 'Token(/)'
      09:39:48,406 DEBUG GraphElement : event 'transition' on 'Transition(tr1)' for 'Token(/)'
      09:39:48,406 DEBUG GraphElement : event 'node-enter' on 'TaskNode(task1)' for 'Token(/)'
      java.lang.NullPointerException
       at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
       at java.lang.ClassLoader.loadClass(Unknown Source)
       at org.jbpm.instantiation.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:16)
       at org.jbpm.taskmgmt.exe.TaskMgmtInstance.getTaskInstanceClass(TaskMgmtInstance.java:41)
       at org.jbpm.taskmgmt.exe.TaskMgmtInstance.instantiateNewTaskInstance(TaskMgmtInstance.java:174)
       at org.jbpm.taskmgmt.exe.TaskMgmtInstance.createTaskInstance(TaskMgmtInstance.java:74)
       at org.jbpm.graph.node.TaskNode.execute(TaskNode.java:136)
       at org.jbpm.graph.def.Node.enter(Node.java:284)
       at org.jbpm.graph.def.Transition.take(Transition.java:92)
       at org.jbpm.graph.def.Node.leave(Node.java:349)
       at org.jbpm.graph.node.StartState.leave(StartState.java:73)
       at org.jbpm.graph.exe.Token.signal(Token.java:127)
       at org.jbpm.graph.exe.Token.signal(Token.java:92)
       at com.benderson.test.testProcessTest.startTestProcess(testProcessTest.java:49)
       at com.benderson.test.testProcessTest.testTestProcess(testProcessTest.java:17)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
       at java.lang.reflect.Method.invoke(Unknown Source)
       at junit.framework.TestCase.runTest(TestCase.java:154)
       at junit.framework.TestCase.runBare(TestCase.java:127)
       at junit.framework.TestResult$1.protect(TestResult.java:106)
       at junit.framework.TestResult.runProtected(TestResult.java:124)
       at junit.framework.TestResult.run(TestResult.java:109)
       at junit.framework.TestCase.run(TestCase.java:118)
       at junit.framework.TestSuite.runTest(TestSuite.java:208)
       at junit.framework.TestSuite.run(TestSuite.java:203)
       at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
       at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
       at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
      


      Thank you very much for any insight you can provide.


        • 1. Re: AssignmentHandler deployment, NullPointerException
          Edward Mack Newbie

          Never mind I solved my issue. Isn't is amazing how often the solution comes to you after you've posted the questions.

          Anyway FYI, my issue was that my jbpm.properties file in my project did not have

          jbpm.task.instance.class=org.jbpm.taskmgmt.exe.TaskInstance


          and I was looking at the jbpm.properties file that was deployed on the server, and of course when I'm running a test from my IDE it will use the propertie files inside the project.

          I also now realize that the issue had nothing to do with the assignment handler, but was related to not having a tast instance set.

          I feel foolish, but I'm learning a lot. I love this (jBPM) and the whole JEMS suite! Keep up the good work.