Partilhar via


Pipeline de execução do evento

 

Publicado: janeiro de 2017

Aplicável a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

O subsistema de processamento de eventos Microsoft Dynamics 365 executa os plug-ins com base em um modelo de execução de pipeline da mensagem. Uma ação do usuário no aplicativo Web Microsoft Dynamics 365 ou uma chamada de método do SDK ou um plug-in ou outros resultados do aplicativo em uma mensagem sendo enviada para o serviço Web da organização. A mensagem contém informações de entidade de negócios e as informações da operação principal. A mensagem é passada através do pipeline de execução de evento que pode ser lida ou modificada pela operação principal da plataforma e por qualquer plug-in registrado.

Observação

Quando há vários serviços Web hospedados pela plataforma Microsoft Dynamics 365, somente os eventos acionados pela organização e pontos de extremidade OData podem causar a execução dos plug-ins.

Neste tópico

Arquitetura e componentes relacionados

Estágios de canalização

Processamento de mensagem

Registro de plug-in

Inclusão nas transações do banco de dados

Arquitetura e componentes relacionados

A figura a seguir ilustra a arquitetura geral da plataforma Microsoft Dynamics 365 em relação ao processamento de evento síncrono e assíncrono.

Arquitetura de processamento de eventos

Diagrama de processamento de evento síncrono e assíncrono

O pipeline de execução do evento processa eventos de maneira assíncrona ou síncrona. A operação principal da plataforma e os plug-ins registrados para execução síncrona são executados imediatamente. Os plug-ins síncronos registrados para o evento são executado em um pedido definido corretamente. Os plug-ins registrados para execução assíncrono são colocados em fila pelo Agente de Fila Assíncrono e executado posteriormente pelo serviço assíncrono.

Importante

Independentemente de um plug-in executar de maneira assíncrona ou síncrona, há um limite de tempo de dois minutos imposto na execução de uma solicitação (mensagem). Se a execução da lógica de plug-in excede o limite de tempo, um System.TimeoutException será lançado. Se um plug-in precisa de mais tempo de processamento do que dois minutos, considere o uso de um fluxo de trabalho ou outro processo em segundo plano para realizar a tarefa pretendida. Esse limite de tempo de dois minutos é aplicado somente a plug-ins registrados para execução sob confiança parcial, também conhecida como a área restrita.Para obter mais informações:Isolamento, estatísticas e confianças de plug-in

Estágios de canalização

O pipeline de eventos é dividido em vários estágios, onde 4 estão disponíveis para registrar os plug-ins de terceiros ou desenvolvidos de forma personalizada. Vários plug-ins registrados em cada estágio podem ser ainda mais ordenados (classificados) dentro desse estágio durante o registro de plug-in.

Evento

Nome do estágio

Número do estágio

Descrição

Pré-evento

Antes da Validação

10

Estágio no pipeline para plug-ins que serão executados antes da operação do sistema principal. Os plug-ins registrados neste estágios podem executar fora da transação do banco de dados.

System_CAPS_security Segurança Observação

O estágio de pré-validação ocorre antes das verificações de segurança serem realizadas para verificar a chamada ou se o usuário conectado tem as permissões corretas para executar a operação pretendida.

Pré-evento

Antes da Operação

20

Estágio no pipeline para plug-ins que serão executados antes da operação do sistema principal. Os plug-ins registrados neste estágios são executados dentro da transação do banco de dados.

Operação principal da plataforma

MainOperation

30

A operação principal na transações do sistema, como criar, atualizar, excluir, etc. Nenhum plug-in personalizado pode ser registrado neste estágio.Somente para uso interno.

Pós-evento

Pós-operação

40

Estágio no pipeline para plug-ins que serão executados depois da operação principal. Os plug-ins registrados neste estágios são executados dentro da transação do banco de dados.

Processamento de mensagem

Sempre que o código do aplicativo ou um fluxo de trabalho invocar um método de serviço Web Microsoft Dynamics 365, ocorre uma alteração de estado do sistema que eleva um evento. As informações transmitidas como um parâmetro para o método de serviço Web é internamente empacotada em uma mensagem OrganizationRequest e processada pelo pipeline. As informações na mensagem OrganizationRequest são transmitidas no primeiro plug-in registrado para esse evento onde pode ser lido e alterado antes de ser transmitido para o próximo plug-in registrado para o evento e assim por diante. Os plug-ins recebem informações de mensagem na forma de contexto que são transmitidas para o método Execute. A mensagem também é transmitida para operação principal da plataforma.

Registro de plug-in

Os plug-ins podem ser registrados para executar antes ou depois da operação da plataforma principal. Os plug-ins registrados pré-evento recebem a mensagem OrganizationRequest primeiro e pode modificar informações de mensagens antes da mensagem ser transmitidas para a operação principal. Após a conclusão da operação de plataforma principal, uma mensagem é conhecida como OrganizationResponse. A resposta é transmitidas nos plug-ins pós-evento registrados. Os plug-ins pós-evento têm a oportunidade de modificar a mensagem antes de uma cópia da resposta ser transmitidas a todos os plug-ins registrados assíncronos. Por fim, a resposta é retornada ao aplicativo ou fluxo de trabalho que invocou a chamada do método do serviço Web original.

Como um único servidor do Microsoft Dynamics 365 pode hospedar mais de uma organização, o pipeline de execução é específico da organização. Há um pipeline virtual para cada organização. Os plug-ins registrados com o pipeline podem apenas processar dados corporativos para uma única organização. Um plug-in criado para funcionar com várias organizações precisa estar registrado com cada pipeline de execução da organização.

Inclusão nas transações do banco de dados

Os plug-ins podem ou não executar dentro das transações do banco de dados da plataforma Microsoft Dynamics 365. Se um plug-in faz a parte da transação depende de como a solicitação de mensagem é processada pelo pipeline. Você pode verificar se o plug-in está executando na transação lendo a propriedade IsInTransaction herdada pelo IPluginExecutionContext transmitidas pelo plug-in. Se um plug-in estiver executando na transação do banco de dados e permite que uma exceção seja transmitida de volta para a plataforma, toda a transação será revertida. As etapas 20 e 40 são garantidas como parte da transação do banco de dados enquanto o estágio 10 pode ser parte da transação.

Qualquer plug-in registrado que executa durante a transação do banco de dados e que transmite uma exceção de volta para a plataforma, cancelar a operação principal. Isso resulta em uma reversão da operação principal. Além disso, qualquer plug-in registrado de pré-evento ou pós-evento ainda não executado e qualquer fluxo de trabalho acionado pelo mesmo evento que o plug-in foi registrado não executará.

Confira Também

Introdução à estrutura de eventos
Isolamento, estatísticas e confianças de plug-in
Registrar e implantar plug-ins
Serviço assíncrono no Microsoft Dynamics 365

Microsoft Dynamics 365

© 2017 Microsoft. Todos os direitos reservados. Direitos autorais