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)