Ejecutar PowerShell en Nintex

Nintex es una herramienta que mejora la productividad y desarrollo de flujos de trabajo sobre SharePoint. Ofrece una serie de cajas (activities) junto a una interfaz mucho más amigable que Designer. Aun así, como todas las herramientas acotadas, puede que nuestra funcionalidad no podamos cumplirla con el juego de opciones que nos ofrece. ¡Vamos allá!

Durante un tiempo, para diversos clientes, trabajé con la herramienta Nintex Workflow. Gracias a ella descubrí que el motor de flujos de trabajo de SharePoint no es tan endeble como Designer nos hace creer. Pero como todos los idílios tecnológicos, llega un día en el que se acaban, y llegamos a un punto donde la herramienta no nos da lo que necesitamos.

Pues bien, rápidamente a Google, y a buscar una opción. La parte mas divertida de todo programador… No vamos a programar una aplicación, vamos a mejorar una herramienta. Con suerte, y gracias a este magnífico post pude comprender de una manera cómoda y rápida como crear acciones personalizadas por medio de Visual Studio. ¡Magnífico!

Otra vuelta de tuerca más

Empecé a entender cómo se creaba, probar el fragmento del compañero, y a preparar el código para mi necesidad, pero me dije, ¿por qué quedarme aquí? ¿Por qué no hacer una sola caja personalizada y que ésta sea capaz de cargar mis scripts de PowerShell?

¿Qué incluye el proyecto?

Subido a Github, podéis descargar el proyecto desde este enlace. Incluye:

  • Un fichero con extensión nwa que define qué hace la acción (un XML para controlarlos a todos).
  • Un Adapter.cs que puentea Nintex con el Activity y la página aspx.
  • Un Activity.cs que hace las acciones del «Override Execute».
  • Página aspx que define la página modal que se levanta en las cajas de Nintex. Ésta debe mapearse dentro de la ruta mapeada de nuestro SharePoint 2010 en 14/NintexWorkflows, o no funcionará.
  • Una feature a nivel WebApplication que engancha todo a Nintex, SafeControl y AuthorizedTypes del web.config.
  • Imágenes para los iconos de los menús.

¿Qué nos permite realizar este proyecto?

Esta versión nos permite, tras desplegarlo sobre nuestro SharePoint 2010, lanzar un script PowerShell *.ps1 poniendo una ruta física del servidor (Un ejemplo sería C:\CarpetaFalsa\ScriptDeMentira.ps1), o bien poner el texto directamente del script en la caja de texto libre que encontraremos en la acción.
No nos permitirá realizar salidas tipo Write-Host (no sabe interpretarlas y corta la ejecución), pero lo bueno es que te permite meter los token de tipo {ItemProperty:ID} de Nintex con las propiedades dinámicas del contexto del flujo de trabajo, y pasarlas al script.
¡Enjoy!

2 comentarios en “Ejecutar PowerShell en Nintex”

  1. Es realmente potente la posibilidad de usar scripts PowerShell en los workflows.
    Sin embargo creo que habría que preferenciar las actions normales y codificar tus scripts sólo para los casos de necesidad en los que haya que llegar un poco más alla 😉

    Recién descubrí el blog, está relindo!

    Saludos …

    1. Realmente es como dices, el uso de acciones personalizadas debemos reducirlo a las necesidades que el producto no nos ofrezca, o acabaremos desarrollando una capa de abstracción demasiado pesada y poco configurable encima del motor de Nintex Workflow.

      Gracias por participar. Me alegra que os guste!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.