工作流-flowable 之驳回 多实例驳回 并行网关驳回 普通节点驳回到多实例

6.4.0 新增加了驳回的方式,真是对中国式流程的一种福音呀,感谢flowable创始人。

再也不为开发驳回流程发愁了,网上那些视频和修改源码真的是demo级别的,不能商业用。

只有心如流水的学习才是永远的发电机,不要幻想别人能给把系统都给你做好了。

任何节点都可以跳转

runtimeService.createChangeActivityStateBuilder()
.processInstanceId(processInstanceId)
.moveActivityIdsToSingleActivityId("当前的任务的节点id", "需要跳转的目标节点")
.changeState();

当然有很多方法,大家可以去找一下ChangeActivityStateBuilder这里类。

  1. 直接上代码吧,从来都是干货,不隐藏,哈哈。
public ReturnVo<String> backToStep(BackVo backVo) throws Exception {
        ReturnVo<String> returnVo = new ReturnVo<>(FlowConstant.SUCCESS, "OK");
        Task task = taskService.createTaskQuery().taskId(backVo.getTaskId()).singleResult();
        String processInstanceId = task.getProcessInstanceId();
        FlowElement distActivity = processDefinitionUtils.findFlowElementById(task.getProcessDefinitionId(), backVo.getDistFlowElementId());
        //1. 保存任务信息
        task.setAssignee(backVo.getUserCode());
        taskService.saveTask(task);
        //2. 如果上一个节点是提交者的话要处理一下
        if (FlowConstant.FLOW_SUBMITTER.equals(distActivity.getName())) {
            //查找发起人 设置到变量中,以便驳回到提起人的时候能留在提交人这个节点
            ExtendProcinst extendProcinst = this.extendProcinstService.findExtendProcinstByProcessInstanceId(processInstanceId);
            String creator = null;
            if (extendProcinst != null) {
                creator = extendProcinst.getCreator();
                if (StringUtils.isBlank(creator)) {
                    creator = extendProcinst.getCurrentUserCode();
                }
            } else {
                ExtendHisprocinst extendHisprocinst = extendHisprocinstService.getExtendHisprocinstByProcessInstanceId(processInstanceId);
                creator = extendHisprocinst.getCreator();
                if (StringUtils.isBlank(creator)) {
                    creator = extendHisprocinst.getCurrentUserCode();
                }
            }
            if (StringUtils.isNotBlank(creator)) {
                runtimeService.setVariable(processInstanceId, FlowConstant.FLOW_SUBMITTER_VAR, creator);
            }
        }
        List<Task> tasks = taskService.createTaskQuery().processInstanceId(processInstanceId).list();
        List<String> currentActivityIds = new ArrayList<>();
        tasks.forEach(t -> currentActivityIds.add(t.getTaskDefinitionKey()));
        //3. 删除节点信息
        if (!(distActivity instanceof EndEvent)) {
            this.deleteHisActivities((Activity) distActivity, processInstanceId);
        }
        //4. 添加审批意见和修改流程状态
        this.addCommentAndUpdateProcessStatus(backVo, processInstanceId);
        //5.执行驳回操作
        runtimeService.createChangeActivityStateBuilder()
                .processInstanceId(processInstanceId)
                .moveActivityIdsToSingleActivityId(currentActivityIds, backVo.getDistFlowElementId())
                .changeState();
        return returnVo;
    }
  1. 经测试 多实例节点,并行网关,判断网关都没有问题,甚至是子流程的一种节点跳转都有相应的方法

具体怎么使用可以去看官方的测试用例
在这里插入图片描述

Flowable中,驳回是指当前处理人可以将流程回退到历史走过的任何一个节点驳回操作可以应用于多种场景,包括驳回普通节点驳回实例节点驳回并行网关节点驳回子流程节点以及子流程节点驳回主流程节点等。 如果你正在使用Spring Boot对接Flowable代码,可以通过引用提供的相关操作细节来实现流程的驳回功能。你可以使用Flowable的API来执行驳回操作,具体的实现方式取决于你的业务需求和流程设计。 如果你想了解更多关于Flowable驳回功能的详细信息,可以访问项目地址https://gitee.com/lwj/flowable.git和视频讲解地址https://www.bilibili.com/video/av78779999/,这些资源可能会对你有所帮助。 需要注意的是,在Flowable中进行驳回操作时,你可能需要提供相应的用户名和密码来进行认证和授权。请根据项目设置的具体情况使用正确的用户名和密码进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot + flowable 代码,常规操作代码测试](https://download.csdn.net/download/qq_37753687/87185036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [工作流实战_22_flowable 驳回/回退 并行网关驳回实例驳回 子流程驳回](https://blog.csdn.net/weixin_40816738/article/details/103501603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值