汪老师好!
如下请假流程的第一个节点“发起请假”,就是说普通员工,比如说 我是 张三,我要发起请假流程,我希望发起流程时,弹出页面,然后我在上面 填写 请假天数,请假的事由,上传请假附件的凭证 等。根据我们前端学到的知识,需要用到动态表单,这个我知道。
我现在的问题是:我们目前象的任何任务节点 都是 执行人 或 候选人 才能 操作 处理任务节点,并且任务节点上要 配置好 执行人 或 候选人。 比如说我是当前请假人 bajie, 我现在需要请假,经理审核任务节点的执行人是 shaseng, 部门经理审核的执行人是 tangseng,人事审核的执行人是salaboy。
我现在希望的是 当前请假人 bajie 发起请假流程后,弹出动态表单,bajie在上面填写相关的信息,然后 就直接到 经理审核的任务节点 shaseng了,但是我们现在 @GetMapping(value = “/completeTask”) 完成待办任务的方法,发起请假 的节点 只能 这个节点填写的 执行人 才能发起动态表单 来填写 请假天数,请假的事由,上传请假附件的凭证 等,不能是 非执行人 或 非候选人 来弹出 请假流程的? 比如说 请假人的天数,显然也是要发起人 在 申请页面上 要进行填写的,不然,后面变量判断时也不知道 当时 申请人 填写的原始数据,对吧,汪老师。
具体如下所示
@GetMapping(value = “/completeTask”)
public AjaxResponse completeTask(@RequestParam(“taskID”) String taskID) {
try {
Task task = taskRuntime.task(taskID);
//如果当前登录人不是执行人,则当前登录人一定是候选人,先拾取任务后,再执行就好
if (task.getAssignee() == null) {
//当前登录人作为候选人 先拾取任务
taskRuntime.claim(TaskPayloadBuilder.claim().withTaskId(task.getId()).build());
}
//if...else... 判断 有任务参数 和 没有任务参数 两种情况
//这里写死处理演示功能,实际情况是要取 发起人填写请假页面的天数
// Map<String,Object> variablesMap = new HashMap<String,Object>();
// variablesMap.put(“variable”,2);
//有参数
// taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId())
// .withVariables(variablesMap)//执行环节设置变量
// .build());
//无参数
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(task.getId())
.build());
return AjaxResponse.AjaxData(GlobalConfig.ResponseCode.SUCCESS.getCode(),
GlobalConfig.ResponseCode.SUCCESS.getDesc(), null);
} catch (Exception e) {
return AjaxResponse.AjaxData(GlobalConfig.ResponseCode.ERROR.getCode(),
"完成失败", e.toString());
}
}
从0打造黑马潜力项目作品,掌握新版Activiti7核心+工程化思维。
了解课程