共用方式為


EnvelopeProcessing (BizTalk Server 範例)

EnvelopeProcessing 範例示範如何在 BizTalk Server 管線中處理訊息和訊息信封。 此外,它會示範如何將一般檔案訊息處理成 XML 訊息。

此範例的用途

此範例會將 EnvInput 資料夾設定為接收位置。 當您放置檔案,例如範例檔案 EnvelopeProcessing_in.txt,在此資料夾中,BizTalk Server 會使用下列步驟處理此檔案中的訊息:

  1. BizTalk Server 會從接收位置資料夾 EnvInput 擷取訊息檔案。

  2. 在接收管線中,平面檔案反組譯工具管線元件會從平面檔案訊息中移除標頭和尾碼,並將其解析成單個訊息。

  3. 在 MessageBox 資料庫中,訊息會使用訂用帳戶篩選器路由傳送至傳送埠。

  4. 在傳送埠的傳送管線中,XML 組合器管線元件會將訊息包裝在 XML 信封中,然後將訊息放入傳送配接器資料夾 EnvOutput 中。

此範例的設計方式和原因

此範例的設計必須符合兩個基本需求:

  • 接收及處理包含一或多個採購單的純文字檔訊息。

  • 將包含一個採購單和傳送者資訊的 XML 訊息傳送至目錄,以供後端處理系統取貨。

    為了符合這些需求,使用了一般檔案/XML 架構和自定義管線的組合。 下表摘要說明這些和其他設計元素。

設計元素 已選擇的原因
自訂接收管線 - 使用一般檔案反組譯器和一般檔案架構來轉譯輸入採購單訊息。
訊息標頭、本文和預告片的一般檔案架構 - 定義所有與 XML 架構相同的記錄和欄位特性(包括結構),並提供一個機制來定義將一般檔案實例訊息轉譯成對等的 XML 實例訊息所需的所有一般檔案特性(反之亦然)。
- 標頭、本文和結尾架構用於將本文分割成離散區塊進行處理。
信封架構 - 用來包裝具有標頭信息的個別採購單。
訂用帳戶篩選器 - 訂閱篩選條件會根據屬性字段擷取符合一或多個準則的訊息,以執行實際的路由。
自定義傳送管線 - 使用 XML 組合器和信封和本文架構的組合,將實例訊息轉譯成 XML 格式。

下列考慮適用於此範例的設計。

  • 一般檔案架構 (PO.xsd) 包含描述採購單一檔案結構的擴充批注。 您可以手動建立這些檔案,但許多檔案都可以使用一般檔案精靈來產生。

  • 採購單(PO.xsd)扁平檔案架構會使用 elementFormDefault 預設值為 Unqualified。 這會產生正確的結果,但具有額外且非預期的 xmlns 限定。 使用 Qualified 的 elementFormDefault 來避免此問題。

  • 標頭和結尾的平面檔案結構用於將訊息的標頭和結尾資料分開。 一般檔案反組譯工具標頭、檔和預告片架構屬性分別設定為標頭、採購單和預告片架構。

  • XML 信封架構會結合標頭和採購單中的元素,以產生單一 XML 訊息。 標頭架構會將Source欄位升級至 BTS.bts_system_properties 命名空間中的SourceParty字段;信封架構會提升這個相同的值,使其降級為輸出訊息。

尋找此範例的位置

<Samples Path>\Pipelines\AssemblerDisassembler\EnvelopeProcessing\

下表顯示此範例中的檔案,並描述其用途。

檔案 說明
Cleanup.bat 用來取消部署元件,並從全域程式集緩存中移除它們。 拿掉傳送和接收埠。 視需要移除 Microsoft Internet Information Services (IIS) 虛擬目錄。
EnvelopeProcessing.btproj, EnvelopeProcessing.sln 此範例的專案和方案檔。
EnvelopeProcessing_in.txt 範例輸入檔。
Header.xsd、PO.xsd、Trailer.xsd 一般檔案標頭、本文和預告片的架構分別。
XmlEnvelope.xsd 輸出 XML 信封的架構。
EnvReceivePipeline.btp、EnvSendPipeline.btp BizTalk Server 會分別接收和傳送具有一般檔案反組譯程式和 XML 組合器管線元件的管線檔案。
EnvelopeProcessingBinding.xml 用於自動化設定,例如埠系結。
Setup.bat 用來建置和初始化此範例。

