문제
여기 내 프로세스가 있습니다 :
TJAVA_1의 Java 코드를 볼 수 있습니다.파일에서 데이터를 파싱하고 마지막 검색 페이지에 도달하면 값을 true로 설정합니다.이것은 여기에 표시된 것처럼 TLOOP_1의 정지 기준이 될 것입니다.
Talend 변수를 잘못 취급하고 있습니까?Java 코드의 기준에 도달하면 루프가 실행 중단을 중단하려면 어떻게합니까?
해결책
"선언"또는 "반복"값이 필요하지 않습니다. 원하는 것은 true
로 평가되는 부울 인 "조건"의 변수이며 루프를 종료하려는 경우 false
로 설정됩니다.
모범 사례는 런타임에 또는 하위 작업을 시작할 때 작업에 제공된 실제 컨텍스트에 대한 컨텍스트 변수를 사용하고 단일 작업에서 전역 사용 가능한 변수에 대해 전역 맵을 사용합니다.
이 경우 boolean globalmap 변수를 true로 설정 한 다음 (globalMap.put("loop",true)
와 함께 tjava 구성 요소 에서이 작업을 수행하거나 tsetglobalvar 구성 요소를 사용하십시오) tjavarow에서 globalmap 변수를 globalMap.put("loop",false)
로 false로 설정할 수 있습니다.
"루프"를 GlobalMap 변수로 사용하려면 TLOOP의 "조건"에서 ((Boolean)globalMap.get("loop"))
를 사용할 수 있습니다.
이 작업의 간단한 예제는 다음과 같습니다.
먼저 루프 변수를 최소한 시작하도록 원하는대로 루프 변수를 true
로 설정했습니다!
을 누른 다음 WHILL 루프의 상태를 부울 글로벌 변수로 설정합니다.
그리고 마침내 우리는 무언가를 수행하고 조건부로 전역 변수를 false로 설정하고 루프를 끝내는 Tjava 구성 요소에서 일부 코드를 실행합니다. 루프를 종료합니다.
if (((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION")) == 3) {
globalMap.put("loop", false);
} else {
System.out.println(((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION")));
};
.