次の方法で共有


カスタム ワークフローの例 (Master Data Services)

マスター データ サービス では、カスタム ワークフロー クラス ライブラリを作成する際、Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender インターフェイスを実装するクラスを作成します。 このインターフェイスには、ワークフローの開始時に SQL Server MDS Workflow Integration Service によって呼び出される 1 つのメソッド (StartWorkflow) が含まれます。 StartWorkflow メソッドには、2 つのパラメーターが含まれます。1 つは workflowType で、これには、マスター データ マネージャー の [ワークフローの種類] ボックスに入力したテキストが含まれます。もう 1 つは dataElement で、これには、ワークフロー ビジネス ルールをトリガーしたアイテムのメタデータとアイテム データが含まれます。

カスタム ワークフローの例

次のコード例は、StartWorkflow メソッドを実装して、ワークフロー ビジネス ルールをトリガーした要素の XML データから Name、Code、および LastChgUserName 属性を抽出する方法と、ストアド プロシージャを呼び出して、それらの属性を別のデータベースに挿入する方法を示しています。 アイテム データ XML の例と、それに含まれるタグの説明については、「カスタム ワークフロー XML の説明 (Master Data Services)」を参照してください。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data.SqlClient;
using System.Xml;

using Microsoft.MasterDataServices.Core.Workflow;

namespace MDSWorkflowTestLib
{
    public class WorkflowTester : IWorkflowTypeExtender
    {
        #region IWorkflowTypeExtender Members

        public void StartWorkflow(string workflowType, System.Xml.XmlElement dataElement)
        {
            // Extract the attributes we want out of the element data.
            XmlNode NameNode = dataElement.SelectSingleNode("//ExternalAction/MemberData/Name");
            XmlNode CodeNode = dataElement.SelectSingleNode("//ExternalAction/MemberData/Code");
            XmlNode EnteringUserNode = dataElement.SelectSingleNode("//ExternalAction/MemberData/LastChgUserName");

            // Open a connection on the workflow database.
            SqlConnection workflowConn = new SqlConnection(@"Data Source=<Server instance>; Initial Catalog=WorkflowTest; Integrated Security=True");

            // Create a command to call the stored procedure that adds a new user to the workflow database.
            SqlCommand addCustomerCommand = new SqlCommand("AddNewCustomer", workflowConn);
            addCustomerCommand.CommandType = System.Data.CommandType.StoredProcedure;
            addCustomerCommand.Parameters.Add(new SqlParameter("@Name", NameNode.InnerText));
            addCustomerCommand.Parameters.Add(new SqlParameter("@Code", CodeNode.InnerText));
            addCustomerCommand.Parameters.Add(new SqlParameter("@EnteringUser", EnteringUserNode.InnerText));

            // Execute the command.
            workflowConn.Open();
            addCustomerCommand.ExecuteNonQuery();
            workflowConn.Close();
        }

        #endregion
    }
}

関連項目

概念

カスタム ワークフローの作成 (マスター データ サービス)