自定义工作流示例 (Master Data Services)

在 Master Data Services 中,当您创建一个自定义工作流类库时,将创建一个实现 Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender 接口的类。 该接口包含一种方法:StartWorkflow,该方法是在工作流启动时由 SQL Server MDS Workflow Integration Service 调用的。 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
    }
}

请参阅

概念

创建自定义工作流 (Master Data Services)