1. 绘制流程图
1.1 为指派任务设定任务人
设定任务人为张三和李四,同时设定“允许上一节点为当前任务节点指定处理人”。保存流程并发布。
1.2 在central中查看已经发布的任务模型
2. 启动任务测试
2.1 启动任务
启动任务,并且点击完成第一个任务,出现了任务流转的路径,此时我们发现,我们指定的三个路径“到竞争任务”、“到会签任务”、“到指派任务”三个连线都显示了出来。
我们选择“到指派任务”并完成他。
2.2 通过接口获取下一流程及潜在任务人
在第一任务环节获取“到竞争任务”、“到会签任务”、“到指派任务”下的三个流程节点
通过loadSequenceFlows接口,已经能够获得到所有的连线及其下面的节点。
通过getNextTaskAndAssignees接口获得
可以看到,指派任务中的张三、李四也已经查询了出来。
2.3 选择指派任务
任务完成或,我们发现指派任务的任务类型为“竞争”,这是为什么呢?其实我们在系统中找所有TaskType.Appoint的调用发现,UFLO中没有哪个地方显式的去定义一个任务为指派任务的代码。
发现其任务类型为Participative(竞争任务)
2.4 领取任务[指派任务]
通过调用UFLO的http://localhost:8080/uflo/central/loadCliamUsers?taskId=25825接口发现,能够获取到指定的任务人。
2.5 任务领取成功
任务领取成功后发现,当前的任务类型还是竞争任务。
3. 通过接口试着指定任务人
3.1 查找服务saveTaskAppointor
在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);
3.2 编写接口
@PostMapping("saveTaskAppointor")
void saveTaskAppointor(long taskId,String assignee,String taskNodeName)
{
taskService.saveTaskAppointor(taskId,assignee,taskNodeName);
}
3.3 测试接口
接口执行完成后,没有任何的返回。
3.4 当前任务的查看
我们发现在第一个任务节点上,看不到任何的差别。
完成这个“第一个任务”
最终的任务类型变成了普通
4. 总结
最终也没有发现如何将任务设定为指定任务,不过我们已经找到了如何在上一节点指定下一节点人员任务的方式了。