# 跨系统数据合并

# 1. 功能概述

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

# 2. 配置步骤

# 2.1 创建基础数据源

  1. 进入ESB管理界面 → "流程库" → "ESB数据源"
  2. 点击"添加"新建数据源
  3. 拖入SQL Select节点:
    • 数据源:DemoData
    • SQL:SELECT * FROM idemo_price_list

配置SQL语句 ▲ 配置SQL语句

  1. 配置返回字段(右键rows编辑):
    {
      "供应商编号": "字符串",
      "采购物品": "字符串",
      "价格": "数字",
      "供应商名称": "字符串",  // 新增字段
      "联系人": "字符串"      // 新增字段
    }
    
  2. 字段映射:将查询结果字段连线到对应字段

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

# 2.2 配置数据合并

  1. 拖入循环节点:
    • 循环对象:Response.rows
    • 条目变量名:row
    • 索引变量名:rowIndex

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

  1. 在循环内拖入SQL Select节点:
    • 数据源:DemoData
    • SQL:SELECT * FROM idemo_vendor WHERE vendor_code=@vendorCode

配置SQL语句 ▲ 配置SQL语句

  1. 调用配置:
    • row.供应商编号连线到QueryParams.vendorCode

调用配置 ▲ 调用配置

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

返回配置 ▲ 返回配置

# 2.3 完成配置

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

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

# 3. 执行测试

  1. 点击"测试"按钮
  2. 验证结果应包含:
    • 原始价格字段
    • 补充的供应商名称和联系人字段

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

# 4. 关键配置说明

  1. 循环配置

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

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

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

# 5. 生产环境建议

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

# 附录:典型应用场景

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