Todos los productos
Search
Centro de documentos

DataWorks:Configurar un nodo do-while

Última actualización: Sep 04, 2026

Un nodo do-while ejecuta repetidamente un flujo de trabajo interno hasta que se cumple una condición de salida. La lógica del bucle se define dentro del nodo y el nodo End controla cuándo se detiene la iteración. Si se combina con un nodo de asignación, el nodo do-while también puede iterar sobre un conjunto de resultados. Este tema presenta ejemplos de configuración simples y complejos.

Requisitos previos

  • Debe estar familiarizado con la personalización del flujo de trabajo dentro de un nodo do-while. Para obtener más información, consulte Node components and workflow orchestration.

  • Debe conocer el uso de variables integradas para obtener parámetros relacionados con el bucle dentro del nodo. Para obtener más información, consulte Built-in variables.

  • Debe comprender que, dentro de un nodo do-while, el nodo Start marca el inicio de un bucle y el nodo End define la lógica de salida del mismo. Para obtener más información, consulte Exit loop example: End node code samples.

  • Debe conocer las consideraciones para probar un nodo do-while y consultar sus registros. Para obtener más información, consulte Usage notes.

Limitaciones

  • El nodo do-while solo está disponible en DataWorks Standard Edition y versiones posteriores. Para obtener más información, consulte DataWorks editions and features.

  • Un nodo do-while puede realizar un máximo de 1,024 iteraciones.

  • No se admite la ejecución paralela. Un nuevo bucle solo puede iniciarse después de que finalice el anterior.

Crear un nodo do-while

  1. Inicie sesión en la consola de DataWorks. En la región objetivo, haga clic en Data Development and O&M > Data Development en el panel de navegación izquierdo. Seleccione un espacio de trabajo en la lista desplegable y haga clic en Go to Data Development.

  2. Cree un nodo do-while.

    1. En la página Data Studio, pase el puntero sobre el icono Create icon y elija Create Node > General > do-while.

      Como alternativa, puede abrir un flujo de trabajo, hacer clic con el botón derecho en General y seleccionar Create Node > do-while.

    2. En el cuadro de diálogo Create Node, especifique el nombre y la ruta del nodo.

    3. Haga clic en OK.

Ejemplos

Este ejemplo realiza 5 iteraciones e imprime el conteo actual del bucle en cada una de ellas.

Editar el código del nodo

Nota

De forma predeterminada, un nodo do-while contiene tres nodos: Start, Shell y End:

  • El nodo Start marca el inicio de un bucle y no tiene ninguna función empresarial. No se puede eliminar.

  • El nodo Shell es un nodo de procesamiento empresarial de ejemplo proporcionado por DataWorks.

  • El nodo End marca el final de un bucle y determina si se inicia la siguiente iteración. Se utiliza para definir la condición de salida del nodo do-while y no se puede eliminar.

También puede personalizar el flujo de trabajo dentro del nodo do-while según sus requisitos empresariales; para ello, reemplace el nodo Shell por otros nodos.

  1. Haga doble clic en el nodo Shell para abrir su página de edición.

  2. Introduzca el siguiente código.

    echo ${dag.loopTimes} ----Print the loop count.
    • La variable ${dag.loopTimes} es una variable reservada del sistema que representa el conteo actual del bucle, comenzando desde 1. Los nodos internos de un nodo do-while pueden hacer referencia directa a esta variable. Para obtener más información sobre las variables integradas, consulte Built-in variables y Context-dependent variables.

    • Asegúrese de guardar el código después de modificarlo en el nodo Shell. No se muestra ningún mensaje al enviar el nodo. Si no guarda el código, los cambios más recientes no se aplicarán.

Definir la condición de salida del bucle

Configure la condición de salida para que el bucle se detenga después de 5 iteraciones.

  1. Haga doble clic en el nodo End para abrir su página de edición.

  2. En la lista desplegable Select Language, seleccione Python.

  3. Introduzca el siguiente código para definir la condición de salida del nodo do-while.

    if ${dag.loopTimes}<5: 
     print True; 
    else: 
     print False;
    • La variable ${dag.loopTimes} es una variable reservada del sistema que representa el conteo actual del bucle, comenzando desde 1. Los nodos internos de un nodo do-while pueden hacer referencia directa a esta variable. Para obtener más información sobre las variables integradas, consulte Built-in variables y Context-dependent variables.

    • El código compara dag.loopTimes con 5 para limitar el número total de iteraciones del bucle. En la primera iteración, dag.loopTimes es 1; en la segunda es 2, y así sucesivamente hasta la quinta iteración, donde es 5. En ese momento, la expresión ${dag.loopTimes}<5 se evalúa como False y el bucle termina.

