Как реализовать tLoop в Talend? - PullRequest
0 голосов
/ 14 ноября 2018

Я новичок в Talend и мне нужно пример работы для реализации tLoop.Я хочу запустить работу 10 раз, если она не удалась.Я посмотрел на документы, но не могу понять это.

1 Ответ

0 голосов
/ 14 ноября 2018

Этот ответ состоит из 2 разделов

  1. Создание цикла с tJava

  2. Повторное неудачное подключение к источнику данных 5 раз (с добавлением tJavaFlex )

___________________________________

РАЗДЕЛ 1: Создание цикла с помощью tJava

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

Я просто пишу компонент tJava, а затем перебираю в false.Вот так

Шаг 1: создать контекстную переменную

enter image description here

Шаг 2: напишите некоторый код Java в tJava (tJava1)

// setting loop flag
context.continueLooping = true;
//log.info("Starting job...");

, затем подключите On Component Ok

enter image description here

Шаг 3: Создайте tLoop

в условии цикла, поместите ваш контекст context.continueLooping, который должен быть истинным на первой итерации.

enter image description here

затем итерация

enter image description here

до следующего 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.

enter image description here

___________________________

РАЗДЕЛ 2: ДЛЯ ПОВТОРИТЬ Сбой соединения

___________________________

, если вам необходимо повторить попытку подключения к БД.

добавить tJavaFlex между tLoop1 и tJava2 следующим образом:

enter image description here

и добавить следующий код в 3 раздела Start:

// start part of your Java code
try{   

Main:

// 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; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...