Activiti7系列课程7-activiti7新API使用流程(下)

摘要:学习本文之间,请先学习 [Activiti7系列课程6-activiti7新API使用流程(上] (https://blog.csdn.net/qq_30739519/article/details/91952796))。本文开始讲解TaskRuntime、TaskAdminRuntime、ProcessRuntime三个类使用。

实例启动

TaskRuntime:用于启动流程实例以及查询实例相关的细节。流程实例的启动代码如下:

  //http://127.0.0.1:8080/start?user=1&processKey=leave
    @GetMapping(path = "start")
    public RestMessgae start(@RequestParam("user") String userKey,
                             @RequestParam("processKey") String processKey) {
        HashMap<String, Object> variables=new HashMap<>(1);
        variables.put("userKey", userKey);

        RestMessgae restMessgae = new RestMessgae();
        org.activiti.api.process.model.ProcessInstance instance = null;
        try {

            String processDefinitionId="leave:2:32bd7d18-8da5-11e9-a715-7ab66d766be2";
            String processDefinitionKey="leave";
            String name="";
            String businessKey="123";
            StartProcessPayload startProcessPayload=new StartProcessPayload(processDefinitionId,processDefinitionKey,name,businessKey,variables);
             instance = processRuntime.start(startProcessPayload);
        } catch (Exception e) {
            restMessgae = RestMessgae.fail("启动失败", e.getMessage());
        }

        if (instance != null) {
            Map<String, String> result = new HashMap<>(2);
            // 流程实例ID
            result.put("processID", instance.getId());

            // 流程定义ID
            result.put("processDefinitionKey", instance.getProcessDefinitionId());
            restMessgae = RestMessgae.success("启动成功", result);
        }
        return restMessgae;
    }

任务查询

查询所有任务可以使用TaskAdminRuntime或者TaskRuntime。
所有任务的查询如下所示:

 @GetMapping("/all-tasks")
    public List<org.activiti.api.task.model.Task> getAllTasks() {
        Page<org.activiti.api.task.model.Task> tasks = taskAdminRuntime.tasks(Pageable.of(0, 10));

        for (org.activiti.api.task.model.Task task : tasks.getContent()) {
           // logger.info("\t> User Task: " + task);
        }

        return tasks.getContent();
    }

任务完成

完成任务可以通过TaskRuntime。代码如下:

@GetMapping("/complete-task")
    public String completeTask(@RequestParam(value="taskId") String taskId,Map<String, Object> variables) {
        variables.put("day",3);
        taskRuntime.complete(TaskPayloadBuilder.complete()
            .withTaskId(taskId).withVariables(variables).build());
      //  logger.info(">>> Completed Task: " + taskId);

        return "Completed Task: " + taskId;
    }

总结

  1. ProcessRuntime类内部最终调用repositoryService和runtimeService相关API。
  2. TaskRuntime类内部调用taskService。
  3. TaskAdminRuntime类内部调用taskService
  4. ProcessRuntime类需要ACTIVITI_USER权限。
  5. TaskRuntime需要ACTIVITI_USER权限。
  6. TaskAdminRuntime需要ACTIVITI_ADMIN权限。

博客相关资料获取

博客相关的资料以及代码获取可以直接添加qq:3152981878(请务必备注,activiti7学习)

你可能感兴趣的:(activiti工作流)