sábado, 30 de enero de 2016

Contando elementos que hay en una cola desde Workflows (Workflow Tools)

Buenas, hoy voy a acabar este mes de enero, con una nueva actualización de mi solución llamada Workflow Tools que tengo publicada en Codeplex: https://msdyncrmworkflowtools.codeplex.com
Hoy, voy a seguir añadiendo funcionalidad relacionada con lo que publique la semana pasada (http://www.demianrasko.com/2016/01/seleccionar-o-recoger-elementos-de.html) para recoger elementos de una cola.
La idea es, que si me encuentro en una situación en donde debo recoger automáticamente desde una Cola elementos, a lo mejor antes sería interesante saber cuantos elementos hay en esa cola, o incluso saber cuales de esos elementos aún no están siendo trabajados por ningún otro usuario.
Es por esto que se me ha ocurrido añadir la funcionalidad “Queue Item Count” que me permitirá saber:
  • Elementos que me quedan pendientes en mi cola personal
  • Elementos totales que hay en una cola pública
  • Elementos totales de una cola pública sin asignar
  • etc.
Encontrandome en este punto, he creado esta nueva funcionalidad que funciona como siempre, primero la seleccionamos:
SNAGHTML7c3004d
y luego actualizamos los parámetros que son solo dos:
SNAGHTML7c35a35
Los parámetros son:
  • Source Queue: cola origen de la que queremos “contar” los elementos
  • Count Only Unassigned Items: un booleano, para decirle si queremos que nos cuente solo los elementos no recogidos por nadie (campo “trabajado por” a vacío) o todos los elementos.
  • ItemsCount: campo de salida de tipo numérico que nos da el total de elementos encontrados.
Muy simple. Ahora vamos a ver una utilización de esto que comento, en la “vida real”:
SNAGHTML7c6c7c5
En este ejemplo, el primer paso hace la consulta de la cola que se llama “Test1” para saber cuantos elementos hay disponibles sin ser asignados. Y en el segundo paso, hay una condición de comprobación que pregunta si el valor devuelto de esa consulta es mayor que cero:
SNAGHTML7c847cd
Si eso es positivo, entonces ya puedo hacer el “Pick”.
Creo que esto puede ser el “germen”, de un gestor de asignaciones dinámicas de trabajo Winking smile
Espero les haya gustado.
un abrazo!
@demian_rasko

sábado, 23 de enero de 2016

Seleccionar o recoger elementos de Colas desde workflows (Workflow Tools)

Buenas, hoy voy a volver sobre lo que me está “entreteniendo” las últimas semanas.
Mi trabajo diario y dedicado a Dynamics CRM y a diferentes proyectos, así tambien como mis contactos constantes con gente en las comunidades, me da nuevas ideas para añadir funcionalidades a mi solución de workflows.
Esto se me está convirtiendo en una verdadera extensibilidad de Dynamics CRM, para hacer cada vez mas cosas. Ya no solo por cada una de las funcionalidades independientes que voy añadiendo, sino por la combinación de unas con otras. Estoy empezando a pensar que muchos de los temas que a lo mejor hoy se hacen con desarrollos de “plugins” (.NET), ya se podrían hacer de varias maneras combinando muchas de mis funcionalidades.
Hoy voy a añadir una funcionalidad que me ha llegado desde la “Familia” de CRM, una de los tantos grupos de usuarios de CRM en los que participo dentro de las comunidades de CRM.
La idea surge por el típico problema en el trabajo con Colas en Dynamics CRM. Si tenemos un escenario donde varios usuarios van recogiendo elementos de una Cola (casos, actividades, etc.) a veces ocurre que los usuarios no recogen los elementos en orden, sino que se recogen primero los que son mas sencillos, o los que “gusten” mas. Este comportamiento se conoce como “Cherry Picking”.
No hay manera de impedir esto de forma estándar o sencilla, y por esto se me ha ocurrido que si pudiésemos automatizar la recogida de elementos de una cola desde un Workflow, se podría solucionar este problema.
Por esto, he creado una actividad de Workflow que llamé “Pick From Queue”, que me permite automatizar este trabajo y lo he añadido a mi solución en Codeplex: https://msdyncrmworkflowtools.codeplex.com/
El funcionamiento, como siempre es muy simple. Primero seleccionamos la actividad de workflow “Pick From Queue”:
SNAGHTML1c50c7
Y luego definimos los parámetros necesarios:
SNAGHTML1ca2bf
La descripción de estos parámetros es:
  • Source Queue: Cola desde la cual quiero recoger los elementos
  • Remove Items From Source Queue: definimos si queremos que los elementos sean eliminados de la cola de origen o no. Así es como es la funcionalidad estandar de “Seleccionar” elementos de la cola de forma manual.
  • Quantity Items: para definir cuantos elementos queremos recoger a la vez.
Es importante destacar que le estoy aplicando un orden predeterminado a los elementos de la cola, que es el de la fecha de “Cola indicada” – enteredon es su nombre de esquema -  (de forma descendente).
Ahora pensemos escenarios donde aplicar esto. Imaginamos que tenemos que ir haciendo llamadas de teléfono, y a medida que vamos completando las mismas, disparamos un workflow con esta accion, para coger la/s siguiente/s llamadas. Automatizando esto, impedimos que los usuarios tengan que ir manualmente a “seleccionarse” el trabajo, sino que automáticamente se les irá asignando por orden.
Espero les haya gustado, y como siempre, estoy abierto a que me plantéis nuevas ideas Winking smile
@demian_rasko

sábado, 16 de enero de 2016

Añadir ficheros adjuntos en emails desde otras entidades (Workflow Tools)

Buenas a todos, yo sigo con lo mío….y lo mío es cada día explorar nuevas cosas que puedan hacer falta y añadirlas en mi solución de Workflows.
Cada día me pasa mas seguido que me entero de gente conocida que se descarga esta solución y usa alguna de las funcionalidades, incluso compañeros de trabajo. Esto me motiva a seguir mejorándola.
Además me voy dando cuenta, que a veces algunas de las funcionalidades es algo simple, pero si la utilizo con otra de las ya incluidas, empieza a tener muchas mas potencia.
Ya llevo 15 funcionalidades, y mas de 1300 descargas. Algunos me escriben comentarios, mejoras o incluso incidencias. Todo sirve para mejorar. Tengo compis que me van tirando ideas para ir mejorándolo, pero por favor sentiros libres de proponer.
Como siempre, está disponible para su descarga en Codeplex, y con todo el código abierto allí: https://msdyncrmworkflowtools.codeplex.com/
La nueva funcionalidad de hoy, nos permite añadir los adjuntos que tenga una entidad relacionadas, a un email.
La entidad puede ser cualquiera, podemos pasarle la URL de la misma. Los Ficheros a añadir, pueden ser varios e incluso utilizar el “*” para hacer una búsqueda difusa de ficheros. Luego se adjuntan en el email que debe estar previamente debe estar creado.
La utilización de esto es la siguiente, primero seleccionamos la acción:
SNAGHTML3aaef30
Una vez seleccionado, introducimos los parametros:
SNAGHTML3abcbd4
Los parámetros son:
  • Main Record URL: dirección URL del registro que contiene las notas de origen
  • File Name: campo con el nombre del fichero/s a añadir. puedes utilizar asteriscos “*” como comodín de búsqueda.
  • Email: es un campo Lookup, donde pasarle el email. En el ejemplo anterior, el email lo había creado en un paso anterior del workflow, y puede utilizarlo aquí.
Finalmente se me crea un email, con todos los adjuntos de una Cuenta, por ejemplo:
SNAGHTML3b38e86
Espero les guste, un abrazo!
@demian_rasko

domingo, 3 de enero de 2016

Dynamics CRM 2016: Nuevos controles para introducción de datos en cliente móvil

Hoy voy a escribir algo relacionado con una de las funcionalidades nuevas de la nueva versión de Dynamics CRM 2016 que mas me han gustado, por su enfocque y el resultado que obtienen. Además de la visión a futuras evoluciones que puede aportar mucho a la plataforma.
Esta funcionalidad es la de la posibilidad de enseñar nuevos controles para la introducción de datos en Dynamics CRM. La idea es que dados una serie de campos en un formulario, la representación gráfica del control para visualizar e introducir el valor del campo, sea configurable.
Lamentablemente esta “independencia” entre la representación gráfica de un campo y el campo en sí mismo, esta solamente disponible de momento en el cliente de movilidad, pero creo que es donde mas hace falta.
En mi experiencia trabajando con todo esto, me ha sorprendido la cantidad de nuevas opciones que tenemos, la verdad es espectacular, y como os llevará bastante tiempo haceros con todas ellas, intentaré resumirlo todo en un solo mega post que explique todo a modo de tutorial.
En esta primera versión, estaán disponibles 15 nuevos controles:
  1. Calendario (Calendar)
  2. Mando esférico (Arc Knob)
  3. Autocompletado (Auto-Complete)
  4. Gráfico de viñetas (Bullet Graph)
  5. Voltear – Modificador (Flip Switch)
  6. Máscara de entrada (Input Mask)
  7. Medidor lineal (Linear Gauge)
  8. Control deslizante lineal (Linear Slider)
  9. Multimedia
  10. Entrada numérica (Number Input)
  11. Conjunto de opciones (Option Sets)
  12. Mando radial (Radial Knob)
  13. Control de lápiz (Pen Control)
  14. Clasificación de estrellas (Star Rating)
  15. Vista previa del sitio web (Website Preview) solo para online
Espero no aburrir a nadie, pero este post será largo. Intentaré enseñar ejemplos de todos los componentes.
A continuación, describo en una tabla, para cada tipo de campo, que tipo de control permite:
SNAGHTML66ad0da
Ahora voy a explicar cada uno de los objetos, y como se configuran. La personalización de estos objetos, es el mismo sitio donde se personalizan los formularios en la pestaña de “Controles” de las propiedades del campo:
SNAGHTML66ce61d
Allí se puede configurar que tipo de controles estarán disponibles para el cliente de teléfono o el cliente de tablet, ya que podríamos definir diferentes.
Dependiendo del tipo de campo, podremos añadir los controles, hacindo click en “Agregar control…”.
Autocompletado
SNAGHTML66f0c1a
Hay dos tipos de autocompletados:
1) Autocompletado desde un picklist (que debe estar en la misma entidad):
SNAGHTML6701879

