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.
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.
|
||
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