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