# ESB数据源输入、输出
# 一、 ESB基础概念
- ESB本质:通过配置方式实现的数据服务函数。
- 核心要素:
- 输入参数(请求格式)。
- 输出结构(响应格式)。
- 内部变量(中间运算结果)。
# 二、 环境说明
# 演示数据库
- 数据库名称:DemoData。
- 访问权限:云上公开数据库,所有用户均可连接使用。
- 设计目的:
- 提供标准化的演示环境。
- 替代企业级SAP系统进行教学演示。
- 确保所有学习者都能复现示例。
# 已预置的主要数据表
-- 供应商表(演示过滤查询),DemoData数据库中的表
SELECT * FROM idemo_vendor;
-- 组织用户表(演示变量传递),BPM系统数据库中的表
SELECT account, office FROM bpm_org_user;
# 三、 输入结构
# 1. 访问路径
- 新建ESB数据源 → 选中Listener节点 → 查看"请求格式"。
# 2. 结构组成
{
"Paging": {
// 分页查询固定参数(不可编辑)
},
"Parameters": {
// 自定义业务参数(可编辑)
}
}
# 3. 参数配置示例
- 删除默认column3。
- 重命名:
- column1 → "供应商所属大区"。
- column2 → "关键字查询"。
▲ Listener请求参数配置示例
# 四、 输出结构
# 1. 访问路径
选中Response节点 → 切换到"返回"页签。
# 2. 默认结构
{
"total": 0, // 符合条件的数据总行数
"rows": [
{
"column1": "",
"column2": "",
"column3": ""
}
]
}
# 3. 配置示例
{
"rows": [
{
"供应商编号": "",
"企业名称": "",
"联系人": "",
"所属大区": ""
}
]
}
▲ Response返回参数配置示例
# 五、 数据传递机制
# 1. 节点连接原理
[ESB输入参数] → [集成节点参数] → [节点返回数据] → [ESB输出结构]
▲ 单节点示例图
# 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节点示例
# 3. 参数映射
| ESB输入参数 | SQL参数 |
|---|---|
| 供应商所属大区 | @bu |
| 关键字查询 | @keyword |
▲ 参数映射
# 六、 变量系统
# 1. 变量类型
| 类型 | 说明 |
|---|---|
| Variables | 用户自定义的中间变量 |
| SystemVariables | 系统预置变量(不可修改) |
# 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
# 3. 变量赋值语法
// 处理空结果情况
Result.rows.length ? Result.rows[0].bu : null
▲ 处理空结果情况
# 七、 系统变量说明
- 位置:SystemVariables对象下。
- 特点:
- 系统自动生成。
- 不可编辑/删除。
- 包含运行时环境信息。
# 八、 测试验证
- 输入账号 → 自动查询对应大区 → 过滤供应商。
- 修改账号所属大区后:
- 华东区 → 只显示华东供应商。
- 华北区 → 只显示华北供应商。
# 九、 最佳实践
- 单节点流程:直接使用输入输出映射。
- 多节点流程:使用Variables传递中间结果。
- 系统参数:通过SystemVariables获取。
- 分页处理:使用固定Paging结构。