Flowable批量修改审批人

如果一个人员离职了,你要变更这个人员所在的流程为其他的审批人,如果一个个的去检察,你是不是很累,这就是我们如果批量修改的原因。

场景很简单,就是人力告诉你有人离职了,需要变更为其他的人

目标:通过界面来修改审批人

1. 界面怎么做在这里就不用讲了
  • 第一 、获取所有的最新的流程定义

public ReturnVo<String> updateTaskAssignee(List<String> keys, String oldAssignee, String newAssignee) {
        ReturnVo<String> returnVo = new ReturnVo<>(ReturnCode.SUCCESS, "OK");
        //1. 查询最新的流程定义列表
        StringBuffer sql = new StringBuffer("SELECT a.* FROM act_re_procdef a INNER JOIN (SELECT key_,MAX(version_) max_version FROM act_re_procdef GROUP BY key_ ) b " +
                " ON a.key_ = b.key_ AND a.version_ = b.max_version ");
        StringBuffer inkeys = new StringBuffer("");
        if (CollectionUtils.isNotEmpty(keys)) {
            StringBuffer finalInkeys = inkeys;
            keys.forEach(key -> finalInkeys.append("'").append(key).append("'").append(","));
            if (inkeys.length() > 0) {
                inkeys = inkeys.deleteCharAt(inkeys.length() - 1);
                sql.append(" where a.key_ in (").append(inkeys.toString()).append(")");
                List<ProcessDefinition> processDefinitions = repositoryService.createNativeProcessDefinitionQuery().sql(sql.toString()).list();
                if (CollectionUtils.isNotEmpty(processDefinitions)) {
                    processDefinitions.forEach(processDefinition -> this.updateTaskAssignee(processDefinition, oldAssignee, newAssignee));
                }
            }
        }
        return returnVo;
    }
  • 第二、修改每一个流程定义的审批人信息

public ReturnVo<String> updateTaskAssignee(ProcessDefinition processDefinition, String oldAssignee, String newAssignee) {
        ReturnVo<String> returnVo = new ReturnVo<>(ReturnCode.SUCCESS, "OK");
        BpmnModel model = repositoryService.getBpmnModel(processDefinition.getId());
        List<UserTask> userTasks = bpmnModelService.findUserTasksByBpmnModel(model);
        userTasks.forEach(userTask -> {
            if (userTask.getAssignee() != null && userTask.getAssignee().equals(oldAssignee) && !oldAssignee.equals(newAssignee)) {
                ObjectNode processInfo = dynamicBpmnService.changeUserTaskAssignee(userTask.getId(), newAssignee);
                dynamicBpmnService.saveProcessDefinitionInfo(processDefinition.getId(), processInfo);
            }
        });
 }
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学生05101

flowable

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值