2 de julio de 2008

SPD: copiando workflows entre listas o sitios

SharePoint Designer permite crear potentes workflows de forma muy sencilla, utilizando un asistente visual. Con ellos, se automatizan tareas en un sitio de colaboración SharePoint, en cuanto pueda, publicaré un ejemplo.

Una de sus principales limitaciones es que el workflow creado queda asignado a la lista base para la que se crea, y esto no se puede cambiar posteriormente, lo que obliga a crear desde cero el workflow de nuevo.

Sin embargo, el propio SharePoint Designer nos puede ayudar a hacer más fácil esta tarea. Lógicamente, esto sólo tiene sentido si el workflow que queremos aprovechar es muy complejo, si no, puede que acabemos antes haciéndolo de nuevo.

Los workflows son ficheros agrupados en una carpeta (una por workflow), situados debajo de la carpeta Workflows del sitio que estamos modificando. Un fichero xoml con la definición del workflow, un .rules con las reglas de ejecución, un .xml con la configuración de asociación y un aspx con el formulario de arranque.

image

Dentro de estos ficheros, hay referencias a las listas a los que se asocia el workflow o que usa para crear datos en forma de GUIDs. Nos vendrá bien tener a mano el Stramit SharePoint Caml Viewer para conectarnos a los sitios y coger los GUIDs de las listas que nos interesen.

Copiar un workflow a un sitio nuevo

En este caso, el workflow se llamará igual en los sitios de origen y destino (si no, recurrir al caso de abajo). Estos serían los pasos a seguir:

  • Abrir dos SPD, uno en cada sitio
  • Arratrar la carpeta que contiene el workflow del sitio origen a la carpeta workflow del sitio de destino
  • Localizar con Stramit CAML Viewer los GUIDs de todas las listas a las que el workflow haga referencia, como poco, el de la lista al que está asignado y el de cualquier otra lista que use como consulta o referencia (por ejemplo, listas de tareas si estamos creándolas para comunicar con usuarios)
  • Seleccionar todos los ficheros del workflow, y usar la función Reemplazar para modificar todas las referencias de las listas afectadas. Asegurarse de que está activa la opción “Buscar en el código fuente”

image

  • Abrir y guardar de nuevo el workflow, comprobando antes si todas las referencias han sido actualizadas (de no ser así, los nombres de las listas aparecerían con su GUID)

Asignar el mismo workflow a otra lista

Este caso es un poco más lioso, ya que es necesario cambiar los nombres del workflow y de los ficheros. Esta es la forma que creo es más rápida:

  • En la nueva lista, crear un workflow vacio, sin pasos, con el nombre que queramos darle.
  • Reemplazar el contenido de los ficheros .aspx, .xoml y .rules con el contenido del fichero correspondiente del workflow original, teniendo cuidado de modificar las GUIDs de la lista destino a la que se asociará.
  • En el fichero .aspx, modificar el texto en el que se hace referencia al nombre del workflow, ya que aparecerá el nombre del original. Esta página se puede modificar en aspecto/contenido sin problemas, siempre que mantengamos los campos y el envío del formulario
  • El fichero .xml no se debería modificar (al menos, hasta donde yo he visto), salvo que el workflow tenga parámetros de inicio, en cuyo caso, es necesario reemplazar la sección <Initiation> </Initiation> con los datos del workflow origen
  • Abrir, comprobar y guardar el workflow para asegurarnos de que todo ha sido actualizado correctamente.

Espero que a alguien le sirva, a mi me ha ahorrado algo de tiempo al crear sitios con workflows a través de plantillas de sitio, que no incluyen los workflows.

No hay comentarios: