# 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 访问路径

  1. 新建ESB数据源 → 选中Listener节点 → 查看"请求格式"

# 3.2 结构组成

{
  "Paging": {
    // 分页查询固定参数(不可编辑)
  },
  "Parameters": {
    // 自定义业务参数(可编辑)
  }
}

# 3.3 参数配置示例

  • 删除默认column3
  • 重命名:
    • column1 → "供应商所属大区"
    • column2 → "关键字查询"

Listener请求参数配置示例 ▲ Listener请求参数配置示例

# 4. 输出结构

# 4.1 访问路径

选中Response节点 → 切换到"返回"页签

# 4.2 默认结构

{
  "total": 0,  // 符合条件的数据总行数
  "rows": [
    {
      "column1": "",
      "column2": "",
      "column3": ""
    }
  ]
}

# 4.3 配置示例

{
  "rows": [
    {
      "供应商编号": "",
      "企业名称": "",
      "联系人": "",
      "所属大区": ""  
    }
  ]
}

Response返回参数配置示例 ▲ 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节点示例 ▲ SQL节点示例

# 5.3 参数映射

ESB输入参数 SQL参数
供应商所属大区 @bu
关键字查询 @keyword

参数映射 ▲ 参数映射

# 6. 变量系统

# 6.1 变量类型

类型 说明
Variables 用户自定义的中间变量
SystemVariables 系统预置变量(不可修改)

# 6.2 多节点协作示例

场景:通过账号查询所属大区,再用大区过滤供应商 多节点协作示例图

▲ 多节点协作示例图

  1. 第一步节点(查询大区):
    SELECT office AS bu FROM bpm_org_user 
    WHERE account=@account
    

根据账号查询大区 ▲ 根据账号查询大区

  • 连接:Result.rows.buVariables.bu

把查询到的大区存储到变量bu中 ▲ 把查询到的大区存储到变量bu中

  1. 第二步节点(查询供应商):
    • 使用变量:Variables.bu → SQL参数@bu

把变量bu连接SQL参数bu ▲ 把变量bu连接SQL参数bu

# 6.3 变量赋值语法

// 处理空结果情况
Result.rows.length ? Result.rows[0].bu : null

处理空结果情况 ▲ 处理空结果情况

# 7. 系统变量说明

  • 位置:SystemVariables对象下
  • 特点:
    • 系统自动生成
    • 不可编辑/删除
    • 包含运行时环境信息

# 8. 测试验证

  1. 输入账号 → 自动查询对应大区 → 过滤供应商
  2. 修改账号所属大区后:
    • 华东区 → 只显示华东供应商
    • 华北区 → 只显示华北供应商

# 9. 最佳实践

  1. 单节点流程:直接使用输入输出映射
  2. 多节点流程:使用Variables传递中间结果
  3. 系统参数:通过SystemVariables获取
  4. 分页处理:使用固定Paging结构