Focus on biztalk -- chnking

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

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

学习biztalk的最好文档就是biztalk的随机文档,文档中包括一套循序渐进的教程(tutorial)还有许多就某一单项技术的samplesamples in the SDK)。这些教程和例子描述的步骤十分的详细,详细到你什么都不用想照它的步骤一步步的做都可以了。

教程步骤太详细,而且往往只告诉你怎么做,很少告诉你为什么这么做,有朋友经常跟着教程一路做下去,最后作完了,测试ok通过,回过头来想想自己都做了什么,一片茫然,不知怎么做的结果就出来了。如果做的顺利(每个步骤没有遗漏,没有做错),就会出正确的结果,一旦中间哪个步骤遗漏了或哪里错了一点,导致没出正确的结果,就不知道怎么找错在哪了。

所以跟着教程做时一定要注意几点:

l         每一步都仔细的做,不要有遗漏步骤,不要敲错字符。

l         每一步都要搞明白为什么这么做,如果不清楚,每一步都会提供一些相关内容的连接,先把相关的技术内容清楚个大概,知道怎么回事,再继续下一步。

l         要学会使用biztalk管理器查看服务实例,消息,特别是挂起的服务实例(可以在流程调试器中单步调试orchestration),如果出现结果不是预期的,在这里查找错误原因。

最近在做biztalk2006随机文档中的tutorial例子,tutorial1tutorial2已经做完,问题不大,按照说明一步步的做就是了。

在做tutorial3时碰到了一些问题,在此把我做的过程中碰到的问题和解决的方法记录下来,供还没做过的朋友参考。

Tutorial3这个示例延续tutorial2示例,在tutorial2基础上继续往下做。所以必须在完成tutorial2后才能开始tutorial3

Tutorial3涉及的主要技术有:相关集、orchestration发送端口消费web servicesorchestration接收端口发布为web services

1.       lesson 3step 1 中“配置发送PO到供货商web services的端口”

这一步的最后,tutorial漏了一个操作:在“绑定端口”窗口,在“端口绑定”下拉列表中选择“现在指定”,系统会自动生成一个指向供货商web services的物理发送端口,并把这个逻辑端口跟这个物理端口绑定。如果这个操作没做,在以后的步骤配置应用程序的这个逻辑端口对应的物理端口时会找不到SendCommonPO_SendPort端口。当然,也可以在配置应用程序时新建一个物理端口指向供货商web services

当在biztalk项目中引用一个外部web services,即orchestration使用消费(consumeweb services时, biztalk给这个web services生成相应的消息类型,为多部分消息类型。每个web services方法涉及的输入输出参数都被生成相应的消息类型。

当在biztalk项目中引用一个外部web services时,biztalk同时给这个web services生成相应的web端口类型,跟web services方法对应,每个.asmx文件生成一个端口类型,每个方法生成一个端口中的操作,方法的输入参数和返回参数分别生成操作消息,这些操作消息就是上面生成的那些多部分消息类型。

配置orchestration中跟web sevices相连的逻辑端口的端口类型为上面引用web services系统生成的web 端口类型。

同时还要注意,发送到连接web sevices的逻辑端口的消息实例的类型要是web message type,即是从web services引用过来的消息类型,这样才能跟发送端口的端口类型匹配。在配置消息实例时,在消息类型下拉列表中“web message type”下选“select from referenced assembly”,然后在弹出的窗口中选择相应的web message类型。

2.       发布web services向导生成了web services,但是实例中并没有使用用向导生成的web services

示例中有两个orchestration的接收端口需要发布为web servicesReceiveASN_PortReceiveInvoice_Port,文档中也在步骤四用web services发布向导生成了对应这两个端口的web services,但是在实际中并没有使用向导生成的web services,而是使用了预先准备好的预先生成好的web services,这个web services放在路径“C:\tutorial\Solutions\B2BSolution\B2BOrchestrations_webservice”中,并在tutorial 2 中“步骤4: 设置供货商的Web Service中”配置到IIShttp://localhost/B2BOrchestrations_webservice虚拟目录下。而用web services发布向导生成了web servicesurl http://localhost/B2BOrchestrations_Proxy

所以文档中在web services的最后一步,没有设置给应用程序生成相应的接收位置,而是在biztalk管理器中手工新建接收位置以对应到http://localhost/B2BOrchestrations_webservice

就因为使用了在别的机器上预先生成的web services,所以才有了“第二步:更新token”。因为是在别的机器用向导做的web services,在生成web services时要引用包含orchestrationassemblyassembly有自己的token,所以它需要把每个试验者给assembly生成的token替换它预先生成的web services中使用的token。如果使用自己用向导生成的web services,引用的assembly就是要使用的那个assembly,就没必要更新token,这一步是不必要的一步。这一点文档上没有说明这一点,很容易产生误导。

3.       向导生成的web services很大机会不能正常工作

biztalkweb services发布向导生成的web services很大的机会是不能正常工作的,反正我每次用向导做出来的web services工作都是不正常,也有好些朋友反应同样的问题。

具体现象是生成的web services不会有返回结果,在事件查看器中往往有这样的错误:试图连接到服务器“xxxxxx”上的“BizTalkMgmtDbSQL Server 数据库失败。 错误:“无法打开登录所请求的数据库 "BizTalkMgmtDb"。登录失败。”

关于这个问题,请参看我的一篇专门讨论这个问题的文章:Biztalk发布web服务时遭遇'SoapExceptionInternal SOAP Processing Failure'错误

posted on 2007-01-09 15:55  chnking  阅读(2781)  评论(17编辑  收藏  举报