Попробуйте инновационную платформу для разработки и запуска бизнес-приложений 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
Статьи по теме
Отображение последней записи в коллекции
Просмотрено 140 раз с Fri, Jun 5, 2020

Об операциях
Просмотрено 299 раз с Wed, Mar 11, 2020

Запуск подпроцесса по сотрудникам с чекбоксом
Просмотрено 124 раз с Fri, Feb 28, 2020

Настройка динамического отображения атрибутов
Просмотрено 145 раз с Mon, Jul 13, 2020

Описание конфигурационных файлов
Просмотрено 192 раз с Thu, Mar 5, 2020

Типы данных
Просмотрено 239 раз с Fri, Mar 6, 2020

Округление вверх десятичного числа до двух знаков после запятой
Просмотрено 139 раз с Wed, May 20, 2020

Настройка отмены процесса по кнопке
Просмотрено 212 раз с Fri, Jul 31, 2020

Настройка SSO аутентификации
Просмотрено 220 раз с Mon, Aug 17, 2020

Введение в Руководство системного администратора
Просмотрено 139 раз с Mon, May 18, 2020


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