共用方式為


如何設定用於攔截的 Workflow Foundation 應用程式

您必須先安裝 BAM 攔截器軟體,並將您的應用程式設定為使用 Windows Workflow Foundation (WF) 攔截器服務,才能開始收集 BAM 活動資料。 假設您已成功安裝BizTalk Server及其相依性,並已建立至少一個 BizTalk 群組。

安裝 BAM-Eventing 軟體

您必須先使用 BizTalk Server 安裝程式來安裝 BAM-Eventing 軟體,才能將 WF 應用程式設定為使用 WF 的 BAM 攔截器。 如需安裝 BAM-Eventing 軟體及註冊效能計數器的詳細資訊,請參閱 安裝 BAM-Eventing 軟體

設定用於追蹤的 Windows Workflow Foundation 應用程式

WF 應用程式必須先完成四項工作,才能開始撰寫 BAM 事件資訊:

  • 觀察模型必須使用 BizTalk Server BAM 工具建立,然後使用 BAM 管理員命令列工具 (bm.exe) 進行部署。

  • 必須使用 BAM 管理員命令列工具 (bm.exe) 建立及部署攔截器組態檔。

  • 執行主應用程式的使用者必須是適當 BAM 活動事件寫入器的成員 (bam_ < activity > _EventWriter) SQL Server角色,讓應用程式能夠讀取攔截器組態資訊並寫入 BAM 活動。

  • App.config 檔案或應用程式本身必須經過修改,才能載入 BAM 追蹤服務並接著重新啟動應用程式。

    只有在順利完成這些工作之後,才會開始出現在BizTalk Server BAM 資料庫中的事件。

部署觀察模型

您必須部署觀察模型,才能部署攔截器組態檔或擷取您應用程式中的 BAM 活動。

若要使用 bm.exe 部署觀察模型
  1. 按一下 [啟動 ],然後按一下 [ 執行 ] 以開啟 Windows 命令提示字元。

  2. 在 [開啟] 欄位中輸入cmd,然後按一下 [確定]。

  3. 使用變更目錄命令移至內含要部署之觀察模型的目錄。 例如, cd c:\businessprocess\Orders

  4. 使用 bm.exe 部署觀察模型:

    c:\Program Files (x86) \Microsoft BizTalk Server < VERSION >\Tracking\BM.exe deploy-all -definitionfile: <definitionfile.xml>

    請務必將definitionfile.xml> 取代 < 為您想要部署的觀察檔名稱。 如需更多選項,請參閱 攔截器管理命令

    注意

    在支援使用者帳戶控制 (UAC) 的系統上,您可能需要使用系統管理權限來執行工具。

  5. 輸入 Exit,然後按 ENTER 以關閉命令提示字元。

部署攔截器組態檔

您必須部署攔截器組態檔,應用程式才能擷取 BAM 活動。

若要使用 bm.exe 部署攔截器組態檔
  1. 按一下 [啟動 ],然後按一下 [ 執行 ] 以開啟 Windows 命令提示字元。

  2. 在 [開啟] 欄位中輸入cmd,然後按一下 [確定]。

  3. 使用變更目錄命令移至內含要部署之攔截器組態檔的目錄。 例如, cd c:\businessprocess\Orders

  4. 使用 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) 的系統上,您可能需要使用系統管理權限來執行工具。

  5. 輸入 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 就支援 N 個 BamTrackingService。
  • 若同一個應用程式網域中,不同的 BamTrackingService 執行個體使用不同的連線字串,攔截器就會引發例外狀況。

  • 攔截器會從第一個啟動的 BamTrackingService 執行個體取得 IC 輪詢間隔值。

  • 應用程式網域中的最後一個 BamTrackingService 停止時,攔截器就會停止 IC 輪詢執行緒。

    如需 WorkflowRuntime 和載入組態資訊的詳細資訊,請參閱 https://go.microsoft.com/fwlink/?LinkId=83314

若要設定 BAM 追蹤服務的 App.config 檔案
  1. 開啟與應用程式關聯的 App.config 檔案。 使用 Notepad.exe 或其他文字編輯器開啟即可。

  2. 將下列組態資訊插入 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>
    
  3. 修改 ConnectionString 屬性以符合您的環境。

  4. 重新啟動您的應用程式。

若要修改應用程式以載入自訂組態區段
  1. 在 Visual Studio 中開啟 Windows Workflow Foundation 專案。

  2. 將具有適合之參數的新 BamTrackingService 執行個體,加入至應用程式的 WorkflowRuntime 執行個體:

    // !! Replace "WorkflowServiceContainer" with the section name
    // you used in your App.config file.
    WorkflowRuntime workflowRuntime = new WorkflowRuntime("WorkflowServiceContainer");
    
  3. 重新編譯並部署修改後的應用程式。

若要修改應用程式以透過程式設計的方式載入 BAM 追蹤服務
  1. 在 Visual Studio 中開啟 Windows Workflow Foundation 專案。

  2. 將具有適合之參數的新 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));
    

    您可根據特定環境新增或移除參數。

  3. 重新編譯並部署修改後的應用程式。