Estrutura de eventos

Concluído

O Microsoft Dataverse expõe eventos para indicar onde o processo está no momento em execução no pipeline. Você pode lidar com esses eventos para fazer ações como validar dados, impedir a conclusão de transações ou automatizar qualquer lógica de negócios que você não pode realizar por meios declarativos.

Você pode assinar esses eventos registrando assemblies .NET (chamados de plug-ins) para executar lógica personalizada sempre que determinado evento ocorrer. Você executa o registro usando uma ferramenta chamada Plug-in Registration Tool. Para obter mais informações sobre a Plug-in Registration tool, consulte o tutorial Registrar um plug-in.

Em um alto nível, lidar com eventos envolve três coisas. Primeiro, você deve assinar uma mensagem específica que representa o tipo de operação (ou evento) que está ocorrendo no momento (ou prestes a ocorrer), como Criar, Recuperar, Atualizar etc. Você também deve indicar onde nesse pipeline de evento deseja que sua lógica seja executada (ou seja, antes ou depois da operação). Você também pode manipular eventos antes que a validação ocorra, um método conveniente que pode ser usado para executar lógica de validação avançada que não pode ser realizada por meio de regras de negócios ou fluxos de trabalho. Por último, você deve indicar o modo de execução que deseja que a lógica execute (síncrona ou assíncrona).

Agora, vamos analisar essas três áreas em mais detalhes.

Mensagens de eventos

O Dataverse expõe muitas mensagens publicadas quando ocorrem várias operações de dados. Para obter mais informações sobre essas mensagens, consulte Usar mensagens com o Serviço da organização.

As operações básicas de dados expostas pelo Dataverse são:

  • Criar

  • Recuperar

  • Recuperar vários

  • Atualizar

  • Excluir

  • Associar

  • Desassociar

Além disso, há várias mensagens que são expostas contextualmente, dependendo do tipo de tabela que você está manipulando. Por exemplo, se minha tabela tiver uma coluna valor acumulado, posso implementar um manipulador de eventos na mensagem de evento CalculateRollupField.

Geralmente, podemos encontrar um estoque dessas mensagens personalizadas disponibilizadas por meio do Dataverse pesquisando no namespace Microsoft.Sdk.Messages quaisquer classes cujo nome termine em \Request. Outra maneira de ver quais mensagens estão disponíveis para um determinado tipo de tabela é navegar pelas combinações de mensagens de tabela por meio da Plug-in Registration Tool.

Além disso, é possível criar e expor nossas próprias mensagens criando Ações personalizadas. Para obter mais informações sobre Ações, consulte Criar suas próprias ações.

Pipeline de eventos

Além de subscrever mensagens ou tipos de eventos específicos, o Dataverse também expõe uma forma de especificar em que no pipeline esse evento executa sua lógica personalizada. Para desenvolvedores do ASP.NET, é como trabalhar com ciclos de vida de páginas em um aplicativo Web. Essa abordagem é um padrão de desenvolvimento comum para arquiteturas de publicação-assinatura e deve ser familiar para desenvolvedores com experiência com outras estruturas de eventos.

Antes da Validação

O evento de pré-validação ocorre primeiro no pipeline, antes da execução de qualquer verificação de segurança. Seu uso é destino para garantir que o usuário que está executando a transação atual tenha as permissões corretas necessárias para executar a operação pretendida.

Como desenvolvedor, você pode usar este evento para executar a lógica de validação e cancelar a operação antes que a transação ocorra. Por exemplo, se configurado para ser executado sempre que uma tabela for atualizada, você poderá cancelar a operação antes que a atualização ocorra lançando um método InvalidPluginExecutionException na lógica de execução do plug-in. Para obter mais informações sobre contexto execução, consulte Compreender o contexto de execução.

Pré-operação

Use este evento se desejar alterar qualquer valor da tabela antes de salvá-la.

Pós-operação

Use este evento para modificar quaisquer propriedades da mensagem antes que o solicitante da solicitação obtenha a resposta. Evite aplicar atualizações à tabela correspondente neste momento, pois isso disparará outro evento de atualização.

Modos de execução (síncrono versus assíncrono)

É possível configurar plug-ins para serem executados de forma síncrona ou assíncrona, dependendo do tipo de operação de pipeline que está sendo tratada.

Síncrono

Os plug-ins registrados nesse modo serão executados assim que o processamento do evento atingir o estágio de pipeline de execução e toda a operação não prosseguirá até que a lógica tenha concluído a execução. Se vários plug-ins forem registrados para execução no mesmo estágio de pipeline, o atributo ordem de execução (especificado por meio da Plug-in Registration Tool) determinará qual será executado primeiro.

Assíncrono

Os plug-ins registrados neste modo são despachados como um trabalho do sistema para o serviço assíncrono, que executa sua lógica após a conclusão de determinada operação. Para obter mais informações sobre como funcionam os trabalhos do sistema, consulte Serviço assíncrono.

Observação

Só é possível registrar plug-ins assíncronos para o estágio Pós-operação do pipeline de Evento.