Поведение tJavaFlex при изменении положения цикла

Возникли некоторые проблемы на работе, и я подозреваю, что это связано с отсутствием понимания tJavaFlex. Я генерирую 10 строк в этом тестовом задании и создаю цикл внутри tJavaFlex:

введите описание изображения здесь

Таким образом, поступает 10 строк и цикл в разделе "Начало и конец". Я ожидал, что для каждого входящего ряда будет сгенерировано 10 идентичных выходных строк. И чтобы я видел итерации 0,1,2,3....9 для каждой строки.

То, что я получил, было этим. Мне кажется, что вся работа выполняется 10 раз, и поэтому у меня есть 100 случайных значений, поступающих через поток от tRowGenerator.

введите описание изображения здесь

Если я переместлю цикл for в раздел "Основной код", я приблизлюсь к ожидаемому поведению. Я ожидаю, что каждая строка будет повторяться 10 раз, и для 1 входящей строки будет получено 10 выходных строк. Что я получаю, так это

введите описание изображения здесь

введите описание изображения здесь

Но даже тогда мой tLogRow генерирует только одну строку для каждых 10 итераций, как кажется (посмотрите на вывод tLogRow после итерации 9 выше, почему бы не 10 элементов?). Я думал, что получу 10 строк для каждого входящего ряда, и я увижу это в tLogRow.

Что мне нужно сделать, это взять значение из входящего поля, выполнить некоторый анализ reg exp и разбить его на массив, а затем для каждого элемента в массиве создать строки в выходном потоке. то есть 1 входящая строка может быть превращена в x количество строк, выходящих с помощью метода string.split().

Может кто-нибудь объяснить поведение, описанное выше, а также посоветовать, как лучше всего ввести одно значение, выполнить некоторые манипуляции с Java, а затем генерировать несколько выходных строк?

Любой совет приветствуется.

3 ответа

Вам не нужно создавать свой собственный цикл.

Помещая цикл for в стартовый код, ваш основной код будет запускаться циклом и входящими строками и выполняться n*r раз.

Поведение subjob, которое содержит tJavaFlex, показывает, что компонент до того, как tJavaFlex включен в его начальный код, а компонент after включен в конечный код, но это может зависеть от многих условий, таких как распространение данных и тип триггера.

стартовый код:

System.out.print("tJavaFlex is starting...");
int i = 0;

Основной код:

i++;
System.out.print("tJavaFlex inside Main Code...iteration:"+i);
row8.ITEM_NAME = row7.ITEM_NAME;
row8.ITEM_COUNT = row7.ITEM_COUNT; 

Код окончания:

System.out.print("tJavaFlex is ending..."); 
System.out.print(row7.ITEM_NAME);

Вместо основного потока в строке 5 попробуйте использовать повторный поток для подключения tJavaFlex.

Да, вы не используете это правильно.

  • Начальная часть предназначена для начальной переменной. (выполняется за один раз до первой буксировки)
  • В основной вы положили свой цикл (выполняется один раз в каждом ряду)
  • В финале вы храните в глобальной переменной, например. (Выполняется один раз после последней строки)

Основной код будет выполняться в каждой строке в tjavaflex. Так что не помещайте цикл for внутри, вы можете сделать как пример на экране.

У тебя комплимент tjavaflex нормальный. у вас есть десять строк, поэтому каждая строка цикла for будет выполняться 10 раз (i<10)

Вы можете использовать его как:

введите описание изображения здесь

Другие вопросы по тегам