管道组件是一个 .NET 或 COM 组件,它实现一组预定义接口,以便与 BizTalk 消息引擎交互。 必须实现不同的接口,具体取决于组件的功能。 本主题讨论这些接口及其一些方法。
警告
如果您正在使用 COM 构建自定义管道组件,必须将组件配置为使用多线程单元模型(Multi-Threaded Apartment, MTA)。 如果不这样做,组件的调用将因 E_NOINTERFACE 错误而失败。
IPipelineContext
所有管道组件都可以使用 IPipelineContext 方法访问所有特定于文档处理的接口。 IPipelineContext 接口提供以下功能:
允许组件检索环境管道和阶段设置。
允许组件检索消息和消息工厂。 使用这些工厂,组件可以创建执行组件所需的各种对象。
允许组件检索文档规范。 文档规范是 XSD 架构和其他批注。
IBaseComponent
所有管道组件都需要实现此接口,以提供有关组件的基本信息。
IComponent
除汇编程序和反汇编程序之外的所有管道组件都实现了此接口,以便从 BizTalk Server 引擎获取消息进行处理,并将已处理的消息传回引擎。
执行。 引擎调用的方法,用于将输入消息传递给组件并从组件检索已处理的消息。
IPropertyBag、IPersistPropertyBag
管道组件需要实现 IPersistPropertyBag 才能接收其配置信息。 此接口和 IPropertyBag 是标准接口。 有关这些接口的详细信息,请参阅 Microsoft .NET Framework 软件开发工具包 (SDK) 文档。
IDisassemblerComponent
反汇编组件是管道组件,该组件在输入上接收一条消息,并在输出时生成零个或多个消息。 拆解组件用于将消息交换内容拆分为单个文档。 反汇编程序组件必须实现 IDisassemblerComponent 接口的方法,以便从 BizTalk Server 获取消息进行处理,并将反汇编的文档传递回 BizTalk Server。
方法 | DESCRIPTION |
---|---|
反汇编 | 执行传入文档 pInMsg 的反汇编。 |
GetNext | 从由析构执行而生成的消息集中获取下一条消息。 如果没有其他消息,则返回 NULL 。 |
如果要编写支持可恢复交换处理的反汇编程序组件,则必须执行以下作:
通过将输入流包装在 VirtualStream() 中来使它们可查找。
在 GetNext()中,有逻辑来确定消息是否不正确。 如果消息有误,请设置BTS.MessageDestination = "SuspendQueue",并在GetNext()中返回该消息。
如果消息正常,请设置 BTS。SuspendMessageOnRoutingFailure = True,并在 GetNext()中返回消息。
IAssemblerComponent
程序集组件是一个管道组件,它接收输入上的多个消息,并在输出上生成一条消息。 程序集组件用于将单个文档收集到消息交换批处理中。
注释
在此版本的 BizTalk Server 中,不使用汇编功能,因此 BizTalk Server 始终将一个文档传递给组件输入。
汇编程序组件实现 BizTalk Server 引擎在运行时调用的 IAssemblerComponent 方法。
方法 | DESCRIPTION |
---|---|
AddDocument | 将文档 pInMsg 添加到交换中包含的消息列表中。 |
程序集 | 根据先前方法添加的消息生成信息交换。 返回指向已组装消息的指针。 |
IProbeMessage
如果需要消息探测功能,任何管道组件(包括普通组件、汇编和反汇编组件)都可以实现 IProbeMessage。 探测组件用于具有 FirstMatch 执行模式的管道阶段。 在此类阶段,BizTalk Server 向组件提供消息, 探测 方法检查消息的开头以确定组件是否识别消息的格式。
方法 | DESCRIPTION |
---|---|
探测 | 此方法采用 pInMsg 消息,如果识别格式,则返回 True ;否则返回 False 。 |
INamedItem
这是一个辅助接口,用于从托管和非托管代码访问文档架构。
INamedItemList
这是一个辅助接口,用于从托管和非托管代码访问文档架构。
IDocumentSpec
管道组件可以使用 IDocumentSpec 接口的方法来执行特定于文档的作,例如将内容属性移动到上下文和后台、访问文档架构等。
方法 | DESCRIPTION |
---|---|
DocType | 返回当前文档的类型。 |
DocSpecName | 返回当前文档的规范名称。 |
GetSchemaCollection | 返回当前文档的文档架构列表。 |
GetBodyPath | 将 XPath 返回到正文部件开始的文档中的节点。 |
GetDistinguishedPropertyAnnotationEnumerator | 返回所有区分性字段属性注释的字典枚举器。 |
GetPropertyAnnotationEnumerator | 返回所有属性注释的枚举器。 |
IComponentUI
管道组件必须实现此接口,才能在管道设计器环境中使用。
方法 | DESCRIPTION |
---|---|
图标 | 提供与此组件关联的图标。 |
验证 | 管道设计器在管道编译之前调用此方法,以验证是否已正确设置所有配置属性。 |
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)。