Focus on biztalk -- chnking

心无旁骛,专注于biztalk......

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  75 随笔 :: 0 文章 :: 484 评论 :: 37 引用

一、  绑定方式 – specify later(以后指定)

这种绑定方式是在biztalk中使用最多的一种绑定方式,一般的端口绑定都是用这种方式,设计时orchestration的端口设置为“specify later”,biztalk项目部署后在biztalk控制台配置这个应用程序,新建相应的物理端口跟orchestration的端口绑定。

只是为了说明这种绑定方式,设计一个极简单的测试场景。

1、 测试场景

有一个消息,类似这样的:

<ns0:Person xmlns:ns0="http://BindingSpecifyLater.SimpleInput">

  <id>id_0</id>

  <name>name_0</name>

</ns0:Person>

把它放在一个In目录中,通过file适配器读取文件,进入到orchestration中,这个流程这样的:


Figure 3. specify later
测试流程

整个流程就就简单的传送一个消息,就是上面那个消息的架构,Port_Input_Person端口设置为:单向、接收、以后绑定。Port_Output_Person端口设置为:单向、发送、以后绑定。

项目部署好后,在biztalk控制台配置这个应用程序。

Port_Input_Person端口绑定一个接收端口,端口的接收位置配置为file adapter,指向预设的In目录,读取目录中的以xml为后缀的文件。

Port_Output_Person端口绑定一个发送端口,发送端口配置为file adapter,指向预设的Out目录,写消息为%MessageID%.xml文件。

2、 Biztalk控制台中查看订阅

Biztalk控制台提供了很方便查看已产生的订阅的方法,可以用更直观的形式反映保存在数据库中的订阅关系。


Figure 4.
查询订阅

biztalk控制台中,在左边目录树中选“Biztalk Group”,在右边的“Group Overview”面板中选择“New Query”标签,这里可以选择查询服务实例、挂起的服务实例、订阅等等。我们选择查看订阅,然后点击“Run Query”按钮,下面的窗口就会列出所有已经产生的订阅。

3、 Orchestration订阅接收端口

双击第一个订阅,这个订阅是Orchestration订阅file接收端口进来的消息:


Figure 5. Orchestration
订阅接收端口

在弹出的窗口中“General”标签的是订阅主体,反映的是Subscription消息订阅表中的内容,看一下这里的内容:

Service class是订阅消息的服务类型,这里是Orchestration类型。

Service name是订阅消息的具体服务,这里是BindingSpecifyLater.BizTalk_Orchestration1, BindingSpecifyLater, Version=1.0.0.0, Culture=neutral, PublicKeyToken=380d269ec565a18c,就是上面设计的那个流程。

再看“Express”标签:


Figure 6. Orchestration
订阅接收端口的订阅条件

这里反映的是这个订阅的订阅条件,就是这个订阅在PredicateGroup谓词组对应表,订阅谓词表中的内容。可以看到这里有两个条件:

Subscription

{

    ORGroup0

    {

        BTS.ReceivePortID == {7DA3DB40-8E1B-47DB-AF1B-078E77F19372}

        AND

        BTS.MessageType == http://BindingSpecifyLater.SimpleInput#Person

    }

}

从这里的订阅条件可以看出,Specify Later绑定,Orchestration接收端口绑定物理接收端口时,绑定动作产生的订阅条件是:消息必须来自绑定的那个端口,消息的类型必须是Orchestration中这个接收端口的指定的消息类型。只要满足这两个条件,消息就会被路由到这个Orchestration

4、  发送端口订阅Orchestration

biztalk控制台,双击第二个订阅,这个订阅是file发送端口订阅Orchestration发出的消息:


Figure 7.
发送端口订阅Orchestration

General”标签中:

Service class是订阅消息的服务类型,这里是Messaging类型,就是Messaging InProcess,表示一般的端口。

Service name是订阅消息的具体服务,这里是SendPort_binding,就是跟Orchestration绑定的发送端口。


Figure 8.
发送端口订阅Orchestration的订阅条件

Express”标签中,显示这样的订阅条件:

Subscription

{

    ORGroup0

    {

        BTS. SPTransportID == {54ECBCE9-AA7F-4DB1-B2CC-B97CF5F8D4CE}

    }

}

从这里的订阅条件可以看出,Specify Later绑定,物理发送端口跟Orchestration的发送端口绑定时,绑定动作产生的订阅条件是:消息中BTS. SPTransportID属性指向这个物理发送端口的一个通道(一般指向这个发送端口的基本通道)。这个绑定动作还对Orchestration的发送端口产生作用,绑定后,消息经过Orchestration的发送端口时,端口会在消息中增加这个BTS. SPTransportID属性,属性的值就是绑定的物理发送端口的基本通道的GUID。这样,从这个Orchestration的发送端口出来的消息就会被路由到绑定的物理发送端口。

posted on 2007-07-13 10:41 chnking 阅读(1729) 评论(7)  编辑 收藏 网摘 所属分类: biztalk

评论

#1楼  2007-07-13 11:29 lost [未注册用户]
asp.net 交流群(43153696),无论是不是高手,欢迎对研究asp.net框架有兴趣的朋友加入,定期针对某个主题进行讨论和研究。

  回复  引用    

#2楼  2007-07-13 11:29 西煞魄工人      
踩一脚:)
  回复  引用  查看    

#3楼  2007-07-13 11:34 ^-^Roping.Zong      
你Biz系列文章写得不错,
希望多介绍下国外的好的Blog和资源!
  回复  引用  查看    

#4楼  2008-04-04 09:36 BAsil      
1.请问SubscriptionId 从是哪个表的外键?
2.请问谓词表中的uidPropId是哪个表的外键?

  回复  引用  查看    

#5楼 [楼主] 2008-04-04 17:03 chnking      
@BAsil
1.请问SubscriptionId 从是哪个表的外键?
答:SubscriptionId 在订阅表Subscription中是uidSubID字段,它是PredicateGroup表uidPredicateORGroupID字段的外键。消息订阅的相关表的关系见《深入biztalk消息以及消息订阅发布路由机制(二)-消息订阅 》(http://www.cnblogs.com/chnking/archive/2006/10/30/544469.html)中的“3. 消息订阅过程”的那张订阅部分数据库表的主要结构和相互关系图。

2.请问谓词表中的uidPropId是哪个表的外键?
答:uidPropId是系统属性的Guid,每个属性(包括系统预定义的属性和自定义的升级属性)都有过一个唯一的Guid来表示,所有属性都在BizTalkMgmtDb管理数据库的bt_DocumentSpec系统属性表有登记。谓词表的uidPropId跟bt_DocumentSpec系统属性表的id字段关联。
  回复  引用  查看    

#6楼  2008-04-04 18:16 BAsil      
@chnking
谢谢,第二个看明白了,第一个我再琢磨琢磨
  回复  引用  查看    

#7楼  2008-04-05 08:42 BAsil      
@chnking
第一个我也找到了,谢谢了
  回复  引用  查看    


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-09-07 15:24 编辑过
Google站内搜索

相关文章:

相关链接: