设定任务人为张三和李四,同时设定“允许上一节点为当前任务节点指定处理人”。保存流程并发布。
启动任务,并且点击完成第一个任务,出现了任务流转的路径,此时我们发现,我们指定的三个路径“到竞争任务”、“到会签任务”、“到指派任务”三个连线都显示了出来。
我们选择“到指派任务”并完成他。
在第一任务环节获取“到竞争任务”、“到会签任务”、“到指派任务”下的三个流程节点
通过loadSequenceFlows接口,已经能够获得到所有的连线及其下面的节点。
通过getNextTaskAndAssignees接口获得
可以看到,指派任务中的张三、李四也已经查询了出来。
任务完成或,我们发现指派任务的任务类型为“竞争”,这是为什么呢?其实我们在系统中找所有TaskType.Appoint的调用发现,UFLO中没有哪个地方显式的去定义一个任务为指派任务的代码。
发现其任务类型为Participative(竞争任务)
通过调用UFLO的http://localhost:8080/uflo/central/loadCliamUsers?taskId=25825接口发现,能够获取到指定的任务人。
在TaskService中我们发现了两个用来指定任务人的服务
/**
* 在某个任务中指定下一个指定任务节点上的任务处理人
* @param taskId 具体任务对象ID
* @param assignee 要指定的任务处理人
* @param taskNodeName 指定任务处理人的任务节点名称
*/
void saveTaskAppointor(long taskId,String assignee,String taskNodeName);
/**
* 在某个任务中指定下一个指定任务节点上的任务处理人,可以为多个处理人
* @param taskId 具体任务对象ID
* @param assignees 要指定的任务处理人集合
* @param taskNodeName 指定任务处理人的任务节点名称
*/
void saveTaskAppointor(long taskId,String[] assignees,String taskNodeName);
@PostMapping("saveTaskAppointor")
void saveTaskAppointor(long taskId,String assignee,String taskNodeName)
{
taskService.saveTaskAppointor(taskId,assignee,taskNodeName);
}
我们发现在第一个任务节点上,看不到任何的差别。
完成这个“第一个任务”
最终的任务类型变成了普通
最终也没有发现如何将任务设定为指定任务,不过我们已经找到了如何在上一节点指定下一节点人员任务的方式了。