質問
これは私のプロセスです:
TJAVA_1ではJavaコードを見ることができます。ファイルからデータを解析し、最後の検索ページに到達した場合は値をtrueに設定します。これは、ここに示すように、TLoop_1の停止基準であることを意味します。
私はTalend変数を間違って取り扱っていますか?Javaコードの基準に達したら、ループが実行を停止する方法はありますか?
解決
「宣言」または「反復」の値は必要ありません。必要なものは、true
に評価され、ループを終了したい場合はfalse
に設定されているブール値である「条件」の変数です。
ベストプラクティスは、実行時に、または子ジョブの開始時にジョブに提供された実際のコンテキストのコンテキスト変数を使用してから、単一のジョブでグローバルマップを使用する場合は、グローバルマップを使用してください。
それでは、Boolean GlobalMap変数をtrueに初期化する必要があります(globalMap.put("loop",true)
を使用したTjavaコンポーネントでこれを行うことも、TSetGlobalVarコンポーネントを使用するか、TJAVARow)、GlobalMap変数をGeneralMap変数をfalseに設定できます。
グローバルマップ変数として「ループ」を使用した場合は、TLOOPの「条件」にglobalMap.put("loop",false)
を使用します。
働いた簡単な例次のようになります。
最初にLOOP変数をLOOP変数に設定します。
とwhileループの状態をブール・グローバル変数に設定します。
そして最後に、Tjavaコンポーネントでいくつかのコードを実行し、条件付きでグローバル変数をfalseに設定し、ループを終了します。
if (((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION")) == 3) {
globalMap.put("loop", false);
} else {
System.out.println(((Integer)globalMap.get("tLoop_2_CURRENT_ITERATION")));
};
.