您必須先安裝 BAM 攔截器軟體,並將應用程式設定為使用 Windows Workflow Foundation (WF) 攔截器服務,才能開始收集 BAM 活動數據。 假設您已成功安裝 BizTalk Server 及其相依性,並已建立至少一個 BizTalk 群組。
安裝 BAM-Eventing 軟體
若要將 WF 應用程式設定為使用 WF 的 BAM 攔截器,您必須使用 BizTalk Server 安裝程式安裝 BAM-Eventing 軟體。 如需安裝 BAM-Eventing 軟體和註冊性能計數器的詳細資訊,請參閱 安裝 BAM-Eventing 軟體。
設定用於追蹤的 Windows Workflow Foundation 應用程式
WF 應用程式必須先完成四項工作,才能開始撰寫 BAM 事件資訊:
觀察模型必須使用 BizTalk Server BAM 工具建立,然後使用 BAM Manager 命令行工具部署 (bm.exe)。
必須使用 BAM Manager 命令行工具 (bm.exe) 建立及部署攔截器組態檔。
執行主應用程式的用戶必須是適當 BAM 活動事件寫入器的成員(bam_<activity>_EventWriter)SQL Server 角色,才能讓應用程式讀取攔截器組態資訊,並寫入 BAM 活動。
必須修改 App.config 檔案或應用程式本身,才能載入 BAM 追蹤服務,然後重新啟動應用程式。
只有在這些工作順利完成之後,才會開始出現在 BizTalk Server BAM 資料庫中的事件。
部署觀察模型
您必須先部署觀察模型,才能在應用程式中部署攔截器組態檔或擷取 BAM 活動。
使用 bm.exe 來部署觀察模型
按兩下 [開始 ],然後按兩下 [ 執行] 以開啟 Windows 命令提示字元。
在 [開啟] 欄位中輸入 cmd,然後按兩下 [確定]。
使用變更目錄命令,移至包含要部署之觀察模型的目錄。 例如 ,cd c:\businessprocess\Orders。
使用 bm.exe部署觀察模型:
c:\Program Files (x86)\Microsoft BizTalk Server <VERSION>\Tracking\BM.exe deploy-all -definitionfile:<definitionfile.xml>
請務必將<替換成您想要部署的definitionfile.xml>觀察檔名稱。 如需更多選項,請參閱 攔截器管理命令。
備註
在支援使用者帳戶控制 (UAC) 的系統上,您可能需要以系統管理許可權執行此工具。
輸入 Exit,然後按 ENTER 以關閉命令提示字元。
部署攔截器組態檔
您必須先部署攔截器組態檔,應用程式才能擷取 BAM 活動。
若要使用 bm.exe 來部署攔截器設定檔
按兩下 [開始 ],然後按兩下 [ 執行] 以開啟 Windows 命令提示字元。
在 [開啟] 欄位中輸入 cmd,然後按兩下 [確定]。
使用變更目錄命令,移至包含要部署攔截器組態檔的目錄。 例如 ,cd c:\businessprocess\Orders。
使用 bm.exe部署攔截器組態檔:
\Program Files (x86)\Microsoft BizTalk Server <VERSION>Tracking\BM.exe deploy-interceptor -filename:<icfile.xml>
請確定您將<取代為您要部署的攔截器組態檔名稱icfile.xml>。
備註
您可以使用 -Force:True 旗標來覆寫攔截器組態檔中具有相同名稱的現有事件來源。 如果您這樣做,請務必使用 get-interceptor 命令來備份現有的組態。 使用 -Force:True 旗標可能會刪除任何參考被覆寫事件來源的攔截器配置。
備註
在支援使用者帳戶控制 (UAC) 的系統上,您可能需要以系統管理許可權執行此工具。
輸入 Exit,然後按 ENTER 以關閉命令提示字元。
如果您已經部署 WF 應用程式,則在下次輪詢間隔之前,將不會載入新的組態。 不過,如果您設定應用程式並重新啟動它,設定將會立即生效。
將使用者新增至適當的 BAM 活動角色
BAM 攔截器架構會使用個別活動 SQL Server 角色來控制活動和組態資訊的存取。 您必須將執行 WF 應用程式的用戶帳戶新增至 BAM 主要匯入資料庫中的適當 BAM 活動角色。
設定應用程式以載入 BAM 追蹤服務
在 WF 應用程式中載入 BAM 追蹤服務有三種案例:
如果您的 WF 應用程式已經使用 WorkflowRuntime 來載入 WF 組態區段,您可以將 BAM 追蹤服務資訊新增至現有的區段。
如果您的 WF 應用程式不使用 WorkflowRuntime 來載入 WF 組態區段,您必須新增程式碼,才能從應用程式組態檔載入自定義區段。 您必須建立 區段,並將 BAM 追蹤服務資訊新增至該區段。
如果您想要將組態硬式編碼,您可以使用WF API以程式設計方式載入沒有組態檔的追蹤服務,或從自定義來源載入組態。
設定 WF 應用程式時,請注意下列考慮:
WF 攔截器每一個 WorkflowRuntime 只支援一個 BamTrackingService。
WF 攔截器支援每個應用程式域的多個 BamTrackingService 實例。
- N 個 WorkflowRuntime 數目支援 BamTrackingService。
如果不同的連接字串用於相同應用程式域中的個別 BamTrackingService 實例,攔截器就會引發例外狀況。
攔截器會從第一個啟動的 BamTrackingService 實例取得 IC 輪詢間隔時間值。
攔截器會在應用程式域中最後一個 BamTrackingService 被停止後停止 IC 輪詢執行緒。
如需 WorkflowRuntime 和載入組態資訊的詳細資訊,請參閱 https://go.microsoft.com/fwlink/?LinkId=83314。
設定 BAM 追蹤服務的 App.config 檔案
開啟與應用程式相關聯的 App.config 檔案。 您可以針對此工作使用 Notepad.exe 或其他文字編輯器。
將下列組態資訊插入 App.config 檔案,以新增 BAM 追蹤服務。 它應該被定位為
configuration
元素的子元素。備註
使用 WorkflowRuntime 類別時,區段項目應該對應至應用程式程式代碼所使用的名稱。
謹慎
此範例或指引會參考敏感性資訊,例如連接字串或使用者名稱和密碼。 請勿在程式代碼中硬式編碼這些值,並確定您使用最安全的驗證來保護機密數據。 如需詳細資訊,請參閱下列文件:
<!-- The element name must match the one expected by WorkflowRuntime in your WF application --> <WorkflowServiceContainer> <Services> <add type="Microsoft.BizTalk.Bam.Interceptors.Workflow.BamTrackingService, Microsoft.BizTalk.Bam.Interceptors, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" ConnectionString="Integrated Security=SSPI;Data Source=.;Initial Catalog=BAMPrimaryImport" PollingIntervalSec="5"/> </Services> </WorkflowServiceContainer>
修改 ConnectionString 屬性以符合您的環境。
重新啟動您的應用程式。
若要修改您的應用程式以載入自定義組態區段
在 Visual Studio 中開啟您的 Windows Workflow Foundation 專案。
將具有適當參數的 BamTrackingService 實例新增至應用程式的 WorkflowRuntime 實例:
// !! Replace "WorkflowServiceContainer" with the section name // you used in your App.config file. WorkflowRuntime workflowRuntime = new WorkflowRuntime("WorkflowServiceContainer");
重新編譯和部署已修改的應用程式。
若要修改您的應用程式,以程式化地載入 BAM 追蹤服務
在 Visual Studio 中開啟您的 Windows Workflow Foundation 專案。
將具有適當參數的 BamTrackingService 實例新增至應用程式的 WorkflowRuntime 實例:
string connectionString = "Integrated Security=SSPI;Data Source=.;Initial Catalog=BAMPrimaryImport" int pollingInterval = 5; WorkflowRuntime workflowRuntime = new WorkflowRuntime(); workflowRuntime.AddService(new BamTrackingService(connectionString, pollingInterval));
您可以根據特定環境新增或移除參數。
重新編譯和部署已修改的應用程式。