# 第三方系统调用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服务,实现系统间的数据集成和业务流程协同。