Error: el flujo no pudo actualizar el elemento.

Durante una migración de SharePoint Server 2010 a SharePoint Server 2013 encontré un error muy peculiar y tuve que abrir un caso de soporte con Microsoft para resolverlo.

Resulta que en varias colecciones de sitios, los flujos de aprobación de SharePoint 2010 dejaron de funcionar. Estaba usando la plantilla predeterminada, sin ninguna personalización, y esos mismos flujos en 2010 funcionaban perfectamente. El error dice:

“The workflow could not update the item, possibly because one or more columns for the item require a different type of information.”

Resulta que durante la migración, la plantilla global de flujos de aprobación se “daño”, por lo que a solución es crear una copia de la plantilla y volver a publicarla, como lo menciona el artículo: http://support.microsoft.com/kb/2891286/en-us

El primer paso es abrir SharePoint Designer y buscar la plantilla global de flujos de aprobación. Luego se hace doble clic para editarla.

 

Haga clic en Yes en la ventana de advertencia.

 

 
 

 En la página de opciones del flujo, en la cinta, haga clic en el botón Publicar.


 
 

Si aparece una ventana de advertencia diciendo que el componente de Visio no está instalado, no se preocupe, puede ignorar ese error y publicar el flujo. Lo que va a suceder es que no se pueden ver los dibujos que muestran el estado donde está el flujo, pero todo va a funcionar correctamente.


 

Se debe repetir esta publicación en todas las colecciones de sitios que presenten el mismo problema.

Anuncios

WebPart de Cumpleaños en SharePoint Online 2013

En un post anterior publique una actualización de la lista de cumpleaños para SharePoint 2007. En esta ocasión les muestro la misma lista, pero usando SharePoint Online 2013.

La lista tiene la misma estructura:

Inclusive para la columna calculada: =TEXT(Cumple,”dd/mmmm”)

Recuerden que la fórmula exacta puede varia si tiene el SharePoint en español o en inglés, y la configuración regional del sitio.

Para ambos flujos, estas son las opciones de inicio usadas:

El primer flujo espera a que sea la fecha de cumpleaños, y el día del cumpleaños, actualiza el ítem con un dibujo, para destacarlo.

La imagen que voy a mostrar la subí en una biblioteca del mismo sitio.

Y pongo la dirección de la imagen en el campo IMG.

Este segundo flujo lo modifique para que envíe un correo con una felicitación de cumpleaños, después hace una pausa de 1 día, para que termine el día del cumpleaños y procede a calcular la nueva fecha de cumpleaños y limpiar el campo con la imagen. La condición de entrada es que el campo de imagen no esté en blanco.

Hice una variable vacía, para luego comparar la entrada al flujo.

Después procedo a enviar el correo y pausar el flujo.

Y aquí está el resultado final

Y el correo que envío:

Varios compañeros tuvieron problemas para ver la imagen del correo, así que al final opté por quitar la imagen y agregar un mensaje de texto.

 

WebPart de cumpleaños – toma 2

Increíblemente, mi artículo sobre el webpart de cumpleaños es el más popular de mi sitio, así que traigo una versión 2 de ese webpart.

La vista está mostrando los cumpleañeros 10 días antes y 10 días después de la fecha actual, con la diferencia que ahora puedo agregar una imagen al cumpleañero en su día (aunque la imagen no refleja eso 🙂 )

Una de las principales preguntas que me hacen es si puedo hacer una vista que muestre sólo los del mes actual en forma automática, pero de momento no he podido lograrlo.


Primero trabajamos sobre una lista personalizada con las siguientes columnas. Cumple tiene la fecha de cumpleaños con el año actual (no el año en que nació) y Cumpleaños muestra el día y el mes únicamente.


A continuación hay un ejemplo de la lista finalizada.


La columna Cumpleaños es de tipo calculada, con la siguiente fórmula =TEXT(Cumple,”dd/mmmm”).

La fórmula exacta puede varia si tiene el SharePoint en español o en inglés, y la configuración regional del sitio. Mi recomendación es probar varias combinaciones.


Para mostrar los cumpleañeros hice una vista que muestra los cumpleañeros 10 días antes y 10 días después de la fecha actual.

Ordenada por la fecha de cumpleaños.


También pueden variar el rango de días que se muestra, pero no he podido lograr que muestre sólo los del mes actual.

Despues de crear la lista y la vista que muestra los cumpleañeros. Hice dos flujos de trabajo, el primero hace una pausa hasta la fecha de cumpleaños, el día del cumpleaños le pone una imagen (una estrella en este caso) al cumpleañero y detiene el flujo.

Este flujo se activa cuando se crea un elemento y cuando se modifica.


Como estoy usando SharePoint 2007 en este caso, pueden ver en la siguiente imagen como agregué la imagen para señalar el cumpleañero.


Después hice un segundo flujo que borrar la imagen después del cumpleaños y calcula la nueva fecha de cumpleaños, sumándole 1 año. Este flujo hace una pausa de 1 día, porque se va a disparar el mismo día del cumpleaños, cuando el flujo anterior hizo cambios en el elemento.

Uso estos dos flujos para crear un bucle en SharePoint 2007.

La actualización limpia el contenido de la imagen e inserta la nueva fecha de cumpleaños.

 

Solución al error “Could not successfully create management Service Bus entity”

Recientemente estaba instalando el nuevo motor de flujos de SharePoint 2013, Windows Workflow Manager en el mismo servidor donde estaba instalado SharePoint Server 2013, y obtenía un error informando que la configuración fue parcialmente exitosa, como pueden ver en la imagen adjunta. 

