ESB文档库 ESB文档库
00 概述
01 产品安装指南
02 快速入门指南
03 ESB Studio使用指南
04 企业服务总线使用指南
05 高级配置指南
06 接口服务说明
07 升级&数据迁移指南
08 FAQ
  • 数据库准备
  • ESB Studio配置数据库连接
  • 创建ESB项目
  • 运行测试
  • 消息格式
  • XML格式规定
  • XML输入格式
  • XML输出格式
  • xml数据示例
  • xml数据体示例
  • xml条件示例
  • xmlparameter参数示例
  • JSON格式规定
  • JSON输入格式
  • JSON输出格式
  • json数据示例
  • json数据体示例
  • JSON条件示例
  • parameter参数示例

本节讲述了用户发送数据查询请求给ESB,ESB中介根据用户的请求对数据库进行操作,查询用户所需数据,并返回给用户。

# 数据库准备

本示例数据库操作对象为Oracle,表名USERINFO,数据如下所示。

# ESB Studio配置数据库连接

打开ESB Studio目录\server\EOS_srv\config下user-config.xml,修改<group name = “default">下内容为如下所示。

本示例要求ESB访问oracle数据库,配置数据源为oracle,用户根据实际需要配置,参考帮助文档数据源配置。

# 创建ESB项目

  1. 新建ESB项目。

  2. 单击“下一步”,选择添加系统引用库。

  3. 将富页面框架和基础构件库加入项目。

  4. 右键项目,创建公共Module和业务Module,操作完成如下所示。

  5. 创建HTTP类型Transport,如下图所示。

  6. 创建中介服务。

  7. 创建HTTP代理服务。

  8. HTTP代理服务编辑页面如下所示。

    说明

  • Transport选择公共module里面的Transport,URL是最后访问ESB服务的路径,关联服务选择中介服务,服务名称选择前面创建的中介。
  1. 添加数据库连接。在数据库资源管理器界面,右键“连接”—新建数据库连接。操作完成如下所示。

  2. 创建数据集。在业务Module—数据集菜单上,右键新建数据集。

Transport选择公共module里面的Transport,URL是最后访问ESB服务的路径,关联服务选择中介服务,服务名称选择前面创建的中介。
  1. 导入数据实体。从数据库资源管理器中将所要访问的数据表直接拖到数据集页面。

  1. 显示构件库视图。选择“窗口 > 显示视图 > 其他 > ESB开发 > 构件库”,显示构件视图,如下图所示。

  1. 构件详情查看构件库,或者鼠标停留响应构件上查看相关信息。

  1. 编排中介。中介实现逻辑:中介解析xml请求,根据请求中的where节点数据查询数据库,然后把查询结果返回。打开中介服务,单击面板上的“服务编排”,从构件库选择添加以下图元。

说明
  • parseWhere图元解析ESB消息体中的where节点,将Where节点内容解析转换成DataObject。
  • queryEntitiesByTemplate图元根据SDO数据模板查询条件(也就是parseWhere获得查询条件)查询所有记录。
  • createXMLToITipMessagePayload图元将查询结果DataObject[]数组中的数据转换成ITipMessagePayload消息。
  1. 双击编辑区空白处,查看中介的输入输出参数,如下图所示。

  1. 双击parseWhere图元,编辑参数。

  1. 双击queryEntitiesByTemplate图元,编辑参数。

  1. 双击createXMLToITipMessagePayload图元,编辑参数。

  1. 中介编排完成,点击保存。项目如下所示。

# 运行测试

  1. 启动ESB Server。

  2. 服务启动成功如下所示。

  3. 启动SOAPUI,新建请求,编辑访问地址(此处访问地址为代理服务设置的URL),设置xml请求如下:(查询数据库中id=1001的字段)

<?xml version="1.0" encoding="UTF-8"?>
<data name="com.primeton.esb.projectdata.restaurant.data.newdataset.Userinfo">
<where>
<column><name>userid</name><value>1</value></column>
</where>
</data>
  1. 运行结果如下所示。

# 消息格式

# XML格式规定

# XML输入格式

根据构件库中的几个操作数据库的类DataObjectUtil、DatabaseUtil、DataContextUtil、DatabaseExt、CriteriaUtil几个类,从中抽取出比较常用的输入参数形成统一的格式。

<?xml version="1.0" encoding="UTF-8"?>
<data name="" nameSqlId="" datasource="">
   <xpath> </xpath>
   <property> </property>
       <index> </index>
       <isCheckEntityType> </isCheckEntityType>
       <parameterObject style = "base/map">
          <row>
          <key> </key>
           <value> </value>
          </row>
       </parameterObject>
   <table name="">
       <th>
          <columnName> </columnName>
       </th>
       <row>
          <column> </column>
       </row>
       ......
   </table>
   <begin> </begin>
       <length> </length>
       <pagecond> </pagecond>
   <where>
       <column><name> </name><value> </value></column>
       .....
   </where>
</data>
节点 说明
data 文档的根节点。
name:数据集中所引用的实体全名称
nameSqlId :命名SQL的唯一标识
datasource :数据源名称
table 用于形成DataObjcet中的数据,由于可能有多个DataObjet数据形成数组这里使用row标记来分隔各个DataObject的数据。row节点有多个column节点,这个节点表示数据表中每一列的数据。
where 形成用于作为条件的DataObjet。一般条件只有一个DataObjcet,所以这里只有一个column节点。
xpath 代表SDO数组或者list所在xpath例如criteria/expr[1]/id
property 代表SDO的属性名。
parameterObject 作为一些基本参数可以是一个HashMap,或者基本类型的值,这个节点在DatabaseExt的countByNamedSql中用到。
index 代表需要插入的位置,这个节点在DataContextUtil的insertObject中用到。
isCheckEntityType 代表缺省false:不检查将要添加的SDO对象实体名称和SDO数组或者list中的已有元素的实体名称是否匹配; true:检查是否匹配。如果是向SDO数组或list添加第一个元素,则自动忽略检查。这个节点在DataContextUtil的appendObject中用到
begin 代表开始记录编号(从0开始)。在DatabaseUtil的queryEntitiesByTemplate中用到。
length 代表length查询记录数量。在DatabaseUtil的queryEntitiesByTemplate中用到。
pagecond 代表分页条件,这个节点在DatabaseExt的commonQueryWithPage中用到,用户设置分页PageCond对象的属性,包括从第几条记录开始(begin)、查询多少条记录(length)、是否统计总记录数(isCount),传入分页查询逻辑。

