biztalk定制管道组件(pipeline component)的调试、部署

原创 2007年09月28日 14:34:00

 

(2007-9-25日更新)

 一、    定制Pipeline componentassembly的部署

定制Pipeline componentassembly不一定要放在GAC中,可以放在<biztalk install directory>/Pipeline Components目录下,但是这时定制Pipeline component所引用的其它assembly必须也放在此目录中。

如果把定制Pipeline componentassembly放到GAC中,那么定制Pipeline component所引用的其它assembly必须也放在GAC中,否则定制Pipeline component不知道去哪找到它所引用的其它assembly

当定制Pipeline componentassemblyGAC<biztalk install directory>/Pipeline Components目录下有存在,那么优先使用<biztalk install directory>/Pipeline Components目录下的assembly

二、    定制Pipeline component的调试

无论把定制Pipeline componentassembly放到GAC中还是放在<biztalk install directory>/Pipeline Components目录下,都可以对定制Pipeline componen进行源代码级别调试。

为了方便,一般把Pipeline component项目的输出路径指向<biztalk install directory>/Pipeline Components目录。

1、 调试已部署的Pipeline component

对于已经部署的biztalk项目,项目中使用到了定制的Pipeline component,可以在VS2005环境下对Pipeline component进行源代码级的调试。

l       VS2005中打开Pipeline component项目

l       Pipeline component项目输出路径指向<biztalk install directory>/Pipeline Components目录。

l       VS2005debug菜单中选“Attach to Process”,如下图。在进程中选“BTSNTSvc.exe”,这是biztalk的服务进程,然后点击Attach按钮,把进程附加到VS2005

clip_image001

Figure1. 附加进程

 

l         Pipeline component源代码中需要调试的地方设置断点。

l         在相应的输入位置提供输入消息,以便消息进入使用了定制Pipeline component的管道,在运行到设置了断点的代码处,进程暂停,即可进行断点调试。

2、 利用pipeline.exe调试未部署的Pipeline component

如果只定制了Pipeline component,并使用这个Pipeline component设计了一个管道,即有了使用这个定制Pipeline componentbtp文件,这时就可对Pipeline component进行源代码级的调试了。

这种情况需要使用pipeline.exe工具调试Pipeline component

l         VS2005中打开Pipeline component项目

l         Pipeline component项目输出路径指向<biztalk install directory>/Pipeline Components目录。

l         改变Pipeline component项目的启动动作,打开Pipeline component项目的属性页。选左边debug标签,在start action下选择“Start external program”,然后点击“…”按钮,在路径<biztalk Installation Folder>/SDK/Utilities/PipelineTools中选择 Pipeline.exe,表示使用pipeline来启动这个Pipeline component项目。在Start Options输入相应的命令行参数。参数设置:
首先指定btp文件,即在管道中使用了这个Pipeline component的管道文件。
其次指定输入文件
最后指定输出文件
一个参数看上去像这样:
C:/Samples/UnzipDisassembler/PipelineTest/UnzipTest.btp -d C:/Samples/UnzipDisassembler/test.zip -t -m C:/Samples/UnzipDisassembler/out/Part_%MessagePartID%.out

l         Pipeline component源代码中需要调试的地方设置断点。

l         把输入文件放入到参数中指定的位置。

l         F5开始运行

 

三、    定制Disassembler Pipeline component的注意事项

1、 不要在代码中关闭输入stream

输入消息的stream不仅在Pipeline component,别的组件功能可能也需要使用这个stream,比如HAT跟踪组件也要使用消息stream来跟踪消息。如果在定制Pipeline component代码中关闭了stream,将会影响到HAT对消息的跟踪。

2、 在代码中保证生成的stream的当前位置放置在stream的起点

使用类似下面的代码将stream的当前位置设置到stream的起点:

myDataStream.Seek(0, SeekOrigin.Begin);

因为如果不把stream的当前位置设置回起点,还处于stream的终点处,这个stream进入到下一个stage的组件中,组件代码直接读取stream,会读不出内容,导致意想不到的结果。

3、 在定制管道组件的任何字符串变量中都不要包含换行符

在使用biztalk 2006时,在在定制管道组件的任何字符串变量中都不要包含换行符,比如/n,否则,在编译这个组件是会得到一个“newline in constant”错误。

4、 使用命令行排除非组件代码错误

有时由于一些设置问题或者管道文件btp被手工修改又被改错了,这些问题不是定制管道本身的问题,会导致管道组件不被执行,表现现象一般是在VS2005中使用pipeline.exe进行源代码调式时,运行后始终运行不到断点就推出了,也没有任何提示。

