作者:郑佐 2006-11-28
假设有一个名为zhengzuo.biztalk.pipelines的组件项目,用来实现一个biztalk 2006的自定义的管道组件。
假设有一个名为zhengzuo.biztalk.pipelines的组件项目,用来实现一个biztalk 2006的自定义的管道组件。
以下是笔者编写自定义接收管道组件的一段不完整代码,
[componentcategory(categorytypes.catid_pipelinecomponent)]
[componentcategory(categorytypes.catid_any)]
[componentcategory(categorytypes.catid_validate)]
[componentcategory(categorytypes.catid_disassemblingparser)]
[system.runtime.interopservices.guid(“7eda198e-6fd8-4046-a974-1c8bf55c3b93”)]
public class boxupmessagecomponent :
icomponent,
ibasecomponent,
icomponentui,
ipersistpropertybag,
idisassemblercomponent
{
private const string description = “管道解码器。编写人:郑佐。\n编写时间:2006-08-1。”;
private const string name = “某某管道组件”;
private const string version = “1.0.0.0”;
}
编译zhengzuo.biztalk.pipelines项目成功,输出到d:\program files\microsoft biztalk server 2006\pipeline components目录,生成组件为zhengzuo.biztalk.pipelines.dll。
在解决方案中新建一个名为biztalktest的biztalk项目。添加一个发送管道取名为sendpipeline1.btp。打开该发送管道进行编辑,把“某某管道组件”从工具箱拉到解码的位置(如果在工具箱中没有找到“某某管道组件”,在工具箱上右键点击“选择项”菜单,在显示的窗口上选择biztalk管道组件选项卡,选中“某某管道组件”添加)。
编译biztalktest项目,出现一连串错误如下:
错误 11 常量中有换行符
错误 12 意外的字符“:”
错误 13 意外的字符“。”
错误 14 常量中有换行符
错误 15 应输入 ;
错误 16 类、结构或接口成员声明中的标记“:”无效
错误 17 类、结构或接口成员声明中的标记“>”
在biztalktest项目文件目录下复制sendpipeline1.btp文件,并修改文件名为sendpipeline1.xml,使用ie或firefox打开,显示内容如下。
<?xml version=”1.0″ encoding=”utf-16″?>
<document xmlns:xsi=”http://www.w3.org/2001/xmlschema-instance” xmlns:xsd=”http://www.w3.org/2001/xmlschema” policyfilepath=”btsreceivepolicy.xml” majorversion=”1″ minorversion=”0″>
<description />
<stages>
<stage categoryid=”9d0e4103-4cce-4536-83fa-4a5040674ad6″>
<components>
<component>
<name>zhengzuo.biztalk.pipelines.boxupmessagecomponent</name>
<componentname>某某管道组件</componentname>
<description>管道解码器。编写人:郑佐。
编写时间:2006-08-1。</description>
<version>1.0.0.0</version>
<properties />
<cacheddisplayname>某某管道组件</cacheddisplayname>
<cachedismanaged>true</cachedismanaged>
</component>
</components>
</stage>
<stage categoryid=”9d0e4105-4cce-4536-83fa-4a5040674ad6″>
<components>
<component>
<name>microsoft.biztalk.component.ffdasmcomp</name>
<componentname>平面文件拆装器</componentname>
<description>流平面文件拆装器组件</description>
<version>1.0</version>
<properties>
<property name=”headerspecname” />
<property name=”documentspecname”>
<value xsi:type=”xsd:string”>biztalktest.sendpipeline1</value>
</property>
<property name=”trailerspecname” />
<property name=”preserveheader”>
<value xsi:type=”xsd:boolean”>false</value>
</property>
<property name=”validatedocumentstructure”>
<value xsi:type=”xsd:boolean”>false</value>
</property>
<property name=”recoverableinterchangeprocessing”>
<value xsi:type=”xsd:boolean”>false</value>
</property>
</properties>
<cacheddisplayname>平面文件拆装器</cacheddisplayname>
<cachedismanaged>true</cachedismanaged>
</component>
</components>
</stage>
<stage categoryid=”9d0e410d-4cce-4536-83fa-4a5040674ad6″>
<components />
</stage>
<stage categoryid=”9d0e410e-4cce-4536-83fa-4a5040674ad6″>
<components />
</stage>
</stages>
</document>
注意到xml文件的红色标注部分,对应zhengzuo.biztalk.pipelines组件项目中的代码为,
private const string description = “管道解码器。编写人:郑佐。\n编写时间:2006-08-1。”;
修改以上代码为
private const string description = “管道解码器。编写人:郑佐。编写时间:2006-08-1。”;
修改btp发送管道重新添加“某某管道组件”,编译biztalktest项目成功。查看btp文件xml结构为
<description>管道解码器。编写人:郑佐。编写时间:2006-08-1。</description>
可见由于“\n”导致项目编译失败。这个算不算是biztalk server 2006开发中的一个小bug?