要在VS2008中使用BizTalk Adapter Pack 2.0中的适配器开发biztalk项目,必须在安装WCF LOB SDK时选择安装BizTalk add-in for Visual Studio。要安装此add-in,必须使用定制安装或完全安装WCF LOB Adapter SDK。
在定制安装的选项中,选择BizTalk Server Addin。并且在安装WCF LOB Adapter SDK前,VS2008必须已经安装。
这里使用一个例子来说明如何使用WCF_SQL adapter。
系统A有个雇员表Employees,结构如下:
字段 |
类型 |
说明 |
ID |
int |
自增长id |
Name |
nvarchar(50) |
姓名 |
Age |
int |
年龄 |
Gender |
int |
性别 |
New |
bit |
是否新增 |
当有新雇员加入到此表,New字段先置为1,表示是新增的雇员。这张雇员表要传到系统B的雇员表EmployeesTarget,表结构跟上面的雇员表一样,只是少了New字段。
Biztalk要做的是使用WCF_SQL adapter读取系统A的雇员表Employees中的新增雇员,同时将New字段置为0,然后将新增的雇员写入到系统B的雇员表EmployeesTarget里。
在系统A中建一个读取新雇员的存储过程:
ALTER PROCEDURE [dbo].[GetEmployees]
AS
BEGIN
--获取所有新增用雇员的记录
select Name,Age,Gender from dbo.Employees where New=1
--将所有新增雇员的New字段置为0
update dbo.Employees set New=0 where New=1
END
下面在VS2008中新建接收新增雇员的schema,在VS2008的biztalk项目上点击右键,选择“添加生成项”:
选择“Consume Adapter Service”:
在Select a binding下选择“sqlBinding”,使用WCF_SQL adapter。
点击右上方的“Configure”按钮:
配置要连接sql server的用户名和密码。
在URI Properties标签里如下设置:
Server – 设置要连接的sql server名或IP
InitialCatalog – 要连接的数据库名
InboundId – 接收位置的序号
Binding Properties标签中:
作为接收端口,访问数据库采用轮训机制,就是按一定的时间间隔定时读取数据库。
InboundOperationType--属性有几种类型可选:Polling,TypedPolling,Notification。
Polling是轮询方式,但是这种方式是不带架构的,TypedPolling也是轮询方式,这种方式可以带出架构。Notification是用于数据有变化时进行相关通知。
如果需要轮询数据,又要能刷出数据架构,需要采用TypedPolling方式。
PollingIntervalInSecond – 轮询间隔时间
PolledDataAvailableStatement – 执行轮询的条件,这里一般是个select语句,这条语句应该返回一个单个的结果集,只要这个结果集的第一行第一列必须有值(如果是空结果集会报错),应该是个大于等于0的整数值。如果这个值大于0则执行下面PollingStatement指定的sql命令真正的开始轮询的操作。如果这个值等于0,则轮询语句不执行。
这个例子中可以设置为:select 1 from dbo.Employees where new=1
PollingStatement – 轮询命令,可以是sql语句,也可以是存储过程。
这个例子中可以设置为:exec dbo.GetEmployees
Configure Adapter完成后,回到adapter设置主界面:
点击Connect按钮,如果在Configure中连接信息设置没问题,连接状态将会显示:已连接。
要作为接收端口,biztalk相当于服务端,所有在Select contract type要选择Service(Inbound Operations)
在选择了Service(Inbound Operations)时,在下边的Select a Category中一定是空的(除了那个省略号和斜杠),别无选择,点击这个斜杠。
在右边会出现三个可选的操作Polling,TypedPolling,Notification,他们的含义前面已经说过了。选择TypedPolling,点击“Add”按钮。
OK,完成向导。
可以看到在项目中生成了两个文件,一个是根据前面设置的轮询命令生成的schema,一个是可以导入到biztalk的接收位置和端口的绑定文件,可惜的是,向导生成的绑定文件都是使用的WCF_Custom的绑定而不是希望的WCF_SQL的绑定。所以这个例子里不使用向导生成的绑定文件。
看一下生成的schema:
跟前面的存储过程比较一下,可以发现生成的schema就是存储过程返回的那三个字段,说明向导刷到了存储过程的schema。
这跟非WCF的sql adapter不同,非WCF的sql adapter返回数据时必须使用for xml auto,xmldata返回架构,adapter向导才能刷出架构。WCF_SQL则不必,一般的select返回的结果集就可以直接刷出架构。