BTARN 接收管線
Microsoft BizTalk Accelerator for RosettaNet (BTARN) 會透過 RNIFReceive 管線 (RNIFReceive.btp) 執行 RNIF 實作架構 (RNIF) 訊息接收。 接收管線包含下列元件:
ReceiveMessageNonRepudiate
RNMimeDecoder (MIME 前置處理器/解碼器)
RNDAsm (XML 解譯器)
RNPartyRes (「合作對象解析」元件)
MessageUpdater
ReceiveMessageNonRepudiate
此元件將接收到的訊息儲存於 MessageStorageIn 資料表。 元件會執行 RNIF 標準所需的不可否認性處理作業。
RNMimeDecoder
此元件是以原生BizTalk Server MIME 預處理器/解碼器為基礎。 RNMimeDecoder 為 RNIF 處理作業新增下列功能:
對於 RNIF 2.01,解密服務內容和附件 (如果有的話)。
對於 RNIF 1.1,在承載結束時處理 8 位元組標頭及卸離的簽章標頭。
For more information about the native BizTalk Server preprocessor/decoder, see "MIME/SMIME Decoder Pipeline Component" in BizTalk Server Help.
RNDAsm
此元件是以原生BizTalk Server XML 反組譯程式為基礎。 RNDAsm 為 RNIF 處理作業新增下列功能:
如果內送文件含有 DOCTYPE 標頭,此元件會經由該標頭產生命名空間,並將內送文件中的所有節點移到該命名空間。
執行訊息關聯以判斷內送訊息是否重複,若訊息重複,則會產生錯誤訊息。
將附件另存為訊息的額外部分。
升級訊息屬性。
For more information about the native BizTalk Server Disassembler, see "XML Disassembler Pipeline Component" in BizTalk Server Help.
RNPartyRes
此元件是以原生BizTalk Server合作物件解析元件為基礎。 RNPartyRes 為 RNIF 處理作業新增下列功能:
如果內送訊息簽署為 BizTalk 合作對象,則對應至傳送者憑證。 如果內送訊息未經簽署,且交易夥伴協議允許這種情形,此元件會從 RNIF 2.01 的傳遞標頭或 RNIF 1.1 的服務標頭擷取傳送者合作對象。
驗證傳送者是否存在,以及傳送者與主要組織是否有交易夥伴協議。
如需原生BizTalk Server合作物件解析元件的詳細資訊,請參閱BizTalk Server說明中的。
MessageUpdater
此元件為 RNIF 處理作業新增下列功能:
使用 ReceiveMessageNonRepudiate 元件所儲存傳輸訊息的 PIP 代碼、PIP 版本、來源合作對象、目的合作對象及訊息追蹤識別碼,更新 MessageStorageIn 資料表。
如果 PIP 不需要不可否認性,請標示要刪除的記錄,並設定
ToBePurged = True
。
訊息流程
透過 BTARN 接收管線的訊息流程如下所示:
HTTP 配接器透過 HTTP POST 接收 RNIF 1.1 物件或 RNIF 2.01 商務訊息。
如果配接器成功接收訊息,就會擷取 RosettaNet 物件或商務訊息,然後傳送到接收管線。
如果物件或商務訊息已簽署,MIME 前置處理器/解碼器會移除簽章。
如果簽章有效,解譯器會讀取前序。
如果訊息是動作訊息,而且需要非否認性, (進程組態
True
設定中的[原始來源和內容] 設定為) ,解碼器會計算並保存摘要。解譯器會驗證前序 (使用全域變數中的訊息 (MSG) 指導方針和前序結構描述)。
對於 RNIF 2.01,解譯器會讀取傳遞標頭,並使用全域變數中的 MSG 指導方針和傳遞標頭結構描述來驗證標頭。
對於 RNIF 2.01,解譯器會從傳遞標頭擷取交易夥伴資訊,並檢查簽章以確認是否屬於交易夥伴。
對於 RNIF 2.01,如果內容已加密,解碼器會解密內容容器。
解譯器會讀取服務標頭,並使用全域變數中的 MSG 指導方針及服務標頭結構描述來驗證標頭。
對於 RNIF 1.1,解譯器會從服務標頭擷取交易夥伴資訊,並檢查簽章以確認是否屬於交易夥伴。
解譯器會檢查交易夥伴是否具有 PIP 的授權。 如果沒有,解譯器將以 HTTP 403 狀態訊息回覆 HTTP POST (如有必要),然後發佈錯誤。
如果訊息是帶正負號的動作訊息 ,且 [原始來源與內容] 的不可否認 性設定
True
為 ,ReceiveMessageNonRepudiate 元件會將原始訊息保存在 MessageStorageIn 資料表中。如果訊息是帶正負號的訊號訊息,且 [必要] 設定
True
為 [必要] ,ReceiveMessageNonRepudiate 元件就會保存 MessageStorageIn 資料表中的訊號訊息。如果訊息基於不可否認性而保留於 MessageStorageIn 資料表,則 MessageUpdater 會使用訊息的程序組態屬性更新 MessageStorageIn 資料表。
如果訊息是先前處理動作訊息的重複動作訊息,BTARN 將會張貼錯誤。
對於 RNIF 2.01,如果動作訊息已加密,且 HTTP 同步性 (Synchronicity) 與 PIP 同步性的需求相符,解碼器將解密內容。
解譯器會讀取服務內容,並使用 MSG 指導方針及結構描述加以驗證。
對於 RNIF 2.01,解譯器會驗證資訊清單是否有效,以及是否有內容識別碼。
對於 RNIF 2.01,解譯器將讀取任何附件。
BTARN 會將 RosettaNet 標頭、服務內容和附件路由傳送至公用程式。