3 Replies Latest reply on Sep 17, 2010 8:24 AM by HuiSheng Xu

    java.lang.NullPointerException on Notification sent

    Gonzalo Lazaro Newbie

      Hello,

       

      I've got the following problem using JBPM 4.4:

       

      I have a flow started and the first task assignee is set as a process variable in the following way:

       

      <task g="196,322,132,52" name="Submit adjustment for approval" candidate-groups="AdjustmentsInitiator" assignee="#{initiator}">
            <notification/>
            <reminder duedate="1 hour" repeat="1 hour"/>
            <transition g="-64,-12" name="submit" to="change_status_to_submitted"/>
            <transition g="-155,-18" name="cancel" to="change_status_to_cancelled"/>
         </task>

       

      This is working perfectly and the assignee get a mail advising on the task assignment.

       

      However, if the assignee releases the task (ts.assignTask(taskId, null);) I get the following error:

       

      java.lang.NullPointerException
          at org.jbpm.pvm.internal.email.impl.MailProducerImpl.tokenizeActors(MailProducerImpl.java:148)
          at org.jbpm.pvm.internal.email.impl.MailProducerImpl.fillRecipients(MailProducerImpl.java:194)
          at org.jbpm.pvm.internal.email.impl.MailProducerImpl.fillRecipients(MailProducerImpl.java:166)
          at org.jbpm.pvm.internal.email.impl.MailProducerImpl.produce(MailProducerImpl.java:82)
          at org.jbpm.jpdl.internal.activity.MailListener.notify(MailListener.java:58)
          at org.jbpm.pvm.internal.model.op.ExecuteEventListener.perform(ExecuteEventListener.java:81)
          at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperationSync(ExecutionImpl.java:672)
          at org.jbpm.pvm.internal.model.ExecutionImpl.performAtomicOperation(ExecutionImpl.java:632)
          at org.jbpm.pvm.internal.model.ExecutionImpl.fire(ExecutionImpl.java:579)
          at org.jbpm.pvm.internal.model.ExecutionImpl.fire(ExecutionImpl.java:568)
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

      ....

       

      Is there any way to remove the task assignment without the notifications being sent?

       

      The test I've done is quite simple:

       

      @Test
          public void testReAssignTask() {
              TaskService ts = processEngine.getTaskService();
              String taskId = "490009";
              Task task = ts.getTask(taskId);
              logger.debug(task.getAssignee());
              ts.assignTask(taskId, null);
          }

       

      Thanks,
      Gonzalo