我是Talend的新手,需要一个示例工作来实现VALIDATOR=$(
# replace " with \"
sed 's/\"/\\\"/g' /tmp/schema-validator.json |
# delete newlines
tr -d '\n' |
# squeeze spaces (delete all but one space)
tr -s ' ')
。如果作业失败,我想运行10次。我看了看文档,但似乎无法弄清楚。
答案 0 :(得分:3)
此答案包括2个部分
使用tJava创建循环
对失败的数据源重新连接5次(添加 tJavaFlex )
___________________________________
第1部分:使用tJava创建循环
-------------------------------------------- ---------------
我只是编写了一个tJava组件,然后迭代为false。 像这样
步骤1:创建上下文变量
步骤2:用tJava(tJava1)编写一些Java代码
// setting loop flag
context.continueLooping = true;
//log.info("Starting job...");
然后连接On Component Ok
步骤3:创建循环
在循环条件下放置您的上下文context.continueLooping
在第一次迭代中应该是正确的。
然后迭代
到下一个tJava(tJava2)
if ( ((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 1)
{
// code
}
else if(((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 2)
{
// code
}
else if (((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 3)
{
// code
}
else if (((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 4)
{
// code
}
else if (((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) == 5)
{
// code
context.continueLooping = false;
// log.info("DONE");
}
else
{
context.continueLooping = false;
// log.error("out of bounds...");
}
此tJava为每次迭代运行不同的代码,直到达到5 我用这个区域来计算东西,并将价值加载到其他上下文中等等。
然后它将嵌套部分运行n次,直到上下文值设置为false。
___________________________
第2部分:重试失败的连接
___________________________
如果您需要重试数据库连接。
像这样在tLoop1和tJava2之间添加一个tJavaFlex
,并在3个部分中添加以下代码 开始:
// start part of your Java code
try{
主要:
// here is the main part of the component,
// a piece of code executed in the row
// loop
if ( ((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) > 1)
{
Thread.sleep(10000);
}
结束:
// end of the component, outside/closing the loop
}catch (Exception e) {
if ( ((Integer)globalMap.get("tLoop_1_CURRENT_ITERATION")) > 5)
{
context.continueLooping = false;
}
else
{
System.out.println("Connection failed. Retrying...next");
}
}
并向On Component Ok
tJava
添加代码,以在成功执行(tJava3)时停止循环
context.continueLooping = false;