发布一个biztalk 解析Excel文件到xml消息的管道组件

 

pipeline component主要功能是通过ODBCexcel驱动把excel文件转成xml的消息。

excel文件可以是biztalk通过从各种适配器获得,比如从fileftpmsmqhttp等等适配器获得excel文件的数据,excel文件的数据通过适配器进入到接收管道后,此组件在接收管道中处理excel文件的数据并转换成xml格式。 

    安装文件下载: /Files/chnking/ExcelPipelineComponentSetup.rar

比如,可以从下面这样的excel文件:


发布一个biztalk 解析Excel文件到xml消息的管道组件_第1张图片

 

转换成这样的xml格式:

<ns0:employees xmlns:ns0="http://chnking">

  <contact>

    <ContactID>1</ContactID>

    <FirstName>Gustavo</FirstName>

    <LastName>Achong</LastName>

    <EmailAddress>[email protected]</EmailAddress>

    <Phone>398-555-0132</Phone>

  </contact>

  <contact>

    <ContactID>2</ContactID>

    <FirstName>Catherine</FirstName>

    <LastName>Abel</LastName>

    <EmailAddress>[email protected]</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 解析Excel文件到xml消息的管道组件_第2张图片

 

 

存在问题

在设计环境中设置此组件的各个属性,部署后使用正常。

但是如果部署后,在biztalk administrator console中使用此组件的管道中修改了组件的任意属性,则会出现问题。

问题表现为组件的预设属性在运行时可能会读不到,有些属性的值变为空,可能导致管道执行失败。再把属性值改回到默认值也已经不起作用。这时只能修改使用这个管道的接收位置的属性,把使用这个管道的接收位置的接收管道改为其它管道,然后关闭。之后再重新打开,把管道再改回到要使用的管道。这样可以恢复到组件预设的属性。

暂时解决方案:

在开发环境中把组件的属性设置好,然后部署,在biztalk administrator console中不要修改此组件的属性。
   如果确实需要修改组件属性,在开发环境中修改,然后重新部署。

问题分析:

通过源码单步调试组件,发现部署后没有在biztalk administrator console中修改此组件的任何属性的情况下,组件实现的IPersistPropertyBag接口的Load方法(从环境中读取组件预设属性的方法)只执行一次。如果biztalk administrator console中修改此组件的任何属性后,IPersistPropertyBag接口的Load方法就会被执行两次,第一次从环境读取的属性正确,第二次再执行读属性就会有问题,有的属性没有读到。

奇怪的是,这时为什么Load方法会被执行两次。有朋友知道此问题的解决方法请告知,我的QQ362682

     问题最新进展:
   
    经过测试,在使用中设计管道(btp)时,不要设置Excel组件属性的任何默认值,保持所有属性为空,在部署后就可保持正常修改Excel组件的属性。

你可能感兴趣的:(Excel)