2) Autocompletado desde una vista, donde seleccionamos la vista, la entidad y el campo a enseñar:
SNAGHTML670e32c
SNAGHTML68aaf3d
SNAGHTML68b37c6
Finalmente estos dos campos se ven así:
SNAGHTML672bbc4SNAGHTML67375ed
Calendario
El calendario es la posibilidad de convertir una vista en un dashboard o una vista en un subgrid, en un calendario, donde además podemos definir por que campo queremos que ordene los registros en el calendario.
Se personaliza en la propia personalizacion del dashboard al añadir una lista, en sus propiedades en la pestaña de “Controles”:
SNAGHTML6762e27
y allí podremos añadir el calendario:
SNAGHTML675ce83
y una vez añadido, podremos configurar el componete introduciendo los valores en sus parámetros:
SNAGHTML677b062
Y lo mismo se puede hacer en un subgrid en un formulario en la pestaña de “Controles”:
SNAGHTML678a532
Finalmente este objeto se ve así, y con la posibilidad de cambiar las vista mensual, semanal y diaria:

SNAGHTML6820af5SNAGHTML682676d
Clasificación de estrellas
SNAGHTML68790e6
Este control solamente permite configurarle un valor con la cantidad de estrellas (de 2 a 5):
SNAGHTML68825f2
SNAGHTML68caa70
Y se ve así en los formularios:
SNAGHTML6896392
Conjunto de opciones
Los conjuntos de opciones permiten poder visualizar campos de tipo desplegable (picklist) de forma mas bonita en las tablets y móviles.
SNAGHTML68e3e9d
Una vez configurado se ve de la siguiente manera:
SNAGHTML68eee17
Control de lápiz
Los campos de texto largo, se pueden visualizar como objetos para recoger firmas como un lápiz.
SNAGHTML692b2a1
Este tipo de componentes se visualiza de la siguiente manera (modo edición y modo lectura):
SNAGHTML6953489SNAGHTML6957897
Una vez introducido, no se permite volver a modificarlo. Es por esto que pienso que sirve principalmente para recoger firmas. La imagen es almacenada en formato base64 en el campo Ntext, por lo tanto, recordar que el campo debe ser lo suficientemente grande, los 2000 caracteres que suelen aparecer de forma estandar, son demasiado pequeños.
SNAGHTML6977f25
Control delizante lineal
SNAGHTML699b3c8
La configuración de este componente es la siguiente:
SNAGHTML69a2464
por cada valor, se puede definir un campo fijo o uno dinámico basado en el valor de un campo:
SNAGHTML69ad0e0
Finalmente se ve de la siguiente manera:
SNAGHTML69c0bc1
Entrada numérica
SNAGHTML69cf2c6
Este control permite configrarle el paso, que puede ser un valor fijo o el valor de un campo:
SNAGHTML69d91e4
SNAGHTML69e663c
Finalmente este objeto se visualiza así:
SNAGHTML69f296d
Gráfico de viñetas
Este tipo de control es de solo lectura y relacionado con campos numéricos.
SNAGHTML7c34593
A continucación se muestran todos los parámetros de este componente:
SNAGHTML7c4cc14
Todos los parámetros pueden ser valores fijos, o basados en campos:
SNAGHTML7c5c950
Finalmente este componente se ve de la siguiente manera:
SNAGHTML7c696a3
Mando esférico
SNAGHTML7c756e5
Los parámetros de configuración que pueden ser valores fijos o dinámicos basados en campos:
SNAGHTML7c7cba8
Este componente se ve de la siguiente manera:
SNAGHTML7c89580
Mando radial
SNAGHTML7caa3ee
Los parametros (fijos o por campos):
SNAGHTML7cb555b
Se termina viendo de la siguiente manera:
SNAGHTML7cb021b
Máscara de entrada
SNAGHTML7cc571c
El parámetro permite definir una máscara de entrada del texto, que puede ser un texto, o de un campo:
SNAGHTML7cd5a72

