Compartir a través de


Canalización de ejecución del evento

 

Publicado: noviembre de 2016

Se aplica a: Dynamics CRM 2015

El subsistema de procesamiento de eventos de Microsoft Dynamics 365 ejecuta los complementos basándose en un modelo de ejecución de canalización de mensajes. Una acción del usuario en la aplicación web de Microsoft Dynamics 365 o una llamada a un método de SDK realizada por un complemento u otra aplicación provoca el envío de un mensaje al servicio web de la organización. El mensaje contiene la información de la entidad de negocios y la información de la operación principal. El mensaje se pasa a través de la canalización de ejecuciones de eventos donde las operaciones principales de la plataforma y cualquier complemento registrado pueden leerlo o modificarlo.

Nota

Aunque existen distintos servicios web hospedados por la plataforma de Microsoft Dynamics 365, solo los eventos desencadenados por los extremos de la organización y de OData pueden desencadenar la ejecución de los complementos.

En este tema

Arquitectura y componentes relacionados

Fases de la canalización

Procesamiento de mensajes

Registro de complementos

Inclusión en las transacciones de base de datos

Arquitectura y componentes relacionados

La siguiente figura muestra la arquitectura global de la plataforma de Microsoft Dynamics 365 en relación con el procesamiento sincrónico y asincrónico de eventos.

Arquitectura de procesamiento de eventos

Diagrama de procesamiento sincrónico y asincrónico de eventos

La canalización de ejecuciones de eventos procesa los eventos de forma sincrónica o asincrónica. Las operaciones principales de la plataforma y cualquier complemento registrado para la ejecución sincrónica se ejecutan inmediatamente. Los complementos sincrónicos que están registrados para el evento se ejecutan en un orden bien definido. El agente de colas asincrónicas pone en cola los complementos registrados para la ejecución asincrónica para que los ejecute posteriormente el servicio asincrónico.

Importante

Independientemente de si un complemento se ejecuta de forma sincrónica o asincrónica, existe un límite de tiempo de 2 minutos impuesto para la ejecución de una solicitud (mensaje). Si la ejecución de la lógica del complemento supera el límite de tiempo, se genera una excepción System.TimeoutException. Si un complemento necesita más tiempo de procesamiento que el límite de tiempo de 2 minutos, considere la posibilidad de usar un flujo de trabajo u otro proceso en segundo plano para realizar la tarea prevista. Este límite de tiempo de 2 minutos solo se aplica a los complementos registrados para ejecutar con confianza parcial, también conocida como espacios aislados.Más información:Aislamiento, relacioens de confianza y estadísticas de complementos.

Fases de la canalización

La canalización de eventos se divide en múltiples fases, 4 de las cuales están disponibles para registrar complementos de terceros o desarrollados de forma personalizada. Los distintos complementos registrados en cada fase pueden ordenarse (clasificarse) aún más dentro de esa fase durante el registro de complementos.

Evento

Nombre de la fase

Número de la fase

Descripción

Anterior al evento

Validación previa

10

Fase de la canalización para los complementos que deben ejecutarse antes del funcionamiento principal del sistema. Los complementos registrados en esta fase se pueden ejecutar fuera de la transacción de la base de datos.

System_CAPS_security Seguridad Nota

La fase de validación previa tiene lugar antes de las comprobaciones de seguridad que se realizan para comprobar que el usuario que hace la llamada o que ha iniciado sesión tiene los permisos adecuados para realizar la operación prevista.

Anterior al evento

Operación previa

20

Fase de la canalización para los complementos que deben ejecutarse antes del funcionamiento principal del sistema. Los complementos registrados en esta fase se ejecutan dentro de la transacción de la base de datos.

Operaciones principales de la plataforma

MainOperation

30

Operaciones principales de las transacciones del sistema, como crear, actualizar, eliminar, etc. No se puede registrar ningún complemento personalizado en esta fase.Solo para uso interno.

Posterior al evento

Operación posterior

40

Fase de la canalización para los complementos que deben ejecutarse después del funcionamiento principal. Los complementos registrados en esta fase se ejecutan dentro de la transacción de la base de datos.

Procesamiento de mensajes

Siempre que el código de la aplicación o un flujo de trabajo invoca un método del servicio web de Microsoft Dynamics 365, se produce un cambio de estado del sistema que genera un evento. La información que se pasa como parámetro al método del servicio web se empaqueta internamente en un mensaje de OrganizationRequest y se procesa mediante la canalización. La información del mensaje de OrganizationRequest se pasa al primer complemento registrado para ese evento, donde puede leerse o modificarse antes de pasarse al siguiente complemento registrado para ese evento y así sucesivamente. Los complementos reciben la información del mensaje en forma de contexto que se pasa a su método Execute. El mensaje también se pasa a las operaciones principales de la plataforma.

Registro de complementos

Los complementos pueden registrarse para que se ejecuten antes o después de las operaciones principales de la plataforma. Los complementos registrados como anteriores al evento son los primeros que reciben el mensaje de OrganizationRequest y pueden modificar la información del mensaje antes de que este se pase a las operaciones principales. Después de que finalicen las operaciones principales de la plataforma, el mensaje se conoce como OrganizationResponse. La respuesta se pasa a los complementos registrados como posteriores al evento. Los complementos posteriores al evento tienen la oportunidad de modificar el mensaje antes de que se pase una copia de la respuesta a los complementos asincrónicos registrados. Finalmente, respuesta se devuelve a la aplicación o al flujo de trabajo que invocaron la llamada original al método del servicio web.

Dado que un solo servidor de Microsoft Dynamics 365 puede hospedar más de una organización, la canalización de ejecuciones es específica de cada organización. Existe una canalización virtual para cada organización. Los complementos registrados en la canalización solo pueden procesar los datos profesionales de una organización. Un complemento diseñado para funcionar con varias organizaciones se debe registrar en la canalización de ejecución de cada organización.

Inclusión en las transacciones de base de datos

Los complementos pueden o no ejecutarse dentro de las transacciones de base de datos de la plataforma de Microsoft Dynamics 365. El hecho de que un complemento forme parte de la transacción depende del modo en que la canalización procesa la solicitud del mensaje. Puede comprobar si el complemento se está ejecutando dentro de la transacción leyendo la propiedad IsInTransaction heredada por la interfaz IPluginExecutionContext que se pasa al complemento. Si un complemento se está ejecutando en la transacción de la base de datos y permite que se devuelva una excepción a la plataforma, se revertirá la transacción completa. Se garantiza que las fases 20 y 40 forman parte de la transacción de la base de datos mientras que la fase 10 puede formar parte de la transacción.

Los complementos registrados que se ejecutan durante la transacción de la base de datos y que devuelven una excepción a la plataforma cancelan la operación principal. Esto hace que se revierta la operación principal. Además, tampoco se ejecutará ningún complemento registrado como anterior o posterior al evento que todavía no se haya ejecutado ni ningún flujo de trabajo desencadenado por el mismo evento para el que se registró el complemento.

Ver también

Introducción al marco de trabajo de eventos
Aislamiento, relacioens de confianza y estadísticas de complementos
Registrar e implementar complementos
Servicio asincrónico en Microsoft Dynamics CRM 2015

© 2017 Microsoft. Todos los derechos reservados. Copyright