BAM 端對端 (BizTalk Server 範例)
端對端範例會示範如何使用 BAM 來使多個元件 (在此例中是三個協調流程和一個管線) 中的事件相互產生關聯。
BAM 會重新建構跨越管線元件和協調流程的商務活動。 在最低層級,這可藉由呼叫來自每個實作元件的 EventStream.EnableContinuation 來運作,這些元件預期活動有更多事件。 EnableContinuation的呼叫是明確的,而 Orchestration1 和 Orchestration2 中的呼叫則是藉由在一個排程中將 Continuation 資料夾新增至追蹤設定檔來進行,並將 ContinuationID 資料夾新增至後續排程。
下圖說明範例中使用的工作流程。
此範例的用途
BAM 端對端範例會示範如何使用 BAM 蒐集一個管線愈多個協調流程的資訊,並更新單一活動。
此範例的設計方式和原因
BAM 端對端範例是針對說明下列活動而設計:
在管線內使用 BAM。
使用追蹤設定檔編輯器 (TPE) 將活動項目對應到協調流程與訊息元素中的圖形。
當解決方案的多個部分參與活動時,使用接續讓活動保持作用中。
範例的運作方式如下:
輸入訊息會從< Samples Path >\BamEndToEnd\Input 資料夾擷取。
管線元件會將唯一的 DocumentID 指派給訊息,並使用 BAM API 來開始新的 BAM 活動。 DocumentID 會附加當做輸入訊息的個別部分,供協調流程使用。
收到輸入訊息時,就會啟動 Orchestration1 服務。
Orchestration1 修改輸入訊息,並將它當做參數傳遞給 Orchestration2。
Orchestration2 會修改輸入訊息,並將其傳送至啟動 Orchestration3 的 MessageBox 資料庫。
Orchestration3 會修改訊息,並將它寫入Samples Path > \BamEndToEnd\Output 資料夾 <。
每個協調流程都會更新 BAM 活動中的活動專案。
可在何處找到此範例
您可以在範例 Path > \BAM\BamEndToEnd 中找到此範例 <。
下表顯示此範例中的檔案,並描述其用途。
檔案 | Description |
---|---|
BamEndToEnd.sln | BAM 端對端範例方案。 |
BamEndToEnd.xls | BAM 定義樣式表。 |
BamEndToEnd.xml | BAM 定義 XML。 |
BAMEndToEndBinding.xml | BAM 繫結。 |
Cleanup.bat | 用來解除部署範例的批次檔。 |
InputMessage.xml | 輸入訊息。 |
Setup.bat | 用來編譯和部署範例的批次檔。 |
\Components\AssemblyInfo.cs | 管線元件程式碼。 |
\Components\BAMMessagePartPLComponent.cs | 管線元件程式碼。 |
\Components\Components.csproj | 管線元件專案。 |
\Messages\InputMessage01.xml ... \Messages\InputMessage10.xml |
輸入訊息範例。 |
\Services\BAMInbound.btp | 輸入管線檔案。 |
\Services\BAMPartSchema.xsd | BAM 部分訊息結構描述。 |
\Services\Orchestration1.odx | 協調流程。 |
\Services\Orchestration2.odx | 協調流程。 |
\Services\Orchestration3.odx | 協調流程。 |
\Services\PropertySchema.xsd | 屬性結構描述。 |
\Services\Schema1.xsd | 訊息結構描述。 |
\Services\Schema2.xsd | 訊息結構描述。 |
Services\Schema3.xsd | 訊息結構描述。 |
\Services\Services.btproj | Visual Studio BizTalk 檔案專案。 |
\Services\Transform_1.btm | 對應檔案。 |
\Services\Transform_2.btm | 對應檔案。 |
\Services\Transform_3.btm | 對應檔案。 |
如何使用此範例
使用下列程式來建置和執行 BAM 端對端範例:
建置並初始化此範例
以系統管理員身分開啟命令提示字元,然後執行< 範例路徑 >\BAM\BAMEndToEnd\Setup.bat。 Setup.bat 建置並初始化此範例的 BAM 基礎結構。 讓命令提示字元保持開啟。
建立追蹤設定檔,將 Orchestration1、Orchestration2 和 Orchestration3 對應至 BAM 活動。 (因為建立追蹤設定檔是複雜的程式,所以詳細的指示位於稱為 建立追蹤設定檔的個別程式中。本檔稍後會出現此程式。)
部署您在上一個步驟中建立的追蹤設定檔 BamEndToEnd.btt。 在命令提示字元中< ,變更為 Samples Path >\BAM\BamEndToEnd 目錄。 若要部署追蹤設定檔,請輸入下列程式程式碼,然後按 Enter:
“<BizTalkInstallationPath>\Tracking\bttdeploy” BamEndToEnd.btt
如何使用追蹤設定檔管理公用程式部署追蹤設定檔 提供詳細資訊。
重要
您可以忽略 ContinuationID Orch1_沒有相符接續的訊息。 這是預期訊息,因為名為 Orch1_ 的接續是在管線元件中定義,而不是在追蹤設定檔中定義。
執行這個範例
將< 範例路徑 >\BamEndToEnd\InputMessage.xml 檔案複製到Samples Path > \BamEndToEnd\Input 資料夾 <。 幾秒鐘之後,訊息會從 Input 資料夾消失,而輸出訊息會出現在< Samples Path >\BamEndToEnd\Output 資料夾中。
檢視 BAM 資料
開啟 [SQL Server Management Studio]。
在SQL Server Management Studio中,依序展開伺服器、[資料庫]、[BAMPrimaryImport] 和 [資料表]。
以滑鼠右鍵按一下 [dbo.bam_EndToEndActivity_Completed],然後按一下 [ 開啟資料表]。 如果您使用 SQL Server,請按一下[選取前 1000 個數據列]。
bam_EndToEndActivity_Completed資料表的內容會顯示在右窗格中。 資料表中的每個資料列都代表已完成的 EndToEndActivity 活動。
重新執行此範例
以系統管理員身分開啟命令提示字元,然後變更為< Samples Path >\BAM\BamEndToEnd 目錄。 輸入下列這一行:
“C:\Program Files\Microsoft BizTalk Server <version>\Tracking\bttdeploy” BamEndToEnd.btt /remove
注意
如果您未將BizTalk Server安裝到 C 磁片磁碟機,請將 「C」 取代為您安裝BizTalk Server的磁碟機號。
執行< 範例路徑 >\BAM\BAMEndToEnd\Cleanup.bat。 Cleanup.bat 移除此範例的 BAM 基礎結構。
執行本主題中 建置和初始化此範例 一節中的步驟。
建立追蹤設定檔
按一下[開始],指向[所有程式],指向[Microsoft BizTalk Server 20xx]。 以滑鼠右鍵按一下 [追蹤設定檔編輯器],然後 以系統管理員身分執行。
在 [ 追蹤設定檔編輯器 ] 視窗的左窗格中, 按一下 [按一下這裡] 以匯入 BAM 活動定義。
在 [匯入 BAM 活動定義] 對話方塊的[BAM 活動定義名稱] 區段中,選取[EndToEndActivity],然後按一下 [確定]。
在 [ 追蹤設定檔編輯器 ] 視窗的右窗格中, 按一下 [按一下這裡] 以選取事件來源。
在 [選取事件來源父元件] 對話方塊的 [元件名稱] 區段中,選取[Microsoft.Samples.BizTalk.BamEndToEnd.Services],然後按 [下一步]。
在 [選取協調流程] 對話方塊的 [協調流程名稱] 區段中,選取[BamEndToEnd.Services.Orchestration1],然後按一下 [確定]。
在 [ 追蹤設定檔編輯器] 視窗的左窗格中,以滑鼠右鍵按一下 [EndToEndActivity],然後按一下 [ 新增 ContinuationID]。 將新的接續識別碼 命名為 Orch1_。 重複此步驟,以建立兩個名為 Orch2_ 和 Orch3_ 的接續識別碼。
以滑鼠右鍵按一下 [EndToEndActivity],然後按一下 [ 新增接續]。 將新的接續 命名為 Orch2_。 重複此步驟,以建立名為 Orch3_的另一個接續。
以滑鼠右鍵按一下 Receive1 圖形,然後按一下 [內容屬性架構]。
捲動至 [內容屬性名稱] 清單的結尾,然後按兩下 BAMEndToEnd.Services.PropertySchema.DocumentID。
展開[ < 架構 >],然後將右窗格中的DocumentID拖曳至左窗格中Orch1_。
按一下具有) 兩次的資料夾 (圖示,以顯示協調流程。
將右窗格中的 Receive1 圖形拖曳至左窗格中的 SBegin1 。
將右窗格中 的StartOrchestration_1 圖形拖曳至左窗格中的 SEnd1 。
以滑鼠右鍵按一下 StartOrchestration_1 圖形,然後按一下 [ 訊息承載架構]。
按兩下 [ 訊息 ] 資料行中包含 「Message_2」 值的資料列,然後在 [Part ] 資料行中按一下值 「MessageBody」。
顯示 message_2
展開 [架構2],然後將右窗格中的 [Data2 ] 拖曳至左窗格中的 [Data1 ]。
按一下 [選取事件來源],然後按一下 [ 選取內容屬性]。
捲動至 [內容屬性名稱] 清單的結尾,然後按兩下 BAMEndToEnd.Services.PropertySchema.DocumentID。
展開[ < 架構 >],然後將DocumentID拖曳至左窗格中Orch2_接續。
注意
請勿將Orch2_接續與Orch2_接續識別碼混淆。 代表接續識別碼的圖示包含識別碼 ) 的索引鍵 (圖示,而代表接續的) 的索引鍵 (圖示。
按一下 [選取事件來源],然後按一下 [ 選取協調流程排程]。
在 [選取事件來源父元件] 對話方塊的 [元件名稱] 區段中,選取[Microsoft.Samples.BizTalk.BamEndToEnd.Services],然後按 [下一步]。
在 [選取協調流程] 對話方塊的 [協調流程名稱] 區段中,選取[BamEndToEnd.Services.Orchestration2],然後按一下 [確定]。
以滑鼠右鍵按一下 ConstructMessage_1 圖形,然後按一下 [ 訊息承載架構]。
按兩下 [訊息 ] 資料行中含有 「Message_3」 值的資料列,然後在 [ 元件 ] 資料行中按兩下包含 「BAMPart」 值的資料列。
展開 BAMPart,然後將右窗格中的 DocumentID 拖曳至左窗格中 的Orch2_ 接續識別碼。
注意
請勿將Orch2_接續與Orch2_接續識別碼混淆。 代表接續識別碼的圖示包含識別碼 ) 的索引鍵 (圖示,而代表接續的) 的索引鍵 (圖示。
按一下具有號 ) 兩次的資料夾圖示,以顯示協調流程。
將右窗格中 的ConstructMessage_1 圖形拖曳至左窗格中的 SBegin2 。
將右窗格中 的Send_1 圖形拖曳至左窗格中的 SEnd2 。
以滑鼠右鍵按一下 Send_1 圖形,然後按一下 [ 訊息承載架構]。
按兩下 [ 訊息 ] 資料行中包含 「Message_3」 值的資料列,並在 Part 資料行中按兩下 「MessageBody」 值。
展開 [架構3],然後將右窗格中的 [Data3 ] 拖曳至左窗格中的 [Data2 ]。
從右窗格上方的下拉式清單中,選取 [訊息承載架構]。
按兩下 [訊息 ] 資料行中含有 「Message_3」 值的資料列,然後在 [ 元件 ] 資料行中按兩下包含 「BAMPart」 值的資料列。
展開 BAMPart,然後將右窗格中的 DocumentID 拖曳至左窗格中 的Orch3_ 接續。
注意
請勿將Orch3_接續與Orch3_接續識別碼混淆。 代表接續識別碼的圖示包含識別碼 ) 的索引鍵 (圖示,而代表接續的) 的索引鍵 (圖示。
按一下 [選取事件來源],然後按一下 [ 選取協調流程排程]。
在 [選取事件來源父元件] 對話方塊的 [元件名稱] 區段中,選取[Microsoft.Samples.BizTalk.BamEndToEnd.Services],然後按 [下一步]。
在 [選取協調流程] 對話方塊的 [協調流程名稱] 區段中,選取[BamEndToEnd.Services.Orchestration3],然後按一下 [確定]。
以滑鼠右鍵按一下 Receive1 圖形,然後按一下 [ 訊息承載架構]。
按兩下 [訊息 ] 資料行中含有 「Message_3」 值的資料列,然後在 [ 元件 ] 資料行中按兩下包含 「BAMPart」 值的資料列。
展開 BAMPart,然後將右窗格中的 DocumentID 拖曳至左窗格中 的Orch3_ 接續識別碼。
注意
請勿將Orch3_接續與Orch3_接續識別碼混淆。 代表接續識別碼的圖示包含識別碼 ) 的索引鍵 (圖示,而代表接續的) 的索引鍵 (圖示。
按一下具有) 兩次的資料夾 (圖示,以顯示協調流程。
將右窗格中的 Receive1 圖形拖曳至左窗格中的 SBegin3 。
將右窗格中 的Send_1 圖形拖曳至左窗格中的 SEnd3 。
以滑鼠右鍵按一下 Send_1 圖形,然後按一下 [ 訊息承載架構]。
展開 [架構3],然後將右窗格中的 [Data3 ] 拖曳至左窗格中的 [Data3 ]。
以滑鼠右鍵按一下Orch2_接續下方的DocumentID,然後按一下[設定埠對應]。
注意
請勿將Orch2_接續與Orch2_接續識別碼混淆。 代表接續識別碼的圖示包含識別碼 ) 的索引鍵 (圖示,而代表接續的) 的索引鍵 (圖示。
在 [ 選取埠 ] 對話方塊的 [ 選取埠 ] 區段中,按一下 [BamEndToEnd_ReceivePort],按一下大於符號 () > ,然後按一下 [ 確定]。
將追蹤設定檔儲存至< Samples Path >\BAM\BamEndToEnd\BamEndToEnd.btt。
重要詳細資料
追蹤設定檔不支援管線。 不過,在管線元件中呼叫 BeginActivity 與在協調流程中使用 ActivityID 相同。 EnableContinuation的呼叫與在協調流程中使用接續相同。