SNAGHTML7ccbcac
Y este componente se ve de la siguiente manera:
SNAGHTML7cdfc9e
Medidor Lineal
SNAGHTML7cee568
Los parámetros (fijos o por campos):
SNAGHTML7cf8bca
y este componente se ve así:
SNAGHTML7d00956
Multimedia
SNAGHTML7d80b72
Esto se aplica a campos de tipo texto, que tienen el formato de URL, y permiten visualizar un video como se ve a continuación:
SNAGHTML7d7a650
Vista previa de sitio web
SNAGHTML7d95db4
Esto se aplica a campos de tipo texto, que tienen el formato de URL, y permiten previsualizar un sitio web:
SNAGHTML7e3381a
Comentario: no he conseguido ver la imagen de ninguna web. A lo mejor es algun tipo de “bug”.
Voltear – modificador
SNAGHTML7e44e7c
Este control es para los campos booleanos que se ve de la siguiente manera:
SNAGHTML7e4f664

Finalmente si añadimos todos estos objetos a un solo formulario, obtenemos algo como lo siguiente:
SNAGHTML7ec2439
Simplemente: ESPECTACULAR Winking smile!
Bueno, esto ha sido todo, espero les haya gustado. Solo les dejo algunos temas a tener en cuenta:
  • Los valores máximos de los controles numéricos deben ser siempre de tipo entero, sin importar el tipo de campo.
  • Cada cambio, requiere publicar las personalziaciones y volver a descargar las mismas en la app
  • Los campos de tipos imagen, lookup y fecha no tienen ninguna funcionalidad especial.
  • Los campos de texto largo, deben ser lo suficientemente grandes para almacenar una imagen (la firma) en base 64, sino da error. La imagen de firma no se ve en el cliente we, y habría que desarrollar una web resource que lo enseñe.
un abrazo a todos!
@demian_rasko