10/04/2017
En el corazón de la plataforma ServiceNow se encuentra su capacidad para automatizar procesos complejos, desde la gestión de incidentes hasta las solicitudes de servicio. La herramienta principal para lograr esta automatización es el motor de flujos de trabajo o Workflows. Estos flujos de trabajo son secuencias visuales de actividades que dictan cómo debe comportarse el sistema ante ciertos eventos. Sin embargo, en la creación de estas lógicas de automatización, los desarrolladores pueden encontrarse con un problema silencioso pero devastador: los bucles infinitos. Es aquí donde una pequeña pero poderosa herramienta entra en juego: la actividad Turnstile, un guardián diseñado para proteger nuestros procesos de caer en un ciclo sin fin.

¿Entendiendo los Workflows de ServiceNow?
Antes de sumergirnos en la especificidad de la actividad Turnstile, es crucial tener una base sólida sobre qué es un workflow en ServiceNow. Piénsalo como un diagrama de flujo digital. Es una representación visual de un proceso de negocio que consta de una serie de "actividades" conectadas por "transiciones". Cada actividad realiza una tarea específica: esperar un tiempo determinado, solicitar una aprobación, ejecutar un script, establecer valores en un registro, enviar una notificación, etc. Las transiciones son las flechas que conectan estas actividades, definiendo el camino que seguirá el proceso.
Estos flujos de trabajo se inician con una actividad de "Begin" y, idealmente, concluyen con una o más actividades de "End". Todo lo que ocurre entre estos dos puntos es la lógica que automatiza el proceso. Por ejemplo, un workflow para una solicitud de nuevo hardware podría incluir pasos para obtener la aprobación del gerente, crear una tarea para el equipo de TI, notificar al usuario cuando el equipo está listo y finalmente cerrar la solicitud. Esta automatización garantiza consistencia, eficiencia y reduce la intervención manual.

El Peligro Oculto de la Automatización: Los Bucles Infinitos
Un bucle es una estructura de control que repite un bloque de código o una secuencia de actividades hasta que se cumple una condición específica. Son increíblemente útiles, pero también pueden ser peligrosos. Un bucle infinito ocurre cuando la condición de salida del bucle nunca se cumple, lo que hace que el workflow repita la misma secuencia de pasos una y otra vez, para siempre.
Imagina un escenario: un workflow está diseñado para esperar a que el estado de un incidente cambie a "Resuelto". Si, debido a un error lógico o a una intervención externa inesperada, el estado del incidente nunca puede llegar a ser "Resuelto", el workflow podría quedar atrapado en un ciclo de "verificar estado -> esperar -> verificar estado" sin fin. Las consecuencias de un bucle infinito pueden ser graves:
- Consumo de Recursos: El workflow consume recursos del sistema (CPU, memoria) en cada iteración, lo que puede degradar el rendimiento general de la instancia.
- Registros Bloqueados: El registro asociado al workflow (el incidente, en nuestro ejemplo) puede quedar en un estado inconsistente o "bloqueado", impidiendo que los usuarios trabajen en él.
- Errores en Cascada: Un bucle infinito puede desencadenar otros procesos o notificaciones repetidamente, llenando las bandejas de entrada de correo o generando datos basura.
La Solución Elegante: ¿Qué es la Actividad Turnstile?
Aquí es donde la actividad Turnstile se convierte en un héroe. Ubicada en la paleta de actividades del Workflow Editor, bajo la categoría "Utilities", la actividad Turnstile (o "Torno" en español) es un mecanismo de control simple pero fundamental. Su único propósito es limitar el número de veces que un flujo de trabajo puede pasar a través de un punto específico.
El nombre es una analogía perfecta con un torno físico: permite el paso de una persona a la vez y lleva la cuenta. De manera similar, la actividad Turnstile en ServiceNow "cuenta" cada vez que el flujo de trabajo la atraviesa. El desarrollador configura un número máximo de "pases" o iteraciones permitidas. Mientras el contador esté por debajo de este límite, el workflow continúa por un camino. En el momento en que el límite se alcanza o se supera, el workflow es desviado por un camino de salida alternativo, rompiendo así el bucle de forma controlada.