# XML输出格式

返回的数据主要有两种。

  1. DataObject数组使用table节点来表示。
  2. out节点表示各种基本数据返回值。
<?xml version="1.0" encoding="UTF-8"?>
<data name="">
   <table>
       <row>
          <column><name> </name><value> </value></column>
       </row>
       ......
   </table>
       <out> </out>
</data>

# xml数据示例

# xml数据体示例

<?xml version="1.0" encoding="UTF-8"?>
<data name="com.primeton.esb.project.restaurant.data.newdataset.Eostable">
   <table name="com.primeton.esb.project.restaurant.data.newdataset.Eostable">
       <th>
          <columnName>tableid</columnName>
          <columnName>tablename</columnName>
          <columnName>age</columnName>
          <columnName>sex</columnName>
       </th>
       <row>
          <column>1</column>
          <column>zhangsan</column>
          <column>34</column>
          <column>n</column>
       </row>
       <row>
          <column>2</column>
          <column>lisi</column>
          <column>22</column>
          <column>y</column>
       </row>
       <row>
          <column>3</column>
          <column>wangwu</column>
          <column>45</column>
          <column>n</column>
       </row>
   </table>
</data>

# xml条件示例

<?xml version="1.0" encoding="UTF-8"?>
<data name="com.primeton.esb.project.restaurant.data.newdataset.Eostable">
   <table name="com.primeton.esb.project.restaurant.data.newdataset.Eostable">
       <th>
          <columnName>tableid</columnName>
          <columnName>tablename</columnName>
          <columnName>age</columnName>
          <columnName>sex</columnName>
       </th>
       <row>
          <column>1</column>
          <column>zhangsan</column>
          <column>34</column>
          <column>n</column>
       </row>
   </table>
   <where>
       <column><name>tableid</name><value>5</value></column>
   </where>
</data>

# xmlparameter参数示例

<?xml version="1.0" encoding="UTF-8"?>
<data name="com.primeton.esb.project.restaurant.data.newdataset.Eostable">
   <parameterObject style="map">
          <row>
              <key>tableid</key><value>1</value>
          </row>
          <row>
              <key>tablename</key><value>zhangsan</value>
          </row>
       </parameterObject>
</data>
<?xml version="1.0" encoding="UTF-8"?>
<data name="com.primeton.esb.project.restaurant.data.newdataset.Eostable">
  <parameterObject style="base">
      hello
      </parameterObject>
</data>

# JSON格式规定

# JSON输入格式

{
  "@name": "",
  "@nameSqlId": "",
  "@datasource": "",
  "xpath": "",
  "property": "",
  "index": "",
  "isCheckEntityType": "",
  "parameterObject": {
    "@style": "",
    "row": {
      "key": "",
      "value": ""
    }
  },
  "table": {
    "th": {
      "columnName": ""
    },
    "row": {
      "column": ""
    }
  },
  "begin": "",
  "length": "",
  "pagecond": "",
  "where": {
    "column": {
      "name": "",
      "value": ""
    }
  }
}

# JSON输出格式

{
  "@name": "",
  "table": {
    "th": {
      "columnName": []
    },
    "row": {
      "column": []
    }
  },
  "out": []
}

# json数据示例

# json数据体示例

{
  "@name": "com.primeton.esb.project.restaurant.data.newdataset.Eostable",
  "table": {
    "@name": "com.primeton.esb.project.restaurant.data.newdataset.Eostable",
    "th": ["tableid", "tablename", "age", "sex"],
    "row": ["1", "zhangsan", "34", "n"]
  }
}
{
  "@name": "com.primeton.esb.project.restaurant.data.newdataset.Eostable",
  "table": {
    "@name": "com.primeton.esb.project.restaurant.data.newdataset.Eostable",
    "th": ["tableid", "tablename", "age", "sex"],
    "row": [
      ["1", "zhangsan", "22", "n"],
      ["2", "lisi", "23", "y"],
      ["3", "wangwu", "32", "n"]
    ]
  }
}

# JSON条件示例

{
  "@name": "com.primeton.esb.project.restaurant.data.newdataset.Eostable",
  "where": {
    "column": {
      "name": "tableid",
      "value": "1"
    }
  },
  "table": {
    "@name": "com.primeton.esb.project.restaurant.data.newdataset.Eostable",
    "th": ["tableid", "tablename", "age", "sex"],
    "row": ["1", "ssss", "55", "n"]
  }
}

# parameter参数示例

{
  "@name": "com.primeton.esb.project.restaurant.data.newdataset.Eostable",
  "parameterObject": {
    "@style": "map",
    "row": {
      "tableid": "1",
      "tablename": "json"
    }
  }
}
{
  "@name": "com.primeton.esb.project.restaurant.data.newdataset.Eostable",
  "parameterObject": {
    "@style": "base",
    "row": "zhangsan"
  }
}

← 3.5.13 HTTP-TUXEDO协议示例 3.6.1 组件开发 →