En el post anterior hablamos  de los Asynchronous Batch Process Pattern y el tipo de problema que puede resolver. En este post, me gustaría sugerir una posible implementación que se adhiere al Asynchronous Batch Process Pattern. En el próximo post voy a demostrar una implementación real usando un ejemplo de escenario de negocios. Como siempre pido disculpas porque algunos conceptos o palabras técnicas tienen difícil traducción y a veces lo mas comodo es ponerlo en ingles.

Implementation Components

Hay muchas maneras posibles de implementar el Asynchronous Batch Process Pattern.La principal consideración en la implementación es tener soporte para CRM Online y Soporte para soluciones  MSCRM2011

  • Scheduling Component – Workflow Rule

 

Un mecanismo de  programación disponible para todo tipos de despliegue, es el Workflow que tiene una acción  Wait disponible. La acción  de espera del Workflow  permite que un proceso espere para eventos de negocios y futuras fechas de vencimiento y por lo tanto adecuarlas  como un componente de programación configurable.

Las Reglas de Workflow programables ( Scheduling Workflow) operará en el registro de  Batch Process record and Wait for the Next Activation Schedule. Cuando llega la fecha de vencimiento, la regla de flujo de trabajo de programación va a cambiar el proceso por lotes estado de grabación a “Activated”, que a su vez pone en marcha el plugin de ejecución registrado para el evento de proceso por lotes de actualización entidad (la actualización del atributo Estado solamente). 

Pongo el párrafo entero en ingles , porque las traducciones a veces lo hace mal lioso.

“The Scheduling Workflow Rule will operate on the Batch Process record and Wait for the Next Activation Schedule. When the due date arrives, the Scheduling Workflow Rule will change the Batch Process record status to ‘Activated’, which in turn launches the Executing Plugin registered for the Batch Process entity Update event (the Status attribute update only). “

  • Query Definition – FetchXML Query

Microsoft Dynamics CRM FetchXML es un lenguaje de consulta propio que se utiliza para describir  consultas complejas y recuperar un conjunto de registros coincidentes.FetchXML también es utilizado por el motor de búsqueda avanzada . En la versión de 2011, la pantalla de búsqueda avanzada permite la descarga de la definición de la consulta FetchXML para cualquier consulta existente o predeterminada.Esto hace que  FetchXML  sirva para definir consultas que son válidos tanto en la búsqueda avanzada y como en la Organización de Servicio API.

Para esta implementación, la búsqueda avanzada se utiliza para definir los registros de objetivos, probar la consulta y descargar la definición de consulta para un uso posterior.La cadena de consulta FetchXML se encuentra en el registro de proceso por lotes y utilizado por la API de ejecución para recuperar los identificadores de los registros de objetivo de negocio.

La principal ventaja de tener FetchXML dinámico:  devuelve los registros coincidentes de negocio en lugar de los registros que coinciden en el pasado,

  • Executing Component – Plugin & Workflow Rule

 

.Ambos plugins y reglas de flujo de trabajo se ejecuta en los mecanismos de Microsoft Dynamics CRM, cada uno con sus propias fortalezas y debilidades.

En las implementaciones CRM ONLINE, Plugin es actualmente la única solución que permite incrustar código personalizado del lado del servidor en los procesos de aplicación.Un API no se limita a las acciones de Workflow predefinidas y pueden realizar acciones como Share, que una regla de Workflow nativo no puede.

Un plugin también puede realizar consultas y activar una regla de Workflow a través de código.Esta es una función clave en la implementación actual.Después de la API de ejecución ha recuperado los registros de negocios de destino, se aplicará la regla de Workflow  de acción para estos registros, y establecer los Batch Process record de acuerdo a la frecuencia de recurrencia.

  • Batch Process Entity

Una entidad de Batch Process personalizado se utiliza para iniciar y gestionar los datos de Batch Process.

  1. Next Activation Schedule
  2. Workflow process to run
  3. FetchXML query
  4. Activation frequency (one-time, daily, weekly etc.)
  5. Success/failure notification

  • Execution Algorithm

En el siguiente diagrama se describe el algoritmo de ejecución. El concepto clave que se utiliza aquí, es la comunicación de la programación de flujo de trabajo y el componente API de ejecución en dos atributos de datos del registro de proceso por lotes:

  1. Batch Process Status – when ever Batch Process record status changes to ‘Activated’ by the Scheduling Workflow Rule, the Plugin component executes, query for business records using the FetchXML query and apply the predefined Action Workflow Rule to the result records. The Plugin than changes the Batch Process record status back to ‘Scheduled’ or ‘Suspended’.
  2. Next Activation Schedule – If the Batch Process record defines a recurring schedule (daily, weekly etc.), the Plugin component sets the Next Activation Date respectively. This trigger initiates another Scheduling Workflow Rule instance which waits to the new Activation Date