質問

これは私のプロセスです:

ジョブレイアウトとTjava_1設定

TJAVA_1ではJavaコードを見ることができます。ファイルからデータを解析し、最後の検索ページに到達した場合は値をtrueに設定します。これは、ここに示すように、TLoop_1の停止基準であることを意味します。

tloop configuration

私はTalend変数を間違って取り扱っていますか?Javaコードの基準に達したら、ループが実行を停止する方法はありますか?

役に立ちましたか?

解決

「宣言」または「反復」の値は必要ありません。必要なものは、trueに評価され、ループを終了したい場合はfalseに設定されているブール値である「条件」の変数です。

ベストプラクティスは、実行時に、または子ジョブの開始時にジョブに提供された実際のコンテキストのコンテキスト変数を使用してから、単一のジョブでグローバルマップを使用する場合は、グローバルマップを使用してください。

それでは、Boolean GlobalMap変数をtrueに初期化する必要があります(globalMap.put("loop",true)を使用したTjavaコンポーネントでこれを行うことも、TSetGlobalVarコンポーネントを使用するか、TJAVARow)、GlobalMap変数をGeneralMap変数をfalseに設定できます。

グローバルマップ変数として「ループ」を使用した場合は、TLOOPの「条件」にglobalMap.put("loop",false)を使用します。

働いた簡単な例次のようになります。

ループジョブレイアウト

最初にLOOP変数をLOOP変数に設定します。

tsetglobalvar設定

とwhileループの状態をブール・グローバル変数に設定します。

tloop configuration

そして最後に、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")));
};
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top