gpt4 book ai didi

spring-boot - Spring Boot中完成camunda用户任务

转载 作者:行者123 更新时间:2023-12-02 18:39:40 25 4
gpt4 key购买 nike

我已经使用 Spring Boot 运行了 Camunda 服务器,我可以在本地主机上点击它的 API 来启动进程、完成用户任务等。我正在寻找一种从 Camunda 服务器内完成用户任务的方法。我找到了一种启动这样的过程的方法:

runtimeService.startProcessInstanceById(processName, variables);

但是,我找不到如何完成流程。如果我使用其余 API,它将分两步完成:

  • 使用 localhost:8080/engine-rest/task?definitionKey={{taskDefinitionKey}}&processInstanceId={{processInstanceId}} 获取任务 ID
  • 通过 POST 到 localhost:8080/engine-rest/task/{{taskId}}/complete 完成任务

如何从 java 代码(而不是 API)执行相同的操作?因为通过 Rest API 调用自身功能而不是调用代码很奇怪。我相信 Rest API 正在调用系统中的一些代码,我想直接使用它而不是使用 API。我搜索了 Camunda 文档,但没有找到任何内容。

我的情况是,当收到特定消息时,该 Camunda 服务器将监听消息代理并启动进程或完成用户任务等。

最佳答案

我找到了方法,我可以这样做:

public void completeUserTask(String processInstanceId, String taskName, Map<String, Object> variables) {
// taskService is instance of org.camunda.bpm.engine.TaskService
String taskId = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.list()
.stream()
.filter(task -> task.getTaskDefinitionKey().equals(taskName))
.findFirst()
.orElseThrow(() -> new RuntimeException(
String.format("Could not find task with name %s on processInstanceId %s",
taskName,
processInstanceId))).getId();
taskService.complete(taskId, variables);
}

关于spring-boot - Spring Boot中完成camunda用户任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68190743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com