⌘CtrlK
Appearance
Appearance
本节讲述了用户发送数据查询请求给ESB,ESB中介根据用户的请求对数据库进行操作,查询用户所需数据,并返回给用户。
本示例数据库操作对象为Oracle,表名USERINFO,数据如下所示。
![]()
打开ESB Studio目录\server\EOS_srv\config下user-config.xml,修改<group name = “default">下内容为如下所示。

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

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

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

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

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

创建中介服务。

创建HTTP代理服务。

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

说明
添加数据库连接。在数据库资源管理器界面,右键“连接”—新建数据库连接。操作完成如下所示。

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


Transport选择公共module里面的Transport,URL是最后访问ESB服务的路径,关联服务选择中介服务,服务名称选择前面创建的中介。



说明





启动ESB Server。
![]()
服务启动成功如下所示。

启动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>运行结果如下所示。

根据构件库中的几个操作数据库的类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 version="1.0" encoding="UTF-8"?>
<data name="">
<table>
<row>
<column><name> </name><value> </value></column>
</row>
......
</table>
<out> </out>
</data><?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 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><?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>{
"@name": "",
"@nameSqlId": "",
"@datasource": "",
"xpath": "",
"property": "",
"index": "",
"isCheckEntityType": "",
"parameterObject": {
"@style": "",
"row": {
"key": "",
"value": ""
}
},
"table": {
"th": {
"columnName": ""
},
"row": {
"column": ""
}
},
"begin": "",
"length": "",
"pagecond": "",
"where": {
"column": {
"name": "",
"value": ""
}
}
}{
"@name": "",
"table": {
"th": {
"columnName": []
},
"row": {
"column": []
}
},
"out": []
}{
"@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"]
]
}
}{
"@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"]
}
}{
"@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"
}
}