16.flowable 办理任务

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base
视频讲解地址
https://www.bilibili.com/video/av78128720/

1. 演示

在这里插入图片描述
在这里插入图片描述

2、代码

public ReturnVo<String> complete(CompleteTaskVo params) {
        ReturnVo<String> returnVo = new ReturnVo<>(ReturnCode.SUCCESS, "审批成功");
        if (StringUtils.isNotBlank(params.getProcessInstanceId())
                && StringUtils.isNotBlank(params.getTaskId())) {
            String type = params.getType() == null ? CommentTypeEnum.SP.toString() : params.getType();
            TaskEntity taskEntity = (TaskEntity) taskService.createTaskQuery().taskId(params.getTaskId()).singleResult();
            if (taskEntity != null) {
                //2.委派处理
                if (DelegationState.PENDING.equals(taskEntity.getDelegationState())) {
                    //2.1生成历史记录
                    TaskEntity task = this.createSubTask(taskEntity, params.getUserCode());
                    taskService.saveTask(task);
                    taskService.complete(task.getId());
                    //2.2生成审批意见
                    this.addComment(task.getId(), params.getUserCode(), params.getProcessInstanceId(),
                            CommentTypeEnum.SP.toString(), params.getMessage());
                    //2.3执行委派
                    taskService.resolveTask(params.getTaskId(), params.getVariables());
                } else {
                    //3.1修改执行人 其实我这里就相当于签收了
                    taskService.setAssignee(params.getTaskId(), params.getUserCode());
                    //3.2执行任务
                    taskService.complete(params.getTaskId(), params.getVariables());
                    //3.3生成审批记录
                    this.addComment(params.getTaskId(), params.getUserCode(), params.getProcessInstanceId(),
                            CommentTypeEnum.SP.toString(), params.getMessage());
                    //4.处理加签父任务
                    String parentTaskId = taskEntity.getParentTaskId();
                    if (StringUtils.isNotBlank(parentTaskId)) {
                        String tableName = managementService.getTableName(TaskEntity.class);
                        String sql = "select count(1) from " + tableName + " where PARENT_TASK_ID_=#{parentTaskId}";
                        long subTaskCount = taskService.createNativeTaskQuery().sql(sql).parameter("parentTaskId", parentTaskId).count();
                        if (subTaskCount == 0) {
                            Task task = taskService.createTaskQuery().taskId(parentTaskId).singleResult();
                            //处理前后加签的任务
                            taskService.resolveTask(parentTaskId);
                            if (FlowConstant.AFTER_ADDSIGN.equals(task.getScopeType())) {
                                taskService.complete(parentTaskId);
                            }
                        }
                    }
                }
            } else {
                returnVo = new ReturnVo<>(ReturnCode.FAIL, "没有此任务,请确认!");
            }
        } else {
            returnVo = new ReturnVo<>(ReturnCode.FAIL, "请输入正确的参数!");
        }
        return returnVo;
    }
Flowable动态任务分配是指根据不同的业务规则或条件,在运行时动态地分配任务给不同的用户或角色。通过集成Flowable,我们可以与系统的用户角色进行绑定,并非常方便地设置任务办理人与办理角色。这样可以根据具体的需求,灵活地决定任务的分配方式。 在使用Flowable进行动态任务分配时,可以使用以下方法: 1. 完成流程实例:通过任务服务(TaskService)的complete方法,可以完成当前任务,并自动触发下一个任务的创建与分配。可以根据具体的业务逻辑来决定任务的完成条件和下一个任务办理人或角色。 2. 部署流程:使用Flowable的流程引擎(ProcessEngine)提供的部署方法,可以将定义好的流程模型部署到Flowable引擎中,以便后续启动流程实例。 3. 启动流程:通过运行时服务(RuntimeService)的startProcessInstanceByKey方法,可以启动一个流程实例,并指定流程定义的关键字。在启动流程时,可以设置发起人的身份信息,以便在后续任务分配中进行参考。 4. 查询任务:通过任务服务的createTaskQuery方法可以查询符合条件的任务列表,可以根据流程定义的关键字、任务名称等条件进行过滤。查询到的任务列表中包含任务的ID、名称、办理人等信息,可以用于后续的任务处理。 使用Flowable的动态任务分配功能,可以根据具体的业务需求,灵活地设置任务办理人与办理角色。这样可以提高任务分配的灵活性和效率,使流程执行更加符合实际情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [开源OA协同办公系统,集成Flowable流程引擎 可拖拽创建个性表单](https://download.csdn.net/download/weixin_36643308/88202749)[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_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Flowable进阶学习(四)任务分配与流程变量](https://blog.csdn.net/qq_40366738/article/details/128746821)[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_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小学生05101

flowable

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

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

打赏作者

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

抵扣说明:

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

余额充值