在 Master Data Services 中建立自訂的工作流程類別庫時,您要建立一個實作 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 介面的類別。 此介面包含一個方法 StartWorkflow,當工作流程啟動時,SQL Server MDS 工作流程整合服務會呼叫這個方法。 StartWorkflow 方法包含兩個參數:workflowType 包含您在 主資料管理員 之 [工作流程類型] 文字方塊中輸入的文字,而 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
}
}