Lista de empaquetado, sitio, flujo de trabajo reutilizable y cómo implementar el paquete

Artículo original publicado el jueves, 30 de agosto de 2012.

Hola, soy JongHwa Lim, un Administrador de programas del equipo de SharePoint Designer (también conocido como SPD).foto de jonghwal

Hoy me gustaría presentar una característica que se ha mejorado mucho desde SharePoint Designer 2010 y SharePoint Server 2010. Se trata de la característica de paquete de flujo de trabajo. Un escenario muy común para quienes usaron esta característica en SharePoint Designer 2010 consistía en desarrollar un flujo de trabajo en un entorno de desarrollo, para implementarlo posteriormente en un entorno de producción. Desafortunadamente, esta posibilidad solo se admitía con tipos de flujo de trabajo reutilizables en SharePoint Designer 2010.

Ahora, SharePoint Designer 2013, junto con el servicio de flujo de trabajo de Azure y SharePoint Server 2013, admite tres tipos de flujo de trabajo: de lista, de sitio y reutilizables. Y esto es magnífico, porque significa que no tiene por qué limitarse a los flujos de trabajo reutilizables y que desaparece la antigua necesidad de migrar los flujos de trabajo de lista a flujos reutilizables.

Con un ejemplo lo entenderá mucho mejor. Crearé un ejemplo de flujo de trabajo para mostrar cómo puede reutilizarse en un sitio de destino.

Ejemplo: un flujo de trabajo de la lista Solicitud de vacaciones

Imaginemos que desea crear un flujo de trabajo de lista en un entorno de desarrollo. El flujo de trabajo incluye dos listas: Vacaciones y Solicitud de vacaciones. La primera contiene las vacaciones restantes de todos los empleados y la segunda es donde el solicitante creará un elemento de solicitud para que se aprueben sus vacaciones.

Crear las listas necesarias (entorno de desarrollo)

Como se muestra en esta ilustración, he creado las dos listas que necesitábamos. Observe que usaremos la configuración predeterminada para la lista de tareas y el historial.

imagen001

imagen002

Crear el flujo de trabajo de lista en la lista Solicitud de vacaciones

Una vez creadas las listas necesarias, use SPD para conectar con el servidor, haga clic en "Flujo de trabajo de lista" y elija la lista "Solicitud de vacaciones". Cuando aparezca el cuadro de diálogo siguiente, escriba el nombre del flujo de trabajo y asegúrese de elegir el tipo "Flujo de trabajo de SharePoint 2013".

imagen003

Rellenar la lógica y publicar el flujo de trabajo

En el lienzo de SPD elija un diseñador basado en texto o, si Visio Professional está instalado, elija el diseñador visual para crear el flujo de trabajo. En este blog usaré un diseñador basado en texto, pero si está interesado en el diseñador visual, consulte la entrada de blog sobre esta herramienta que estará disponible próximamente.

Agregue la lógica siguiente. No suele plantear complicaciones, exceptuando un par de puntos. Consta de cinco fases y, aunque los títulos correspondientes explican para qué sirven, yo las describiré a continuación de forma más detallada:

  • "Comprobar si quedan vacaciones restantes": captura los días de vacaciones restantes para el iniciador y los compara con los días de vacaciones solicitados.
  • "Proceso de aprobación": solicita la aprobación de los días de vacaciones solicitados.
  • "Aprobado": cuando se aprueba, actualiza la lista Vacaciones con el nuevo valor calculado.
  • "Rechazado": envía un mensaje de rechazo.
  • "Vacaciones insuficientes": envía un mensaje de correo sobre los días de vacaciones restantes insuficientes.

imagen

imagen005

Los puntos más peliagudos son las IU de búsqueda que deben capturar los días de vacaciones restantes de la lista Vacaciones, o actualizar esta lista.

imagen006

imagen007

Si lo prefiere, puede activar la opción de iniciar automáticamente al crear un elemento.

imagen008

Y cuando publique el flujo de trabajo, se creará la asociación de flujo de trabajo y se generará la columna de estado en segundo plano.

Empaquetar las listas en paquetes STP

