sábado, 2 de enero de 2016

Operaciones de valores consolidados en workflows (Workflow Tools)

Hola a Todos y feliz nuevo año 2016, espero que a todos se os cumplan vuestros deseos, y que empiecen un nuevo año lleno de desafíos, crecimiento y sobre todo, aprender.
Hoy en este primer post, voy a explicar un tema que me venía dando vueltas hace tiempo, y que con la ayuda de un compañero de trabajo (gracias Daniel) me dió la idea de como enfocarlo.
A veces los campos de tipo Rollup o consolidados, nos aportan una carga demasiado “pesada” a nuestros entornos, ya que los calculos pueden ser costoso en cuanto a rendimiento. Además se tiene poco control sobre estos procesos de cálculo, y son valores que tenemos que tener siempre en nuestros registros y que a veces solo los necesitamos temporalmente.
Con esta idea en la cabeza, he añadido una nueva funcionalidad a mi ya conocida solución de Workflow Tools que tengo compartida en Codeplex (https://msdyncrmworkflowtools.codeplex.com/)
La funcionalidad se llama “Rollup Functions”. La idea es que le pasemos una consulta FetchXML, y luego nos de un resultado con una serie de valores:
  • Count
  • Sum
  • Average
  • Max
  • Min
Estos valores, me los devolverá en unos parámetros de salida de tipo “decimal” que nos permitirán utilizarlos en el contexto del workflow, para lo que querramos (almacenarlo, utilizarlo como condiciones, en textos de emials, etc.)
La funcionalidad se utilizar de forma sencilla, primero seleccionamos la actividad de workflow:
SNAGHTML255f752a
Luego creamos un FetchXML de condiciones, que podemos hacerlo con la propia busqueda avanzada de Dynamics CRM y obtenemos una query como esta:
SNAGHTML256068c1
En esa query podemos poner un filtro, ya que lo mas habitual para utilizar esta funcionalidad será para calcular valores “hijos”, pero como está abierta a cualquiera, podría funcionar con cualquier consulta. Si queremos filtrar con un valore del padre, simplemente ponemos el filtro con el texto “{PARENT_GUID}”. Este GUID se reemplaza en la ejecución con el ID del registro del contexto del workflow.
Luego pegamos esta consulta en el parámetro de entrada:
SNAGHTML256237a5
y Finalmente obtenemos los resultados:
SNAGHTML2562eedf
Tener en cuenta algunas cosas:
  • El Campo “numérico” que utilizo para los cálculos es el primer atributo del fetchXML. Podéis añadir mas, pero solamente utilizaré el primero.
  • Las consultas están paginadas, de cara a que si se devuelven muchos miles de registros, se repite la query hasta obtener todos los registros.
  • Si hay muchos millones de registros, podría tardar mucho en ejecutarse, tener en cuenta que el CRM Online el límite es de 3 minutos
Espero les guste, Yo lo veo super útil, incluso con mas potencial que los propios estandar de CRM Winking smile
un abrazo!
@demian_rasko

No hay comentarios:

Publicar un comentario