关于JBPM决策点的问题求救 万分火急,请教高手!!!!

zzb888 2007-07-12
我的流程文件如下:

<?xml version="1.0" encoding="UTF-8"?>

<process-definition
  xmlns="urn:jbpm.org:jpdl-3.1"  name="test">
   <start-state name="start">
      <transition name="d11" to="decision1"></transition>
   </start-state>
   <decision name="decision1">
     <handler class="com.test.decision.D1Handler"/>   
      <transition name="t1" to="task1"></transition>
      <transition name="t2" to="task2"></transition>
   </decision>
   <task-node name="task1">
      <task name="task1">
          <assignment class="com.test.task.T1AssignmentHandler"></assignment>
      </task>
      <event type="node-leave">
         <action name="act1" class="com.test.action.Act1ActionHandler"></action>
      </event>
      <transition name="d21" to="decision2"></transition>
   </task-node>
   <task-node name="task2">
      <task name="task2">
          <assignment class="com.test.task.T2AssignmentHandler"></assignment>
      </task>
      <event type="node-leave">
         <action name="act2" class="com.test.action.Act2ActionHandler"></action>
      </event>
      <transition name="d22" to="decision2"></transition>
   </task-node>
   <decision name="decision2">
      <handler class="com.test.decision.D2Handler"/> 
      <transition name="e1" to="end"></transition>
      <transition name="d12" to="decision1"></transition>
   </decision>
   <end-state name="end"></end-state>
</process-definition>

流程流转
decision1->task1->decision2->decision1->task2->decision2->end

在前几步都没有问题
一直到->task2->decision2->end 完成task2时出现问题我完成task2的方法

如下


protected void t2Decide(boolean isApprove) {
System.out.println("T2审批TestProcessTest.t2Decide()=");
String userIdT2 = "userApprove2";
List list = ctx.getTaskMgmtSession().findTaskInstances(userIdT2);
Iterator it = list.iterator();
while (it.hasNext()) {
TaskInstance ti = (TaskInstance) it.next();
if (ti.getName().equals("task2") &&
(pi.getId() == ti.getTaskMgmtInstance().getProcessInstance().getId())) {
if (isApprove)
ti.end("d21");
else
ti.end("d21");
return;
}
}
}

在ti.end("d21");这一句出错,错误如下:

java.lang.NullPointerException: task node does not have leaving transition 'd21'
at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:381)
at com.sample.TestProcessTest.t2Decide(TestProcessTest.java:105)
at com.sample.TestProcessTest.testT1T2(TestProcessTest.java:42)
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.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

请教各位大侠  谢谢了  万分火急
gsccnu 2007-07-12
ctx.getTaskMgmtSession().findTaskInstances(userIdT2);
中的ctx是否为executeContext?
zzb888 2007-07-12
是JbpmContext
zzb888 2007-07-12
终于有回应了
zzb888 2007-07-12
哈哈 自己搞定了
huangguan 2007-07-12
搞定了,怎么也不说说解决方法呢?
唉。。。。

想学习都不行
zzb888 2007-07-13
是低级错误,ti.end("d21")应该是ti.end("d22");
gabriel80 2008-04-21
ctx是否为executeContext?