Compartilhar via


Criar um fluxo de trabalho personalizado – Exemplo

Aplica-se a: SQL Server - somente Windows Instância Gerenciada de SQL do Azure

No Master Data Services, ao criar uma biblioteca de classes de fluxo de trabalho personalizada, você cria uma classe que implementa a interface Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender. Essa interface inclui um método, Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* , que é chamado pelo Serviço de Integração de Fluxo de Trabalho do SQL Server MDS quando um fluxo de trabalho é iniciado. O método Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* contém dois parâmetros: workflowType contém o texto inserido na caixa de texto Tipo de fluxo de trabalho no Master Data Manager e dataElement contém metadados e dados de item para o item que disparou a regra de negócios de fluxo de trabalho.

Exemplo de fluxo de trabalho personalizado

O exemplo de código a seguir mostra como implementar o método Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* para extrair os atributos Name, Code e LastChgUserName dos dados XML para o elemento que disparou a regra de negócios do fluxo de trabalho e como chamar um procedimento armazenado para inseri-los em outro banco de dados. Para obter um exemplo do XML de dados do item e uma explicação das marcas que ele contém, consulte Descrição XML do fluxo de trabalho personalizado (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  
    }  
}  

Confira também

Criar um fluxo de trabalho personalizado (Master Data Services)