从Camunda向API发送消息的最简单实现方式是什么
Camunda 发送API消息最简实现方案
以下两种方案按使用场景选择,优先推荐无需编码的可视化配置方案:
方案1:可视化配置(零代码,最简方案)
直接用Camunda官方内置的HTTP连接器实现,不需要额外写业务代码:
- 适用版本:Camunda 7 全版本、Camunda 8 全版本
- 操作步骤:
- 打开Camunda Modeler,在需要发送API请求的位置添加服务任务节点
- 服务任务属性配置:
- Camunda 7:Implementation 下拉选择「Connector」,Connector ID 选择
http-connector - Camunda 8:Type 栏搜索选择「REST Outbound Connector」
- Camunda 7:Implementation 下拉选择「Connector」,Connector ID 选择
- 填写请求基础参数:
- 请求方法:填写
GET/POST/PUT等目标API要求的HTTP方法 - 请求URL:填写目标API完整地址,动态参数可以用表达式
${变量名}插入流程变量值 - 请求头:按需添加,比如指定JSON格式就加
Content-Type: application/json - 请求体:POST/PUT类请求填写JSON格式的请求内容,同样支持表达式插入动态参数
- 请求方法:填写
- 响应结果配置(可选):在输出参数栏配置映射规则,即可把API返回的状态码、响应体等内容存入流程变量供后续节点使用
方案2:Java代码实现(适用于复杂自定义场景)
如果你的API请求有签名、加密、动态路由等特殊逻辑,无法用内置连接器满足,可以通过自定义JavaDelegate实现:
- 编写实现
JavaDelegate接口的类,示例代码如下:
import org.camunda.bpm.engine.delegate.DelegateExecution; import org.camunda.bpm.engine.delegate.JavaDelegate; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class SendApiDelegate implements JavaDelegate { @Override public void execute(DelegateExecution execution) throws Exception { // 从流程变量中获取请求需要的动态参数 String userId = (String) execution.getVariable("userId"); // 构建HTTP请求 HttpClient httpClient = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://你的目标API地址")) .header("Content-Type", "application/json") // 按需添加认证头、自定义头等 .header("Authorization", "Bearer " + execution.getVariable("accessToken")) .POST(HttpRequest.BodyPublishers.ofString("{\"userId\":\"" + userId + "\"}")) // 配置超时时间,避免请求卡住 .timeout(java.time.Duration.ofSeconds(10)) .build(); // 发送请求并接收响应 HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); // 将响应结果存入流程变量 execution.setVariable("apiResponse", response.body()); execution.setVariable("apiStatus", response.statusCode()); } }
- 配置服务任务:在服务任务的Implementation栏选择「Java Class」,填写上述类的全限定类名即可
注意事项
- 配置前建议先通过Postman等工具验证目标API的可用性,降低流程调试成本
- 生产环境建议配置合理的超时、重试规则,避免API请求异常影响流程实例运行
- 敏感信息(如密钥、令牌)不要硬编码在代码或流程配置里,建议通过Camunda的变量存储、密钥库功能统一管理
内容的提问来源于stack exchange,提问作者shinycharizard
相关产品推荐
相关产品推荐

