# ESB数据源输入、输出
# 1. ESB基础概念
- ESB本质:通过配置方式实现的数据服务函数
- 核心要素:
- 输入参数(请求格式)
- 输出结构(响应格式)
- 内部变量(中间运算结果)
# 2. 环境说明
# 2.1 演示数据库
- 数据库名称:DemoData
- 访问权限:云上公开数据库,所有用户均可连接使用
- 设计目的:
- 提供标准化的演示环境
- 替代企业级SAP系统进行教学演示
- 确保所有学习者都能复现示例
# 2.1 已预置的主要数据表
-- 供应商表(演示过滤查询),DemoData数据库中的表
SELECT * FROM idemo_vendor;
-- 组织用户表(演示变量传递),BPM系统数据库中的表
SELECT account, office FROM bpm_org_user;
# 3. 输入结构
# 3.1 访问路径
- 新建ESB数据源 → 选中Listener节点 → 查看"请求格式"
# 3.2 结构组成
{
"Paging": {
// 分页查询固定参数(不可编辑)
},
"Parameters": {
// 自定义业务参数(可编辑)
}
}
# 3.3 参数配置示例
- 删除默认column3
- 重命名:
- column1 → "供应商所属大区"
- column2 → "关键字查询"
▲ Listener请求参数配置示例
# 4. 输出结构
# 4.1 访问路径
选中Response节点 → 切换到"返回"页签
# 4.2 默认结构
{
"total": 0, // 符合条件的数据总行数
"rows": [
{
"column1": "",
"column2": "",
"column3": ""
}
]
}
# 4.3 配置示例
{
"rows": [
{
"供应商编号": "",
"企业名称": "",
"联系人": "",
"所属大区": ""
}
]
}
▲ Response返回参数配置示例
# 5. 数据传递机制
# 5.1 节点连接原理
[ESB输入参数] → [集成节点参数] → [节点返回数据] → [ESB输出结构]

▲ 单节点示例图
# 5.2 SQL节点示例
-- 带参数查询示例
SELECT * FROM idemo_vendor
WHERE (bu=@bu OR @bu IS NULL)
AND (@keyword IS NULL
OR name LIKE N'%' + @keyword + '%'
OR contact LIKE N'%' + @keyword + '%')
▲ SQL节点示例
# 5.3 参数映射
| ESB输入参数 | SQL参数 |
|---|---|
| 供应商所属大区 | @bu |
| 关键字查询 | @keyword |
▲ 参数映射
# 6. 变量系统
# 6.1 变量类型
| 类型 | 说明 |
|---|---|
| Variables | 用户自定义的中间变量 |
| SystemVariables | 系统预置变量(不可修改) |
# 6.2 多节点协作示例
场景:通过账号查询所属大区,再用大区过滤供应商

▲ 多节点协作示例图
- 第一步节点(查询大区):
SELECT office AS bu FROM bpm_org_user WHERE account=@account
▲ 根据账号查询大区
- 连接:
Result.rows.bu→Variables.bu
▲ 把查询到的大区存储到变量bu中
- 第二步节点(查询供应商):
- 使用变量:
Variables.bu→ SQL参数@bu
- 使用变量:
▲ 把变量bu连接SQL参数bu
# 6.3 变量赋值语法
// 处理空结果情况
Result.rows.length ? Result.rows[0].bu : null
▲ 处理空结果情况
# 7. 系统变量说明
- 位置:SystemVariables对象下
- 特点:
- 系统自动生成
- 不可编辑/删除
- 包含运行时环境信息
# 8. 测试验证
- 输入账号 → 自动查询对应大区 → 过滤供应商
- 修改账号所属大区后:
- 华东区 → 只显示华东供应商
- 华北区 → 只显示华北供应商
# 9. 最佳实践
- 单节点流程:直接使用输入输出映射
- 多节点流程:使用Variables传递中间结果
- 系统参数:通过SystemVariables获取
- 分页处理:使用固定Paging结构