You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Camunda向API发送消息的最简单实现方式是什么

Camunda 发送API消息最简实现方案

以下两种方案按使用场景选择,优先推荐无需编码的可视化配置方案:

方案1:可视化配置(零代码,最简方案)

直接用Camunda官方内置的HTTP连接器实现,不需要额外写业务代码:

  • 适用版本:Camunda 7 全版本、Camunda 8 全版本
  • 操作步骤:
    1. 打开Camunda Modeler,在需要发送API请求的位置添加服务任务节点
    2. 服务任务属性配置:
      • Camunda 7:Implementation 下拉选择「Connector」,Connector ID 选择http-connector
      • Camunda 8:Type 栏搜索选择「REST Outbound Connector」
    3. 填写请求基础参数:
      • 请求方法:填写GET/POST/PUT等目标API要求的HTTP方法
      • 请求URL:填写目标API完整地址,动态参数可以用表达式${变量名}插入流程变量值
      • 请求头:按需添加,比如指定JSON格式就加Content-Type: application/json
      • 请求体:POST/PUT类请求填写JSON格式的请求内容,同样支持表达式插入动态参数
    4. 响应结果配置(可选):在输出参数栏配置映射规则,即可把API返回的状态码、响应体等内容存入流程变量供后续节点使用

方案2:Java代码实现(适用于复杂自定义场景)

如果你的API请求有签名、加密、动态路由等特殊逻辑,无法用内置连接器满足,可以通过自定义JavaDelegate实现:

  1. 编写实现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());
    }
}
  1. 配置服务任务:在服务任务的Implementation栏选择「Java Class」,填写上述类的全限定类名即可

注意事项

  • 配置前建议先通过Postman等工具验证目标API的可用性,降低流程调试成本
  • 生产环境建议配置合理的超时、重试规则,避免API请求异常影响流程实例运行
  • 敏感信息(如密钥、令牌)不要硬编码在代码或流程配置里,建议通过Camunda的变量存储、密钥库功能统一管理

内容的提问来源于stack exchange,提问作者shinycharizard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 18:36:02