# 跨系统数据合并
# 1. 功能概述
实现从主系统获取基础数据后,自动从其他系统关联补充相关信息,合并生成完整数据集。本示例演示从报价系统获取价格列表后,从供应商系统补充供应商详细信息。
# 2. 配置步骤
# 2.1 创建基础数据源
- 进入ESB管理界面 → "流程库" → "ESB数据源"
- 点击"添加"新建数据源
- 拖入
SQL Select节点:- 数据源:DemoData
- SQL:
SELECT * FROM idemo_price_list
▲ 配置SQL语句
- 配置返回字段(右键rows编辑):
{ "供应商编号": "字符串", "采购物品": "字符串", "价格": "数字", "供应商名称": "字符串", // 新增字段 "联系人": "字符串" // 新增字段 } - 字段映射:将查询结果字段连线到对应字段
▲ 配置字段映射
# 2.2 配置数据合并
- 拖入
循环节点:- 循环对象:
Response.rows - 条目变量名:
row - 索引变量名:
rowIndex
- 循环对象:
▲ 配置循环节点
- 在循环内拖入
SQL Select节点:- 数据源:DemoData
- SQL:
SELECT * FROM idemo_vendor WHERE vendor_code=@vendorCode
▲ 配置SQL语句
- 调用配置:
- 将
row.供应商编号连线到QueryParams.vendorCode
- 将
▲ 调用配置
- 返回配置:
- 修改返回代码为:
{ "供应商名称": "(Result.rows[0] || {}).name", "联系人": "(Result.rows[0] || {}).contact" } - 将返回字段连线到
row对应字段
- 修改返回代码为:
▲ 返回配置
# 2.3 完成配置
- 拖入
结束循环节点 - 重命名节点:
- 第一个SQL节点:
Price List - 第二个SQL节点:
Vendor
- 第一个SQL节点:
- 保存数据源(示例名称:"供应商报价")
▲ 跨系统合并实现示例图
# 3. 执行测试
- 点击"测试"按钮
- 验证结果应包含:
- 原始价格字段
- 补充的供应商名称和联系人字段
▲ 测试结果示例
# 4. 关键配置说明
循环配置:
Response.rows表示对主查询结果逐行处理- 每次循环会将当前行存入
row变量
关联查询:
- 使用
@vendorCode参数化查询确保安全 (Result.rows[0] || {})语法处理查询为空的情况
- 使用
数据回填:
- 通过修改循环变量
row实现数据合并 - 所有修改会最终反映在主查询结果中
- 通过修改循环变量
# 5. 生产环境建议
- 将演示用的SQL节点替换为实际系统集成节点(如SAP、Oracle等)
- 大数据量处理建议:
- 添加分页处理
- 考虑使用批量查询替代逐行查询
# 附录:典型应用场景
- 采购订单+供应商信息合并
- 销售订单+客户信息合并
- 物流单+货物跟踪信息合并
- 财务报表+预算数据对比