Beispiel für einen benutzerdefinierten Workflow (Master Data Services)

Bei der Erstellung einer Klassenbibliothek für einen benutzerdefinierten Workflow in Master Data Services erstellen Sie eine Klasse, die die Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender-Schnittstelle implementiert. Diese Schnittstelle beinhaltet eine Methode, StartWorkflow, die beim Start eines Workflows vom SQL Server MDS Workflow Integration Service aufgerufen wird. Die StartWorkflow-Methode enthält zwei Parameter: workflowType enthält den Text, den Sie in Master Data Manager in das Textfeld Workflowtyp eingegeben haben, und dataElement enthält Metadaten sowie Elementdaten für das Element, das die Workflowgeschäftsregel ausgelöst hat.

Beispiel für einen benutzerdefinierten Workflow

Das folgende Codebeispiel veranschaulicht die Implementierung der StartWorkflow-Methode zum Extrahieren der Namens-, Code- und LastChgUserName-Attribute von den XML-Daten für das Element, das die Workflowgeschäftsregel ausgelöst hat. Zudem erfahren Sie, wie eine gespeicherte Prozedur zum Einfügen der Attribute in eine andere Datenbank aufgerufen wird. Ein Beispiel für die Elementdaten-XML und eine Erläuterung der enthaltenen Tags finden Sie unter Benutzerdefinierte Workflow-XML-Beschreibung (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
    }
}

Siehe auch

Konzepte

Erstellen eines benutzerdefinierten Workflows (Master Data Services)