Herramienta Contenedor de control
Ejemplo de cada herramienta
La herramienta Contenedor de control tiene un ejemplo de uso. Consulta Flujos de trabajo de muestra para aprender cómo acceder a este y muchos otros ejemplos directamente en Alteryx Designer.
![Image of a sample use case of the Control Container tool.](../../../image/uuid-02d2a6e9-f859-2a95-e783-756f7a77a327.png)
Utiliza Contenedores de control para administrar la secuencia en la que se ejecutan las herramientas en tu flujo de trabajo y garantizar que los pasos de tu proceso se ejecuten en el orden correcto. Los Contenedores de control te permiten utilizar información sobre las herramientas que se ejecutan, ya sea como información de registro o como datos para usar en el flujo de trabajo. Como resultado, puedes crear procesos más dinámicos y complejos basados en esa información de ejecución.
Además, los Contenedores de control permiten ejecutar condicionalmente ciertos bloques de lógica basados en los datos del flujo de trabajo, ya sea de otro Contenedor de control o de otras herramientas del flujo de trabajo. No es necesario crear una orquestación condicional compleja a través de las herramientas Desvíos, Aplicaciones encadenadas y Runner.
Solo AMP
La herramienta Contenedor de control es compatible solo con Alteryx Multi-threaded Processing (AMP) . Si intentas ejecutar la herramienta en un flujo de trabajo cuando AMP está desactivado, la herramienta muestra un error.
Componentes de la herramienta
La herramienta Contenedor de control tiene dos anclas: la entrada opcional "Control" y la salida "Archivo de registro".
![Image that shows an empty Control Container tool with its anchors.](../../../image/uuid-4a3b8eeb-639e-b818-91e9-aca55f2f9f16.png)
Entrada "Control" (opcional)
Los Contenedores de control tienen un ancla de entrada opcional. Usa esta entrada para activar el contenedor.
![Image that shows a Control Container with its anchors.](../../../image/uuid-f1b40eff-4248-4493-3c53-f233c7189ecf.png)
Si la entrada "Control" no tiene conexión, el contenedor se considera activado. En este caso, el Contenedor de control actúa como un Contenedor de herramientas, con la excepción de que emite mensajes desde su ancla de salida "Archivo de registro" sobre las acciones completadas dentro de él.
Si la entrada "Control" tiene conexión, el contenedor se activa cuando esta se cierra con al menos un registro de entrada*. Los metadatos y el contenido del flujo de datos no importan. Lo único que importa es que al menos un registro esté presente.
Nota
* Aunque se necesita un registro para activar un Contenedor de control, el contenedor no ejecuta las herramientas dentro de él hasta que todos los registros pasan a través del ancla de entrada de control. Así que si pasas 1000 registros a tu Contenedor de control, el contenedor no ejecuta herramientas dentro de él hasta que recibe los 1000 registros.
Salida "Archivo de registro"
La salida "Archivo de registro" genera todos los mensajes de registro orientados al usuario solo para las herramientas en el contenedor (incluso los contenedores anidados). Puedes utilizar estos datos de mensajes como cualquier otro flujo de datos en Alteryx Designer. Por ejemplo, puedes escribir esta información de registro en un archivo o analizarla para realizar más lógica.
Nota
Ten en cuenta que los únicos mensajes que aparecen en los datos del Contenedor de control son los que, de otro modo, se muestran a través de la cuadrícula de resultados. Debido a esto, las herramientas que no generan mensajes a través de la cuadrícula de resultados tampoco generan mensajes a través de los Contenedores de control.
Puedes usar una herramienta Mensaje para crear y personalizar mensajes para herramientas que no generan sus propios mensajes.
![Image that shows a Control Container tool with a Browse tool connected to its output Logging anchor.](../../../image/uuid-c2c275af-4c0d-a8a9-25a9-b3a2483681ac.png)
El Contenedor de control registra un mensaje de información cuando se activa: “Contenedor de control activado”.
El contenedor, luego, registra otro mensaje de información cuando procesa todas las herramientas contenidas: “Se completó el Contenedor de control”.
A continuación, el contenedor cierra el ancla de salida de archivo de registro. Ten en cuenta que el contenedor puede enviar mensajes antes de que todas las herramientas que contiene completen la ejecución. Consulta la sección Consideraciones importantes sobre el orden de ejecución para obtener más información.
Esto significa que todos los flujos de datos del contenedor ya se habrán cerrado y que se garantiza que obtendrás dos mensajes de cada salida de registro si se activó el contenedor. Si el contenedor está desactivado, cierra su salida de registro sin enviar ningún mensaje.
![This image shows an example of a Control Container's log messages in the Results window.](../../../image/uuid-a9502bec-af0c-8511-8db7-ce8f90971b06.png)
¿Cómo funcionan los Contenedores de control?
Es importante tener en cuenta que el Contenedor de control se comporta de manera muy diferente que el Contenedor de herramientas . Utiliza una lógica booleana (verdadero/falso) para determinar si hay un flujo de datos conectado al ancla de entrada de control opcional y, si hay un flujo de datos entrante, si ese flujo de datos contiene registros.
Si no hay un flujo de datos entrante, el Contenedor de control actúa como un Contenedor de herramientas, con la excepción de que emite mensajes desde su ancla Salida de registro sobre las acciones que se ejecutan dentro de ella. Los mensajes siguen el mismo comportamiento que los que normalmente se encuentran en la ventana de resultados de Designer.
Si hay un flujo de datos entrante conectado al ancla de entrada de control, el Contenedor de control evalúa si se deben ejecutar las herramientas en el contenedor. Se basa en si recibe o no al menos un registro cuando se cierra la conexión de entrada.
Si recibe un registro, el contenedor se activa una vez que se cierra la conexión (cuando todos los registros pasan por la entrada).
Si la entrada "Control" no recibe registros, el contenedor solo envía los metadatos almacenados en caché a través de la salida. No pasa mensajes y no ejecuta herramientas dentro de él.
Contenedor de control deshabilitado vs. Contenedor de control inactivo
Es importante tener en cuenta las diferencias entre el comportamiento de un Contenedor de control deshabilitado y el de un Contenedor de control habilitado (pero inactivo).
Cuando deshabilitas un Contenedor de control, Designer ignora el contenedor (así como todas las herramientas que contiene); tampoco informa de ningún error de configuración para el contenedor o las herramientas que contiene.
Cuando tu Contenedor de control está habilitado, Designer no sabe si activar el contenedor hasta que ejecutas el flujo de trabajo y el ancla de entrada del contenedor recibe o no los registros.
Designer debe ejecutar todas las comprobaciones de validación previa del flujo de trabajo cuando ejecutas el flujo de trabajo. Esta comprobación de validación previa genera errores dentro de los Contenedores de control si las herramientas contenidas no están configuradas correctamente, independientemente de si ese contenedor se activa finalmente a través de sus registros de recepción de ancla de entrada. Para evitar esto, asegúrate de que todas las herramientas dentro de un Contenedor de control estén configuradas correctamente, incluso si ese contenedor no se activará como parte del flujo de trabajo.
Consideraciones importantes sobre el orden de ejecución
En algunas situaciones, las herramientas dentro de los Contenedores de control pueden enviar datos fuera del contenedor antes de que todas las herramientas dentro de él hayan completado la ejecución y, como resultado, antes de que el contenedor envíe datos a través de su ancla Salida de registro. Esto puede suceder cuando las herramientas dentro del contenedor se conectan directamente a las herramientas fuera de él.
Para entender por qué sucede esto, es importante entender cómo AMP procesa los datos . AMP envía datos entre herramientas en paquetes de registros para minimizar el trabajo de sincronización entre herramientas y garantizar un mejor rendimiento. Si hay muchos registros que pasan a través de herramientas, los paquetes se llenan y deben enviarse en dirección descendente.
Información general sobre el orden de ejecución
Como se señaló anteriormente, un Contenedor de control no ejecuta herramientas dentro de él hasta que recibe todos los registros a través de su ancla de entrada de control. Si el ancla de entrada recibe un gran número de registros a través de varios paquetes, el contenedor mantiene los paquetes en su entrada hasta que los recibe todos. Una vez que recibe todos los paquetes, el contenedor se activa.
Una vez que el contenedor se activa, ejecuta las herramientas dentro de él. Si durante este proceso el contenedor pasa datos fuera de sus límites, esos datos pueden salir del contenedor antes de que todas las herramientas dentro de él terminen de ejecutarse. Esto depende de cómo AMP Engine ensamble y secuencie los paquetes de registro.
El ancla Salida de registro del contenedor comienza a recopilar mensajes para las herramientas que se ejecutan dentro de él tan pronto como se active. Continúa reuniendo mensajes hasta que…
Un paquete de registro se vuelve lo suficientemente grande como para enviarlo en dirección descendente, momento en el que el siguiente paquete comienza a recopilar mensajes.
El contenedor ejecuta todas las herramientas dentro de él y termina con el mensaje “Se completó el Contenedor de control”.
Recomendaciones para garantizar el orden de ejecución
Teniendo en cuenta lo anterior, si el orden de ejecución es fundamental para el flujo de trabajo, se deben utilizar Contenedores de control adicionales para asegurarse de que los registros que cruzan los límites del contenedor se secuencian correctamente.
Recuerda que cuando conectas el ancla de salida de un Contenedor de control al ancla de entrada de otro, el segundo contenedor debe recibir todos los registros a través de su ancla de entrada de control antes de que pueda activar y ejecutar cualquier herramienta dentro de él.
Para usar un ejemplo simplificado, si necesitas estar absolutamente seguro de que un proceso no se inicia antes de que otro proceso termine, siempre debes usar varios Contenedores de control, como en el Ejemplo 2 a continuación.
Ejemplo 1
Esta configuración no garantiza que la herramienta Mensaje espere hasta que todos los registros pasen por la herramienta Filtro, ni garantiza que todas las herramientas hayan completado la ejecución en el Contenedor de control (si se incluyeron otras herramientas).
![Image showing a Control Container tool with a Filter tool inside. The Filter tool's output connects to the input of a Message tool outside of the container.](../../../image/uuid-84d87fa1-10f5-2e44-c2dc-5b8317b1c0be.png)
Ejemplo 2
Esta configuración garantiza que la herramienta Mensaje espera hasta después de que el segundo Contenedor de control reciba todos los registros a través de su ancla de entrada de control para iniciarse. Esto solo ocurre una vez que todas las herramientas del primer contenedor completen la ejecución y el contenedor registre el mensaje “Se completó el Contenedor de control”.
![Image showing a Control Container tool with a Filter tool inside. The container's output is connected to another Control Container's input.](../../../image/uuid-a16084c9-a3fb-823b-eab7-257c3f34dad5.png)
Agrupar herramientas en un contenedor
Hay varias formas de agrupar herramientas en un contenedor:
Selecciona una o más herramientas en el lienzo, haz clic con el botón derecho y selecciona Agregar a nuevo Contenedor de control .
Arrastra la herramienta Contenedor de control al lienzo y colócala cerca de las herramientas que deseas agrupar. Pulsa la tecla Ctrl del teclado y selecciona las herramientas, a continuación, arrástralas y suéltalas en el contenedor.
Para expandir o contraer un contenedor, selecciona el ícono expandir/contraer en la parte superior derecha del contenedor.
Modificar los contenidos del contenedor
Para eliminar un contenedor sin eliminar las herramientas adentro, haz clic con el botón derecho en el contenedor expandido y selecciona Eliminar contenedor solamente .
Para quitar una herramienta de un contenedor, selecciona la herramienta y arrástrala fuera del contenedor.
Deshabilitar un contenedor
Deshabilita un contenedor cuando no deseas ejecutar una sección o proceso en un flujo de trabajo. El contenedor deshabilitado permanece expandido en el lienzo y aparece atenuado para indicar que está deshabilitado. Las herramientas del contenedor no procesan los datos hasta que se vuelve a habilitar el contenedor. Si el contenedor está deshabilitado, cierra su ancla Salida de registro sin enviar ningún mensaje.
Para deshabilitar el contenedor, tienes dos opciones:
En la ventana Configuración del contenedor, selecciona la casilla de verificación Deshabilitado .
En el lienzo, selecciona el control deslizante en la parte superior izquierda del contenedor para que quede a la izquierda.
Puedes contraer un contenedor deshabilitado para esconder su contenido. Selecciona el ícono de expandir o contraer dentro del contenedor para hacerlo.
Habilitar un contenedor
Para activar el contenedor, tienes dos opciones:
En la ventana Configuración del contenedor, desactiva la casilla de verificación Deshabilitado .
Selecciona el control deslizante en la parte superior izquierda del contenedor para que quede a la derecha.
Configurar la herramienta
Una vez que la herramienta Contenedor de control esté en el lienzo del flujo de trabajo, puedes utilizar la ventana de configuración de herramientas del Contenedor de control para proporcionarle una etiqueta al contenedor, modificar su aspecto y desactivarlo si es necesario.
En la ventana Configuración , ingresa un nombre para el contenedor en el campo Título o haz doble clic en el contenedor del lienzo y escribe directamente en el cuadro de texto. El texto predeterminado es “Contenedor de control” más el Id. de la herramienta que se muestra en el campo Id.
Define el tema de color para el contenedor.
Selecciona “…” junto a Color de texto , Color de relleno y Color de borde , y selecciona un color de la paleta o ingresa los valores RGB.
En Transparencia , ingresa un valor o utiliza las flechas arriba/abajo para establecer la transparencia del color.
En Margen , selecciona un ancho para cambiar el espacio entre el borde del contenedor y las herramientas en su interior.
Para establecer el color de relleno predeterminado del contenedor…
Ve a Opciones Configuración del usuario Editar configuración del usuario y selecciona Lienzo.
En Configuración predeterminada del lienzo Contenedores, ajusta los valores RGB o utiliza el botón “…” para seleccionar un color.
Guarda la configuración.
Notas de compatibilidad y limitaciones
Herramientas en la categoría En base de datos
Las herramientas en base de datos funcionan dentro de los Contenedores de control. Sin embargo, una conexión en base de datos no puede cruzar el límite del Contenedor de control. En otras palabras, no puedes tener una herramienta Conexión En-BD fuera del Contenedor de control y después conectarla a la herramienta Filtrar En-BD dentro del contenedor.
Herramientas de interfaz
Las herramientas de la categoría Interfaz no son compatibles dentro de los Contenedores de control. Puedes tener las herramientas de Interfaz y los Contenedores de control en el mismo flujo de trabajo; las herramientas de interfaz simplemente no pueden estar dentro de los Contenedores de control.
Herramienta Bloquear hasta finalizar
Las herramientas Bloquear hasta finalizar no tienen ningún efecto cuando se encuentran en flujos de trabajo que también contienen Contenedores de control. Si tu flujo de trabajo contiene tanto herramientas Bloquear hasta finalizar como Contenedores de control, encontrarás un mensaje de error y las herramientas Bloquear hasta finalizar se tratarán como herramientas de paso (sin comportamiento de secuenciación).
Herramientas Desvío
Las herramientas Desvío funcionan dentro de los Contenedores de control. Debes seguir las reglas habituales para Inicio del desvío y Fin del desvío, pero ten en cuenta que, si una herramienta Fin del desvío está en un Contenedor de control que nunca se activa, se descarta su flujo de datos.
Contenedores de control anidados
Los Contenedores de control funcionan cuando están anidados en otros Contenedores de control. Sin embargo, las conexiones en bucle generan un error. Por ejemplo, no puedes conectar la Salida de registro de un Contenedor de control a una herramienta dentro del mismo contenedor.
Contenedores de control y macros
Los Contenedores de control funcionan dentro de macros. Las acciones de macro y aplicación se aplican antes de la traducción XML. Las macros también funcionan dentro de los Contenedores de control.
Flujo de trabajo de depuración
Actualmente, los Contenedores de control no son compatibles con los flujo de trabajo de depuración accesible a través de la ventana Diseñador de interfaz de aplicaciones analíticas y macros. Un flujo de trabajo de depuración que contiene Contenedores de control producirá un error.