Sin duda, las Listas de Tareas de SharePoint y la personalización de formularios, son dos de las prácticas más importantes para el desarrollo de Workflows para SharePoint 2010 con Visual Studio 2010.
A continuación vamos a introducir los conceptos más importantes para comprender el desarrollo de este tipo de proyectos con Visual Studio 2010. Un buen momento para montarse un entorno de desarrollo de SharePoint 2010.
Introducción a las actividades de Tareas: CreateTask, OnTaskChanged, CompleteTask y Correlation Token
Hay varias reglas que deberemos seguir para poder desarrollar con éxito un Workflow con Tareas en Visual Studio 2010, y que en caso de no seguirlas, puede convertir este menester en algo bastante frustrante.
Quizás la actividad más importante al desarrollar un Workflow con Tareas, es la actividad CreateTask, y uno de los detalles más importantes al trabajar con esta actividad, es que para cada actividad CreateTask se debe crear un nuevo Correlation Token, que no puede ser el mismo del Workflow.
Esto es muy importante, porque cualquier actividad que necesitemos enlazar con una Tarea creada por una actividad CreateTask (ej: las actividades OnTaskChanged, CompleteTask, etc.), la deberemos enlazarla con el mismo Correlation Token utilizado en la correspondiente Tarea CreateTask. Esta es la forma de decirle a Visual Studio que varias actividades de Tareas trabajan sobre una misma Tarea, y es una parte muy importante de la programación de Workflows con Tareas en Visual Studio. Para más info: Correlation Tokens in Workflows.
Además, para poder utilizar correctamente la actividad CreateTask, es necesario al menos:
- Crear una variable miembro pública de tipo Guid y asociarla a la propiedad TaskId de la actividad CreateTask. Esto se puede hacer de forma gráfica.
- Crear una variable miembro pública de tipo SPWorkflowTaskProperties y asociarla a la propiedad TaskProperties de la actividad CreateTask. Esta variable nos permitirá acceder a las propiedades de la Tarea que se va a crear, para de este modo, poder crear la Tarea de forma personalizada conforme a nuestras necesidades. Como en el caso anterior, esto se puede hacer de forma gráfica.
- Crear el evento (Handler) MethodInvoking, en cuyo interior debemos codificar alguna línea de código (pocas) para crear la Tarea a nuestro gusto.
Otra actividad con la que trabajaremos habitualmente, es la actividad OnTaskChanged, que en muchos casos se utiliza dentro de una actividad While, de tal modo que cada vez que el usuario modifique la Tarea, podamos recuperar el control desde el Workflow para forzar o no que se cumpla la condición de salida del While. Sin embargo, del mismo modo que ocurría con la actividad CreateTask, para poder utilizar correctamente la actividad OnTaskChanged, es necesario al menos:
- Crear una variable miembro pública de tipo SPWorkflowTaskProperties y asociarla a la propiedad AfterProperties de la actividad OnTaskChanged. Nos permitirá acceder a las propiedades de la Tarea al momento de después del evento de modificación de la Tarea.
- Crear una variable miembro pública de tipo SPWorkflowTaskProperties y asociarla a la propiedad BeforeProperties de la actividad OnTaskChanged. Nos permitirá acceder a las propiedades de la Tarea al momento de antes del evento de modificación de la Tarea, lo cual sirve para pasar información desde el Workflow al formulario de la Tarea.
- Configurar la propiedad Correlation Token con el mismo valor utilizado en la correspondiente actividad CreateTask.
- Configurar la propiedad TaskId con el mismo valor utilizado en la correspondiente actividad CreateTask.
- Crear el evento (Handler) Invoked, en cuyo interior debemos codificar alguna línea de código (pocas) para forzar que se cumpla la condición de salida del While si se cumplen las condiciones necesarias.
También es habitual utilizar la actividad CompleteTask, que se utiliza para finalizar una Tarea, por lo que muchas veces aparece en las ramas del final del Workflow. Para poder utilizar correctamente la actividad CompleteTask, es necesario al menos:
- Configurar la propiedad Correlation Token con el mismo valor utilizado en la correspondiente actividad CreateTask.
- Configurar la propiedad TaskId con el mismo valor utilizado en la correspondiente actividad CreateTask.
Estos son los pilares fundamentales para poder empezar a trabajar con Tareas en Workflows de SharePoint 2010 con Visual Studio 2010, aunque es cierto que hay mucho más por descubrir.
Los Formularios en el desarrollo de Workflows para SharePoint 2010
Del mismo modo que son importantes las Tareas, también lo son los formularios personalizados, ya que los formularios son el frontend que utilizará el usuario para interactuar con los Workflows, y ya se sabe que con una buena presentación…
Podemos crear formularios personalizados como páginas html o como formularios InfoPath, teniendo en cuenta que:
- Los formularios InfoPath sólo se podrán utilizar en SharePoint Server 2010 y no en SharePoint Foundation 2010.
- Los formularios InfoPath se desarrollarán desde fuera de Visual Studio 2010, es decir, desde InfoPath. Al no existir ninguna integración con Visual Studio 2010, se hace un poco más laborioso trabajar con ellos, aunque por el contrario, nos permite disfrutar de las ventajas propias de los formularios InfoPath.
- Las páginas html se desarrollarán desde Visual Studio 2010. Sin embargo la vista de diseño no estará disponible, y aunque los formularios de asociación y de iniciación están completamente integrados en Visual Studio 2010, la utilización de formularios de tareas y de modificación es algo más laboriosa (requiere modificar manualmente el fichero Elements.xml).
Existen cuatro tipos de formularios que podemos utilizar en la programación de Workflows con SharePoint 2010, independientemente de la tecnología utilizada (html ó InfoPath):
- Formularios de asociación (Workflow Association Form). Se muestran en el momento en que se asocia el Workflow al Site o Lista correspondiente. Permiten, por ejemplo, que un administrador pueda parametrizar el Workflow (ej: establecer un límite para la Aprobación automática, en un Workflow de Aprobación de gastos) en el momento de su asociación. Típico para establecer valores por defecto.
- Formularios de iniciación (Workflow Initiation Form). Se muestran al iniciar la ejecución de un Workflow, lo cual resulta útil en Workflows de Sitio y en Workflows de Lista que no se inician automáticamente, permitiendo que un usuario pueda configurar parámetros del Workflow incluso para sobrescribir los parámetros especificados por el administrador.
- Formularios de Tareas. Se muestran al editar una Tarea. Por ejemplo, podríamos crear un formulario de Tarea que sólo permita Aprobar o Rechazar, y que al aceptar los cambios finalice la Tarea.
- Formularios de Modificación. Permite a los usuarios modificar el Flujo de Trabajo en ciertas etapas mientras se está ejecutando en un elemento.
Evidentemente, la mejor forma de entender las cosas que hemos visto en este artículo, es complementar dicha información con ejercicios o ejemplos prácticos, algo que intentaré acomenter en futuros artículos, y así evitar tener demasiada información en un único lugar.
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.