Параллельный запуск подпроцесса из текущего шага

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

Этот способ настраивается на вкладке Запуск процесса и доступен для блоков:

  • Задача;
  • Создание элемента;
  • Изменение элемента;
  • Согласование;
  • Ознакомление;
  • Согласование по маршруту;
  • Регистрация документа;
  • Подписать.

Использование вкладки «Запуск процесса»

Запуск подпроцесса одновременно с шагом родительского процесса подходит, например, в следующих случаях:

  • для индивидуальной настройки уведомлений на электронную почту. Например, отправлять специальные оповещения при постановке задачи определённым пользователям;
  • для передачи во внешний объект данных задачи (срока, исполнителя и т. д.) в момент её создания;
  • для упрощения схемы процесса. Например, вынести повторяющиеся действия при постановке задачи в отдельный процесс.

 

начало примечание

Примечание

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

конец примечание

Пример запуска дочернего процесса одновременно с шагом родительского процесса

Вкладка Запуск процесса настраивается одинаково во всех блоках, в которых она доступна. Рассмотрим эту настройку на примере задачи.

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

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

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

Рассмотрим, как это сделать.

Предварительные настройки

  1. В разделе Работа с заказами есть приложение Заказы, а также активирован внешний портал.
  2. На странице портала размещён виджет Входящие задачи.
  3. На портал приглашены сотрудники склада, зарегистрированные в системе как внешние пользователи. Они также добавлены в группу Склад, созданную на уровне раздела Работа с заказами.
  4. На уровне приложения Заказы есть два процесса:
  • основной — Обработка заказа. Здесь сотрудники склада указаны в зоне ответственности Склад. На ней размещён блок Задача для проверки комплектации на складе;
  • дочерний — Оповещение для сотрудников склада о задаче на портале. Здесь настроено получение данных по задаче из родительского процесса и генерация письма с оповещением о назначенной задаче для сотрудников склада. Этот процесс запускается одновременно с задачей родительского процесса.

Шаг 1. Запуск дочернего процесса вместе с постановкой задачи в основном процессе

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

start-subprocess-tab-1

Для этого:

  1. Откройте настройки блока Проверить комплектацию на складе и перейдите на вкладку Запуск процесса.
    start-subprocess-tab-2
  2. Заполните поля:
  • Процесс — выберите опубликованный процесс, который будет вызываться в рамках родительского;
  • Выполнять от имени — выберите, кто отобразится в карточке экземпляра в качестве инициатора процесса;
  • Асинхронный запуск — доступен только асинхронный запуск, т. е. подпроцесс идёт параллельно родительскому. Из‑за этого получение выходных переменных из дочернего в родительский процесс невозможно;
  • Связать с полем — автоматически создаётся связь с текущей задачей, что позволяет обращаться к её данным в скриптах подпроцесса. Для этого используйте системное свойство __task. В нашем примере на шаге 2 мы передадим в дочерний процесс её название, идентификатор и исполнителей, чтобы использовать эту информацию для генерации оповещения на электронную почту.
     
    Также в ассоциированной ленте связанной задачи отобразятся события, происходящие в рамках подпроцесса, например, возникшие ошибки или переназначение задачи;
  • Прерывание процесса — задайте правила прерывания экземпляров процесса. Они будут действовать только в рамках текущего процесса и не затронут родительский, из которого запустится подпроцесс.
     
    Подробнее об опциях Процесс, Выполнять от имени и Прерывание процесса читайте в статье «Запуск процесса», т. к. они заполняются и действуют одинаково.
  1. На вкладке Входные и выходные атрибуты можно сопоставить контекстные переменные одного типа. Тогда их значения передадутся из родительского процесса в дочерний при запуске последнего. В нашем примере это не требуется.
     
    Системные свойства задачи, такие как её идентификатор, название и исполнители, не доступны в этом сопоставлении — их мы получим в скрипте через системное свойство __task.
  2. Сохраните настройки блока Задача и опубликуйте процесс.

Шаг 2. Получение данных связанной задачи в дочернем процессе

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

start-subprocess-tab-3

Для этого:

  1. В контексте дочернего процесса создайте переменные:
  • Сотрудники склада (warehouseStaff) — тип Пользователи (Несколько) для получения исполнителей задачи и их электронной почты;
  • Название задачи (name_task) — тип Строка (Строка) для получения названия задачи из родительского процесса и передачи её в оповещение на электронную почту;
  • Ссылка на портал (link_portal) — тип Строка (Строка) для формирования ссылки на поставленную задачу и добавления её в оповещение на электронную почту.
  1. В блоке Скрипт создайте функцию generateEmail() для получения данных из родительского процесса, которые понадобятся в оповещении.

Пример скрипта для подготовки данных для генерации письма

  1. Перейдите в настройки блока Оповещение на email и укажите:
  • в поле Получатель* — нажмите значок {+} и выберите в контекстной переменной Сотрудники склада поле Электронная почта. В эту переменную получим исполнителей задачи с помощью скрипта. Пример заполнения: {$warehouseStaff.email};
  • тему письма;
  • в поле Текст письма* используйте контекстные переменные, в которые с помощью скрипта будет получено название задачи и сформирована ссылка на неё. Пример сообщения: «На портале вам поставлена задача "{$name_task}". Перейдите по ссылке для её выполнения: {$link_portal}».
     
    Где:
    • {$name_task} — контекстная переменная Название задачи, в которую записывается название, полученное с помощью скрипта;
    • {$link_portal} — контекстная переменная Ссылка на портал, в которую записывается ссылка на задачу, сформированная с помощью скрипта.
  1. Сохраните настройки блока и опубликуйте процесс.

Теперь, когда в родительском процессе сотрудникам склада будет поставлена задача Проверить комплектацию на складе, запустится дочерний процесс. В нём с помощью скрипта определится название и исполнители задачи, а также сформируется ссылка на неё во внешнем портале. Затем эти данные будут отправлены на электронную почту сотрудников склада. В письме они смогут перейти по ссылке в карточку задачи.