摘要:    说起来也有快2年没正经写过程序了,最近公司准备往SOA转,也就有机会玩弄一下 Biztalk 2006. 前一段参加了几次Training,有公司内部的,也有外面找的Consultant. 折腾了半天,多少算是有了点谱。     这两天算是正式开始写第一个程序了,上手很简单,拿来别人写好的Schema,先准备做个Message Mapping,Receive/Send 先都是用的FILE Adapter,反正是怎么简单先怎么来。  有了Schema,其实Mapping很简单,整个一体力活,大多数情况基本上就是鼠标从左边往右边一拖,然后回去从左边往右边一拖,然后回去从左边往右边一拖,然后回去从左边往右边一拖……(顺便发泄一下对functoids的不满:那玩意看起来在Toolbox里满满的一屏,居然没有类似VB Year()/Month() 之类的DatePart Function,这么常用的功能,还得自己写Code 实现,实在令人比较的失望。) (体力活--这些线都是我拉的.....)     好,在经过一段时间的体力活之后,把Schema 和 Mapping 都Depoly到Biztalk Server,建好Receiving 和Sending Port,Create 好一个Incoming  Message 的instance file,把它拖到Receiving Port 对应的Folder——恩,命运的齿轮开始转动,文件不见了。(再次发泄一下对biztalk 2006 Schema Editor 的不满:连直接Edit Code 都不让我做,右边就傻傻的放个IE Window显示XML file,所有改动都得在Property Window 完成,真累....)      跑到Sending Port对应的Folder,望眼欲穿也没等到Mapping之后出来的File,很显然,命运的齿轮卡住了。到HAT (这又是一个令人不满的东西,它除了定义了几个预定义的Query和几个Global parameter,和Sql Query Analysis 或者Sql 2005的Management Studio 基本就没区别,再刻薄点说,Management Studio 的Query Result的显示还比HAT好看的多。)里看看,发现Message 有一条Error Info: “Finding document specification by message type http://soa.xxxx.com/xxxx/xxxx/xxxx#yyyy  failed. Verify that the schema is deployed properly.”     显然,提供给Biztalk的Message有些问题,它似乎和我们的Schema不那么match。但是Message是用Schema 文件的,从理论上说不应该有问题。     然后就是Google;Search KB;Biztalk newsgroup.. 当然,你已经看到了偶的标题,所以你也就知道原因是我开始拿到的Schema里envelope 这个属性被设置成了True,envelope是 Biztalk 的扩展属性,它可以支持Biztalk 接受的一个Message里饱含多个document,在pipeline 就可以 disassembly 成多个message instance, 就像是我们把多份文档放到一个信封里打包送给Biztlak 一样。 但是我现在的这个测试里显然暂时还用不到它。    可惜你看到的这篇文章晚了点,否则你早就可以跑到MSN告诉我,“小心信封!小心信封!”, 对吧? ...[阅读全文]