Existen varios modos de garantizar que el servidor de destino dispone de las listas y los esquemas necesarios, y sacar provecho de los paquetes STP es un buen método. Así que, empaquetemos las listas Vacaciones y Solicitud de vacaciones en paquetes STP.

Puede hacerlo con la IU de servidor o con la de SPD, tal como se muestra en las ilustraciones siguientes.

imagen009

imagen010

A continuación aparecerá esta pantalla, donde podrá escribir el nombre y elegir si también desea empaquetar el contenido.

imagen011

A la hora de elegir o no la opción "Incluir contenido", tenga en cuenta que el flujo de lista de SharePoint 2013 no se empaqueta en un solo bloque.

Si la operación se completa correctamente, obtendrá acceso a una ubicación desde donde podrá descargar el paquete.

imagen012

Haga clic en el vínculo y descargue el paquete para usarlo posteriormente.

Si la operación se completa correctamente debe tener dos paquetes STP, uno para cada una de las listas Solicitud de vacaciones y Vacaciones (que contiene los días de vacaciones restantes).

Empaquetar el flujo de trabajo en un paquete WSP

Para empaquetar el flujo de trabajo de lista, vaya a la página de resumen del flujo de trabajo y haga clic en el botón "Guardar como plantilla" de la Cinta.

imagen013

Aparecerá el cuadro de diálogo siguiente.

imagen014

El flujo de trabajo de lista se encuentra empaquetado en la biblioteca "Activos del sitio" del panel de navegación (para ver el paquete es posible que deba actualizar la página).

Use el botón "Exportar archivo" de la Cinta para guardarlo en la máquina local.

imagen015

Implementar los paquetes STP

Abra el sitio de destino (o el entorno de producción) en el explorador y vaya a "Configuración del sitio". En el grupo "Galerías del diseñador web" encontrará el menú "Plantillas de lista".

imagen016

Elija la opción "Cargar documento" del menú "Archivos" y cargue los dos paquetes STP.

imagen017

Crear listas con las plantillas de lista implementadas

A partir de las plantillas de lista implementadas puede crear las dos listas. En el menú de navegación del servidor, vaya a "Contenido del sitio" y haga clic en "Agregar una aplicación". Aparecerán los iconos de "Vacaciones" y "Solicitud de vacaciones".

imagen018

Cree las listas "Vacaciones" y "Solicitud de vacaciones" con estos menús.

Implementar el paquete WSP y activar el paquete

La implementación de un paquete WSP presenta algunas diferencias respecto a la de las plantillas de lista STP. En primer lugar, debe cargar el paquete en la biblioteca "Soluciones" del grupo "Galerías del diseñador web" de Configuración del sitio.

imagen019

Después aparecerá un cuadro de diálogo donde deberá activar el paquete (o la solución).

imagen020

Activar la característica

Cuando active la solución, vaya a "Acciones del sitio" en Configuración del sitio y verá una nueva característica del sitio en "Administrar las características del sitio".

imagen021

Y listo. Encontrará el flujo de trabajo con el nombre que usó al empaquetarlo. Haga clic en el botón "Activar" y espere hasta que cambie a "Desactivar" o aparezca el icono "Activar", lo que significa que la característica se ha activado.

imagen022

Abrir el flujo de trabajo desde SPD (opcional)

Habrá ocasiones en que desee actualizar el flujo de trabajo en el sitio de destino. No hay problema. Se resuelve igual que en el entorno de trabajo y el flujo de trabajo implementado se mostrará correctamente en la lista de SPD.

imagen023

Y se abrirá sin problemas. Como puede comprobar, los valores de la página de resumen permanecen sin cambios, al igual que la lógica.

imagen

Ejecutar el flujo de trabajo (opcional)

Cuando ejecute el flujo de trabajo desde el servidor, encontrará dos columnas con el mismo nombre (columnas de estado del flujo de trabajo). Este es un problema conocido. Una columna procede del servidor de origen (empaquetado en STP) y la otra se crea en el sitio de destino. Para ocultar la columna antigua, actualice la vista de lista.

¿Existe alguna alternativa al uso del paquete STP?

