如何达到所需标准时结束tLoop

Zed*_*gan 3 java talend

这是我的过程:

作业布局和tJava_1配置

您可以在tJava_1中看到Java代码.它解析文件中的数据,如果它到达最后一个搜索页面,它会将值设置为true.这是tLoop_1的停止标准,如下所示:

tLoop配置

我处理Talend变量错了吗?一旦达到Java代码中的条件,如何阻止循环运行?

yda*_*coR 10

您不需要"声明"或"迭代"值.你想要的是"条件"中的一个变量,它是一个布尔值,当你想要结束循环时,它会计算true并设置为false.

最佳实践表明,您应该在运行时或启动子作业时将上下文变量用于提供给作业的实际上下文,然后在单个作业中使用globalMap作为全局可用变量.

所以在这种情况下你应该初始化一个布尔的globalMap变量设置为true(你可以在tJava组件中使用globalMap.put("loop",true)或使用tSetGlobalVar组件),然后在你的tJavaRow中你可以将globalMap变量设置为false globalMap.put("loop",false).

如果您使用"loop"作为globalMap变量,那么您将((Boolean)globalMap.get("loop"))在tLoop 中的"Condition"中使用.

一个简单的工作原理可能如下所示:

循环作业布局

首先我们将循环变量设置true为我们希望它至少开始!

tSetGlobalVar配置

然后我们将while循环的条件设置为布尔全局变量:

tLoop配置

最后我们在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")));
};
Run Code Online (Sandbox Code Playgroud)