<task-node name="孙三">
 <task><assignment actor-id="ss"/></task>
<transition name="提交李四和周五审批" to="fork1"></transition>
</task-node> <fork name="fork1">
<transition to="周五"></transition>
<transition to="李四"></transition>

</fork> <task-node name="李四">
 <task><assignment actor-id="ls"/></task>
<transition name="提交王六审批" to="join1"></transition>
</task-node> <task-node name="周五">
 <task><assignment actor-id="zw"/></task>
<transition name="提交王六审批" to="join1"></transition>
</task-node>      <join name="join1">
<transition to="王六"></transition>
</join> <task-node name="王六">
 <task><assignment actor-id="wl"/></task>
<transition name="结束流程" to="end"></transition>
</task-node>
<end-state name="end"></end-state>
孙三提交到fork1的时候,周五可以看到任务,李四却看不到任务,假如fork1中周五和李四换一下顺序,则李四可以看到,周五看不到,假如周五提交,王六就可以看到自己的任务了,就是说不等李四审批节点直接提交到王六那里了,请问是哪里出现问题?public String flowToNextStep(String username, long processInstanceId,
String transitionName) {

JbpmContext context = getContext();
String status = null;

ProcessInstance instance = context.getProcessInstance(processInstanceId);

//当前节点
String currentNodeName = instance.getRootToken().getNode().getName();

//起始节点
String startNodeName = instance.getProcessDefinition().getStartState().getName(); //instance.getRootToken().signal(transitionName);

//如果是在起始节点,因为起始节点不会跟任何人相关联(即不会将任务分配给任何人)
if(currentNodeName.equals(startNodeName)){
//需要使用流程实例的signal()方法来触发流程向下一步流动!
instance.getRootToken().signal(transitionName);
}else{

//首先找出用户的当前任务
List tasks = context.getTaskMgmtSession().findTaskInstances(username);
for (Iterator iter = tasks.iterator(); iter.hasNext();) {
TaskInstance taskInstance = (TaskInstance) iter.next();
if(taskInstance.getProcessInstance().getId() == processInstanceId){

//这就是当前文档对应的任务,需要结束这个任务,从而触发流程向下一步骤移动!
taskInstance.end(transitionName); break;
}
}
}

//将公文当前所处节点作为状态信息返回
status = instance.getRootToken().getNode().getName();
priintTokenChhilds(instance.getRootToken());
//判断当前的状态是否已经结束!
if(instance.hasEnded()){
status = Document.STATUS_END;
}
context.close();
return status;
}流向下一步的算法