第一步:建立相应的数据表
第二步:建立存储过程
@WayName nvarchar(25)
AS
select * from Highway a,HighWay_Weather b where a.name = @WayName and b.name=@WayName for xml auto,xmldata;
注意:
1. for xml auto 表示将返回的数据表转换成xml格式后输出,biztalk内部的消息传送都是xml的格式。这个功能需要sql server的支持xmlsql。
2.xmldata 这部分,表示在输出xml的结果之前,自动生成一个此xml对应的xsd的架构,这里使用xmldata是因为biztalk的sql 适配器向导需要sql返回的架构来生成xsd架构文件。一旦使用sql 适配器向导生成了端口类型和消息架构,需要将“,xmldata”这部分删除,实际获取数据时不需要附带有架构部分的内容。
第三步:建立BizTalk项目
建一个空biztalk项目,同时创建解决方案的目录BizTalkHighway
第四步:sql 适配器向导生成端口类型和消息架构
运行sql 适配器向导:
在BizTalkHighway项目上点击右键,选“添加――添加生成的项”,弹出以下对话框
单击“添加适配器元数据”,单击“添加”按钮。
在己注册的适配器中选择"SQL"的适配器后,单击"下一步"。在弹出的Sql传输架构生成向导对话框,单击"设置"
填写数据库服务器名称及数据库,单击"确定"之后,单击"下一步"。
这里要指定向导生成的消息架构文件的目标命名空间(targetnamespace),简单的说,目标命名空间是使用这个架构生成的xml实例所需要指定的命名空间,如果xml实例指定的命名空间跟架构文件的目标命名空间不一致,则表示此xml实例不是这个架构文件所定义的。每个xsd架构需要有跟其他xsd架构不同的、唯一的目标命名空间。
端口类型选择发送类型,因为biztalk用这个端口向sql server发送数据请求,然后接收sql server返回的数据。
请求文档根元素名称:指定发送到sql server请求数据的xsd架构根元素名
相应文档根元素名称:指定sql server返回数据的xsd架构根元素名。
点击“下一步”。
选“存储过程”,点击“下一步”
选中值下面的行,点击“生成”按钮,生成相应脚本。
点击“下一步”完成。
第5步:修改存储过程
将存储过程中那个“,xmldata”部分删除,然后保存存储过程。因为实际获取数据的过程是不需要sql server输出架构信息的。
第六步:添加端口
这里添加的是逻辑端口,是biztalk中业务流程跟biztalk其他部分的接口,biztalk系统跟外界的实际接口是通过各种适配器来完成的,这种实际接口叫物理端口,逻辑端口需要跟物理端口绑定后才能跟外界通讯。
6.1. 添加跟sql server接口的端口
在左边工具箱中拖一个“端口”图形到业务流程右边的端口图面,系统会自动运行端口配置向导:
点击“下一步”
点击“下一步”
选择端口类型,这个端口是用来跟sql server进行接口的,用来向sql server发出请求并从sql server获得数据的端口,所以这里选择sql适配器向导生成的那个端口。
点击“下一步”
端口绑定,这里是指这个逻辑端口怎么跟物理端口进行绑定,同时指定的通讯方向。
这里通讯方向选“我将发送请求并接收响应”,因为还没有设置物理端口,端口绑定选“以后指定”。
点击“下一步”,完成向导。
6.2 添加暴露为web services的端口
在业务流程图的左面的“端口图面”上拖放一个端口,自动启动端口配置向导,这个端口是作为生成web services的端口。
单击"下一步"
Biztalk中每个端口都需要对应一个端口类型,这里我们为这个端口新建一个端口类型,这个端口是要作为web services。
通讯模式选择“请求-响应”,因为作为web services的端口必须是先接收请求,然后返回结果。
访问限制选“公有–无限制”,要发布为web services的端口必须是公有的。
点击“下一步”
点击“下一步”,完成添加web services端口向导。
第七步:添加消息
Biztalk的业务流程是以消息的传递为基础的,而biztalk内部的消息都是基于xml的数据,消息可以是基于.net的类,比如xmlDocument;多部分消息类型,比如前面sql适配器向导生成的多部分消息类型;xsd的架构等等。
在流程中需要先定义流程中使用到的消息。本项目需要使用四个消息。
7.1数据消息
在“业务流程视图”面板中,在“消息”上点击右键,选“新建消息”。在消息下面多了一个“Message_1”,选择“Message_1”,切换到属性面板,将此消息的标识改为:“Message_Data”,消息类型选架构中的“BizTalkHighway.SQLService.GetHighwayData_ResponseRoot
7.2 请求数据消息
添加一个消息,标识为“Message_Request”,消息类型选多部分消息类型中的“BizTalkHighway.procedureRequest”,这个消息类型就是sql 适配器向导生成的xsd中请求数据的部分。
7.3 返回数据消息
添加一个消息,标识为“Message_Response”,消息类型选多部分消息类型中的“BizTalkHighway.procedureResponse”,这个消息类型就是sql 适配器向导生成的xsd中返回数据的部分。
7.4 转成XmlDocument的消息
添加一个消息,标识为“Message_xml”,消息类型选.net类中的“System.Xml.XmlDocument”,这个消息就是最后返回到请求客户端的消息类型。
第八步: 添加业务流程图中的处理流程
现在开始业务流程的设计
8.1. 添加接收图形
在工具箱中拖拉一个接收图形放置到业务流程图的绿色开始点和红色结束点之间,在属性面板中做如下设置:
名称:接受缺省的名称“Receive_1”,不需要改。
激活:True ,第一个接收图形的激活一定要设为True,以后再添加的接收图形都设为False。
消息:在下来框中选择“Message_Request”
8.2. 添加其他接收发送图形
在上面的接收图形下再分别添加一个发送图形和接收图形
发送图形
名称:接受缺省的名称“Send_1”,不需要改。
消息:在下来框中选择“Message_Request”
接收图形
名称:接受缺省的名称“Receive_2”,不需要改。
消息:在下来框中选择“Message_Response”
8.3. 连接图形和端口
鼠标指向左边Web_Port端口的Request上的绿色小块,按下鼠标左键不放,拖动鼠标,可以看到一根连线随着鼠标移动,拖拉至接收图形“Receive_1”上的绿色小块松开鼠标,Web_Port端口的Request跟接收图形“Receive_1”连接好了。
同样把发送图形“Send_1”跟Sql_Port端口的Request连接,接收图形“Receive_2”跟Sql_Port端口的Response连接。
现在的业务流程图是这样的:
到这一步的工作流程是这样的:
Web_Port端口接收到的请求数据请求被发送到接收图形“Receive_1”,然后原封不动的传给发送图形“Send_1”,图形“Send_1”将此消息发给Sql_Port端口,Sql_Port端口又通过sql适配器将请求发给sql server,从sql server返回的数据通过Sql_Port端口的Response传给接收图形“Receive_2”。接收图形“Receive_2”收到的消息就是从数据库返回的字段名称的数据。
8.4. 消息架构映射
在工具箱中拖拉一个“构造消息”图形放置在“Receive_2”下面。
在属性面板中,接收缺省名称“ConstructMessage_1”
“构造的消息”属性表示被这个“构造消息”图形处理后的消息是什么,这里我们需要的结果是英文字段名的消息,所以这里“构造的消息”选择“Message_Data”。
在工具箱中拖拉一个“转换”图形放置“构造消息”图形的内部。
双击“转换”图形,出现“转换配置”向导对话框
选“新建映射”
完全限定的映射名称:BizTalkHighway.Transform_1
先选中转换中的“源”,在右边“转换源”的变量名称的下拉列表中选择“Message_Response.parameters"。
然后在转换中的“目标”,在右边“转换源”的变量名称的下拉列表中选择“Message_Data。
选中“单击‘确定’即启动Biztalk映射器”,点击“确定”
Biztalk启动架构映射器,提供消息架构之间的转换功能设计。
分别展开源和目标架构,如下图,
然后保存,在解决方案资源管理器中,会生成一个叫“Transform_1.btm”的映射文件。
8.5. 消息转换
返回到客户端我们希望是一个XmlDocument类型,上面的消息映射是把中文架构的消息转换为英文架构的消息,还要做一个把架构消息转换为一般的XmlDocument的转换。
在转换构造消息图形下面再添加一个“消息构造”图形,在属性面板中,接收缺省名称“ConstructMessage_2”,将“构造的消息”选择为“Message_xml”。
在工具箱中拖拉一个“消息赋值”图形放置在“ConstructMessage_2”图形内。
双击“消息赋值”图形,在biztalk表达式编辑器中输入:
Message_Xml = Message_Data;
8.6. 添加发送端口
最后,添加一个发送端口,把返回的XmlDocument消息返回到Web_Port端口的Response,通过web services返回到客户端。
完整的业务流程图: