第14篇:Flowable-BPMN操作流程之任务完成

接上一篇:
第13篇: Flowable-BPMN操作流程之流程进展查看之流程图
https://blog.csdn.net/weixin_40816738/article/details/102902629

文章目录

  • 一、背景
  • 二、原理
  • 三、API
    • 3.1. 直接完成任务
    • 3.2. 完成任务并且设置任务参数
  • 四、实现
    • 4.1. 接口
    • 4.2. 接口实现
    • 4.3. 控制器实现
  • 五、验证
    • 5.1. 创建流程
    • 5.2. 启动任务
    • 5.3. 查看任务ID
    • 5.4. 任务完成
    • 5.5. 流程进展查看
    • 源码下载

一、背景

  • 流程启动后,Flowable的核心操作UserTask,SystemTask等以任务的形式来组织,而对于一个流程由若干任务来完成,完成一个任务后,再自动启动另外一个任务直到走到终点,所以任务的完成动作很关键。

二、原理

Flowable的TaskService提供了对任务的操作,其中完成任务complete函数提供了任务结束操作。

三、API

Flowable的任务完成实现如下:

3.1. 直接完成任务

void	complete(String taskId)
Called when the task is successfully executed.

3.2. 完成任务并且设置任务参数

void	complete(String taskId, Map variables)
Called when the task is successfully executed, and the required task parameters are given by the end-user.

四、实现

4.1. 接口

   /**
     * 完成任务
     */
    boolean completeTask(String taskId,Map paras);

4.2. 接口实现

   /**
     * 完成任务
     */
    @Override
    public boolean completeTask(String taskId,Map paras) {

        Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
        if (task == null) {
            return false;
        }

        if (null == paras){
            taskService.complete(taskId);
        }
        else {
            taskService.complete(taskId,paras);
        }

        return true;
    }

4.3. 控制器实现

 @RequestMapping("/complete")
    @ResponseBody
    public Map completeTask(@RequestBody @RequestParam(required = false) Map paras){
        Map res =new HashMap<>();
        Map data = new HashMap<>();

        if (MapUtils.isEmpty(paras)){
            res.put("msg","请输入任务参数");
            res.put("res","0");
            res.put("data",data);
            return res;
        }

        String taskId = paras.get("taskId");
        if (StringUtils.isEmpty(taskId)){
            res.put("msg","请输入任务ID");
            res.put("res","0");
            res.put("data",data);
            return res;
        }

        Map flowParas=new HashMap<>();
        flowParas.putAll(paras);
        boolean bok = flowService.completeTask(taskId,flowParas);

        if (bok){
            data.put("taskId",taskId);
            res.put("msg","启动流程成功");
            res.put("res","1");
        }
        else {
            data.put("taskId",taskId);
            res.put("msg","启动流程失败");
            res.put("res","0");
        }

        res.put("data",data);
        return res;
    }

五、验证

5.1. 创建流程

http://localhost:8989/flow/create

第14篇:Flowable-BPMN操作流程之任务完成_第1张图片

5.2. 启动任务

http://localhost:8989/flow/start?processKey=test_bpmn

结果返回如下:

{"msg":"启动流程成功","res":"1","data":{"processId":"be53f529-0078-11ea-83cb-f8a2d6bfea5a"}}

第14篇:Flowable-BPMN操作流程之任务完成_第2张图片

5.3. 查看任务ID

后台打印如下: be5ccece-0078-11ea-83cb-f8a2d6bfea5a
注意:任务id就是taskid,不是processId
第14篇:Flowable-BPMN操作流程之任务完成_第3张图片

5.4. 任务完成

http://localhost:8989/flow/complete?taskId=be5ccece-0078-11ea-83cb-f8a2d6bfea5a
第14篇:Flowable-BPMN操作流程之任务完成_第4张图片

5.5. 流程进展查看

http://localhost:8989/flow/processDiagram?processId=be53f529-0078-11ea-83cb-f8a2d6bfea5a

第14篇:Flowable-BPMN操作流程之任务完成_第5张图片
从这里可以很容易的看到我们用户任务完成表示审核完成任务了,因为后面直接到结束了,所以看到红色圈已经到结束了。

源码下载

gitlab链接:https://gitlab.com/gb-heima/flowablestudy/tree/master/flowablelech14
码云链接:https://gitee.com/gb_90/flowable-study/tree/master/flowablelech14

下一篇:
第15篇: Flowable-BPMN操作流程之排他网关
https://blog.csdn.net/weixin_40816738/article/details/102902674

你可能感兴趣的:(Flowable)