建立自訂工作流程 - 範例
適用於:SQL Server - 僅限 Windows
Azure SQL 受控執行個體
在 Master Data Services 中,當您建立自定義工作流程類別庫時,您會建立實作 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 介面的類別。 此介面包含一個方法, Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* ,此方法是由 SQL Server MDS 工作流程整合服務在工作流程啟動時呼叫。 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* 方法包含兩個參數:workflowType 包含您在 Master Data Manager 中 [工作流程類型] 文本框中輸入的文字,dataElement 包含觸發工作流程商務規則之專案的元數據和項目數據。
自定義工作流程範例
下列程式代碼範例示範如何實 作 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.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("./MemberData/Name");
XmlNode CodeNode = dataElement.SelectSingleNode("./MemberData/Code");
XmlNode EnteringUserNode = dataElement.SelectSingleNode("./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
}
}