Цикл Цикл

Компонент может применяться для циклического исполнения выбранного пользователем узла. В качестве такого узла, как правило, используется Подмодель, в которой задаются действия выполняемые над данными в каждой итерации. Возможны следующие способы задать итерации цикла:

  1. Заданное количество раз — аналог "FOR ... TO ...".
  2. Количество итераций задается условием выхода из цикла — аналог "DO ... WHILE ...". На предмет соответствия этому условию анализируется значение выходной переменной узла, заключенного в цикл.
  3. Количество итераций задается количеством групп, на которые разделяются строки входного набора данных — аналог "FOR EACH". В предельном случае количество итераций равно количеству строк входного набора.

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

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

Порты

При первоначальном создании узел не имеет портов. После задания параметров в мастере настройки узел цикла имеет набор портов узла, заключенного в цикл, кроме выходных портов для переменных.

Мастер настройки

Шаг 1. Выбор узла цикла

На данном этапе предоставляется список узлов текущего модуля. Для заключения узла в цикл следует отметить его радиокнопкой и перейти к следующему шагу.

Интерфейс мастера предоставляет возможность осуществлять поиск узлов в общем списке с помощью фильтров: по имени и комментарию узла.

Не допускается выполнение в цикле обработчиков, созданных на базе следующих компонентов: Выполнение узла, Узел-ссылка, Условие и Цикл.

Шаг 2. Настройка вида цикла

Исходный узел — информационное поле, отображающее узел, который заключается в цикл.

Вид цикла — определение логики работы цикла, задается радиокнопкой:

  • Заданные итерации — данный вид цикла будет выполняться столько раз, сколько будет задано в параметре "Количество итераций".
  • Цикл с постусловием — количество итераций такого цикла регулируется условием, на соответствие которому при каждой итерации проверяется переменная. На итерации, при которой значение переменной удовлетворяет условию, работа цикла заканчивается. Задаются следующие настройки:
    • Переменная — выбор переменной для условия выхода из цикла. Список выбора содержит переменные, передаваемые на выходные порты узла, заключенного в цикл.
    • Условие завершения — отношение сравнения переменной со Значением.
    • Значение — поле для ввода значения, с которым будет сравниваться переменная. Следует учитывать, что в узле, заключенном в цикл, должна присутствовать операция над этой переменной, которая приводит к выполнению условия выхода из цикла, иначе цикл получится бесконечным.
  • Групповая обработка — этот цикл разделяет исходные данные на группы по выбранному критерию, благодаря чему узел, заключенный в цикл, обрабатывает каждую группу данных отдельно. Критерий разделения определяется параметром "Вид групповой обработки":
    • Фиксированный размер групп — исходный набор данных будет последовательно разделен на группы, размер которых определяется параметром "количество строк в группе". Если количество строк в группе не кратно количеству строк в исходном наборе, размер последней группы окажется меньше.
    • Фиксированное количество групп — исходный набор данных будет разделен на заданное количество групп. Это количество задается параметром "Количество групп" . В случае, если количество групп не кратно количеству строк в исходном наборе, в некоторых группах количество строк будет отличаться, и они будут равномерно распределены среди остальных групп.
    • Разбиение по уникальным значениям полей — следует выбрать в списке поля исходного набора, задающие уникальный идентификатор группы строк. Количество групп будет равно количеству уникальных идентификаторов.

Параллельная обработка — применяется для ускорения вычислений при работе цикла, количество потоков определяется параметром "максимальное количество потоков". Параллельная обработка не поддерживается циклом с постусловием.

Важно: В некоторых случаях применение параллельной обработки недопустимо. Например, если на каждой итерации происходит обращение к источнику данных, не допускающему параллельные запросы.

Добавлять идентификаторы итераций — флаг добавляет в выходную таблицу поле "Идентификатор итерации", где для каждой строки указан номер итерации, на которой строка была создана.

Игнорировать ошибки — флаг отключает прерывание выполнения цикла при обнаружении ошибок.

Переменная цикла — переменная, которой в ходе работы цикла присваивается номер текущей итерации. Нумерация итераций осуществляется с 0. Переменная выбирается из списка переменных входных портов узла, заключенного в цикл.

Шаг 3. Сопоставление переменных

Данный этап становится доступен только при заключении в цикл Подмоделей, имеющих входные и выходные порты для переменных. На этом этапе настраивается передача значений выходных переменных соответствующим входным переменным на следующей итерации цикла.

Для создания соответствия входных и выходных переменных следует перетащить обозначение входной переменной на обозначение выходной. Данное соответствие графически отобразится линией связи. Такие связи можно удалить кнопкой Удалить связь. Связывать переменные на этом этапе необязательно.

results matching ""

    No results matching ""