Para el que no conozca Nintex Workflow, es una herramienta que permite diseñar y publicar flujos de trabajo dentro de SharePoint, sin necesidad de una herramienta externa como pueda ser Visual Studio o SharePoint Designer. Nintex cuenta con un gran número de componentes a través de los cuales podemos construir distintos tipos de flujos.
En este post vamos a ver cómo crear un flujo muy básico sobre una lista, omitiendo todo el proceso de instalación de la herramienta.
Lo primero de todo será activar las características necesarias dentro de nuestro portal, así como comprobar que la licencia es válida y la configuración de la base de datos de Nintex es correcta.
Vamos a crear un flujo que, cuando se cree un elemento en una lista, se produzca la creación de otro elemento en una lista “espejo”, usando además un par de trazas para poder monitorizar el resultado de la ejecución.
Vamos a crear en primer lugar una lista (NList), y vamos a crear un flujo de trabajo sobre ella, utilizando el Wizard de Nintex (Create a Workflow in Nintex Workflow):
Seleccionaremos una plantilla en blanco para construir nuestro flujo desde cero:
Podemos ver que nuestro área de trabajo se divide fundamentalmente en tres zonas, una superior (Ribbon) donde están las opciones de guardar, publicar y opciones del flujo entre otras, un panel izquierdo donde vamos a encontrar los componentes agrupados por categorías, y una zona central donde vamos a arrastrar esos componentes hasta formar nuestro flujo de trabajo:
Si echamos un vistazo a los ajustes generales del flujo, podremos acceder a opciones tales como establecer título y descripción al flujo, configurar el auto-start, configurar los criterios de arrancado, y otra serie de opciones:
Vamos a comenzar arrastrando un componente de tipo traza en el log para monitorizar el comienzo del flujo, seguido de otro componente que será el de crear el item en la lista “espejo” que hemos creado previamente:
Para configurar el componente de Create item, accedemos desde su menú contextual a las opciones de configuración, y podemos establecer algo como lo siguiente:
En donde hemos fijado la lista sobre la que vamos a trabajar, y el texto que queremos configurar en el campo Title de la misma, usando el campo Title de la lista origen, a través de un selector que nos permite coger ese tipo de propiedades.
Añadimos una traza al final y tenemos un flujo muy básico con el siguiente aspecto:
Lo publicamos y comprobamos que efectivamente nuestra lista NList tiene configurado el flujo que acabamos de crear:
Ahora podemos crear un elemento y ver si se crea su copia espejo. En este caso yo me he encontrado con dos problemas.
Por un lado, que no se puede realizar el auto-start de un flujo de trabajo si la cuenta que estamos usando para probar es la de System Account. Al ver que no se arrancaba de forma automática, he revisado las trazas y he visto el siguiente mensaje:
Declarative workflows cannot automatically start if the triggering action was performed by System Account. Canceling workflow auto-start. List Id: b7d9d101-f401-400a-bc6f-96ec0ada8df8, Item Id: 4, Workflow Association Id: 9fa0278e-6aeb-4632-97d6-95af76a379f8
Así que para probarlo, vamos a lanzarlo de manera manual. Una vez lanzado, veo que la ejecución ha fallado en el arranque del mismo. Reviso trazas de nuevo, y encuentro una excepción de este tipo:
RunWorkflow: Microsoft.SharePoint.SPException: <Error><CompilerError Line="0" Column="10" Text="The type or namespace name 'Nintex' could not be found …
Revisando la configuración, me doy cuenta de que he olvidado activar Nintex para la Web Application sobre la que estoy trabajando, así que lo activo (Web Application activation):
Vuelvo a probar, y ahora si ha funcionado. Compruebo que se ha creado su copia en la lista espejo:
Y si ahora revisamos el histórico de ejecución del flujo de trabajo, podemos ver los mensajes de las dos trazas que habíamos configurado: