参考了流程图的会签、或签、转审、加签这篇博客,针对这篇博客做一些补充,记录一下。

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指的是我们自定义的流程变量。

Logo

快速构建 Web 应用程序

更多推荐