Pregunta

Aquí está mi proceso:

Job Layout and tJava_1 configuration

Puedes ver el código Java en tJava_1.Analiza los datos del archivo y, si llegó a la última página de búsqueda, establecerá un valor en verdadero.Este debe ser el criterio de parada para tLoop_1, como se muestra aquí:

tLoop configuration

¿Estoy manejando mal las variables de Talend?¿Cómo puedo detener la ejecución del bucle una vez que alcancé los criterios en mi código Java?

¿Fue útil?

Solución

No necesita los valores de "Declaración" o "Iteración".Lo que desea es una variable en la "Condición" que sea booleana y que se evalúe como true y está configurado para false cuando quieras finalizar el ciclo.

Las mejores prácticas dicen que debe usar variables de contexto para los contextos reales proporcionados a un trabajo, ya sea en tiempo de ejecución o al iniciar un trabajo secundario, y luego usar globalMap para las variables disponibles globalmente en un solo trabajo.

Entonces, en este caso, debes inicializar una variable booleana globalMap establecida en verdadero (podrías hacer esto en un componente tJava con globalMap.put("loop",true) o use el componente tSetGlobalVar) y luego en su tJavaRow puede configurar la variable globalMap en falso con globalMap.put("loop",false).

Si tuviera que usar "bucle" como su variable globalMap entonces usaría ((Boolean)globalMap.get("loop")) en su "Condición" en el tLoop.

Un ejemplo simple y práctico de esto podría verse como el siguiente:

While loop job layout

Primero configuramos la variable de bucle en true ¡Como queremos que al menos comience!

tSetGlobalVar configuration

Y luego establecemos la condición del bucle while en la variable global booleana:

tLoop configuration

Y finalmente ejecutamos un código en el componente tJava que hace algo y establece condicionalmente la variable global en falso, finalizando el ciclo:

if (((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION")) == 3) {
    globalMap.put("loop", false);
} else {
    System.out.println(((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION")));
};
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top