如何使用此範例

使用此範例作為您自己的一般檔案處理解決方案的基礎。 您可以擴充此範例中使用的許多設計元素,以符合您自己的需求。 一些範例如下所示:

  • 除了 XML 版本之外,更新範例以撰寫每個採購單的平面檔案版本。 您可以建立新的自定義傳送管線,並使用一般檔案組合器來執行此動作。 在 [一般檔案組合器] 上,指定一般檔案標頭、採購單和預告片架構。 在傳送埠中使用時,會產生具有標頭/結尾資訊的個別採購單。

  • 使用採購單中的詳細信息來增強信封。 若要將其他資訊寫入輸出訊息,請使用「Quick Promote」,將「寄送至」名稱或其他欄位升階,然後將欄位新增至信封,再將信封中的欄位升階至相同欄位。 當訊息透過組合器處理時,已升級的屬性會被降級,並複製到輸出訊息中。

建置和初始化此範例

要建置並初始化 EnvelopeProcessing 範例

  1. 在命令視窗中,瀏覽至下列資料夾:

    <範例 Path>\Pipelines\AssemblerDisassembler\EnvelopeProcessing

  2. 執行檔案 Setup.bat,其會執行下列動作:

    • 在資料夾中建立此範例的輸入 (EnvInput) 和輸出 (EnvOutput) 資料夾:

      <範本路徑>\Pipelines\AssemblerDisassembler\EnvelopeProcessing\

    • 編譯及部署此範例的Visual Studio專案。

    • 建立並系結 BizTalk Server 接收位置,以及傳送和接收埠。

      這個範例會在建立和系結埠時顯示下列警告:

      Warning: Receive handler not specified for receive location "EnvelopeProcessing_RL"; updating with first receive handler with matching transport type.  
      Warning: Host not specified for orchestration "EnvelopeProcessing"; updating with first available host.  
      

      您可以放心地忽略這些警告。 (為了因應使用者安裝中可能的命名差異,已從系結檔案省略主機名和接收處理程式。

    • 啟用接收位置,並啟動傳送埠。

備註

您應該先確認 BizTalk Server 在建置和初始化程式期間未報告任何錯誤,然後再嘗試執行此範例。

備註

如果您選擇在此範例中開啟並建置專案而不執行 Setup.bat,您必須先使用 .NET Framework 強名稱公用程式建立強名稱密鑰組(sn.exe)。 使用此金鑰組簽署產生的元件。

備註

若要復原 Setup.bat所做的變更,請執行 Cleanup.bat。 您必須在第二次執行 Setup.bat 之前執行 Cleanup.bat。

執行此範例

執行 EnvelopeProcessing 範例

  1. 將檔案的複本 EnvelopeProcessing_in.txt 放入 EnvInput 資料夾中。

  2. 觀察 EnvOutput 資料夾中建立的三個 .xml 檔案。 這些 .xml 檔案的名稱是以其訊息標識碼 GUID 為基礎。 它們包含從輸入檔擷取並包裝在信封中的訊息。

此範例中使用的類別或方法

組態腳本 Setup.bat 和 Cleanup.bat 依賴下列系統管理 Windows Management Instrumentation (WMI) 腳本:

  • 啟動發送端口\StartSendPort.vbs

  • 啟用接收位置\EnableRecLoc

  • 移除傳送埠\RemoveSendPort

    安裝程式和清除批處理檔會使用 BTSTask,如下所示:

  • BTSTask ImportBindings 以套用系結檔案並建立應用程式、埠和系結

  • BTSTask RemoveApp 以移除 FlatFileReceiveApplication

另請參閱

Pipelines-AssemblerDisassembler (BizTalk Server Samples 資料夾)