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