У элементов [Читать данные] и [Вызвать веб-сервис] могут быть исходящие параметры типа “Коллекция”. Чтобы иметь возможность работать с элементами коллекции (отдельными записями одной коллекции), ее необходимо обработать.
Есть несколько способов обработки коллекции:
-
Коллекцию записей можно передать в другой параметр типа “коллекция”. Например, коллекцию записей можно передать в элемент [Вызвать веб-сервис], для которого задан параметр вызова с типом “коллекция”.
-
Также обработать параметры типа “коллекция” можно с помощью элемента [Задание-сценарий]. Например, можно использовать сценарий для преобразования коллекций записей в отдельные записи, которые можно передать в другие элементы процесса.
-
Используйте элемент [Подпроцесс], чтобы по каждой из записей коллекции запускался отдельный экземпляр подпроцесса. Если любой из входящих параметров элемента [Подпроцесс] передается в коллекцию данных, то для каждой записи коллекции автоматически запустится отдельный экземпляр подпроцесса.
Использование подпроцесса для обработки параметров коллекции
Наиболее удобный способ работы с коллекциями данных — это использование подпроцессов. Этот способ не требует написания кода, как элемент [Задание-сценарий], а также не ограничен возможностями стороннего веб-сервиса, как элемент [Вызвать веб-сервис].
Общая последовательность обработки коллекции с помощью элемента [Подпроцесс]:
Подготовьте процесс, который будет обрабатывать экземпляры коллекции данных (он будет использоваться как подпроцесс).
В родительский процесс добавьте элемент [Подпроцесс] и в настройках элемента укажите подпроцесс, созданный на предыдущем шаге.
Сопоставьте входящие и двунаправленные параметры элемента [Подпроцесс] с параметрами коллекции.
Подготовить процесс, который будет обрабатывать отдельные экземпляры коллекции
Создайте новый или отредактируйте существующий процесс, который будет работать с экземпляром коллекции как с отдельной записью. Например, для отправки email-сообщения контактам из списка (коллекции) подготовьте процесс, который будет отправлять письмо отдельному контакту (Рис. 65).
Входящие параметры подпроцесса должны соответствовать встроенным параметрам коллекции. Например, для отправки email-сообщения нужен адрес электронной почты контакта. Это означает, что коллекция данных должна содержать колонку [Email], а процесс отправки письма должен содержать соответствующий входящий параметр [Email], значение которого будет передаваться в элемент [Отправить email].
На заметку
Перейти к диаграмме подпроцесса можно, нажав (для создания нового подпроцесса) либо (для редактирования существующего подпроцесса) в поле [Какой процесс запустить] панели настроек элемента [Подпроцесс]. Подробнее читайте в статье “Настройки элемента [Подпроцесс]”.
Настроить элемент [Подпроцесс]
Добавьте элемент [Подпроцесс] на диаграмму процесса, из которого необходимо получить параметр коллекции. В поле [Какой процес запустить] панели настроек элемента [Подпроцесс] выберите процесс, который будет обрабатывать экземпляры коллекции, и настройте получение входящих параметров выбранного процесса (Рис. 66):
Важно
Параметры каждого элемента [Подпроцесс] могут быть сопоставлены исключительно с одной и той же коллекцией данных. Настройте передачу в подпроцесс дополнительных параметров той же коллекции данных родительского процесса, параметры которой уже сопоставлены с параметрами данного подпроцесса. Параметры, которые не сопоставлены с коллекциями, могут использоваться без ограничений.
В результате элемент [Подпроцесс] поэлементно обработает всю коллекцию данных. Многоэкземплярный подпроцесс запускает отдельные экземпляры подпроцесса для каждого из элементов коллекции данных, используя значения параметров.
Многоэкземплярый подпроцесс может выполняться в следующих режимах (Рис. 67):
-
Последовательный. Экземпляры подпроцесса запускаются последовательно. Новый экземпляр подпроцесса стартует после выполнения предыдущего экземпляра. Этот режим установлен по умолчанию.
-
Параллельный. Экземпляры подпроцесса запускаются одновременно. Новые экземпляры не ждут завершения уже стартовавших. Экземпляры подпроцесса не обязательно будут завершаться в том же порядке, в котором они были запущены.
После выполнения последнего экземпляра подпроцесса элемент [Подпроцесс] актуализирует значения своих исходящих и двунаправленных параметров из соответствующих параметров выполненного экземпляра и активирует свои исходящие потоки.
Это означает что, после обработки коллекции данных элемент [Подпроцесс] может вернуть новую коллекцию, основанную на данных входящей коллекции. Например, для подпроцесса отправки уведомлений коллекции контактов можно выполнить настройку таким образом, чтобы в результате получать коллекцию результатов отправки и/или ошибок.
При параллельном режиме выполнения подпроцессов исходящие параметры добавляются в результирующую коллекцию сразу по завершении соответствующего экземпляра подпроцесса. Таким образом, порядок добавления элементов в результирующую коллекцию непредсказуем. Например, экземпляр процесса, сопоставленный с первым элементом входящей коллекции данных, может завершиться последним.
Смотрите также