使用管線介面
管線元件是一種 .NET 或 COM 元件,會實作一組預先定義的介面,以便與 BizTalk 傳訊引擎進行互動。 取決於元件的功能,必須實作不同的介面。 本主題討論這些介面,以及其所具有的一些方法。
警告
如果您使用 COM 建置自訂管線元件,必須設定元件以使用多執行緒 Apartment (MTA) 模型。 否則,叫用您的元件便會造成具有 E_NOINTERFACE 錯誤的失敗。
IPipelineContext
所有管線元件都可以使用 IPipelineCoNtext 方法來存取所有檔處理特定介面。 IPipelineCoNtext介面提供下列功能:
讓元件能夠擷取環境管線和階段設定。
讓元件能夠擷取訊息和訊息 Factory。 運用這些 Factory,元件可以建立執行元件時所需要的各種物件。
讓元件能夠擷取文件規格。 文件規格是 XSD 結構描述加上其他註釋。
IBaseComponent
所有管線元件都需要實作此介面以提供元件的基本資訊。
IComponent
所有的管線元件 (組合器與解譯器除外) 都會實作此介面,以便從 BizTalk Server 引擎取得訊息,進而加以處理,並將處理過的訊息傳回到引擎。
Execute。 由引擎呼叫的方法,將輸入訊息傳遞到元件,並從元件擷取處理過的訊息。
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 新增至將包含在交換中的訊息清單。 |
Assemble | 從藉由上一個方法新增的訊息中建立交換。 將指標傳回到組合的訊息。 |
IProbeMessage
任何管線元件 (一般、組合或反組譯) ,只要需要訊息探查功能,就可以實作 IProbeMessage 。 探查元件用於具有 FirstMatch 執行模式的管線階段。 在這類階段中,BizTalk Server提供訊息給元件,而 Probe方法會檢查訊息的開頭,以判斷元件是否辨識訊息的格式。
方法 | Description |
---|---|
探查 | 這個方法會接受 pInMsg 訊息,如果辨識格式則傳回 True ,否則傳回 False 。 |
INamedItem
這是從 Managed 和 Unmanaged 程式碼存取文件結構描述的協助程式介面。
INamedItemList
這是從 Managed 和 Unmanaged 程式碼存取文件結構描述的協助程式介面。
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) 。