La solución se implementará correctamente siempre que el sitio de destino disponga de las listas necesarias (las que se usan en la lógica del flujo de trabajo, además de las listas Historial del flujo de trabajo y Tarea del flujo de trabajo). Sin embargo, se obtendrán mejores resultados si las listas y las columnas de lista a las que hace referencia el flujo de trabajo se crean con la misma plantilla de lista y el mismo tipo de campo. Si se detecta un error de coincidencia de tipos, el paquete puede generar un error durante la activación de la característica, al igual que el flujo de trabajo en tiempo de ejecución.

¿Qué ocurre si se implementa el paquete de flujo de trabajo en un sitio donde no existen las listas "Vacaciones" o "Solicitud de vacaciones"?

Se producirá un error en la activación de la característica del sitio.

imagen025

Aunque el mensaje de error no proporciona información muy detallada, en el registro de ULS puede encontrar indicaciones como esta:

“El archivo XAML del flujo de trabajo generó un error debido a lo siguiente: no se puedo crear un elemento "ListId" a partir del texto "$ListId:Lists/Vacation";”

No obstante, si se produce un error en la activación de la característica, puede producirse otro error durante la reactivación correspondiente, incluso aunque haya creado las listas necesarias. Esto se debe a que la definición del flujo de trabajo no se ha implementado por completo. Para solucionar este problema, haga lo siguiente:

  • Abra SPD y elimine la definición del flujo de trabajo que ha generado el error durante la activación de la característica.
  • Desactive y quite la solución.
  • Cargue y active la solución.
  • Active la característica del sitio.

Así debería solucionarse el problema.

Problemas conocidos

Los siguientes son algunos problemas conocidos del paquete de flujo de trabajo.

  • Debe asegurarse de que las URL de lista relativas (por ejemplo, "Listas/Vacaciones") son las mismas. Incluso si decide crear una lista con un nombre determinado y posteriormente cambiarlo por otro, la URL de lista no cambiará. Esto se debe a que la URL de lista se basa en el nombre para mostrar original. Por tanto, aunque empaquete el flujo de trabajo a partir del nombre actualizado de la lista, el flujo de trabajo seguirá buscando una URL de lista conforme al nombre antiguo en el sitio de destino. Por ello, si desea conservar la URL de lista, cuando vuelva a crear las listas en el sitio de destino asegúrese de asignarles sus nombres originales, en lugar de los actualizados. Así se asegurará de conservar la URL de lista. Una vez haya creado la lista, podrá cambiar su nombre por el actualizado.
  • Los flujos de trabajo con nombres Unicode o DBCS se empaquetarán en archivos WSP con el nombre codificado de forma rígida predeterminado de "WorkflowSolution.wsp".
  • Cuando vaya a Activos del sitio para ver la lista actualizada de soluciones, deberá actualizar manualmente la página.
  • Si el servidor de destino no contiene las listas Historial del flujo de trabajo y Tarea del flujo de trabajo, cuando haga clic en el flujo de trabajo desde la página Configuración del flujo de trabajo, puede producirse el siguiente error. Esto sucede cuando se implementa el flujo de trabajo en un servidor de destino donde no se ha creado ningún otro flujo de trabajo con anterioridad. Como solución alternativa, puede crear y publicar un flujo de trabajo ficticio en SPD para crear las listas Historial del flujo de trabajo y Tarea del flujo de trabajo. Y, a continuación, podrá abrir el flujo de trabajo implementado desde SPD, ajustar la configuración de estas dos listas y publicar de nuevo el flujo de trabajo.imagen026
  • Los flujos de trabajo de proyecto se empaquetarán como flujos de trabajo de sitios comunes. Sin embargo, para garantizar su correcto funcionamiento, también deberá empaquetar las entidades de proyecto como EPT, las fases o las columnas personalizadas, entre otras. Consulte las instrucciones del flujo de trabajo de proyecto del equipo del proyecto.

Muchas gracias,

JongHwa

Esta entrada de blog es una traducción. Para consultar el artículo original, vea Packaging List, Site, and Reusable Workflow and How to Deploy the Package.