共用方式為


建立自訂工作流程 (Master Data Services)

適用於:SQL Server - 僅限 Windows Azure SQL 受控執行個體

Master Data Services 會使用商務規則來建立基本工作流程解決方案,例如自動更新和驗證數據,並根據您指定的條件傳送電子郵件通知。 當您需要比內建工作流程動作提供更複雜的處理時,請使用自定義工作流程。 自訂工作流程是您建立的 .NET 元件。 呼叫工作流程元件時,您的程式代碼可以採取您的情況所需的任何動作。 例如,如果您的工作流程需要複雜的事件處理,例如多層式核准或複雜的判定樹,您可以設定 Master Data Services 來啟動自定義工作流程,以分析數據並決定要傳送核准的位置。

如何處理自定義工作流程

處理自定義工作流程涉及三個主要元件:Master Data Manager Web 應用程式、SQL Server MDS 工作流程整合服務,以及工作流程處理程式元件。 這些元件會處理自定義工作流程,如下所示:

  1. 您可以使用 Master Data Manager 來驗證啟動工作流程的實體。

  2. Master Data Manager 會將符合商務規則條件的成員傳送至 Master Data Services 資料庫中的 Service Broker 佇列。

  3. SQL Server MDS 工作流程整合服務會定期呼叫 Master Data Services 資料庫中的預存程式。

  4. 當此預存程式在 Service Broker 佇列中尋找記錄時,會將記錄傳回 SQL Server MDS 工作流程整合服務。

  5. SQL Server MDS 工作流程 Integration Services 會將數據路由傳送至您的工作流程處理程式元件。

注意

注意:SQL Server MDS 工作流程整合服務旨在觸發簡單的程式。 如果您的自定義程式碼需要複雜的處理,請在個別線程或工作流程進程外部完成您的處理。

設定自定義工作流程的 Master Data Services

建立自定義工作流程需要撰寫一些自定義程式代碼,並設定 Master Data Services 將工作流程數據傳遞至工作流程處理程式。 請遵循下列步驟來啟用自訂工作流程處理:

  1. 建立實作 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 的 .NET 元件。

  2. 設定 SQL Server MDS 工作流程整合服務以連線到 Master Data Services 資料庫,並將標記與您的工作流程處理程式產生關聯。

  3. 啟動 SQL Server MDS 工作流程整合服務。

  4. 在 Master Data Manager 中建立商務規則,以工作流程處理程式的名稱標記工作流程。

  5. 將商務規則套用至觸發自定義工作流程的成員。

建立工作流程處理程式元件

自定義工作流程是實作 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 介面的 .NET 類別庫元件。 SQL Server MDS 工作流程整合服務會呼叫 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* 方法來執行程序代碼。 如需實作 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* 的範例程式代碼,請參閱自定義工作流程範例(Master Data Services)。

請遵循下列步驟,使用 Visual Studio 2010 建立 SQL Server MDS 工作流程整合服務可以呼叫的元件來處理自定義工作流程:

  1. 在 Visual Studio 2010 中,建立新的 類別庫 專案,以使用您選擇的語言。 若要建立 C# 類別庫,請選取 Visual C#\Windows 專案類型,然後選取 [類別庫 ] 範本。 輸入項目的名稱,例如 MDSWorkflowTest,然後按兩下 [ 確定]。

  2. 新增Microsoft.MasterDataServices.WorkflowTypeExtender.dll的參考。 您可以在您的安裝資料夾>\Master Data Services\WebApplication\bin 中找到<此元件。

  3. 將 'using Microsoft.MasterDataServices.Core.Workflow;' 新增至您的 C# 程式代碼檔案。

  4. 繼承自 類別宣告中的 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 。 類別宣告應該類似:『public class WorkflowTester : IWorkflowTypeExtender』。

  5. 實作 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 介面。 SQL Server MDS 工作流程整合服務會呼叫 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* 方法以啟動工作流程。

  6. 將元件複製到 SQL Server MDS 工作流程整合服務可執行檔的位置,名為 Microsoft.MasterDataServices.Workflow.exe,位於 <您的安裝資料夾>\Master Data Services\WebApplication\bin。

設定 SQL Server MDS 工作流程整合服務

編輯 Master Data Services 組態檔,以包含 Master Data Services 資料庫的連線資訊,並遵循下列步驟,將標籤與您的工作流程處理程式元件產生關聯:

  1. 在安裝資料夾>\Master Data Services\WebApplication\bin 中<尋找 Microsoft.MasterDataServices.Workflow.exe.config。

  2. 將 Master Data Services 資料庫連接資訊新增至 “ConnectionString” 設定。 如果您的 SQL Server 安裝使用區分大小寫的定序,則必須以與資料庫中相同的大小寫輸入資料庫名稱。 例如,完整設定標籤看起來可能如下所示:

    <setting name="ConnectionString" serializeAs="String">  
        <value>Server=myServer;Database=myDatabase;Integrated Security=True</value>  
    </setting>  
    
  3. 在 「ConnectionString」 設定下方新增 「WorkflowTypeExtenders」 設定,以將標籤名稱與您的工作流程處理程式元件產生關聯。 例如:

    <setting name="WorkflowTypeExtenders" serializeAs="String">  
        <value>TEST=MDSWorkflowTestLib.WorkflowTester, MDSWorkflowTestLib</value>  
    </setting>  
    

    值標記的內部<文字格式<為 Workflow tag>=<assembly-qualified 工作流程類型名稱>。> <工作流程標籤> 是您在 Master Data Manager 中建立商務規則時用來識別工作流程處理程式元件的名稱。 <元件限定工作流程類型名稱> 是工作流程類別的命名空間限定名稱,後面接著逗號,後面接著元件的顯示名稱。 如果您的元件具有強名稱,您也必須包含版本資訊及其 PublicKeyToken。 如果您已為不同類型的工作流程建立多個工作流程處理程式,則可以包含多個 <設定> 標籤。

注意

根據伺服器的組態,當您嘗試儲存 Microsoft.MasterDataServices.Workflow.exe.config 檔案時,您可能會看到「拒絕存取」錯誤。 如果發生這種情況,請暫時停用伺服器上的用戶帳戶控制 (UAC)。 若要這樣做,請開啟 控制台,按兩下 [系統和安全性]。 在 [控制中心] 底下,按兩下 [變更使用者帳戶控制設定]。 在 [ 用戶帳戶控制設定 ] 對話框中,將列滑到底部,讓您永遠不會收到通知。 重新啟動計算機,然後重複上述步驟來編輯您的組態檔。 儲存盤案之後,請將UAC設定重設為預設層級。

啟動 SQL Server MDS 工作流程整合服務

根據預設,不會安裝 SQL Server MDS 工作流程整合服務。 您必須先安裝服務,才能使用它。 為了獲得最大的安全性,請為服務建立本機使用者,並只授與此用戶執行工作流程作業所需的許可權。 若要建立使用者、安裝服務並啟動服務,請遵循下列步驟:

  1. 使用本機使用者和群組管理員來建立名為 的本機使用者,例如mds_workflow_service。

  2. 使用 SQL Server Management Studio 授與mds_workflow_service使用者執行 [mdm] 的許可權。[udpExternalActionsGet] 預存程式。 若要這樣做,請為mds_workflow_service帳戶建立新的登入、在 Master Data Services 資料庫中建立新使用者、將此用戶對應至mds_workflow_service登入,並將使用者 EXECUTE 許可權授與 [mdm]。[udpExternalActionsGet] 預存程式。

  3. 授與mds_workflow_service用戶執行工作流程處理程式元件的許可權。 若要這樣做,請將mds_workflow_service使用者新增至工作流程處理程式元件之 [屬性] 的 [安全性] 索引標籤,並授與mds_workflow_service使用者 READ 和 EXECUTE 許可權。

  4. 授與mds_workflow_service使用者執行 SQL Server MDS 工作流程整合服務可執行文件的許可權。 若要這樣做,請將mds_workflow_service使用者新增至 Microsoft.MasterDataServices.Workflow.exe 屬性的 [安全性] 索引標籤,並<>授與mds_workflow_service使用者 READ 和 EXECUTE 許可權。

  5. 使用名為 InstallUtil.exe 的 .NET 安裝公用程式,安裝 SQL Server MDS 工作流程整合服務。 您可以在 .NET 安裝資料夾中找到InstallUtil.exe,例如 C:\Windows\Microsoft.NET\Framework\v4.0.30319\。 在提升許可權的命令提示字元中輸入下列命令,以安裝 SQL Server MDS 工作流程整合服務:

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil Microsoft.MasterDataServices.Workflow.exe  
    

    在安裝期間出現提示時,指定mds_workflow_service使用者。

  6. 使用服務嵌入式管理單元啟動 SQL Server MDS 工作流程整合服務。 若要這樣做,請在服務嵌入式管理單元中尋找 SQL Server MDS 工作流程整合服務,選取它,然後按兩下 [ 開始 ] 連結。

建立工作流程商務規則

使用 Master Data Manager 建立及發佈商務規則,以在套用時啟動工作流程。 您應該確定您的商務規則包含變更屬性值的動作,讓規則在套用一次之後評估為 false。 例如,當 Price 屬性值大於 500 且核准的屬性值是空白時,您的商務規則可能會評估為 true。 然後,規則可以包含兩個動作:一個將核准的屬性值設定為 [擱置],另一個則用來啟動工作流程。 或者,您可能想要建立使用「已變更」條件的規則,並將屬性新增至變更追蹤群組。 如需商務規則的詳細資訊,請參閱商務規則(Master Data Services)。

遵循下列步驟,建立商務規則,以在 Master Data Manager 中啟動自定義工作流程:

  1. 在 Master Data Manager 的商務規則編輯器中,指定商務規則的條件之後,將 [開始工作流程] 動作從 [外部動作] 清單拖曳[THEN] 窗格的 [動作] 卷標。

  2. 在 [ 編輯動作] 窗格的 [工作流程類型 ] 方塊中,輸入可識別工作流程處理程式元件的標記。 這是您在元件元件組態檔中指定的標記,例如 TEST。

  3. 或者,選取 [ 包含成員數據 ] 複選框。 選擇此選項,以在傳遞至工作流程處理程式的 XML 中包含屬性名稱和值。

  4. 在 [ 工作流程網站] 方塊中,輸入網站的名稱。 針對您的自定義工作流程,這可能不適用,但可用於新增的內容。

  5. 在 [ 工作流程名稱] 方塊中,從 Visual Studio 輸入工作流程的名稱。 針對您的自定義工作流程,這可能不適用,但可用於新增的內容。

  6. 儲存併發佈商務規則。

套用商務規則以啟動工作流程

將商務規則套用至您的數據以啟動工作流程。 若要這樣做,請使用 Master Data Manager 來編輯包含您要驗證之成員的實體。 按兩下 [ 套用商務規則]。 為了回應商務規則,Master Data Manager 會填入 Master Data Services 資料庫的 Service Broker 佇列。 當 SQL Server MDS 工作流程整合服務檢查佇列時,會將數據傳送至指定的工作流程處理程式元件,並清除佇列。 工作流程處理程式元件會執行您已編碼到其中的任何動作。

針對自定義工作流程進行疑難解答

如果您的工作流程處理程式元件未收到數據,您可以嘗試偵錯 SQL Server MDS 工作流程整合服務或檢視 Service Broker 佇列。

偵錯 SQL Server MDS 工作流程整合服務

若要對 SQL Server 工作流程整合服務進行偵錯,請執行下列步驟:

  1. 使用服務嵌入式管理單元來停止服務。

  2. 開啟命令提示字元,流覽至服務的位置,然後輸入:Microsoft.MasterDataServices.Workflow.exe -console,以控制台模式執行服務。

  3. 在 Master Data Manager 中,更新您的成員,並再次套用商務規則。 詳細的記錄會顯示在主控台視窗中。

檢視 Service Broker 佇列

包含工作流程一部分所傳遞主要數據的 Service Broker 隊列為:mdm.microsoft/mdm/queue/externalaction。 您可以在 Master Data Services 資料庫的 Service Broker 節點下的 SQL Management Studio 物件總管 中找到佇列。 請注意,如果服務已正確清除佇列,此佇列將會是空的。

另請參閱

自定義工作流程範例 (Master Data Services)
自訂工作流程 XML 描述 (Master Data Services)