Desarrollo con SharePoint

Cree soluciones de flujo de trabajo para SharePoint Online

Chris Mayo

Descargar el código de ejemplo

Muchas empresas están usando SharePoint para facilitar la colaboración entre los empleados. Frecuentemente estas organizaciones emplean SharePoint para guardar información en listas y bibliotecas de documentos para facilitar un proceso de negocio manual. Si bien esta forma de almacenar la información en SharePoint permite una colaboración mucho más eficaz en torno a la información, es posible mejorar significativamente la productividad de los trabajadores de la información si estos procesos de negocio se automatizan con flujos de trabajo en SharePoint. 

Con el lanzamiento de Office 365 SharePoint Online ofrece a las empresas muchas de las ventajas de colaboración de SharePoint, y al mismo tiempo ofrece las ventajas de un Software como servicio en nube. Los flujos de trabajo están habilitados en SharePoint Online mediante flujos de trabajo declarativos integrados en SharePoint Designer 2010 e implementados por medio de soluciones de espacio aislado. Cuando las acciones de flujo de trabajo predeterminadas no cumplen con los requerimientos de la solución, es posible crear acciones de flujo de trabajo personalizadas en Visual Studio 2010 que se pueden implementar en SharePoint Online mediante soluciones de espacio aislado.

En este artículo entregaré una reseña de la compatibilidad con los flujos de trabajo de SharePoint Online, crearé un flujo de trabajo declarativo mediante SharePoint Designer 2010, lo extenderé con una acción personalizada y lo implementaré en forma de solución de espacio aislado para ejecutarlo en la nube con SharePoint Online.

Para saber en qué se parece y en qué difiere el desarrollo en SharePoint Online del desarrollo en SharePoint 2010, consulte mi artículo “Colaboración basada en la nube con SharePoint Online” publicado en la edición de marzo de 2011 de MSDN Magazine (bit.ly/spodevmsdn). Y para obtener más información acerca de SharePoint Online y Office 365, incluido cómo suscribirse para una cuenta de prueba, visite office365.com.  

Información general sobre el desarrollo en SharePoint Online

SharePoint Online permite desarrollar soluciones de colaboración empleando las mismas competencias y herramientas que se usan en el desarrollo en SharePoint 2010, incluidos Visual Studio 2010, SharePoint Designer 2010, C# o Visual Basic y las API y SDK de SharePoint. Aunque el desarrollo de soluciones para SharePoint 2010 y SharePoint Online se parecen en varios aspectos, también hay algunas diferencias que determinan el tipo de soluciones que se pueden crear y en qué forma se crean.

SharePoint Online sólo es compatible con las soluciones de recinto de seguridad, lo que significa que no se pueden implementar flujos de trabajo basados en código, tales como las soluciones creadas con los elementos de proyecto Flujo de trabajo secuencial y Flujo de trabajo de equipo de estado. Pero sí están admitidos los flujos de trabajo creados con SharePoint Designer 2010, ya que éstos son declarativos (y no basados en código), y se pueden implementar ya sea directamente en SharePoint Online o mediante la Galería de soluciones por medio de archivos de paquete. Además, estos flujos de trabajo declarativos se pueden extender mediante soluciones de espacio aislado creadas con Visual Studio 2010 para proporcionar acciones de flujo de trabajo personalizadas para admitir situaciones para las cuales SharePoint Designer 2010 no está preparado en forma predeterminada.

Este artículo se sustenta en los conceptos y las soluciones cubiertas en el artículo anterior. Lo animo a que lea ese artículo, siga las pautas entregadas para configurar su entorno de desarrollo para SharePoint Online y compile los ejemplos de la solución de compra para que tenga una comprensión sólida de los conceptos de desarrollo en SharePoint Online. Para ejemplificar la compatibilidad de SharePoint Online con los flujos de trabajo, en este artículo extenderé la solución de compra para incluir una solución de flujo de trabajo.

Información general sobre SharePoint Designer 2010

