使用管道接口

管道组件一种 .NET 或 COM 组件,它实现一组预定义的接口以便与 BizTalk 消息引擎交互。 根据组件的功能,必须实现不同接口。 本主题介绍这些接口及其一些方法。

警告

如果您在使用 COM 构建自定义管道组件,则必须配置您的组件以便使用多线程单元 (MTA) 模型。 如果没有这样做,则组件的调用将失败并且具有 E_NOINTERFACE 错误。

IPipelineContext

所有管道组件都可以使用 IPipelineContext 方法来访问所有特定于文档处理的接口。 IPipelineContext 接口提供以下功能:

  • 允许组件检索环境管道和阶段设置。

  • 允许组件检索消息和消息工厂。 使用这些工厂,组件可以创建执行组件所需的不同对象。

  • 允许组件检索文档规范。 文档规范是 XSD 架构以及附加的批注。

IBaseComponent

所有管道组件都需要实现此接口,以便提供有关组件的基本信息。

IComponent

除组装器和拆装器之外的所有管道组件都实现此接口,以便从 BizTalk Server 引擎获取消息以供处理并将已处理的消息传递回引擎。

Execute。 由引擎调用以便将输入消息传递到组件并从组件检索已处理的消息的方法。

IPropertyBag、IPersistPropertyBag

管道组件需要实现 IPersistPropertyBag 才能接收其配置信息。 此接口和 IPropertyBag 是标准接口。 有关这些接口的详细信息,请参考 Microsoft .NET Framework 软件开发工具包 (SDK) 文档。

IDisassemblerComponent

拆装组件是一种管道组件,它在输入端接收单个消息并在输出端生成零个或多个消息。 拆装组件用于将消息交换拆分成单个文档。 反汇编程序组件必须实现 IDisassemblerComponent 接口的方法,以便从BizTalk Server获取消息进行处理,并将反汇编的文档传递回BizTalk Server。

方法 说明
Disassemble 执行传入文档 pInMsg 的反汇编。
GetNext 从拆装器执行导致的消息集获取下一个消息。 如果没有其他消息,则返回 NULL

如果您在编写将支持可恢复交换处理的拆装器组件,则必须执行以下操作:

  1. 通过在 VirtualStream() 中包装输入流,使输入流可查找。

  2. 在 GetNext() 中,具有可确定何时消息出错的逻辑。 如果某一消息是错误的,则设置 BTS.MessageDestination = "SuspendQueue" 并在 GetNext() 中返回该消息。

  3. 如果消息是正确的,则设置 BTS.SuspendMessageOnRoutingFailure = True 并在 GetNext() 中返回该消息。

IAssemblerComponent

组装组件一种管道组件,它在输入端接收若干消息,在输出端生成一个消息。 组装组件用于将若干单独的文档收集到消息交换批中。

注意

在此版本的BizTalk Server中,不使用汇编功能,因此BizTalk Server始终将一个文档传递给组件输入。

汇编程序组件实现BizTalk Server引擎在运行时调用的 IAssemblerComponent 方法。

方法 说明
AddDocument 将文档 pInMsg 添加到将包含在交换中的消息列表。
组装 从以前方法所添加的消息生成交换。 返回指向已组装消息的指针。

IProbeMessage

(常规、汇编或反汇编) 的任何管道组件都可以实现 IProbeMessage (如果需要消息探测功能)。 探测组件用于具有 FirstMatch 执行模式的管道阶段。 在此类阶段中,BizTalk Server会将消息提供给组件,而 Probe 方法将检查消息的开头以确定组件是否识别消息的格式。

方法 说明
探测 此方法采用 pInMsg 消息,如果识别格式,则返回 True ,否则返回 False

INamedItem

这是用于从托管代码和非托管代码访问文档架构的帮助程序接口。

INamedItemList

这是用于从托管代码和非托管代码访问文档架构的帮助程序接口。

IDocumentSpec

管道组件可以使用 IDocumentSpec 接口的方法执行特定于文档的操作,例如将内容属性移动到上下文和返回、访问文档架构等。

方法 说明
DocType 返回当前文档的类型。
DocSpecName 返回当前文档的规范名称。
GetSchemaCollection 返回当前文档的文档架构列表。
GetBodyPath 将 XPath 返回到文档中正文部分开始的节点。
GetDistinguishedPropertyAnnotationEnumerator 返回所有可分辨字段属性批注的字典枚举数。
GetPropertyAnnotationEnumerator 返回所有属性批注的枚举数。

IComponentUI

管道组件必须实现此接口,以便用于管道设计器环境。

方法 说明
图标 提供与此组件关联的图标。
验证 管道设计器在管道编译前调用此方法,以便确认所有配置属性均正确设置。

Icon 属性返回 IntPtr。 以下 C# 示例演示如何返回 IntPtr

static   ResourceManager resManager = new ResourceManager("ResourceManager", Assembly.GetExecutingAssembly());  
...  
[Browsable(false)]  
public IntPtr Icon  
{  
   get  
   {  
      return ((Bitmap)resManager.GetObject("MyIcon")).GetHicon();  
   }  
}  

有关详细信息,请参阅 UI 指南和开发人员 API 命名空间参考中的 IComponentUI 接口 (COM)

另请参阅

开发自定义管道组件
CustomComponent(BizTalk Server 示例)