Попробуйте инновационную платформу для разработки и запуска бизнес-приложений Comindware Business Application Platform

Запросить демонстрацию

Настройка возможности опционального запуска дополнительных задач в процессе

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

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

 

Сценарий: Процесс согласования договора.

Согласующий 1 получает задачу «Проверить договор», он может:

  1. Принять решение самостоятельно и закрыть задачу, если ему не нужно получить никаких уточнений.
  2. Запросить дополнительную проверку Согласующего 2 и на основании его комментариев принять решение, и только потом закрыть задачу.

Таким образом, здесь нужна возможность запустить параллельную задачу из текущей, чтобы Согласующий 1 получил ответ от Согласующего 2 до завершения своей задачи.

 

Описание:

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

Технический процесс в данном случае будет отправлять сообщение в ожидающее событие, в случае добавления Согласующего 2. Его нужно будет создать по новой сущности (скажем, «Добавления согласующих»).

Т.о., нам понадобится текстовый (или логический) атрибут «да/нет», в который мы будем передавать сообщение, на основании которого система поймет, назначать вторую задачу («да») или завершить токен («нет»).

Также необходимо отметить такой элемент как Process ID. Это номер экземпляра процесса. Нам он будет важен при отправке сообщения, чтобы указать координаты, куда это сообщение отправить. Так как Process ID – это системный атрибут процесса, в текущем шаблоне записи в ходе настройки нужно будет создать атрибут “processid” и заполнять его на выходе из стартового процесса атрибутом Process ID.

 

Настройка:

1. Создайте схему основного процесса по следующему примеру:

Схема процесса

Данная схема реализует описываемый пример посредством отправки и получения сообщения внутри процесса. Если Согласующий 1 завершает согласование, система в любом случае отправляет сообщение (отправка «нет»), и токен во второй параллельной ветке «пропускает» задачу на Согласующего 2. Если же Согласующий 1 решает запросить дополнительное согласование (при помощи настроенной для этой цели кнопки на форме задачи), по кнопке запускается технический процесс, который отправляет сообщение «да». Получающее сообщение событие видит «да» и назначает задачу на Согласующего 2.

2. Создайте технический процесс для добавления Согласующего 2 по новой сущности. В текущем шаблоне записи создайте ссылку на новый шаблон.

Схема технического процесса

3. В текущем шаблоне записи создайте текстовый атрибут «processid». На выходе из стартового события заполните его системным атрибутом ProcessID.

4. Создайте текстовый атрибут «да/нет», куда будет передаваться информацию, нужен Согласующий 2 или нет, чтобы назначить или не назначить вторую задачу. На выходе из задачи Согласующий 1 заполните этот атрибут значением «нет».

5. Настройте приём-отправку сообщений (См. Отправка сообщения и Получение сообщения).

  • Отправка. Тип сообщения – уведомление (создать новое, добавить текстовое поле «да/нет»). В настройках промежуточного события заполните поле «да/нет» атрибутом «да/нет». В экземпляре процесса укажите $processid.
    • В техническом процессе поле «да/нет» заполните значением «да», в экземпляре процесса укажите выражение (from a in db->главный шаблон записи where a->ссылка на шаблон Добавление Согласующего 2 == $id select a->processid).
  • Получение. Выберите из существующих – уведомление. (т.е. пути передачи данных для получения указвать НЕ НУЖНО)

6. На форму задачи Согласующий 1 вынесите кнопку «Добавить согласующего 2», запускающую технический процесс (связанный, через атрибут – ссылку).

7. Тестируйте.

Вложения
У этой статьи нет вложений.
Обратная связь
Security Code
Статьи по теме
Снятие копии базы данных
Просмотрено 165 раз с Thu, Mar 5, 2020

Аудит
Просмотрено 161 раз с Thu, Mar 5, 2020

Остановка процесса
Просмотрено 155 раз с Tue, Jun 16, 2020

Настройка прав доступа в пользовательском интерфейсе
Просмотрено 67 раз с Wed, Mar 11, 2020

Сломалась боковая навигация
Просмотрено 129 раз с Fri, Mar 27, 2020

Старт связанного процесса по нескольким записям
Просмотрено 51 раз с Mon, Sep 28, 2020

Функции
Просмотрено 240 раз с Fri, Mar 6, 2020

Выгрузка всех документов стенда
Просмотрено 118 раз с Wed, Feb 26, 2020

Фильтр списка по процессам с ошибками
Просмотрено 137 раз с Fri, Feb 28, 2020

Трансфер метаданных
Просмотрено 106 раз с Fri, Mar 6, 2020


Исследования осуществляются <br>ООО «Колловэар» при грантовой <br>поддержке Фонда «Сколково»
Comindware