SharePoint Designer 2010 permite que los usuarios avanzados y los desarrolladores personalicen SharePoint 2010 sin tener que escribir código. SharePoint Designer 2010 también es compatible con SharePoint Online, y las únicas diferencias consisten en las características diferentes entre SharePoint 2010 y SharePoint Online, como por ejemplo los Servicios de conectividad empresarial (BCS) y la compatibilidad con Listas externas. SharePoint Designer 2010 es una excelente herramienta para navegar y administrar artefactos en SharePoint, trabajar con datos y para personalizar la apariencia y el comportamiento de los sitios de SharePont. También permite crear flujos de trabajo personalizados que se pueden implementar como parte de una solución de colaboración global. En el vídeo “Introducción a SharePoint Designer 2010 para SharePoint Online” (bit.ly/spdspointro) puede conocer más acerca de las funcionalidades de SharePoint Designer 2010. SharePoint Designer 2010 se puede descargar en forma gratuita y es compatible con las versiones de 32 bits (bit.ly/spd201032) y 64 bits (bit.ly/spd201064).

La solución de compra

En los ejemplos de este artículo parto del proceso de compra de la empresa ficticia Contoso Corp. que presenté en el último artículo, y agrego un flujo de trabajo de SharePoint para automatizar la aprobación de las solicitudes de compra. Cuando haya que aprobar una solicitud de compra, el usuario inicia el flujo de trabajo y entrega una justificación comercial para la adquisición. El flujo de trabajo inicia un proceso de aprobación y crea una tarea para el grupo de Aprobadores que contiene la información detallada de la compra. Después de aprobar o rechazar la compra se envía un correo electrónico con el resultado de la solicitud al usuario solicitante. El flujo de trabajo luego examina el tipo de solicitud y en el caso que se haya aprobado una solicitud de viaje (como para asistir a una conferencia técnica) el flujo de trabajo crea un sub-sitio para que el usuario complete un informe de viaje y cargue una presentación en ese sitio. Para esto agrego un campo RequestType al tipo de contenido Non-Standard Business Purchase Requests. 