Configuración y Funcionamiento de la Actividad Turnstile
Implementar un Turnstile es un proceso sencillo que añade una capa de robustez inmensa a tus flujos de trabajo. El proceso se puede resumir en los siguientes pasos:
- Añadir la Actividad: Arrastra la actividad "Turnstile" desde la sección "Utilities" al lienzo de tu workflow, justo al inicio del bucle que deseas controlar.
- Configurar las Iteraciones: Haz doble clic en la actividad para abrir sus propiedades. El campo más importante es "Allowed iterations" (Iteraciones permitidas). Aquí defines el número máximo de veces que el flujo puede pasar por este punto. Por ejemplo, si estableces el valor en 10, el bucle se ejecutará un máximo de 10 veces.
- Definir las Transiciones de Salida: La actividad Turnstile tiene dos posibles salidas:
- Continue: Esta es la transición que se sigue mientras el contador de iteraciones sea menor o igual al límite establecido. Esta línea se conectaría de nuevo a la lógica del bucle.
- Limit exceeded: Esta es la transición de escape. Se sigue cuando el workflow intenta pasar por el Turnstile una vez que el límite ya ha sido alcanzado. Esta línea debe dirigir el flujo a una ruta de manejo de errores.
- Diseñar la Ruta de Escape: La ruta "Limit exceeded" es tu plan de contingencia. Aquí puedes realizar acciones como: enviar una notificación a un administrador, registrar un error en el log del sistema, cambiar el estado del registro a "Error" y, finalmente, terminar el workflow con una actividad "End".
Tabla Comparativa: Métodos de Control de Bucles
| Método | Ventajas | Desventajas |
|---|---|---|
| Actividad Turnstile | Visual, fácil de entender y mantener. Solución sin código (no-code). Es la mejor práctica oficial de ServiceNow. | Menos flexible que un script para lógicas de conteo muy complejas. |
| Script Personalizado (con contador) | Máxima flexibilidad para implementar cualquier tipo de lógica de control. Puede basar el límite en condiciones dinámicas complejas. | Requiere conocimientos de scripting (JavaScript). Más propenso a errores humanos. La lógica queda oculta dentro del código, lo que dificulta la lectura del workflow. |
| No controlar el bucle | Rápido de implementar (inicialmente). | Mala práctica. Altísimo riesgo de causar bucles infinitos, degradación del rendimiento y bloqueo de registros. Inaceptable en entornos de producción. |
Preguntas Frecuentes (FAQ)
¿Qué pasa exactamente cuando se excede el límite de la actividad Turnstile?
Cuando el contador interno de la actividad alcanza el valor definido en "Allowed iterations", el workflow ya no seguirá la transición de "Continue". En su lugar, tomará la ruta de salida definida por la transición "Limit exceeded". Lo que ocurra a continuación depende completamente de cómo el desarrollador haya diseñado esa ruta de escape. Es crucial no dejar esta salida desconectada.
¿Puedo usar un valor dinámico para el número de iteraciones permitidas?
Sí. Aunque el campo en la interfaz de usuario espera un número estático, puedes usar un script en la sección "Advanced" de la actividad para establecer este valor de forma dinámica. Por ejemplo, podrías leer un valor de una Propiedad del Sistema o de un campo en el registro actual para determinar cuántas iteraciones permitir en ese contexto específico.

¿Hay alguna alternativa a la actividad Turnstile para prevenir bucles?
La alternativa principal es utilizar una actividad "Run Script". Dentro del script, puedes usar el objeto `workflow.scratchpad` para crear una variable que actúe como contador. Incrementarías este contador en cada pasada y usarías una actividad "If" para comprobar si el contador ha superado un límite. Sin embargo, este enfoque es más complejo, menos visual y más propenso a errores que usar la actividad Turnstile, que fue creada específicamente para este propósito.
Conclusión: Una Buena Práctica Indispensable
En el desarrollo de automatizaciones en ServiceNow, pensar en los casos excepcionales es tan importante como diseñar el flujo principal. La actividad Turnstile es una herramienta fundamental en el arsenal de cualquier desarrollador de ServiceNow. Es la forma más simple, clara y efectiva de proteger los flujos de trabajo contra los peligros de los bucles infinitos. Incorporar un Turnstile en cualquier lógica de bucle no debería ser una ocurrencia tardía, sino una práctica estándar que garantiza la creación de procesos automatizados robustos, resilientes y seguros para la plataforma.
Si quieres conocer otros artículos parecidos a Actividad Turnstile en ServiceNow: Guía Completa puedes visitar la categoría Tecnología.
