Recientemente un cliente nos ha solicitado que quería estar en copia oculta de los correos electrónicos que se generan desde los flujos de trabajo de SharePoint.
Al abrir SharePoint Designer 2013, vemos que tenemos la acción de enviar correo electrónico disponible, si la ponemos en nuestro flujo, podemos ver que nos presenta sólo las opciones de Para y Copia, pero no la de Copia Oculta:
Para poder acceder a la copia oculta, tendremos que acceder a las Propiedades de la acción en el flujo de trabajo:
Esto hará que se abra la ventana emergente que nos permitirá incluir los destinatarios en copia urgente:
Desde el menú de BBC podremos incluir a dichos miembros:
Mostrando entradas con la etiqueta Workflow. Mostrar todas las entradas
Mostrando entradas con la etiqueta Workflow. Mostrar todas las entradas
sábado, 14 de octubre de 2017
sábado, 19 de marzo de 2016
Flujo de trabajo (tipo 2010) reutilizable en SharePoint 2013
En un cliente hemos montado la nueva versión 2013 y vistos nuestros antecedentes con ellos, nos han dado carta blanca para personalizarlo como nosotros veamos mejor. Así que una de las decisiones que hemos tomado, es trabajar con tipo de contenidos. Esto nos reporta una serie de mejoras que no tenemos si trabajos directamente creando las columnas biblioteca a biblioteca o lista a lista.
Una de esas mejoras, es poder utilizar flujos de trabajo reutilizables:
Si procedemos a crear un flujo reutilizable, una de las cosas que nos lo marcará sera el tipo de contenido al que lo asociamos. En nuestro ejemplo utilizaremos Dossier de Prensa:
Tras crear nuestro flujo con sus acciones y condiciones, lo guardamos y podremos ver que podemos decidir si queremos que puedan o no, lanzarlo a mano, automático cuando se crea o se modifica elementos.
También podemos observar que se engloba dentro de Flujo de trabajo reutilizable:
De hecho, SharePoint Designer nos lo mostrará como un flujo reutilizable globalmente, como son los propios flujos de SharePoint de Aprobación, Recopilación de firmas, etc...
Ahora sólo deberemos acceder con el navegador a las bibliotecas donde utilicemos ese tipo de contenido y desde el menú contextual superior de la biblioteca, elegiremos la opción de Agregar un flujo de trabajo:
Esto nos llevará a una página donde podremos seleccionar el tipo de contenido y tras ello, nos saldrá nuestro flujo, y por último sólo quedará definir que evento es el que nos lanzará nuestro flujo:
Resumen: Crear flujos reutilizables asociados a un tipo de contenido, nos sirve para poder gestionar cualquier cambio desde un único sitio y una única vez. El cómo encima de estas líneas.
Una de esas mejoras, es poder utilizar flujos de trabajo reutilizables:
Tras crear nuestro flujo con sus acciones y condiciones, lo guardamos y podremos ver que podemos decidir si queremos que puedan o no, lanzarlo a mano, automático cuando se crea o se modifica elementos.
También podemos observar que se engloba dentro de Flujo de trabajo reutilizable:
De hecho, SharePoint Designer nos lo mostrará como un flujo reutilizable globalmente, como son los propios flujos de SharePoint de Aprobación, Recopilación de firmas, etc...
Ahora sólo deberemos acceder con el navegador a las bibliotecas donde utilicemos ese tipo de contenido y desde el menú contextual superior de la biblioteca, elegiremos la opción de Agregar un flujo de trabajo:
Esto nos llevará a una página donde podremos seleccionar el tipo de contenido y tras ello, nos saldrá nuestro flujo, y por último sólo quedará definir que evento es el que nos lanzará nuestro flujo:
Resumen: Crear flujos reutilizables asociados a un tipo de contenido, nos sirve para poder gestionar cualquier cambio desde un único sitio y una única vez. El cómo encima de estas líneas.
sábado, 23 de enero de 2016
Eliminar una palabra de un texto en SharePoint
Esta entrada es una continuación de la anterior. En la anterior entrada vimos como era posible completar un campo de tipo hipervínculo. Todo ello, vino de una lista llamada Miembros que servía para guardar todos nuestros contactos de diferentes grupos y una lista llamada Grupos, que nos servia para nombrar los diferentes grupos y para tener un "botón" que al hacer clic en el, nos permitiera mandar un correo a todos los miembros de ese Grupo.
Obviamente la siguiente parte que tuvimos que implementar era el mecanismo de dar de baja miembros de dicho grupo. El eliminar elementos de la lista de Miembros, es básico, es eliminar un elemento de la lista. Pero eso no nos eliminaría el correo asociado de la lista Grupos donde esta el "botón".
Así que lo que hicimos fue crear una columna de tipo elección en la lista Miembros, que llamamos Eliminar miembro, cuyo valor por defecto es No. Pero que cuando el usuario quiera eliminar un contacto, simplemente tenga que cambiar a Sí. También cree una columna oculta de tipo texto llamada Todos, donde guardaría los valores de todos los email que había bajo el "botón" Enviar Email. Adicionalmente cree 4 campos calculados sobre la lista Miembros: SinCorreoI, SinCorreoD, SinCorreoPre y SinCorreo.
Estos campos calculados nos servirán para almacenar los correos que hay a la izquierda del correo que queremos eliminar y sin el "mailto:", la parte derecha que hay tras el correo a eliminar, concatenar ambas partes y finalmente comprobar si es vacío o si quedan correos tras eliminar el correo a borrar.
Para ellos utilizamos también un flujo de trabajo sobre la lista Miembros que se lanza cuando se modifica un elemento y que tiene la siguiente forma:
Ejecutaremos sólo el borrado, si seleccionan Eliminar miembro a Sí.
Lo siguiente que hacemos es guardar en la variable del flujo EmailTodos de tipo cadena, los emails que hay en el "botón".
Lo siguiente que hacemos es rellenar la columna oculta Todos de tipo una línea de texto, de nuestra lista Miembros con el valor de la variable EmailTodos, que contendrá todos los emails:
Tras ello, entra en funcionamiento las columnas calculadas que hemos citado antes:
Obviamente la siguiente parte que tuvimos que implementar era el mecanismo de dar de baja miembros de dicho grupo. El eliminar elementos de la lista de Miembros, es básico, es eliminar un elemento de la lista. Pero eso no nos eliminaría el correo asociado de la lista Grupos donde esta el "botón".
Así que lo que hicimos fue crear una columna de tipo elección en la lista Miembros, que llamamos Eliminar miembro, cuyo valor por defecto es No. Pero que cuando el usuario quiera eliminar un contacto, simplemente tenga que cambiar a Sí. También cree una columna oculta de tipo texto llamada Todos, donde guardaría los valores de todos los email que había bajo el "botón" Enviar Email. Adicionalmente cree 4 campos calculados sobre la lista Miembros: SinCorreoI, SinCorreoD, SinCorreoPre y SinCorreo.
Estos campos calculados nos servirán para almacenar los correos que hay a la izquierda del correo que queremos eliminar y sin el "mailto:", la parte derecha que hay tras el correo a eliminar, concatenar ambas partes y finalmente comprobar si es vacío o si quedan correos tras eliminar el correo a borrar.
Para ellos utilizamos también un flujo de trabajo sobre la lista Miembros que se lanza cuando se modifica un elemento y que tiene la siguiente forma:
Lo siguiente que hacemos es guardar en la variable del flujo EmailTodos de tipo cadena, los emails que hay en el "botón".
Lo siguiente que hacemos es rellenar la columna oculta Todos de tipo una línea de texto, de nuestra lista Miembros con el valor de la variable EmailTodos, que contendrá todos los emails:
Tras ello, entra en funcionamiento las columnas calculadas que hemos citado antes:
- SinCorreoI: =RIGHT(LEFT(Todos;(FIND(Email;Todos)-1));LEN(LEFT(Todos;(FIND(Email;Todos)-1)))-7)
- SinCorreoD: =RIGHT(Todos;(LEN(Todos)-((FIND(Email;Todos)+LEN(Email)))))
- SinCorreoPre: =SincorreoI&SinCorreoD
- SinCorreo: =IF(SinCorreoPre="";"@";SinCorreoPre)
Lo siguiente que hacemos es esperar a que se ejecute y se rellenen los campos calculados. Personalmente tuve que poner una espera hasta que en el campo hubiera una arroba, ya que la acción esperar 1 minuto, no terminaba nunca por un problema de configuración de nuestro SharePoint que debemos revisar. Sino hubiera sido más óptimo poner una espera de 1 minutos y la última columna calculada hubiera sido:
- SinCorreo: =IF(SinCorreoPre="";"";SinCorreoPre)
No obstante el resto del flujo lo separe en un paso más para asegurarme de que estaban todos los valores asignados.
En el paso 2, lo único que hacemos es establecer la variable del flujo EmailTodosSin de tipo cadena con el valor de la columna SinCorreo.
Lo último que hacemos es volver a rellenar el "botón" tal y como vimos en la anterior entrada, con el valor de la variable, que puede contener correo o no. Y en ambos casos, lo último que hacemos el borrar el elemento de la lista Miembros que queríamos borrar.
RESUMEN:
En las acciones de flujos de SharePoint no existe una función que nos haga eliminar una palabra de un cadena de texto. Sólo existe en 2013 la opción de quedarnos con una parte a partir de una posición determinada. Entonces para ello, utilizaremos columnas calculadas.
sábado, 12 de diciembre de 2015
Campo de hipervínculo en flujos de trabajo 2013
Esta semana un cliente nos ha propuesto un reto. El reto consistía en tener en una lista todos los miembros de los diferentes grupos de trabajo con los que trataban. Hasta aquí, sencillo. Lo siguiente era tener un "botón" que les abriera Outlook y le pusiera todos los correos de los miembros de ese grupo. Esto ya tiene más interés.
La solución una lista llamada Grupos donde listemos los grupos y un "botón" que ponga Enviar Email.
Ese "botón" es un campo de tipo hipervínculo donde la dirección web es mailto:david@dominio.es;blanca@dominio.es; .... Mientras que la descripción del campo pone Enviar Email.
Para dar de alta los miembros, tendremos otra lista llamada Miembros, donde tenemos tres campos (pueden ser más pero nosotros sólo necesitamos esos tres) Nombre (Texto), Grupo (Búsqueda sobre la lista Grupos) y Email (Una linea de texto).
¿Cómo creamos y rellenamos el "botón"? Con un flujo de trabajo sobre la lista Miembros que se lanza cuando se crea un nuevo elemento.
¿Qué hará nuestro flujo?
Resumiendo: Tendremos dos ramas, una por la que iremos si el grupo tiene emails asociados y otra por la que el grupo aún no tiene emails asociados. La condición será:
Que consiste en ir a la lista Grupos y miraremos el campo Emails, que es donde guardaremos nuestros emails concatenados con ";", para ello, queremos el elemento de la lista Grupos, cuyo nombre coincida con el grupo del elemento que ha lanzado el flujo en la lista Miembros.
Si avanzamos por la primera rama, guardamos en una variable del flujo (EmailAnteriores) de tipo Cadena, los emails que ya hay de ese grupo (los recogemos como campo de tipo Dirección URL):
Para en un siguiente paso concatenar esos emails (recuperamos la variable EmailAnteriores con el tipo Dirección de correo electrónico) con el email de elementos de la lista Miembros que ha lanzado el flujo:
El siguiente paso será guardar esa concatenación de los email anteriores y el actual en otra variable de Flujo de tipo cadena (EmailsFinal), pero completar también un campo de descripción que ponga Enviar Email.
Para ello la cadena se genera, con la variable Email donde se encuentran todos los emails del grupo, y separado por una coma y un espacio, el nombre a mostrar:
Y finalmente sólo nos quedará guardar la variable de flujo EmailsFinal, sobre el campo Emails de la lista Grupos, que es nuestro "botón" Enviar Email:
La segunda rama, será la que nos generé el primer correo en la lista Grupos, porque hemos agregado el primer miembro en la lista Miembros. Con la única particularidad de que como estamos guardando en un campo de tipo hipervínculo, deberemos poner delante la palabra "mailto:":
RESUMEN:
Para completar campos de tipo hipervínculo a través de un flujo, deberemos crear una variable de tipo cadena, y completar con la "url, texto descriptivo". Muy importante la coma y el espacio.
La solución una lista llamada Grupos donde listemos los grupos y un "botón" que ponga Enviar Email.
Ese "botón" es un campo de tipo hipervínculo donde la dirección web es mailto:david@dominio.es;blanca@dominio.es; .... Mientras que la descripción del campo pone Enviar Email.
Para dar de alta los miembros, tendremos otra lista llamada Miembros, donde tenemos tres campos (pueden ser más pero nosotros sólo necesitamos esos tres) Nombre (Texto), Grupo (Búsqueda sobre la lista Grupos) y Email (Una linea de texto).
¿Cómo creamos y rellenamos el "botón"? Con un flujo de trabajo sobre la lista Miembros que se lanza cuando se crea un nuevo elemento.
¿Qué hará nuestro flujo?
Resumiendo: Tendremos dos ramas, una por la que iremos si el grupo tiene emails asociados y otra por la que el grupo aún no tiene emails asociados. La condición será:
Si avanzamos por la primera rama, guardamos en una variable del flujo (EmailAnteriores) de tipo Cadena, los emails que ya hay de ese grupo (los recogemos como campo de tipo Dirección URL):
Para en un siguiente paso concatenar esos emails (recuperamos la variable EmailAnteriores con el tipo Dirección de correo electrónico) con el email de elementos de la lista Miembros que ha lanzado el flujo:
El siguiente paso será guardar esa concatenación de los email anteriores y el actual en otra variable de Flujo de tipo cadena (EmailsFinal), pero completar también un campo de descripción que ponga Enviar Email.
Para ello la cadena se genera, con la variable Email donde se encuentran todos los emails del grupo, y separado por una coma y un espacio, el nombre a mostrar:
Y finalmente sólo nos quedará guardar la variable de flujo EmailsFinal, sobre el campo Emails de la lista Grupos, que es nuestro "botón" Enviar Email:
La segunda rama, será la que nos generé el primer correo en la lista Grupos, porque hemos agregado el primer miembro en la lista Miembros. Con la única particularidad de que como estamos guardando en un campo de tipo hipervínculo, deberemos poner delante la palabra "mailto:":
RESUMEN:
Para completar campos de tipo hipervínculo a través de un flujo, deberemos crear una variable de tipo cadena, y completar con la "url, texto descriptivo". Muy importante la coma y el espacio.
sábado, 8 de agosto de 2015
Problemas con los flujos de trabajo en las encuestas en SharePoint 2007
Hoy un cliente que usa MOSS (SharePoint 2007), me ha pedido que cree una encuesta. Hasta aquí ningún problema, encuesta creada con sus maravillosas bifurcaciones.
Los problemas han venido cuando me ha dicho que un usuario podía responder varias veces a la encuesta. Eso no es un problema en sí, el problema viene cuando el usuario a los días se ha dado cuenta de que ha respondido mal a la encuesta. Entonces puede ser un problema saber cual es la respuesta que coincide con la respuesta a modificar.
Lo primero que se me ha ocurrido ha sido, crear o modificar una vista, para mostrar en ella, el campo que diferenciaría cada respuesta, en mi caso el campo "operación", pero que por el alto número de operaciones que tenían, he separado en 9 preguntas de operación que se llega a ella por medio de una bifurcación al elegir el departamento.
Para mi sorpresa en una lista no se puede crear vistas, ni modificar vistas (Si que se puede añadir campos con SharePoint Designer):
Pero no sería solución porque tendría que sacar las 9 columnas de operación.
Las encuestas tampoco aceptan columnas calculadas, en la cual, podría concatenar en una sola columna, la concatenación de las 9 y mostrar dicha columna.
Lo siguiente que se me ha ocurrido es crear un correo, que además de confirmarle al usuario la respuesta en la encuesta, les ponga un enlace a la edición de la respuesta en sí.
Me pongo manos a la obra y cuando esta finalizado, me encuentro con que me aparece la columna del flujo en la vista por defecto, como siempre, pero con este mensaje:
Busco en San Google y encuentro esta maravillosa página de Microsoft:
https://support.microsoft.com/es-es/kb/926370
En la que por si desaparece, os copio lo que pone:
"Considere el siguiente escenario. Cree una encuesta y, a continuación, agregue un flujo de trabajo a la encuesta en Microsoft Windows SharePoint Services 3.0. A continuación, conectarse a la encuesta y responder a él. Por último, ver la respuesta que ha enviado y, a continuación, intenta iniciar un flujo de trabajo de la respuesta. Para ello, haga clic en la flecha situada junto a la respuesta, haga clic en flujos de trabajo, haga clic en el flujo de trabajo que ha agregado, escriba su nombre de usuario en el cuadro de los revisores y, a continuación, haga clic en Inicio. Sin embargo, no se inicia el flujo de trabajo. En su lugar, el estado del flujo de trabajo aparece como Error al iniciar."
Que suerte, justo lo que me pasa a mi, busco la solución y me encuentro:
"Este problema se produce porque a partir de un flujo de trabajo de una respuesta de encuesta no es compatible con Windows SharePoint Services 3.0. Aunque la opción de flujos de trabajo aparece al hacer clic en la flecha situada junto a la respuesta de una encuesta, no se puede iniciar un flujo de trabajo de respuesta de una encuesta."
Perfecto, descubro que las encuestas no soportan los flujos. Por cierto, la traducción rara, ha sido cortesía de Google.
Y las alertas no me sirven, porque no puedo hacer que llegue una alerta al creador y sólo al creador, cuando este crea un elemento:
Conclusión, la encuestas son maravillosas, pero no soportan:
Los problemas han venido cuando me ha dicho que un usuario podía responder varias veces a la encuesta. Eso no es un problema en sí, el problema viene cuando el usuario a los días se ha dado cuenta de que ha respondido mal a la encuesta. Entonces puede ser un problema saber cual es la respuesta que coincide con la respuesta a modificar.
Lo primero que se me ha ocurrido ha sido, crear o modificar una vista, para mostrar en ella, el campo que diferenciaría cada respuesta, en mi caso el campo "operación", pero que por el alto número de operaciones que tenían, he separado en 9 preguntas de operación que se llega a ella por medio de una bifurcación al elegir el departamento.
Para mi sorpresa en una lista no se puede crear vistas, ni modificar vistas (Si que se puede añadir campos con SharePoint Designer):
Pero no sería solución porque tendría que sacar las 9 columnas de operación.
Las encuestas tampoco aceptan columnas calculadas, en la cual, podría concatenar en una sola columna, la concatenación de las 9 y mostrar dicha columna.
Lo siguiente que se me ha ocurrido es crear un correo, que además de confirmarle al usuario la respuesta en la encuesta, les ponga un enlace a la edición de la respuesta en sí.
Me pongo manos a la obra y cuando esta finalizado, me encuentro con que me aparece la columna del flujo en la vista por defecto, como siempre, pero con este mensaje:
Busco en San Google y encuentro esta maravillosa página de Microsoft:
https://support.microsoft.com/es-es/kb/926370
En la que por si desaparece, os copio lo que pone:
"Considere el siguiente escenario. Cree una encuesta y, a continuación, agregue un flujo de trabajo a la encuesta en Microsoft Windows SharePoint Services 3.0. A continuación, conectarse a la encuesta y responder a él. Por último, ver la respuesta que ha enviado y, a continuación, intenta iniciar un flujo de trabajo de la respuesta. Para ello, haga clic en la flecha situada junto a la respuesta, haga clic en flujos de trabajo, haga clic en el flujo de trabajo que ha agregado, escriba su nombre de usuario en el cuadro de los revisores y, a continuación, haga clic en Inicio. Sin embargo, no se inicia el flujo de trabajo. En su lugar, el estado del flujo de trabajo aparece como Error al iniciar."
Que suerte, justo lo que me pasa a mi, busco la solución y me encuentro:
"Este problema se produce porque a partir de un flujo de trabajo de una respuesta de encuesta no es compatible con Windows SharePoint Services 3.0. Aunque la opción de flujos de trabajo aparece al hacer clic en la flecha situada junto a la respuesta de una encuesta, no se puede iniciar un flujo de trabajo de respuesta de una encuesta."
Perfecto, descubro que las encuestas no soportan los flujos. Por cierto, la traducción rara, ha sido cortesía de Google.
Y las alertas no me sirven, porque no puedo hacer que llegue una alerta al creador y sólo al creador, cuando este crea un elemento:
Conclusión, la encuestas son maravillosas, pero no soportan:
- Flujos
- Vistas personalizadas
- Alertas para indicarme que he respondido a la encuesta
- Columnas calculadas
sábado, 22 de junio de 2013
Autonumeración con reseteo anual en SharePoint
Por ponernos en situación. Un cliente nos pidió un sistema donde sus usuarios hicieran una solicitud y SharePoint le autoasignará un número único.
Hasta aquí todo bien, pues podemos utilizar la columna ID, propia de cualquier lista o biblioteca de SharePoint. Pero querían que el 1 de enero se reiniciará dicho indice. Además querían que el número asignado, se correspondiera a Número-Año, por ejemplo 289-2013.
Para esto, vamos a utilizar algo que ya he comentado en otra entrada anterior:
http://sharepointyamigos.blogspot.com.es/2013/04/uso-de-listas-auxiliares-en-flujos-de.html
Es decir, vamos a utilizar una lista auxiliar, para llevar el conteo del elemento en el que vamos.
Tendremos nuestra lista de recepción (Solicitudes), con tres campos a rellenar por los solicitantes:
Título, Descripción y Área.
También tendrá un campo de una línea de texto oculto llamado Número de solicitud y otro calculado, llamado Año.
Para ocultar una columna bastará con entrar en la administración de la lista:
Una vez dentro, iremos a la columna Configuración general y seleccionaremos la opción Configuración avanzada:
Lo primero que nos preguntarán en la Configuración avanzada, es si deseamos permitir la administración de tipos de contenido. Responderemos que Sí:
Esto nos habilitará la opción de gestionar las columnas, en la zona Tipos de contenido:
Sí hacemos clic sobre nuestro Tipo de contenido, podremos ver las columnas que lo forman y su Estado:
Al hacer clic en la columna Número de solicitud, podremos cambiar su Estado a Oculta:
La columna Año, en cambio será una columna calculada de tipo Número, a la que le asignaremos el año asociado al año de creación de la solicitud:
Hasta aquí todo bien, pues podemos utilizar la columna ID, propia de cualquier lista o biblioteca de SharePoint. Pero querían que el 1 de enero se reiniciará dicho indice. Además querían que el número asignado, se correspondiera a Número-Año, por ejemplo 289-2013.
Para esto, vamos a utilizar algo que ya he comentado en otra entrada anterior:
http://sharepointyamigos.blogspot.com.es/2013/04/uso-de-listas-auxiliares-en-flujos-de.html
Es decir, vamos a utilizar una lista auxiliar, para llevar el conteo del elemento en el que vamos.
Tendremos nuestra lista de recepción (Solicitudes), con tres campos a rellenar por los solicitantes:
Título, Descripción y Área.
También tendrá un campo de una línea de texto oculto llamado Número de solicitud y otro calculado, llamado Año.
Para ocultar una columna bastará con entrar en la administración de la lista:
Una vez dentro, iremos a la columna Configuración general y seleccionaremos la opción Configuración avanzada:
Lo primero que nos preguntarán en la Configuración avanzada, es si deseamos permitir la administración de tipos de contenido. Responderemos que Sí:
Sí hacemos clic sobre nuestro Tipo de contenido, podremos ver las columnas que lo forman y su Estado:
Al hacer clic en la columna Número de solicitud, podremos cambiar su Estado a Oculta:
La columna Año, en cambio será una columna calculada de tipo Número, a la que le asignaremos el año asociado al año de creación de la solicitud:
Y nuestra lista auxiliar (Contador) constará de dos campos. Año y Último número. En nuestro caso, ambos serán de tipo número.
Deberemos rellenar nuestra lista con elementos de la forma:
Esta lista nos servirá para que el flujo lanzado por la creación de un elemento en la lista Solicitudes, venga a esta lista, busque la entrada que coincida con el año actual, recoja el número de Solicitudes creadas para este año y lo incremente en uno y lo guarde de nuevo en la lista Contador.
Todo ello, lo haremos creando un flujo asociado a la lista Solicitudes:
Lo primero que haremos será seleccionar la Acción de Realizar el cálculo:
Primero definiremos que es lo que queremos sumar, en nuestro caso será el valor del campo Último Número de la entrada cuyo Año coincide con nuestro Año actual (obtenido en la columna calculada de Solicitudes):
SharePoint Designer nos advertirá de que puede darse que haya varios elementos que cumplan dicha condición de búsqueda, pero no tenemos nada que temer, ya que nosotros hemos definido un único elemento por cada año en la lista Contador:
Lo siguiente que haremos será sumarle 1 y guardarlo en una variable del flujo:
Lo último que nos queda es guardar ese número calculado en la variable en nuestra lista auxiliar. Para que así el valor de Último Número recoja nuestra ejecución:
También deberemos guardar el número asignado en la lista Solicitudes en el campo Número de solicitud, pero para ello, lo guardaremos ya con el formato deseado Número-Año, para ello utilizaremos una Cadena dinámica:
Ya sólo nos queda guardar el Número de solicitud en el elemento:
Adicionalmente, nos pidieron que se le notificará al peticionario vía correo electrónico, por eso añadimos un nuevo paso donde incluíamos este valor:
Tras todo este proceso, tendremos almacenado en nuestra lista de Solicitudes, la solicitud, con su Número de solicitud correspondiente y tendremos una lista de control, que nos permitirá saber cuantas peticiones hemos recibido cada año.
Etiquetas:
2007,
2010,
2013,
Columna calculada,
Lista,
MOSS,
Oculto,
Parámetro,
Sharepoint,
Sharepoint 2010,
Sharepoint 2013,
Sharepoint Designer,
Workflow
sábado, 20 de abril de 2013
Uso de listas auxiliares en flujos de trabajo
En esta entrada, lo que voy a comentar es una manera de trabajar con listas y flujos de trabajos. No es una característica propia de SharePoint.
Imaginemos que hemos creado una lista para recoger peticiones de un departamento. Ese departamento a su vez, esta dividido en 12 áreas. Y en función del área, el flujo enviará un correo a una dirección diferente.
Lo sencillo es pensar, en hacer el flujo con 12 condiciones y 12 correos, marcando para cada área su destinatario:
Y lo que haremos con el flujo de trabajo, será que para cada elemento que se cree en la lista de incidencias, se lanzará el flujo que irá a buscar en la segunda lista el correo asociado para el área seleccionada.
Para ello, bastará con insertar la acción Enviar correo electrónico y en el Para haremos una Búsqueda de flujo de trabajo.
Cuando nos pida los Detalles de la búsqueda, NO elegiremos el elemento actual, sino que iremos a buscar en la lista Parametros, el campo correo electrónico. Esto hará que nos pida que definamos Buscar el elemento de la lista, esto quiere decir, que definamos que elementos de Parametros, queremos buscar. En este caso el que su área, coincide con el área de la incidencia que ha lanzado el flujo:
Al ir aceptando y cerrando todas las ventanas, de la captura anterior, nos saldrá un mensaje que nos dirá:
Podemos estar tranquilos y darle a Sí, ya que en la lista Parametros sólo habrá un área que cumpla la condición.
Imaginemos que hemos creado una lista para recoger peticiones de un departamento. Ese departamento a su vez, esta dividido en 12 áreas. Y en función del área, el flujo enviará un correo a una dirección diferente.
Lo sencillo es pensar, en hacer el flujo con 12 condiciones y 12 correos, marcando para cada área su destinatario:
Esto es una solución valida, hasta el momento que cambie el nombre del área, cambie el correo de la persona responsable del área y/o se añadan nuevas áreas. En el cual, se deberá tocar el flujo y deberemos tener una persona con conocimientos para ello.
Pues imaginaros un caso con 57 áreas, que cada cuatro años cambian los responsables de cada área y encima renombran las áreas. Pues bien, ese es mi caso.
Solución: Crear una lista auxiliar (la llamaré Parametros), donde recoger todos los valores de área y correo asociado. Con esto conseguimos que un usuario sin conocimientos de SharePoint, pueda administrar los contactos.
Centrando el caso, tenemos una lista de incidencias, donde se dan de alta la incidencia, la descripción y el área:
En otra lista (Parametros) con dos campos (en este caso), el área y el correo electrónico del responsable. Y esta lista tendrá tantos elementos como áreas tengamos.
Y lo que haremos con el flujo de trabajo, será que para cada elemento que se cree en la lista de incidencias, se lanzará el flujo que irá a buscar en la segunda lista el correo asociado para el área seleccionada.
Para ello, bastará con insertar la acción Enviar correo electrónico y en el Para haremos una Búsqueda de flujo de trabajo.
Cuando nos pida los Detalles de la búsqueda, NO elegiremos el elemento actual, sino que iremos a buscar en la lista Parametros, el campo correo electrónico. Esto hará que nos pida que definamos Buscar el elemento de la lista, esto quiere decir, que definamos que elementos de Parametros, queremos buscar. En este caso el que su área, coincide con el área de la incidencia que ha lanzado el flujo:
Podemos estar tranquilos y darle a Sí, ya que en la lista Parametros sólo habrá un área que cumpla la condición.
lunes, 30 de julio de 2012
Recordatorio de vencimiento de tareas
Hoy me han planteado una duda sencilla. Tenían una lista de tareas de SharePoint en un MOSS y querían que se enviará un correo X días antes del vencimiento de la tarea, recordando el vencimiento de la misma. Siendo X un número de días que se pudiera determinar por el usuario.
Entonces para ello he creado una nueva columna en la lista que fuese Días de preaviso de tipo número, donde el usuario fijará el número de días antes que quiere que le llegue la alerta. He marcado como obligatorias las columnas Días de preaviso y Fecha de vencimiento (columna por defecto en las listas de tareas de SharePoint).
Ahora vamos a crear nuestro flujo de trabajo, para que nos lleguen las alertas. Abrimos el sitio donde se encuente la lista, con SharePoint Designer y creamos un nuevo flujo de trabajo:
Daremos nombre al flujo, seleccionaremos la lista a la que queremos asociar el flujo y le diremos que se lance automáticamente en la creación de un elementos de la lista:
Tras darle a Siguiente, esto nos llevará a la ventana donde podremos configurar las condiciones y acciones de los primeros pasos. Comenzaremos fijando las condiciones, en este caso, queremos comparar el campo Fecha de vencimiento de nuestra lista Tareas con la fecha de Hoy.
Tras seleccionar la opción de Comparar campo Tareas, pondremos la condición, para asegurarnos que el flujo sólo se lanza si la Fecha de vencimiento no ha pasado.
Ahora crearemos una variable en el flujo, de tipo fecha, para almacenar la fecha en la que se debe enviar dicha notificación, a la cual he llamado Fecha envio:
Tras volverme loco buscando una acción que me permitiera restar a la Fecha de vencimiento, el número de Días de preaviso, para obtener el valor de la Fecha envio. Descubro, que no existe dicha posibilidad en SharePoint Designer, pero en cambio si que existe la opción de agregar. Con lo cual decido, que Días de preaviso, debe ser una variable negativa, para poder utilizar esta función. Y establezco mi acción:
Ahora agregaremos un nuevo paso al flujo, en el que nos aseguraremos de que la Fecha envio, no ha superado el día de Hoy y enviaremos el correo electrónico:
En primer paso comprobaremos la condición que hemos mencionado:

