Criar um fluxo de trabalho personalizado (Master Data Services)
Aplica-se a: SQL Server - somente Windows
Instância Gerenciada de SQL do Azure
O Master Data Services usa regras de negócios para criar soluções básicas de fluxo de trabalho, como atualizar e validar dados automaticamente e enviar notificações por email, com base nas condições especificadas. Quando você requer processamento mais complexo do que o oferecido pelas ações de fluxo de trabalho internas, use um fluxo de trabalho personalizado. Um fluxo de trabalho personalizado é um assembly .NET que você cria. Quando seu assembly de fluxo de trabalho é chamado, seu código pode executar qualquer ação que sua situação exija. Por exemplo, se o fluxo de trabalho exigir processamento de eventos complexos, como aprovações em várias camadas ou árvores de decisão complicadas, você poderá configurar o Master Data Services para iniciar um fluxo de trabalho personalizado que analisa os dados e determina para onde enviá-los para aprovação.
Como os fluxos de trabalho personalizados são processados
Há três componentes principais envolvidos para processar fluxos de trabalho personalizados: o aplicativo Web Master Data Manager, o Serviço de Integração de Fluxo de Trabalho do SQL Server MDS e o assembly do manipulador de fluxo de trabalho. Esses componentes processam um fluxo de trabalho personalizado da seguinte forma:
Você usa o Master Data Manager para validar uma entidade que inicia um fluxo de trabalho.
O Master Data Manager envia membros que atendem às condições da regra de negócios para uma fila do Service Broker no banco de dados do Master Data Services.
Em intervalos regulares, o Serviço de Integração de Fluxo de Trabalho do SQL Server MDS chama um procedimento armazenado no banco de dados do Master Data Services.
Quando esse procedimento armazenado localiza registros na fila do Service Broker, retorna-os ao Serviço de Integração de Fluxo de Trabalho MDS do SQL Server.
O Serviço de Integração de Fluxo de Trabalho MDS do SQL Server encaminha os dados para seu assembly de manipulador de fluxo de trabalho.
Observação
Observação: o Serviço de Integração de Fluxo de Trabalho do MDS do SQL Server deve disparar processos simples. Se seu código personalizado exigir processamento complexo, conclua seu processamento em um thread separado ou fora do processo de fluxo de trabalho.
Configurar Master Data Services para fluxos de trabalho personalizados
A criação de um fluxo de trabalho personalizado requer a gravação de algum código personalizado e a configuração do Master Data Services para passar dados de fluxo de trabalho para o manipulador de fluxo de trabalho. Siga estas etapas para habilitar o processamento de fluxo de trabalho personalizado:
Crie um assembly .NET que implemente Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.
Configure o Serviço de Integração de Fluxo de Trabalho do SQL Server MDS para se conectar ao banco de dados do Master Data Services e associar uma marca ao manipulador de fluxo de trabalho.
Iniciar o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server
Crie uma regra de negócios no Master Data Manager que inicie um fluxo de trabalho marcado com o nome do seu manipulador de fluxo de trabalho.
Aplique a regra de negócio a um membro que dispara seu fluxo de trabalho personalizado.
Crie o assembly de manipulador de fluxo de trabalho
Um fluxo de trabalho personalizado é um assembly de biblioteca de classes .NET que implementa a interface Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender . O Serviço de Integração de Fluxo de Trabalho MDS do SQL Server chama o método Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* para executar seu código. Para obter um código de exemplo que implementa Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* , consulte Exemplo de fluxo de trabalho personalizado (Master Data Services).
Siga estas etapas para usar o Visual Studio 2010 para criar um assembly que o Serviço de Integração de Fluxo de trabalho MDS do SQL Server possa chamar para tratar um fluxo de trabalho personalizado:
No Visual Studio 2010, crie um novo projeto Biblioteca de Classes que usa a linguagem de sua escolha. Para criar uma Biblioteca de Classes C#, selecione os tipos de projetos Visual C#\Windows e selecione o modelo Biblioteca de Classes. Insira um nome para seu projeto, como MDSWorkflowTest, e clique em OK.
Adicione uma referência a Microsoft.MasterDataServices.WorkflowTypeExtender.dll. Esse assembly pode ser encontrado na <pasta> de instalação\Master Data Services\WebApplication\bin.
Adicione 'using Microsoft.MasterDataServices.Core.Workflow;' ao seu arquivo de código C#.
Herde de Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender em sua declaração de classe. A declaração de classe deve ser semelhante a: 'public class WorkflowTester : IWorkflowTypeExtender'.
Implemente a interface Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender . O método Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.StartWorkflow* é chamado pelo Serviço de Integração de Fluxo de Trabalho do SQL Server MDS para iniciar seu fluxo de trabalho.
Copie o assembly para o local do executável do Serviço de Integração de Fluxo de Trabalho do SQL Server MDS, chamado Microsoft.MasterDataServices.Workflow.exe, na <pasta> de instalação\Master Data Services\WebApplication\bin.
Configurar o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server
Edite o arquivo de configuração do Master Data Services para incluir informações de conexão para o banco de dados do Master Data Services e para associar uma marca ao assembly do manipulador de fluxo de trabalho seguindo estas etapas:
Localize Microsoft.MasterDataServices.Workflow.exe.config em <Sua pasta> de instalação\Master Data Services\WebApplication\bin.
Adicione as informações de conexão do banco de dados do Master Data Services à configuração "ConnectionString". Se a instalação do SQL Server usar ordenação que diferencia maiúsculas de minúsculas, o nome do banco de dados deverá ser inserido nas mesmas letras maiúsculas e minúsculas do banco de dados. Por exemplo, a marca de configuração completa poderia se parecer com:
<setting name="ConnectionString" serializeAs="String"> <value>Server=myServer;Database=myDatabase;Integrated Security=True</value> </setting>
Sob a configuração "ConnectionString" adicione uma configuração "WorkflowTypeExtenders" para associar um nome de tag a seu assembly de manipulador de fluxo de trabalho. Por exemplo:
<setting name="WorkflowTypeExtenders" serializeAs="String"> <value>TEST=MDSWorkflowTestLib.WorkflowTester, MDSWorkflowTestLib</value> </setting>
O texto interno da <marca de valor> está na forma de Marca> de fluxo de trabalho=<nome> do <tipo de fluxo de trabalho qualificado pelo assembly. <Tag> de fluxo de trabalho é um nome que você usa para identificar o conjunto do manipulador de fluxo de trabalho ao criar uma regra de negócios no Master Data Manager. <O nome> do tipo de fluxo de trabalho qualificado pelo assembly é o nome qualificado pelo namespace da classe de fluxo de trabalho, seguido por uma vírgula e pelo nome de exibição do assembly. Se seu assembly usar um nome forte, você também terá que incluir informações de versão e seu PublicKeyToken. Você pode incluir várias <tags de configuração> se tiver criado vários manipuladores de fluxo de trabalho para diferentes tipos de fluxos de trabalho.
Observação
Dependendo da configuração do seu servidor, você poderá visualizar um erro do tipo "Acesso negado" ao tentar salvar o arquivo Microsoft.MasterDataServices.Workflow.exe.config. Se isso ocorrer, desabilite temporariamente o UAC (Controle de Conta de Usuário) no servidor. Para fazer isso, abra o Painel de controle e clique em Sistema e Segurança. Em Central de Ações, clique em Alterar Configurações de Controle de Conta de Usuário. Na caixa de diálogo Configurações de Controle de Conta de Usuário, deslize a barra para a parte inferior para que você nunca seja notificado. Reinicie seu computador e repita as etapas anteriores para editar seu arquivo de configuração. Depois de salvar o arquivo, reinicie suas configurações de UAC no nível padrão.
Iniciar o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server
Por padrão, o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server não é instalado. Você deve instalar o serviço antes de usá-lo. Para obter a segurança máxima, crie um usuário local para o serviço e conceda a ele apenas as permissões necessárias para executar operações de fluxo de trabalho. Para criar um usuário, instale e inicie o serviço e siga estas etapas:
Use o gerenciador Usuários e Grupos Locais para criar um usuário local denominado, por exemplo, mds_workflow_service.
Use o SQL Server Management Studio para conceder a permissão de usuário a mds_workflow_service para executar o procedimento armazenado [mdm]. [udpExternalActionsGet]. Para fazer isso, crie um novo logon para a conta mds_workflow_service, crie um novo usuário no banco de dados do Master Data Services, mapeie esse usuário para o logon mds_workflow_service e conceda ao usuário a permissão EXECUTE para o [mdm]. [udpExternalActionsGet] procedimento armazenado.
Conceda a permissão de usuário a mds_workflow_service para executar o assembly de manipulador de fluxo de trabalho. Para fazer isso, adicione o usuário mds_workflow_service à guia Segurança das Propriedades do assembly de manipulador de fluxo de trabalho e conceda ao usuário mds_workflow_service as permissões READ e EXECUTE.
Conceda a permissão de usuário a mds_workflow_service para executar o executável do Serviço de Integração de Fluxo de Trabalho MDS do SQL Server. Para fazer isso, adicione o usuário mds_workflow_service à guia Segurança das Propriedades do Microsoft.MasterDataServices.Workflow.exe, em <Sua pasta> de instalação\Master Data Services\WebApplication\bin e conceda ao usuário mds_workflow_service permissão READ e EXECUTE.
Instale o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server usando o utilitário de instalação .NET, denominado InstallUtil.exe. InstallUtil.exe podem ser encontrados na pasta de instalação do .NET, como C:\Windows\Microsoft.NET\Framework\v4.0.30319\. Instale o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server inserindo o seguinte em um prompt de comando elevado:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil Microsoft.MasterDataServices.Workflow.exe
Especifique o usuário mds_workflow_service quando solicitado durante a instalação.
Inicie o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server usando o snap-in Serviços. Para fazer isso, localize o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server no snap-in Serviços, selecione-o e clique no link Iniciar.
Criar uma regra de negócio de fluxo de trabalho
Use o Master Data Manager para criar e publicar uma regra de negócios que iniciará o fluxo de trabalho quando aplicada. Você deve assegurar que sua regra de negócio contenha ações que alteram valores de atributo, de forma que a regra seja avaliada como falsa depois de ser aplicada uma vez. Por exemplo, sua regra de negócio pode ser avaliada como verdadeira quando um valor do atributo Price for maior que 500 e o valor do atributo Approved estiver em branco. A regra pode incluir duas ações: uma para definir o valor do atributo Approved como Pending e uma para iniciar o fluxo de trabalho. Alternativamente, talvez você queira criar uma regra que use a condição "has changed" e adicionar seus atributos a grupos de controle de alterações. Para obter mais informações sobre regras de negócios, consulte Regras de negócios (Master Data Services).
Crie uma regra de negócios que inicie um fluxo de trabalho personalizado no Master Data Manager seguindo estas etapas:
No editor de regras de negócios do Master Data Manager, depois de especificar as condições da regra de negócios, arraste a ação Iniciar Fluxo de Trabalho da lista Ações externas para o rótulo Ação do painel ENTÃO.
No painel Editar Ação, na caixa Tipo de fluxo de trabalho, digite a marca que identifica seu assembly de manipulador de fluxo de trabalho. Essa é a marca que você especificou no arquivo de configuração do assembly, por exemplo TEST.
Opcionalmente, marque a caixa de seleção Incluir dados de membro. Escolha essa opção para incluir nomes de atributo e valores no XML transmitido ao manipulador de fluxo de trabalho.
Na caixa Local do fluxo de trabalho, digite o nome de um site. Talvez isso não se aplique ao seu fluxo de trabalho personalizado, mas pode ser usado para contexto adicionado.
Na caixa Nome do fluxo de trabalho, digite o nome do seu fluxo de trabalho do Visual Studio. Talvez isso não se aplique ao seu fluxo de trabalho personalizado, mas pode ser usado para contexto adicionado.
Salve e publique a regra de negócio.
Aplicar regras de negócios para iniciar um fluxo de trabalho
Aplique a regra de negócio a seus dados para iniciar o fluxo de trabalho. Para fazer isso, use o Master Data Manager para editar a entidade que contém os membros que você deseja validar. Clique em Aplicar regras de negócio. Em resposta à regra de negócios, o Master Data Manager preenche a fila do Service Broker do banco de dados do Master Data Services. Quando Serviço de Integração de Fluxo de Trabalho MDS do SQL Server verificar a fila, enviará os dados ao assembly de manipulador de fluxo de trabalho especificado e limpará a fila. O assembly de manipulador de fluxo de trabalho executa qualquer ação que você tenha codificado para ele.
Solucionar problemas fluxos de trabalho personalizados
Se o assembly de manipulador de fluxo de trabalho não receber dados, você poderá tentar depurar o Serviço de Integração de Fluxo de Trabalho do MDS do SQL Server ou exibir a fila do Service Broker.
Depurar o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server
Para depurar o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server, siga estas etapas:
Use o snap-in Serviços para parar o serviço.
Abra um prompt de comando, navegue para local do serviço e execute o serviço no modo de console inserindo: Microsoft.MasterDataServices.Workflow.exe - console.
No Master Data Manager, atualize seu membro e aplique as regras de negócios novamente. Logs detalhados são exibidos na janela do console.
Exibir a fila do Service Broker
A fila do Service Broker que contém os dados mestre transmitidos como parte do fluxo de trabalho é: mdm.microsoft/mdm/queue/externalaction. As filas podem ser encontradas no Pesquisador de Objetos do SQL Management Studio no nó Service Broker do banco de dados Master Data Services. Esteja ciente de que, se o serviço limpou a fila corretamente, ela fila estará vazia.
Confira também
Exemplo de fluxo de trabalho personalizado (Master Data Services)
Descrição XML de fluxo de trabalho personalizado (Master Data Services)