请看代码:                  //得到JbpmContext对象
                  JbpmContext jbpmContext = getJbpmContext();
ProcessInstance pi = jbpmContext.getProcessInstance(processInstanceId);
//当前节点
String currentNodeName = pi.getRootToken().getNode().getName();
//起点的名称
String startNodeName = pi.getProcessDefinition().getStartState().getName();

Collection<Transition> transitions = null;
//若在起始节点
if (startNodeName.equals(currentNodeName)) {                            /*
                             * 我本意是想得到起始节点的下一步流向,但始终得不到,
                             * 下面的打印语句可以正常打印出开始节点的名称“start".
                             * 我可以确保我的流程定义和此方法传进来的参数没有问题。
                             * 
                            */
transitions = pi.getRootToken().getAvailableTransitions();

System.out.println(pi.getRootToken().getNode().getName());
} else {
                      。。
流程定义的xml文件<?xml version="1.0" encoding="UTF-8"?><process-definition  xmlns=""  name="documentTest">
<start-state name="start">
<transition to="step1"></transition>
</start-state>
<task-node name="step1">
<task name="step1">
<assignment actor-id="ss"></assignment>
</task>
<transition to="step2"></transition>
</task-node> <task-node name="step2">
<task name="step2">
<assignment actor-id="cs"></assignment>
</task>
<transition to="step3"></transition>
</task-node> <task-node name="step3">
<task name="step3">
<assignment actor-id="zyy"></assignment>
</task>
<transition to="end"></transition>
</task-node>
<end-state name="end"></end-state>
</process-definition>希望大家能帮忙看下,谢谢!
一旦解决,马上给分!

解决方案 »

  1.   

    JBPM3.2对泛型支持力度不够。只要你成功部署,DB都对,你写的基本没问题。Collection nextSteps = null; if(nextSteps!=null){
     for (Iterator iter = nextSteps.iterator(); iter.hasNext();) {
    Transition transition = (Transition) iter.next();
    System.out.println(transition.getName());
     }
    }API上也没说返回Collection<Transition>
      

  2.   

    问题的原因终于找出来了,原来我设计流程使用的是eclipse的插件,设计出来的xml文件内容如上面所示,大家仔细看会发现<transition to="step3"></transition>缺少一个name属性,即在每个transition都加上name属性就可以了,虽然我觉得这个属性要不要不所谓,再在使用getAvailableTransitions()方法必须加上name属性,我也不知道为什么,反正问题就是这里,现在越来越觉得jbpm这东西有点难搞了。附:我使用的是jbpm3.2.3自带的插件。
    上面的仁兄说“JBPM3.2对泛型支持力度不够”,我觉得吧,你不使用泛型也会出现警告,我看jdk的源码都是按我这个法子写的,这样使用for-each和iterator会方便一些。
    晚上给分,大家回复都有分!