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
La funcionalidad se utilizar de forma sencilla, primero seleccionamos la actividad de workflow:
Luego creamos un FetchXML de condiciones, que podemos hacerlo con la propia busqueda avanzada de Dynamics CRM y obtenemos una query como esta:
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:
y Finalmente obtenemos los resultados:
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
un abrazo!
@demian_rasko
No hay comentarios:
Publicar un comentario