Enviar el nodo do-while

  1. Haga clic en el icono Save icon de la barra de herramientas para guardar el nodo.

  2. Haga clic en el icono Submit icon de la barra de herramientas para enviar el nodo.

    Al enviar el nodo, introduzca una Change Description en el cuadro de diálogo Submission y especifique si desea iniciar una revisión de código después de enviarlo.

    Importante
    • Debe configurar el Rerun attribute y los Parent Nodes antes de poder enviar el nodo.

    • La revisión de código ayuda a garantizar la calidad del código de la tarea y evita errores causados por el despliegue directo de código no revisado en el entorno de producción. Si la revisión de código está habilitada, los revisores deben aprobar el código del nodo enviado antes de que pueda desplegarse. Para obtener más información, consulte Code review.

    Si utiliza un espacio de trabajo en modo estándar, debe hacer clic en Deploy en la esquina superior derecha de la página de edición del nodo para desplegar la tarea en el entorno de producción después de enviarla. Para obtener más información, consulte Deploy nodes.

Probar y consultar los registros de ejecución

El proceso para enviar y desplegar un nodo do-while es el mismo que para un nodo normal. Sin embargo, no se admiten pruebas desde la interfaz de Data Studio.

Nota

Cuando DataWorks está en modo estándar, no puede probar directamente un nodo do-while desde la interfaz de Data Studio.

Para probar y verificar los resultados de ejecución de un nodo do-while, debe enviar y desplegar la tarea que contiene dicho nodo en Operation Center y, a continuación, ejecutar la tarea del nodo do-while desde la página de Operation Center. Si utiliza valores pasados por un nodo de asignación dentro del nodo do-while, ejecute tanto el nodo de asignación como el nodo do-while juntos durante la prueba en Operation Center.

  1. Haga clic en O&M Personnel en la esquina superior derecha de la página para ir a Operation Center.

  2. En el panel de navegación izquierdo, haga clic en Auto Triggered Task O&M > Periodic tasks.

  3. Seleccione el nodo deseado. En el DAG del lado derecho, haga clic con el botón derecho en el nodo de asignación y seleccione Retroactive Instance > Current and Descendant Nodes Retroactively.

  4. Actualice la página Data Backfill Instance. Una vez que la instancia de relleno se ejecute correctamente, haga clic en DAG junto a la instancia.

  5. Consulte los registros de ejecución del nodo do-while.

    1. Haga clic con el botón derecho en el nodo do-while y seleccione View Inner Nodes.

      Para nodos compuestos como los nodos do-while, consulte los nodos internos para ver los registros detallados de ejecución. En este ejemplo, el bucle se ejecutó 5 veces y todas las iteraciones se completaron correctamente.

      La vista del bucle interno de un nodo do-while tiene tres partes:

      • El panel izquierdo muestra el historial de reejecución. Cada ejecución completa de la instancia do-while agrega un registro aquí.

      • El panel central muestra la lista de registros del bucle con el conteo total de iteraciones y el estado de cada una.

      • El panel derecho muestra los detalles de la iteración. Haga clic en una iteración de la lista de registros del bucle para mostrar el estado de ejecución de cada nodo en esa iteración.

    2. En la página de nodos internos, haga clic en un número de iteración a la izquierda, haga clic con el botón derecho en el nodo deseado y seleccione View Runtime Log.

    3. Consulte los registros detallados de ejecución de la enésima iteración.

      En la página de nodos internos, haga clic en Iteration 5 a la izquierda para consultar los registros del nodo Shell en la quinta iteración.

      El registro de tiempo de ejecución muestra que, en la quinta iteración, el nodo End ejecutó el código de evaluación if 5 < 5: print True else: print False, y la salida fue False (Output Result: False). El bucle terminó y la tarea se completó normalmente.

      El flujo de trabajo de un nodo do-while es el siguiente:

      1. La ejecución comienza desde el nodo Start.

      2. Las tareas se ejecutan secuencialmente según las relaciones de dependencia definidas.

      3. La condición de salida se define en el nodo End.

      4. Después de que se completa un conjunto de tareas, se ejecuta la instrucción de condición de salida en el nodo End.

      5. Si la instrucción de evaluación en el nodo End imprime True en los registros, el bucle continúa desde el paso 1.

      6. Si la instrucción de evaluación en el nodo End imprime False en los registros, todo el bucle termina y el nodo do-while se completa.

Resumen

  • Comparación del nodo do-while con los tipos de bucle estándar:

    • Admite el patrón do...while (ejecutar primero y luego evaluar). También puede implementar indirectamente el patrón foreach mediante la variable del sistema dag.offset con el contexto del nodo.

    • No admite el patrón while, que evalúa la condición antes de ejecutar el cuerpo del bucle.

  • Flujo de ejecución de un nodo do-while:

    1. A partir del nodo Start, las tareas en el cuerpo del bucle se ejecutan secuencialmente según las relaciones de dependencia definidas.

    2. Se ejecuta el código definido por el usuario en el nodo End.

      • Si el nodo End genera True, comienza la siguiente iteración.

      • Si el nodo End genera False, el bucle termina.

  • Los nodos internos de un nodo do-while pueden hacer referencia al contexto del nodo mediante ${dag.context variable name}.

  • DataWorks proporciona automáticamente dos variables del sistema para los nodos internos de un nodo do-while:

    • dag.loopTimes: El conteo del bucle comenzando desde 1.

    • dag.offset: El desplazamiento de la iteración actual respecto a la primera iteración, comenzando desde 0.