Criar um fluxo de trabalho personalizado (Master Data Services)
O Master Data Services usa regras de negócio para criar soluções de fluxo de trabalho básicas, como atualizar automaticamente e validar dados e obter o envio de 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 seu fluxo de trabalho exigir o 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á-lo para aprovação.
Como os fluxos de trabalho personalizados são processados
Há três componentes principais envolvidos no processamento de fluxos de trabalho personalizados: o aplicativo Web Master Data Manager, o Serviço de Integração de Fluxo de Trabalho MDS do SQL Server e o assembly de 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 conhecem as condições de regra de negócio a 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 MDS do SQL Server 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 gravação de um código personalizado e configuração do Master Data Services para transmitir dados de fluxo de trabalho a seu manipulador de fluxo de trabalho. Siga estas etapas para habilitar o processamento de fluxo de trabalho personalizado:
Crie um assembly .NET que implementa Microsoft.MasterDataServices.WorkflowTypeExtender.IWorkflowTypeExtender.
Configure o Serviço de Integração de Fluxo de trabalho MDS do SQL Server para conectar a seu banco de dados do Master Data Services e associar uma marca a um 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 classe .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 StartWorkflow para executar seu código. Por exemplo, o código que implementa 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 Classe que usa o idioma de sua escolha. Para criar uma Biblioteca de Classe C#, selecione os tipos de projetos Visual C#\Windows e selecione o modelo Biblioteca de Classe. 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 localizado em <Sua 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 StartWorkflow é chamado pelo Serviço de Integração de Fluxo de Trabalho MDS SQL Server para iniciar o fluxo de trabalho.
Copie seu assembly no local do executável do Serviço de Integração de Fluxo de trabalho MDS do SQL Server, denominado Microsoft.MasterDataServices.Workflow.exe, em <Sua 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 do seu banco de dados do Master Data Services e associe uma marca a seu assembly de 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 de banco de dados do Master Data Services à configuração "ConnectionString". Se a sua instalação do SQL Server usar agrupamento com diferenciação de maiúsculas e minúsculas, o nome do banco de dados deverá ser inserido exatamente da mesma forma que no 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 marca 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 <value> está na forma de <Workflow tag>=<assembly-qualified workflow type name>. <Workflow tag> é um nome que você usa para identificar o assembly de manipulador de fluxo de trabalho ao criar uma regra de negócio em Master Data Manager. <assembly-qualified workflow type name> é o nome qualificado de namespace da sua classe de fluxo de trabalho, seguido por uma vírgula, seguida pelo nome para 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ê poderá incluir várias marcas <setting> se tiver criado vários manipuladores de fluxo de trabalho para tipos diferentes 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 Centrar 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 de mds_workflow_service e conceda ao usuário a permissão de EXECUTE para o procedimento armazenado [mdm]. [udpExternalActionsGet].
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 de mds_workflow_service à guia Segurança das Propriedades de Microsoft.MasterDataServices.Workflow.exe, em <Sua pasta de instalação>\Master Data Services\WebApplication\bin e conceda ao usuário mds_workflow_service permissões 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 pode ser encontrado na pasta de instalação .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ócio 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ócio (Master Data Services).
Crie uma regra de negócio que inicie um fluxo de trabalho personalizado no Master Data Manager seguindo estas etapas:
No editor de regra de negócio do Master Data Manager, depois que você especificar as condições da sua regra de negócio, arraste a ação Iniciar Fluxo de Trabalho da lista Ações externas para o rótulo Ação do painel THEN.
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ócio, o Master Data Manager popula 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 seu 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 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 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 localizadas no Pesquisador de Objetos do SQL Management Studio sob o nó do Service Broker do banco de dados do Master Data Services. Esteja ciente de que, se o serviço limpou a fila corretamente, ela fila estará vazia.
Consulte também
Conceitos
Exemplo de fluxo de trabalho personalizado (Master Data Services)
Descrição XML do fluxo de trabalho personalizado (Master Data Services)