参考了流程图的会签、或签、转审、加签这篇博客,针对这篇博客做一些补充,记录一下。
1.加签
加签的代码如下:
/**
* @Description: 加签
* @param taskId 任务id
* @param userId 加签到谁
* @return: com.ruoyi.common.core.domain.AjaxResult
* @Author: 小邪123
* @Date: 2022/5/13 11:05
*/
@GetMapping("/addSign/{taskId}/{userId}")
@ApiOperation("加签")
public AjaxResult addSign(@PathVariable String taskId, @PathVariable String userId){
taskService.delegateTask(taskId,userId);
return AjaxResult.success("加签成功,加签到"+userId);
}
例如加签到了“张三”名下,当张三完成任务时,调用的必须是resolveTask方法,而不是complete方法。
代码如下:
taskService.resolveTask(taskId);
至于怎么去区分,可以从任务表中关注OWENR、ASSIGNEE、DELEGATION字段,当我们加签后,OWENR字段存储的就是我们的加签发起人,ASSIGNEE就是被加签人,DELEGATION记录的就是被加签人的操作状态,若是被加签人还未做处理,那么就会显示Pending状态,这个时候的任务只能通过resolveTask方法去完成任务,完成任务后,任务才会回到加签的发起人那儿。
2.一票否决权
工作流中自带了三个变量,供给我们使用:
nrOfInstances:总实例数,Collection中的数量。
nrOfCompletedInstances:已经完成的实例数。
nrOfActiveInstances:还没有完成的实例数。
会签一票否决表达式
${(pass == 'no')||(nrOfCompletedInstances/nrOfInstances==1)}
这里的pass指的是我们自定义的流程变量。