Al final de la imagen esta el mensaje de error:

Could not successfully create management Service Bus entity ‘WF_Management/WFTOPIC’ with multiple retries within a timespan of … The exception of the las retry is: The token provider service was not avaliable when obtaining a token for …

Image

 

Este error lo resolví desmarcando la opción de usar un proxy durante la configuración del servicio, ya que el Workflow Manager estaba teniendo problemas para consultar los web services instalados en el mismos servidor.

Image

Valores de los estados de los flujos de trabajo

 

Si deseamos crear vistas en una lista de acuerdo al estado de un flujo de trabajo, lo primero es tomar una vista normal y filtrarla por el estado que deseamos.

image

 

El siguiente paso es fijarse en el URL de la página para ver el nombre del filtro (campo FilterField1) y el valor correspondiente (campo FilterValue1).

image

Cuando crean la vista, debe usar el número del estado para filtrar, no el texto, como en el siguiente ejemplo:

image

 

Aquí esta el resumen de todos los estados, con el nombre en español e inglés:

Estado Valor
No iniciado  – Not started 0
Fallo al iniciar – Failed on Start 1
En curso – In Progress 2
Error – Error Occurred 3
Completado – Completed 5
Fallo al iniciar (reintentando) – Failed on Start (retrying) 6
Error (reintentando) – Error Occurred (retrying) 7
Cancelado – Canceled 15
Aprobado – Approved 16
Rechazado – Rejected 17

Asociar el mismo flujo a varias listas de SharePoint

El día de hoy tuve que replicar el mismo flujo de trabajo a listas diferentes, quienes lo han probado, se han dado cuenta que no es tan sencillo como copiar y pegar el flujo, aún en el mismo sitio.

La forma correcta es crear un tipo de contenido y un flujo asociado a ese tipo de contenido, pero en este caso la lista era muy pequeña y no quería hacerlo de esta manera. Así que encontre este post de Nick Grattan y solucionó mi problema:

1. Empezamos por crear un flujo que tenga al menos un paso, una condición y una acción en la lista destino donde deseamos copiar el flujo original. Por ejemplo, hice el siguiente flujo en la lista:

image

2. A continuación se abre SharePoint Designer y en el menú de navegación, seleccionen la opción All Files.

image

2. Después hacen clic en la carpeta de Workflows.

image

3. A continuación expanden el flujo que desean replicar. Voy a replicar el flujo Actualización fecha análisis que esta asociado a la lista de origen,

image

  • El archivo .xoml.wfconfig.xml contiene los datos de asociación de la lista con el flujo.
  • El archivo .xoml contiene las acciones del flujo.
  • El archivo .xoml.rules contiene las condiciones del flujo.

4. Se hace clic derecho sobre el archivo .xoml y seleccionan la opción de abrir como XML.

image

5. Se repite este paso en el flujo destino, y se copian los datos.

6. Se debe copiar tambien el archivo .xoml.rules del flujo original al destino.

7. A continuación recomiendo refrescar la conexión de SharePoint Designer y hay dos opciones

                      a) Presionar el botón de refrescar

image

                       b) Limpiar el caché del SharePoint Designer. Para esto, deben borrar los archivos que están en las siguientes carpetas:

%APPDATA%\Microsoft\Web Server Extensions\Cache

%USERPROFILE%\AppData\Local\Microsoft\WebsiteCache

8. Para terminar, debe abrir el flujo donde copió el contenido de los archivos y presionar el botón Check for errors antes de guardarlo y publicarlo en el sitio.

Crear un flujo que envía un correo electrónico

En este ejemplo, vamos a enviar un flujo usando SharePoint Designer 2007, que envía un correo electrónico cuando se finaliza un incidente de soporte, utilizando una lista de tareas.

1. En el sitio Web de SharePoint, creamos una lista de tareas llamada Solicitudes de Soporte.

2. En este ejemplo, la columna de Estado se renombró a Estado del Soporte, pero esto no es obligatorio, pero si deben recordar cuál columna representan ese valor.

3. A esta lista de tareas, le agregamos un columna llamada EmailCasoResuelto, de tipo Sí o No, con el valor predeterminado en No.

image

4. Abra SharePoint Designer y conéctese al sitio donde creó la lista de tareas haciendo clic en la opción Abrir sitio y escribiendo el URL del mismo.

5. Haga clic en las opciones Archivo –> Nuevo –> Flujo.

image

6. Como nombre del flujo, escriba Soporte- email incidente resuelto.

7. Conéctela a la lista Solicitudes de Servicio creada anteriormente.

8. Seleccione la opción de iniciar el flujo automáticamente cuando cambia un elemento.

9. Presione el botón Siguiente.

image

10. Como primer paso del flujo, agreguemos la acción Comparar campo Solicitudes de Servicio.

11. Deben agregar dos condiciones, que tienen la siguiente lógica:

“Si no se ha enviado el email de finalización de caso

Y si el estado del problema es igual a Resuelto”

image

12. En el botón de Acciones agregan una acción de envío de correo.

13. Puede redactar el correo como ustedes deseen, pero deben recordar que para agregar variables que hagan referencia a valores de la lista, deben usar el botón Add Lookup to Body.

image

14. Para que este flujo no se repita indefinidamente, después de enviar el correo vamos a actualizar la columna EmailCasoResuelto para indicar que ya enviamos el correo y presionan el botón Ok.

a. En este ejemplo también se esta agregando la fecha en que se envió ese correo, en otra columna adicional.

image

15. Presionen el botón Finalizar.

Anteriores Entradas antiguas

A %d blogueros les gusta esto: