Поведение 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)
Вы можете использовать его как: