此pipeline component主要功能是通过ODBC的excel驱动把excel文件转成xml的消息。
excel文件可以是biztalk通过从各种适配器获得,比如从file、ftp、msmq、http等等适配器获得excel文件的数据,excel文件的数据通过适配器进入到接收管道后,此组件在接收管道中处理excel文件的数据并转换成xml格式。
安装文件下载:/Files/chnking/ExcelPipelineComponentSetup.rar
比如,可以从下面这样的excel文件:
转换成这样的xml格式:
<ns0:employees xmlns:ns0="http://chnking">
<contact>
<ContactID>1</ContactID>
<FirstName>Gustavo</FirstName>
<LastName>Achong</LastName>
<EmailAddress>gustavo0@adventure-works.com</EmailAddress>
<Phone>398-555-0132</Phone>
</contact>
<contact>
<ContactID>2</ContactID>
<FirstName>Catherine</FirstName>
<LastName>Abel</LastName>
<EmailAddress>catherine0@adventure-works.com</EmailAddress>
<Phone>747-555-0171</Phone>
</contact>
</ns0:employees>
安装
ExcelPipelineComponentSetup.msi文件,直接安装。安装有两个条件:
l 系统安装有framework2.0,如果没有,安装程序提示系统没有安装framework2.0,退出安装。
l 系统安装有biztalk 2006,如果没有安装biztalk 2006,安装程序会提示,退出安装。
安装好后,在程序中生成一个biztalk Excel decoder component程序组,其中有个chm帮助文件,使用方法请看帮助。
存在问题
在设计环境中设置此组件的各个属性,部署后使用正常。
但是如果部署后,在biztalk administrator console中使用此组件的管道中修改了组件的任意属性,则会出现问题。
问题表现为组件的预设属性在运行时可能会读不到,有些属性的值变为空,可能导致管道执行失败。再把属性值改回到默认值也已经不起作用。这时只能修改使用这个管道的接收位置的属性,把使用这个管道的接收位置的接收管道改为其它管道,然后关闭。之后再重新打开,把管道再改回到要使用的管道。这样可以恢复到组件预设的属性。
暂时解决方案:
在开发环境中把组件的属性设置好,然后部署,在biztalk administrator console中不要修改此组件的属性。
如果确实需要修改组件属性,在开发环境中修改,然后重新部署。
问题分析:
通过源码单步调试组件,发现部署后没有在biztalk administrator console中修改此组件的任何属性的情况下,组件实现的IPersistPropertyBag接口的Load方法(从环境中读取组件预设属性的方法)只执行一次。如果biztalk administrator console中修改此组件的任何属性后,IPersistPropertyBag接口的Load方法就会被执行两次,第一次从环境读取的属性正确,第二次再执行读属性就会有问题,有的属性没有读到。
奇怪的是,这时为什么Load方法会被执行两次。有朋友知道此问题的解决方法请告知,我的QQ:362682