Pocas cosas son tan útiles como los Plugins para hacer cálculos, validaciones, y demás tareas en el lado del servidor. Estos Plugins pueden ser de ejecución síncrona o asíncrona pero requieren el desarrollo de una librería (.dll) en .NET.
Hasta ahora los Workflows eran solo de ejecución asíncrona, y por lo tanto las tareas de servidor que se debían hacer de forma síncrona, solamente se podían realizar con Plugins.
En el nuevo CRM 2013, podemos hacer que los Workflows se ejecuten de forma síncrona! esta es una nueva funcionalidad que nos abre un nuevo enrome abanico de posibilidades.
Voy a explicar a continuación como funcionan.
Primero se debe crear el Workflow, seleccionando que debe ser de ejecución síncrona (el “checkbox” debe estar deshabilitado).
Una vez creado el Workflow síncrono, podemos ver algunas cosas nuevas, como la opción de convertirlo en un proceso asíncrono (backgroud Wrokflow). Además tenemos una sección nueva que nos permite seleccionar en que momento se va a ejecutar el workflow, antes o después de las acciones.
En este Workflow lo que quiero es que después de la actualización del campo “Phone”, este valor se copie al campo “Fax”:
Luego de publicar el workflow podemos ver como funciona el workflow, que se dispara tanto al guardar de forma manual como al dispararse el Auto save:
Los Workflow síncronos también nos permiten añadir validaciones que impidan actualizaciones, para esto debemos seleccionar que se disparen en el “before” y luego añadir un pasa de cancelación del Workflow definiendo un mensaje:
Si intentamos entonces modificar el campo “Phone” lo que ocurre es lo siguiente (un mensaje de error):
Los Workflow síncronos, creo que son una nueva funcionalidad que nos abre una gran cantidad de posibilidades nuevas que desde el punto de vista de plataforma la convierten en mucho mas amplia y versátil.
Algunos ejemplos que se me ocurren que pueden ser el ámbito de aplicación de los mismos son:
- Validaciones que antes solo se podían hacer a través de plugins
- Actualizaciones de campos síncronas en el momento de realizar acciones
- Llamas desde otros Workflows, que pueden ser síncronos o asíncronos
- Posibilidad de reemplazar para siempre los Plugins, ya que mediante la creación de Workflow assemblies, se podría trasladar casi cualquier tarea que se haga en un Plugin, a un Workflow síncrono.
- Etc.
Unas de las cosas que deberán seguir haciendo seguro con Plugins serán:
- Plugins que requieran Imágenes Pre/Post
- Validaciones en el “PRE-CREATE” (los Workflow síncronos solamente nos permiten el POST-CREATE)
- Tareas o acciones en el “POST-DELETE” (Los Workflow síncronos solamente permite “PRE-DELETE”)
- Cambios en la entidad en el evento PRE en acciones de creación o actualización sin hacer una llamada de Update. Los Workflow síncronos, solamente permiten Updates.
- Otras tareas mas complejas en Plugins.
A pesar de tener algunas limitaciones, creo que este es un gran paso en el crecimiento de Dynamics CRM como plataforma de desarrollo, y que es un excelente ejemplo de como el equipo de producto tiene esta visión y la desarrolla.
Un abrazo