管線元件是 .NET 或 COM 元件,可實作一組預先定義的介面,以便與 BizTalk 傳訊引擎互動。 視元件的功能而定,必須實作不同的介面。 本主題討論這些介面及其一些方法。
警告
如果您要使用 COM 建置自訂管線元件,您必須將元件設定為使用多線程 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。
| 方法 | 說明 |
|---|---|
| 反組譯碼 | 執行傳入檔 pInMsg 的反組譯。 |
| GetNext | 從反組譯程式執行所產生的訊息集取得下一個訊息。 如果沒有其他訊息,則傳回 NULL 。 |
如果您要撰寫支援可復原交換處理的反組譯器元件,您必須執行下列動作:
將輸入數據流包裝在 VirtualStream() 中,讓輸入數據流成為可搜尋的。
在 GetNext() 中,有邏輯可判斷訊息何時不正確。 如果訊息有誤,請設定 BTS.MessageDestination = "SuspendQueue",並在 GetNext() 中返回該訊息。
如果訊息正常,設置 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
這是用於從 managed 和 unmanaged 程式碼存取文件架構的協助氛程式介面。
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)。