# 第三方系统调用ESB
# 1. 功能概述
本文档详细说明如何从外部系统(包括第三方应用)调用BPM中已创建的ESB服务,提供两种调用方式:OpenAPI直接调用和使用BPM.Client客户端调用。
# 2. RESTful接口规范
# 2.1 基础URL结构
{baseUrl}: BPM服务基础地址(如:https://localhost:6001){esbId}: 目标ESB的唯一标识符
# 2.2 可用接口
| 接口类型 | HTTP方法 | 端点路径 | 功能描述 | 
|---|---|---|---|
| 查询ESB信息 | GET | /v1/esb/{esbId} |  获取ESB元数据 | 
| 执行ESB | POST | /v1/esb/{esbId}/run |  运行指定ESB | 
# 3. 执行ESB接口详解
# 3.1 请求参数
请求方式:POST
 请求体格式(JSON):
{
  "input": "string",
  "uid": "string"
}
参数说明:
uid:执行者账号,用于鉴权和操作审计input:业务输入数据(JSON字符串),格式参考ESB Listener节点的"请求格式"页签
# 3.2 响应格式
成功响应(200 OK):
{
  "task": {
    "id": "string",
    "createTime": "2023-01-01T00:00:00",
    "creator": "string"
    // 其他实例信息...
  },
  "output": {
    "Response": {
      // ESB返回的业务数据
    }
  }
}
字段说明:
task:包含ESB执行实例的元数据output:业务输出数据,格式参考ESB Response节点的"返回格式"页签
# 4. 调用示例
# 4.1 通过OpenAPI直接调用
JavaScript示例:
var esbId = "3a116c78-1e0a-a575-8f40-0984a5207c03"; //要调用的esb的id
var jb = new
{
    Payload = new
    {
        部门 = "易正",
        申请日期 = DateTime.Now
    }
};
# 4.2 使用BPM.Client调用(.NET)
C#示例:
var jb = new
{
    Payload = new
    {
        部门 = "易正",
        申请日期 = DateTime.Now
    }
};
var client = YiezClientFactory.Create(new YiezOptions
{
    Endpoint = "https://localhost:6001",
    ClientKey = "system",
    ClientSecret = "6YmtHPNi0Ks6u8yzz6fGglhdoGzsSloz",
});
var reply = await client.ESBExecuteService.RunAsync(new RunESBRequest
{
    EsbId = "3a116c78-1e0a-a575-8f40-0984a5207c03",
    Input = System.Text.Json.JsonSerializer.Serialize(jb),
    Uid = "sa",
});
var jOutput = System.Text.Json.JsonSerializer.SerializeToNode(reply.Output).AsObject();
var jResponse = jOutput["Response"];
var poid = (string)jResponse["PurchaseOrderId"];
# 5. 接口文档参考
完整的OpenAPI文档可通过访问BPM引擎的OpenAPI页面获取:
https://{your_bpm_host}:{port}/OpenAPI
通过以上两种方式,外部系统可以方便地调用BPM平台中的ESB服务,实现系统间的数据集成和业务流程协同。