Canalización de ejecución del evento
Publicado: enero de 2017
Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
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.
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 dos 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 dos 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 dos minutos se aplica solo 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.
|
||
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.Sólo 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 365
Microsoft Dynamics 365
© 2017 Microsoft. Todos los derechos reservados. Copyright