BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

昨天在整理BizTalk 2010版本中所支持的适配器时,发现官方文档中描述的对Oracle数据库的支持有误,没有写出对Oracle 11g版本的支持,感觉很confuse,所以下载了一个11g测试一下。

这两天有点小忙,就不做过多的文字描述了。


测试结果

经过测试,目前BizTalk支持的Oracle数据库版本如下:

  • Oracle Database 11.1
  • Oracle Database 10.2
  • Oracle Database 10.1
  • Oracle Database 9.2
  • Oracle Data Access Components for Oracle Client 11.1.0.6 with Patch Set 11.1.0.7
  • Oracle Data Access Components for Oracle Client 11.1.0.7

安装Oracle 11g Release 2

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD


创建BizTalk Adapter for Oracle

1. 创建一个BizTalk Project,并添加一个适配器服务的生成项。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

2. 在配置窗口当中配置Oracle的连接字符串以及相关其他参数。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

3. 连接Oracle数据库,并配置增、删、改查操作。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

4. 创建完成

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD


创建测试消息实例

通过BizTalk适配器,我们创建了4个消息架构,在部署之后BizTalk会根据消息中的内容来在Oracle中进行增、删、改、查操作。

Select

<ns0:Select xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/HR/Table/EMPLOYEES"> <ns0:COLUMN_NAMES>COLUMN_NAMES_0</ns0:COLUMN_NAMES> <ns0:FILTER>FILTER_0</ns0:FILTER> </ns0:Select>

Update

<ns0:Update xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/HR/Table/EMPLOYEES"> <ns0:RECORDSET> <ns0:EMPLOYEE_ID>70</ns0:EMPLOYEE_ID> <ns0:FIRST_NAME>FIRST_NAMEFIRST_NAME</ns0:FIRST_NAME> <ns0:LAST_NAME>LAST_NAMELAST_NAMELAST_NA</ns0:LAST_NAME> <ns0:EMAIL>EMAILEMAILEMAILEMAILEMAIL</ns0:EMAIL> <ns0:PHONE_NUMBER>PHONE_NUMBERPHONE_NU</ns0:PHONE_NUMBER> <ns0:HIRE_DATE>1999-05-31T13:20:00.000-05:00</ns0:HIRE_DATE> <ns0:JOB_ID>JOB_IDJOB_</ns0:JOB_ID> <ns0:SALARY>4</ns0:SALARY> <ns0:COMMISSION_PCT>32</ns0:COMMISSION_PCT> <ns0:MANAGER_ID>2</ns0:MANAGER_ID> <ns0:DEPARTMENT_ID>81</ns0:DEPARTMENT_ID> </ns0:RECORDSET> <ns0:FILTER>FILTER_0</ns0:FILTER> </ns0:Update>

Insert

<ns0:Insert xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/HR/Table/EMPLOYEES"> <ns0:RECORDSET> <ns0:EMPLOYEESRECORDINSERT> <ns0:EMPLOYEE_ID InlineValue="InlineValue_0">10.4</ns0:EMPLOYEE_ID> <ns0:FIRST_NAME InlineValue="InlineValue_0">FIRST_NAME_0</ns0:FIRST_NAME> <ns0:LAST_NAME InlineValue="InlineValue_0">LAST_NAME_0</ns0:LAST_NAME> <ns0:EMAIL InlineValue="InlineValue_0">EMAIL_0</ns0:EMAIL> <ns0:PHONE_NUMBER InlineValue="InlineValue_0">PHONE_NUMBER_0</ns0:PHONE_NUMBER> <ns0:HIRE_DATE InlineValue="InlineValue_0">1999-05-31T13:20:00.000-05:00</ns0:HIRE_DATE> <ns0:JOB_ID InlineValue="InlineValue_0">JOB_ID_0</ns0:JOB_ID> <ns0:SALARY InlineValue="InlineValue_0">10.4</ns0:SALARY> <ns0:COMMISSION_PCT InlineValue="InlineValue_0">10.4</ns0:COMMISSION_PCT> <ns0:MANAGER_ID InlineValue="InlineValue_0">10.4</ns0:MANAGER_ID> <ns0:DEPARTMENT_ID InlineValue="InlineValue_0">10.4</ns0:DEPARTMENT_ID> </ns0:EMPLOYEESRECORDINSERT> </ns0:RECORDSET> <ns0:COLUMN_NAMES>COLUMN_NAMES_0</ns0:COLUMN_NAMES> <ns0:QUERY>QUERY_0</ns0:QUERY> </ns0:Insert>