Esto se debe a que el evento que lanza el flujo es la creación de la tarea (la opciones posibles son manual, creación del elemento y/o modificación del elemento) y no una fecha.
De esta manera lanzamos el flujo cuando se cree la tarea, y dejamos en espera el envio del correo.
El siguiente paso sería la creación del correo en si. Por defecto, en el cuerpo del correo, el texto sólo nos permitirá que sea texto plano, pero si etiquetamos el contenido dentro de etiquetas html, nos permitirá tener un cuerpo del correo enriquecido. Permitiéndonos poner enlaces a la propia tarea o todo lo que queramos, desde la inclusión de logos, cualquier maquetación que se nos ocurra...
Y con esto podremos dar por finalizado nuestro flujo de trabajo. Pero hay que tener en cuenta varias observaciones importantes:
- ¿Se podía haber utilizado una columna calculada de la lista, para obtener la Fecha envio?
- La respuesta es que no, ya que las columnas calculadas dan problemas a la hora de utilizarlas en los flujos de trabajo. Se puede ver información más detallada en el siguiente artículo.
- ¿Esta manera de trabajar, presenta algún problema?
- Podría perderse el envió del correo, si se reinicia el servidor, ya que es un proceso que esta en espera y que no se lanza ante una fecha concreta.
Actualización: Método más eficiente en la entrada:
Suscribirse a:
Entradas (Atom)








































