# 跨系统数据合并

# 一、功能概述

实现从主系统获取基础数据后,自动从其他系统关联补充相关信息,合并生成完整数据集。本示例演示从报价系统获取价格列表后,从供应商系统补充供应商详细信息。

# 二、配置步骤

# 1. 创建基础数据源

  1. 进入ESB管理界面 → "流程库" → "ESB数据源"

  2. 点击"添加"新建数据源

  3. 拖入SQL Select节点:

    • 数据源:DemoData
    • SQL:SELECT * FROM idemo_price_list

    配置SQL语句 ▲ 配置SQL语句

  4. 配置返回字段(右键rows编辑):

    {
      "供应商编号": "字符串",
      "采购物品": "字符串",
      "价格": "数字",
      "供应商名称": "字符串",  // 新增字段
      "联系人": "字符串"      // 新增字段
    }
    
  5. 字段映射:将查询结果字段连线到对应字段

    配置字段映射 ▲ 配置字段映射

# 2. 配置数据合并

  1. 拖入循环节点:

    • 循环对象:Response.rows
    • 条目变量名:row
    • 索引变量名:rowIndex

    配置循环节点 ▲ 配置循环节点

  2. 在循环内拖入SQL Select节点:

    • 数据源:DemoData
    • SQL:SELECT * FROM idemo_vendor WHERE vendor_code=@vendorCode

    配置SQL语句 ▲ 配置SQL语句

  3. 调用配置:

    • row.供应商编号连线到QueryParams.vendorCode

    调用配置 ▲ 调用配置

  4. 返回配置:

    • 修改返回代码为:
      {
        "供应商名称": "(Result.rows[0] || {}).name",
        "联系人": "(Result.rows[0] || {}).contact"
      }
    
    • 将返回字段连线到row对应字段

    返回配置 ▲ 返回配置

# 3. 完成配置

  1. 拖入结束循环节点
  2. 重命名节点:
    • 第一个SQL节点:Price List
    • 第二个SQL节点:Vendor
  3. 保存数据源(示例名称:"供应商报价")

跨系统合并实现示例图 ▲ 跨系统合并实现示例图

# 三、执行测试

  1. 点击"测试"按钮

  2. 验证结果应包含:

    • 原始价格字段
    • 补充的供应商名称和联系人字段

    测试结果示例 ▲ 测试结果示例

# 四、关键配置说明

  1. 循环配置

    • Response.rows表示对主查询结果逐行处理
    • 每次循环会将当前行存入row变量
  2. 关联查询

    • 使用@vendorCode参数化查询确保安全
    • (Result.rows[0] || {})语法处理查询为空的情况
  3. 数据回填

    • 通过修改循环变量row实现数据合并
    • 所有修改会最终反映在主查询结果中

# 五、生产环境建议

  1. 将演示用的SQL节点替换为实际系统集成节点(如SAP、Oracle等)
  2. 大数据量处理建议:
    • 添加分页处理
    • 考虑使用批量查询替代逐行查询

# 附录:典型应用场景

  1. 采购订单+供应商信息合并
  2. 销售订单+客户信息合并
  3. 物流单+货物跟踪信息合并
  4. 财务报表+预算数据对比