这时可以进入命令行模式,直接运行pipeline.exe,命令后面跟上在VS2005环境中设置的pipeline.exe的调试参数,执行。如果是调试参数或者btp文件本身的设置问题,pipeline.exe命令会有出错提示,下面是两个比较常见的问题:

4.1.        pipeline.exe调试时路径参数如有空格需要引号

使用pipeline.exe调试时参数管道文件、输入、输出文件路径如有空格,比如btp文件所在的路径是这样:C:/UnzipDisassembler/PipelineTest project/UnzipTest.btp

路径中包含有空格字符,就必须把路径用引号把路径包含起来,不然pipeline.exe会找不到文件,提示以下错误:

Source:    Pipeline

Message:   Pipeline file name is already specified

4.2.        管道btp文件设置错误

如果管道文件中的配置有错误,比如Stage标签的结束标签被改成了小写的stage,就会被提示以下错误:

Source:   System.Xml

Message:   37 上的开始标记“Stage”与结束标记“stage”不匹配。

39,位置 7

 

biztalk定制管道组件(pipeline component)的开发

一、  定制pipeline的接口可以定制三种类型的pipeline component:general, assembling,disassembling。其中disassembling是接收管道的...
  • chnking
  • chnking
  • 2007年10月03日 18:49
  • 1126

Scrapy框架学习(二)----Item Pipeline(管道)和Scrapy Shell

Scrapy框架学习(二)—-Item Pipeline(管道)和Scrapy ShellItem Pipeline(管道)当Item在Spider中被收集之后,它将会被传递到Item Pipelin...
  • qq_33689414
  • qq_33689414
  • 2017年11月29日 20:24
  • 184

Scrapy-Item Pipeline(项目管道)

Item Pipeline(项目管道) 在项目被蜘蛛抓取后,它被发送到项目管道,它通过顺序执行的几个组件来处理它。 每个项目管道组件(有时称为“Item Pipeline”)是一个实现简单...
  • weixin_37947156
  • weixin_37947156
  • 2017年07月11日 15:09
  • 295

pipeline机制

最近在看netty的源码,准备将一些理解和总结写出来,netty的源码写的很漂亮理解起来也不是那么容易,很值得我们去学习和借鉴。我们知道在设计模式里面提到过一种责任链的模式,据我看一些源码的了解(不管...
  • tangyongzhe
  • tangyongzhe
  • 2015年11月27日 20:22
  • 2917

pipeline(管道)设计模式

  • wangyangzhizhou
  • wangyangzhizhou
  • 2014年04月14日 08:43
  • 3616

Tomcat的管道(Pipeline)机制以及Context,Wrapper容器

最近学习了Tomcat,所以想把自己学到的东西总结记录一下,不紧是自己消化的过程,同时也希望帮助更多的人更好的去理解Tomcat的内部原理。因为博主看的是《深入剖析Tomcat》这本书,所以讲述的都以...
  • u013159433
  • u013159433
  • 2015年08月11日 09:46
  • 1485

Jenkins基础入门-15-Jenkins中的Pipeline

继续来学习Jenkins的基本知识。本篇来介绍Pipeline,首先什么是Pipeline,如何你百度一下这个单词,会告诉你是管道的意思。那么Jenkins中为什么引入管道的概念呢。其实Pilelin...
  • u011541946
  • u011541946
  • 2017年10月12日 21:30
  • 787

管道模式——pipeline与valve

在一个比较复杂的大型系统中,假如存在某个对象或数据流需要被进行繁杂的逻辑处理的话,我们可以选择在一个大的组件中进行这些繁杂的逻辑处理,这种方式确实达到了目的,但却是简单粗暴的。或许在某些情况这种简单粗...
  • wangyangzhizhou
  • wangyangzhizhou
  • 2015年05月02日 18:44
  • 5859

Pipeline管道模型的入门理解

转自vino Young博主的  浅谈管道模型(Pipeline)
  • u010426002
  • u010426002
  • 2015年08月24日 20:18
  • 243

biztalk大规模部署方案

一、         单服务器... 1 二、         双服务器... 2 三、         基本高可用... 3 1、           Biztalk高可用实现... 3 1...
  • chnking
  • chnking
  • 2011年04月26日 20:23
  • 2042
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:biztalk定制管道组件(pipeline component)的调试、部署
举报原因:
原因补充:

(最多只允许输入30个字)