Delete

<ns0:Delete xmlns:ns0="http://Microsoft.LobServices.OracleDB/2007/03/HR/Table/EMPLOYEES"> <ns0:FILTER>FILTER_0</ns0:FILTER> </ns0:Delete>

部署BizTalk Project

1. 使用File适配器配置接收端口,使用WCF-Oralce适配器配置发送端口,具体方法与上一篇配置SQL的类似。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

2. [查看] 在Oracle当中创建一个工作人员表,在其创建几个员工信息,之后实例化一个查询名叫King的员工信息的消息。

<Select xmlns="http://Microsoft.LobServices.OracleDB/2007/03/HR/Table/EMPLOYEES"> <COLUMN_NAMES>*</COLUMN_NAMES> <FILTER>where LAST_NAME='King'</FILTER> </Select>

3. 把上述消息扔到In文件夹中,经过BizTalk处理后,会按照消息中的条件到Oracle数据库中查询到King的信息并以XML的格式返回给Out文件夹。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

4. 看一下在数据库当中King的员工信息。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

5. [更新] 创建一个用来跟新数据库的XML消息,将其扔到In文件夹当中,BizTalk会根据消息来对Oracle数据库中相应的消息进行更新操作。

<Update xmlns="http://Microsoft.LobServices.OracleDB/2007/03/HR/Table/EMPLOYEES"> <RECORDSET> <EMAIL>JAKING</EMAIL> </RECORDSET> <FILTER>EMPLOYEE_ID=156</FILTER> </Update>

6. 在数据库中查看更新结果。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

7. [插入] 创建一个将要插入到数据库的消息,并扔到In文件夹中,BizTalk根据消息内容将其插入到员工表当中。

<Insert xmlns="http://Microsoft.LobServices.OracleDB/2007/03/HR/Table/EMPLOYEES"> <RECORDSET> <EMPLOYEESRECORDINSERT> <EMPLOYEE_ID>207</EMPLOYEE_ID> <FIRST_NAME>Steef-Jan</FIRST_NAME> <LAST_NAME>Wiggers</LAST_NAME> <EMAIL>SWIGGERS</EMAIL> <PHONE_NUMBER>0123456789</PHONE_NUMBER> <HIRE_DATE>1999-05-31</HIRE_DATE> <JOB_ID>IT_PROG</JOB_ID> <SALARY>100000</SALARY> <COMMISSION_PCT>0.35</COMMISSION_PCT> <MANAGER_ID>100</MANAGER_ID> <DEPARTMENT_ID>60</DEPARTMENT_ID> </EMPLOYEESRECORDINSERT> </RECORDSET> </Insert>

8. 数据库的测试结果。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

9. [删除] 创建一个消息,将该消息扔到In文件夹当中,经过BizTalk处理之后,会根据消息中的内容删除Oracle数据库中的消息。

<Delete xmlns="http://Microsoft.LobServices.OracleDB/2007/03/HR/Table/EMPLOYEES"> <FILTER>EMPLOYEE_ID=207</FILTER> </Delete>

10. 数据库的测试结果。

BizTalk Adapter Pack for Oracle 实现Oracle 11g的CRUD

测试完成,测试结果证明BizTalk Server 2010中的适配器完全支持Oracle 11g Release 2版本,文章中没有浪费时间说太多,有没写清楚的地方请谅解,并可以在下方评论处一起交流。