Actualicé el proyecto PurchaseMgr del último artículo para incorporar el campo RequestType. Si usted siguió ese artículo ahora puede eliminar el paquete antiguo e implementar el que viene con este artículo, o puede agregar el campo RequestType necesario con las opciones Travel, Equipment y Service Request a la lista Non-Standard Purchase Requests. Comienzo con el código de este artículo (bit.ly/spoworkmsdncode) y lo extraigo en el directorio Documents\Visual Studio 2010\Projects\SPOMSDN_Workflow en mi equipo local. Luego implemento el paquete de solución PurchasingMgr.wsp en la Galería de soluciones de la colección de sitios de mi entorno de desarrollo local de SharePoint 2010 (en mi caso http://o365dpe.contoso.com/sites/spomsdnmag) y activo la característica Purchasing Manager–Content Types and Lists en mi sitio Purchasing (http://o365dpe.contoso.com/sites/spomsdnmag/purchasing). 

Creación del flujo de trabajo

Para comenzar a desarrollar el flujo de trabajo abro el sitio Purchasing en el sitio local de mi entorno de desarrollo de SharePoint 2010. Para esto abro SharePoint Designer 2010, selecciono Archivo | Sitios | Abrir sitio y escribo la URL de mi sitio (http://o365dpe.contoso.com/sites/spomsdnmag/purchasing). En el panel de navegación selecciono Flujos de trabajo para mostrar el flujo de trabajo recién publicado y la cinta Flujos de trabajo, como se puede observar en la Figura 1.

Workflows in SharePoint Designer 2010
(haga clic para acercar la imagen)

Figura 1 Flujos de trabajo en SharePoint Designer 2010

SharePoint Online admite Flujos de trabajo de listas que actúan en una lista en particular, en Flujos de trabajo de sitio que operan en un sitio en particular y en Flujos de trabajo reutilizables que más adelante se pueden enlazar con una lista u otro tipo de contenido específico. Como pretendo distribuir mi flujo de trabajo como parte de una solución global creo un Flujo de trabajo reutilizable, ya que es el único tipo de flujo de trabajo compatible con este tipo de distribución.

Tengo varias alternativas para crear un flujo de trabajo con SharePoint Designer. Puedo basar mi flujo de trabajo en uno de los flujos de trabajo integrados (como Aprobación, Recopilación de comentarios o Recopilación de firmas) mediante el botón Copiar y modificar, puedo importar un diagrama de Visio 2010 en base a la plantilla de Flujo de trabajo de Microsoft SharePoint mediante el botón Importar de Visio o puedo crear el flujo de trabajo de cero mediante el grupo Nuevo en la pestaña Flujos de trabajo de la cinta. En este ejemplo creo mi flujo de trabajo de cero, para lo cual hago clic en el botón Flujo de trabajo reutilizable en el grupo Nuevo de la cinta. En el cuadro de diálogo Crear flujo de trabajo reutilizable escribo el nombre del flujo de trabajo Non-Standard Business Purchase Request Approval y selecciono Purchasing Manager – Non-Standard Business Purchase Request Content Type, para que el flujo de trabajo esté enlazado al tipo de contenido, como se puede observar en la Figura 2.

Reusable Workflow Bound to the Content Type
(haga clic para acercar la imagen)

Figura 2 Flujo de trabajo reutilizable enlazado al tipo de contenido

A continuación voy a la página de la configuración del flujo de trabajo Non-Standard Business Purchase Request Approval, para lo cual hago clic en Configuración del flujo de trabajo en el grupo Administrar de la pestaña Flujos de trabajo.

En el grupo Configuración selecciono “Mostrar la visualización del flujo de trabajo en la página de estado” para que los usuarios tengan una visualización en tiempo real del estado de cada instancia del flujo de trabajo. Para que el flujo de trabajo se inicie en forma manual uso el grupo Opciones de inicio, desactivo “Deshabilitar la opción de inicio manual” y activo “Deshabilitar la opción de inicio automático al crear o cambiar elementos”. Para crear un flujo de trabajo de inicio automático se deben establecer las configuraciones contrarias.

En muchas situaciones la información que necesito para completar el flujo de trabajo no está almacenada ni en la lista ni en la biblioteca. Puedo recopilar y almacenar esta información en variables y columnas propias del flujo de trabajo. Esto se puede hacer con el grupo Variables de la cinta Flujos de trabajo, tal como se describe en la Figura 3.

Figura 3 Variables de flujo de trabajo

Tipo de variable Descripción
Parámetro de formulario de inicio Un parámetro que almacena los datos recopilados del usuario cuando se inicia el flujo de trabajo o se asocia con una lista.
Variables locales Variables privadas que se usan para guardar los datos necesarios para procesar el flujo de trabajo.
Columnas de asociación Columnas que se agregan a la lista cuando se asocia el flujo de trabajo con la lista, para garantizar un conjunto básico de columnas para los flujos de trabajo reutilizables.

En este caso, quiero recopilar la justificación comercial de la compra cuando se inicia el flujo de trabajo para proporcionar esta información a los aprobadores para ayudarles en la toma de decisión. Con tal motivo, hago clic en Variables | Parámetros de formulario de inicio | Agregar… y creo el parámetro Business Rationale en el cuadro de diálogo Agregar campo; luego hago clic en Siguiente y en Finalizar.

Implementación del flujo de trabajo en SharePoint Designer

A estas alturas ya estoy listo para implementar el flujo de trabajo, así que selecciono el botón del flujo de trabajo Editor en Editar grupo de la pestaña Configuración del flujo de trabajo. Ahora me encuentro en el diseñador del flujo de trabajo de SharePoint Designer 2010 donde puedo implementar mi flujo de trabajo mediante las opciones Condición, Acción y Paso del grupo Insertar de la cinta Flujo de trabajo (consulte la Figura 4).

Workflow Designer—Insert Section
(haga clic para acercar la imagen)

Figura 4 Diseñador del flujo de trabajo: sección Insertar

Los Pasos sirven para organizar las condiciones y acciones en un flujo de trabajo y para controlar la forma en que se ejecutan estas condiciones y acciones, tal como se describe en la Figura 5.

Figura 5 Tipos de pasos

Tipo de paso Descripción
Paso Los pasos sirven para organizar las Condiciones y Acciones en un flujo de trabajo. Todas las condiciones y acciones deben estar finalizadas para que se pueda ejecutar el siguiente Paso. Los pasos se pueden anidar.
Paso de suplantación Los flujos de trabajo se ejecutan bajo el permiso del usuario que inicia el flujo de trabajo manual o automáticamente. Los pasos del Paso de suplantación se ejecutan bajo el autor del flujo de trabajo. El paso de suplantación sólo se puede agregar como el primer Paso de un flujo de trabajo. Es posible anidar pasos dentro del Paso de suplantación.
Bloque paralelo Al agregar los pasos a un Bloque paralelo, éstos se ejecutan en forma paralela en vez de secuencial.

 Por ejemplo en la Figura 6, el Paso 2 se ejecuta con el permiso del autor del flujo de trabajo, mientras que el Paso 1 se ejecuta como el usuario que inició el flujo de trabajo (ya sea manual o automáticamente). Los Pasos 5 y 6 se ejecutan en forma paralela, mientras que los Pasos 3 y 4 se ejecutan secuencialmente.

Steps—Effect on Workflow Execution

Figura 6 Pasos: efecto en la ejecución del flujo de trabajo

En mi flujo de trabajo hay un solo Paso. Para documentar la función que cumplen las Condiciones y Acciones en el Paso, cambio su título. Para esto hago clic en el texto “Step 1” y escribo “Request Purchase Approval”. Luego hago clic dentro del Paso para dejar el cursor en el lugar donde tengo que agregar las Acciones y Condiciones.

Las Acciones realizan diferentes operaciones dentro del flujo de trabajo, tales como iniciar el proceso de aprobación, modificar un elemento de una lista, enviar un correo electrónico, etc. Para ver un listado de todas de las acciones admitidas, consulte la referencia de SharePoint Designer 2010 (bit.ly/spd2010act). En este caso deseo iniciar el proceso de aprobación de la solicitud de compra, de modo que selecciono la lista desplegable Acción de la sección Insertar de la cinta, y elijo Iniciar proceso de aprobación. Esto agrega una frase con hipervínculos al diseñador, lo que permite completar la acción con sólo seleccionar un vínculo para entregar más información, como se puede observar en la Figura 7.

Adding the Start Approval Process Action

Figura 7 Adición de la acción Iniciar proceso de aprobación

Al hacer clic en el vínculo Aprobación puedo personalizar la tarea de aprobación; puedo cambiar cómo se procesa la tarea y los resultados de la tarea. Para volver al editor puedo hacer clic en el botón Atrás. Hago clic en el vínculo “los siguientes usuarios” para personalizar la tarea y precisar quién participará en el proceso de aprobación. En el cuadro de diálogo Seleccionar participantes del proceso de tareas selecciono el grupo Aprobadores como los participantes y escribo el título de la tarea, tal como se puede observar en la Figura 8. En las Instrucciones quiero proporcionar detalles acerca del elemento y los motivos comerciales para que los aprobadores puedan tomar una decisión. Para incluir el título del elemento de la lista, por ejemplo, hago clic en el botón Agregar o cambiar búsqueda, selecciono Elemento actual como Origen de datos y Título como el Campo del Origen.

Customizing the Approval Task

Figura 8 Personalización de la Tarea de aprobación

La tarea finalizada se parecerá a la que se presenta en la Figura 9.

Customized Approval Task

Figura 9 Tarea de aprobación personalizada

En este punto de la ejecución del flujo de trabajo el flujo de trabajo realizará una pausa hasta que la tarea se haya aprobado, rechazado o caducado (en caso que se haya proporcionado una fecha de vencimiento). Usaré Condiciones para controlar el flujo.

Las Condiciones controlan la lógica del flujo de trabajo en función de determinados valores de las variables o campos del flujo de trabajo. Por ejemplo, si el elemento se aprueba, quiero enviar un correo electrónico al solicitante, y crear un sitio si la solicitud es del tipo Viaje. Si se rechaza el elemento, quiero enviar un correo electrónico y eliminar el elemento. Para lograr esto, pongo el cursor debajo del proceso de aprobación, hago clic en la lista desplegable Condición y selecciono “Si cualquier valor es igual a cualquier valor”. Hago clic en el hipervínculo “valor” y hago clic en el botón que se muestra para presentar el cuadro de diálogo Definir búsqueda de flujo de trabajo. Como Origen de datos selecciono Variables y parámetros de flujo de trabajo y para el Campo de origen elijo Variable: IsItemApproved. Esta variable se agrega al flujo de trabajo cuando se agrega una tarea del tipo Iniciar proceso de aprobación.

Luego hago clic en el vínculo “es igual a” y selecciono “es igual a” de la lista desplegable que se presenta. Luego hago clic en el vínculo “valor” y selecciono “Sí” de la lista desplegable. Pondré un Bloque Else-If dentro de esta condición para poder actuar cuando se rechace el elemento. Agrego las acciones Enviar y Correo electrónico a cada rama y uso el Generador de cadenas para establecer el título del correo electrónico, tal como se observa en la Figura 10.

Approval E-mail

Figura 10 Correo electrónico de aprobación

A continuación agrego una condición “Si el campo del elemento actual es igual al valor” dentro de la condición If y lo baso en el campo RequestType para poder crear un nuevo sitio secundario cuando la solicitud sea una solicitud de viaje. En la Figura 11 se puede observar el nuevo aspecto del diseñador.

The Conditional Flow of the Workflow

Figura 11 El flujo condicional del flujo de trabajo

Para crear el sitio para las solicitudes de Viaje debo crear una acción de flujo de trabajo personalizada, ya que esta acción no viene incorporada en SharePoint Designer 2010. Con este fin guardo mi flujo de trabajo, cierro SharePoint Designer 2010 y abro Visual Studio 2010.

Creación de una actividad de flujo de trabajo personalizada en Visual Studio 2010

Para agregar actividades de flujo de trabajo personalizadas a SharePoint Designer 2010 se puede usar Visual Studio 2010 con las soluciones de recinto de seguridad. Estas acciones pueden cumplir cualquier función que se puede realizar con una solución de recinto de seguridad, lo que proporciona mucha flexibilidad a los flujos de trabajo de SharePoint Online.

En Visual Studio 2010 selecciono Archivo | Nuevo proyecto y, en el cuadro de diálogo Nuevo proyecto selecciono las plantillas de SharePoint 2010 y la Plantilla vacía de SharePoint. Escribo PurchasingMgrActions en Nombre y Documents\Visual Studio 2010\Projects\SPOMSDN_Workflow\ en Ubicación y hago clic en Aceptar. En el Asistente de personalización de SharePoint escribo la URL de mi sitio de desarrollo local (http://o365dpe.contoso.com/sites/spomsdnmag/purchasing) para el sitio local y selecciono “Implementar como solución de espacio aislado” y hago clic en Finalizar.

En el Explorador de soluciones hago clic con el botón secundario en el proyecto PurchasingMgrActions, selecciono Agregar | Clase…, luego escribo el nombre CreateSiteAction y hago clic en Aceptar. La clase CreateSiteAction proporciona el método que llama el flujo de trabajo para crear el nuevo sitio. Agrego las instrucciones using necesarias e implemento el método CreateSite que está definido en la Figura 12.

Figura 12 Implementación del método CreateSite

using System;

using System.Collections;



using Microsoft.SharePoint;

using Microsoft.SharePoint.UserCode;



namespace SPDCustomWorkflowActions

{

  public class CreateSiteActivity

  {

    public Hashtable CreateSite(SPUserCodeWorkflowContext context, string siteName)

    {

      Hashtable results = new Hashtable();

      try

      {

        using (SPSite site = new SPSite(context.CurrentWebUrl))

        {

          using (SPWeb web = site.OpenWeb())

          {

            web.Webs.Add(

              siteName,

              "Trip Report: " + siteName,

              string.Empty,

              1033,

              "STS",

              false,

              false);

          }

        }

                

        results["success"] = true;

        results["exception"] = string.Empty;

      }

      catch (Exception e)

      {

        results = new Hashtable();

        results["exception"] = e.ToString();

        results["success"] = false;

      }



      return results;

    }

  }

}

La firma del método CreateSite se rige por las acciones personalizadas, y pasa SPUserCodeWorkflowContext para proporcionar acceso al contexto dentro del cual se está ejecutando el flujo de trabajo y todos los otros parámetros que pueda necesitar (en este caso el nombre del sitio que se va a crear). El método obtiene acceso a la colección de sitios (SPSite) y al sitio (SPWeb) mediante el contexto y crea el nuevo sitio con el método SPWeb.Webs.Add. Los resultados se devuelven en una variable results del tipo Hashtable.

Para poder agregar CreateSiteAction a la lista desplegable de Acciones tengo que implementar un archivo Elements.xml con mi Característica para describir la acción a SharePoint Designer 2010. Para agregar este archivo al proyecto selecciono el proyecto PurchasingMgrActions en el Explorador de soluciones, hago clic con el botón secundario en Agregar | Nuevo elemento…, luego selecciono SharePoint 2010 bajo las Plantillas instaladas y elijo la plantilla Elemento vacío. Escribo el nombre del elemento CreateSiteActionDefinition y hago clic en Aceptar. Esta definición se completa al implementar un elemento Acción en los elementos WorkflowActions, como se puede observar en la Figura 13.

Figura 13 Definición de la acción Create Site en Elements.xml

<?xml version="1.0" encoding="utf-8"?>

<Elements xmlns="https://schemas.microsoft.com/sharepoint/">

  <WorkflowActions>

    <Action Name="Create Site"

                      SandboxedFunction="true"

                      Assembly="$SharePoint.Project.AssemblyFullName$"

                      ClassName="PurchasingMgrActions.CreateSiteAction"

                      FunctionName="CreateSite"

                      AppliesTo="all"

                      UsesCurrentItem="true"

                      Category="Purchasing Manager Workflow Actions">

      <RuleDesigner Sentence="Create Site with name %1 (exceptions logged to %2)">

        <FieldBind Field="siteName" Text="Site Name" Id="1" DesignerType="TextBox" />

        <FieldBind Field="exception" Text="Exception" Id="2" 

          DesignerType="ParameterNames" />

      </RuleDesigner>

      <Parameters>

        <Parameter Name="__Context"

                      Type="Microsoft.SharePoint.WorkflowActions.WorkflowContext,

                        Microsoft.SharePoint.WorkflowActions"

                      Direction="In"

                      DesignerType="Hide" />

        <Parameter Name="siteName"

                      Type="System.String, mscorlib"

                      Direction="In"

                      DesignerType="TextBox"

                      Description="Name of the site to create" />

        <Parameter Name="exception"

                      Type="System.String, mscorlib"

                      Direction="Out"

                      DesignerType="ParameterNames"

                      Description="Exception encountered"/>

      </Parameters>

    </Action>

  </WorkflowActions>

</Elements>

El elemento Action junto con sus atributos describe el ensamblado, clase y método que se llamará cuando se ejecute la acción dentro del flujo de trabajo. En este caso, se llamará el método CreateSiteAction.CreateSite. El elemento RuleDesigner junto con los subelementos FieldBind definen la frase que se muestra en el diseñador del flujo de trabajo y los nombres y tipos de los campos que se presentan como hipervínculos en esa frase. El elemento Parameters junto con sus subelementos Parameter definen la forma en que se pasan los elementos RuleDesigner\FieldBind desde y hacia la llamada a CreateSiteAction.CreateSite. Por ejemplo, el parámetro __Context es del tipo WorkflowContext y se usa para pasar este contexto a la llamada sin presentarlo en el diseñador (para lo cual se establece en “Hide” el atributo DesignerType). El parámetro siteName recibe el valor del enlace del campo siteName, para lo cual el campo y el parámetro deben tener el mismo nombre. Las excepciones se pasan hacia afuera mediante el parámetro exception; se pasan al campo exception por la misma razón.

Antes de probar mi acción personalizada abro la Característica1, cambio su título a Purchasing Manager Workflow Actions para que sea más descriptivo, y cambio su ámbito a Sitio, tal como es requerido para las acciones de flujo de trabajo personalizadas.

Implementación de la Solución de flujo de trabajo en SharePoint Online

Para probar mi acción de flujo de trabajo personalizada hago clic con el botón secundario en el proyecto PurchasingMgrActions en el Explorador de soluciones y selecciono Paquete para empaquetar la solución. Luego cargo el paquete PurchasingMgrActions.wsp a la a Galería de soluciones en mi colección local de sitios de desarrollo (http://o365dpe.contoso.com/sites/spomsdnmag) para implementar la acción de flujo de trabajo personalizada.

Ahora, al abrir SharePoint Designer 2010 y mi flujo de trabajo Non-Standard Business Purchase Request Workflow Approval está en el editor del flujo de trabajo, mi acción de flujo de trabajo personalizada aparece en la lista desplegable Acción bajo la categoría Purchasing Manager Workflows, tal como se puede observar en la Figura 14.

Create Site Custom Action in Workflow Designer

Figura 14 Acción personalizada Create Site en Workflow Designer

Después de establecer la variable Site Name en Current Item:Title, mi flujo de trabajo está completo y listo para probarlo (Figura 15).

The Completed Workflow

Figura 15 El flujo de trabajo completado

Para prepararme para las pruebas debo publicar el flujo de trabajo en mi sitio de desarrollo local y asociarlo con mi lista. Para publicarlo, selecciono Publicar en la sección Guardar de la cinta. Una vez completada la publicación, navego a la lista Non-Standard Business Purchase Requests en mi sitio de desarrollo local, hago clic en la pestaña Lista y selecciono Configuración del flujo de trabajo en la sección Configuración de la cinta. Bajo “Estos flujos de trabajo están configurados para ejecutarse en elementos de este tipo” selecciono Purchasing Manager – Non-Standard Business Purchase Requests y selecciono el vínculo “Agregar un flujo de trabajo”. Agrego mi flujo de trabajo Non-Standard Business Purchase Request Approval como la plantilla y escribo el nombre Non-Standard Business Purchase Approval y hago clic en Siguiente y luego en Guardar.

Ahora ya puedo ejecutar mi flujo de trabajo. Selecciono el primer elemento de la lista, luego elijo Flujos de trabajo en la sección Flujos de trabajo de la cinta, y hago clic en el flujo de trabajo Non-Standard Business Purchase Approval para iniciarlo. Luego debo escribir una justificación comercial, tal como se especifica en el parámetro Business Rationale Initiation Form.

Escribo una justificación como la que se muestra en la imagen y hago clic en Iniciar para iniciar el flujo de trabajo. Luego puedo ir a la página Flujos de trabajo del elemento y seleccionar el flujo de trabajo en proceso para ver la página Información sobre el flujo de trabajo, que incluye una visualización del flujo de trabajo. Una vez que se aprueba la tarea se actualiza el diagrama, como se puede observar en la Figura 16.

Workflow Information Page with Visualization
(haga clic para acercar la imagen)

Figura 16 Página de Información sobre el flujo de trabajo con una visualización

Luego puedo ir a Acciones del sitio | Ver todo el contenido del sitio para ver el sitio que creó mi acción de flujo de trabajo personalizada.

Ahora ya estoy listo para distribuir mi solución de flujo de trabajo en SharePoint Online. Para obtener el archivo de paquete para mi flujo de trabajo Non-Standard Business Purchase Request abro el flujo de trabajo en SharePoint Designer 2010 y selecciono la opción Guardar como plantilla de la sección Administrar de la cinta para guardar el flujo de trabajo en la biblioteca de Recursos del sitio. Luego puedo tomar los archivos de paquete PurchasingMgr.wsp (o modificar el existente, si ya se ha implementado), PurchasingMgrActions.wsp y Non-Standard Business Purchase Request Approval.wsp de la biblioteca de Recursos del sitio y cargarlos en la Galería de soluciones en mi colección de sitios de SharePoint Online. Tenga en cuenta que hay que activar las características en este orden en función de las dependencias entre las características (esto se puede automatizar mediante las dependencias de activación de característica). Una vez que activo la característica de flujo de trabajo en mi sitio y asocio mi flujo de trabajo con mi lista, puedo seguir los mismos pasos para probar mi flujo de trabajo en SharePoint Online.

Conclusión

La automatización de los procesos de negocio mediante flujos de trabajo en SharePoint Online permite que la colaboración sea mucho más eficaz que al almacenar simplemente la información en SharePoint Online. En este artículo mostré cómo implementar un flujo de trabajo en SharePoint Designer 2010, extender ese flujo de trabajo con una acción de flujo de trabajo personalizada desarrollada en VisualStudio, y luego distribuir ese flujo de trabajo mediante archivos de paquete creados en SharePoint Designer 2010 y VisualStudio 2010. Lo animo a que se sumerja a fondo en el desarrollo de flujos de trabajo en SharePoint Online. Sus usuarios estarán impresionados acerca de cómo los procesos comerciales manuales propensos a generar errores se vuelven más eficaces, con mucho menos esfuerzo cuando se automatizan mediante flujos de trabajo en SharePoint Online.

Chris Mayo es un especialista en tecnología enfocado en SharePoint Online y hace diez años que trabaja en Microsoft. Es coautor de “Programming for Unified Communications with Microsoft Office Communications Server 2007 R2” (Microsoft Press, 2009). Antes de unirse a Microsoft, trabajó como desarrollador y arquitecto en los departamentos de TI de compañías de las industrias de finanzas y venta minorista que forman parte de la lista Fortune 500. Esté al tanto de las últimas actividades de Mayo en su blog, blogs.msdn.com/b/cmayo.

Gracias a los siguientes expertos técnicos por su ayuda en la revisión de este artículo: Mark Kashman, Keenan Newton, AJ May y George Durzi