Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Talend中实现tLoop?_Talend - Fatal编程技术网

如何在Talend中实现tLoop?

如何在Talend中实现tLoop?,talend,Talend,我是Talend的新手,需要一个示例作业来实现tLoop。如果一个作业失败,我想运行10次。我已经看了文件,但我似乎没有弄明白这一点。这个答案有两个部分 使用tJava创建循环 将失败的连接重试到数据源5次(添加tJavaFlex) \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 第1节:使用tJava创建循环 --------------------------------------- 我只

我是Talend的新手,需要一个示例作业来实现
tLoop
。如果一个作业失败,我想运行10次。我已经看了文件,但我似乎没有弄明白这一点。

这个答案有两个部分

  • 使用tJava创建循环

  • 将失败的连接重试到数据源5次(添加tJavaFlex

  • \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    第1节:使用tJava创建循环

    ---------------------------------------

    我只是编写一个tJava组件,然后迭代到false。 像这样

    步骤1:创建上下文变量

    步骤2:用tJava(tJava1)编写一些java代码

    然后连接部件Ok上的

    步骤3:创建tLoop

    在循环条件中放入上下文
    context。继续操作
    
    在第一次迭代中应该是正确的

    然后迭代

    到下一个tJava(tJava2)

    这个tJava为每次迭代运行不同的代码,直到达到5 我使用这个区域来计算内容,并将值加载到其他上下文中,等等

    然后它运行嵌套部分n次,直到上下文值设置为false

    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    第2节:重试失败的连接

    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    如果需要重试数据库连接

    在tLoop1和tJava2之间添加tJavaFlex,如下所示

    并在3个部分中添加以下代码 开始:

    主要内容:

    完:

    并将
    添加到组件Ok
    tJava
    上,使用代码停止成功循环(tJava3)


    只需使用tLoop->tRunJob,退出条件基于tRunJob的错误/退出代码,这非常简单。这是可行的,但当我在tLoop和第二个tjava之间设置tMSSqlConnection时,它似乎不起作用。我试图做到的是,如果连接失败,请在作业失败之前重试10次。如果你在一个示例工作中有类似的内容,请发布。我在我的第一个答案中添加了第2部分:Adda(tJavaFlex)感谢上面的工作,它正在按预期工作。如果我的连接在重试10次后失败,我想通过tLogcather发送错误消息,说明是什么导致了连接问题。意味着密码过期等。。。我有一个父作业,它有一个tLogcather调用一个childjob,其中包括上面的作业。
    // setting loop flag
    context.continueLooping = true;
    //log.info("Starting job...");
    
    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...");
    
    } 
    
    // 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");
    }
    
    
    }      
    
    context.continueLooping = false;