Граничные непрерывающие события BPMN. Моделирование и выполнение

Настройка выполняемых процессов

В этом обзоре мы покажем основные принципы моделирования граничных непрерывающих элементов BPMN на примерах. В практическом использовании рассмотрим следующие варианты с передачей данных в граничные элементы с использованием параметров:
  • Запуск пользователем из формы обработки для задачи. Условие.
  • Запуск регламентным заданием с передачей параметров. Таймер.
  • Моделирование для запуска из подпроцесса. Эскалация.
  • Запуск из подпроцесса с передачей параметров. Отправка сообщения.
Приватный вопрос Вы можете задать напрямую нам. Для публичного обсуждения используйте форум или комментарии внизу.

Задать вопрос
Для чего нужны граничные непрерывающие события BPMN.
Из описания нотации BPMN следует, что такие элементы должны использоваться в тех случаях, когда необходимо создать поток действий параллельный основному. Создаваемый поток действий должен запуститься и выполниться без завершения основного потока. Инициировать дополнительный поток (несколько потоков) могут как события внутри подпроцесса, так и внешние события (например, таймер). После выполнения, дополнительный поток может как завершится, так и слиться с основным потоком. На диаграмме BPMN такой элемент должен обозначаться как промежуточное событие, прикрепленное к границе действия (подпроцесса). В данной статье мы рассмотрим примеры моделирования и выполнения бизнес-процессов с такими элементами.

Моделирование для использования без подпроцесса.
Начнем с моделирования простых вариантов, когда граничное непрерывающее событие прикреплено к границе действия. Для примера возьмем следующий простой бизнес-процесс "Согласование заявки". БП стартует при получении заявки, которую необходимо рассмотреть и согласовать. Если при рассмотрении возникла необходимость в дополнительной информации, то исполнитель задачи "Согласовать" должен поставить автору заявки задачу с указанием требуемой дополнительной информации (передать данные через граничное непрерывающее событие в задачу "Уточнить заявку"). При этом задача "Рассмотреть заявку" должна оставаться открытой на весь период уточнения. В данном случае для граничного непрерывающего элемента можно установить тип "Условие".

1_prikkartinka_07aac334-b26a-42bf-91b5-98ddd9dca89d.png
Создание элементов на диаграмме.

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

2_prikkartinka_5310b1dc-dc80-4388-9518-7b2e9a43f9ca.png

После выбора команды контекстного меню, будет отображен запрос на ввод наименования элемента. Это наименование будет отображено в Дереве процессов и на диаграмме.

3_prikkartinka_bca2b6b4-4506-46d5-a8a5-7b831db56d19.png

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

4_prikkartinka_7c3d423b-e1a8-45e5-b619-150e4a4ec5f3.png

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

5_prikkartinka_959f956f-65f4-4c32-84d8-54907a154d7e.png
Использование в выполняемых процессах.
Рассмотрим настройку элементов BPMN "Граничное непрерывающее событие" в диаграммах, предназначенных для выполнения. По условиям использования, от этого элемента должен стартовать еще один поток действий, который должен отработать и завершиться без завершения основного потока. Дополнительный поток может быть создан как пользователем, так и BPMS системой. Рассмотрим оба варианта запуска с передачей параметров в граничное событие. Дальше мы будем рассматривать только настройку основных элементов для выполнения. Подразумевается, что пользователь системы уже настроил остальные элементы диаграммы для их выполнения.

Запуск пользователем из формы обработки для задачи с передачей параметров.
Настройка граничного непрерывающего события BPMN "Требуется уточнение".
По условиям выполнения БП, в задачу "Уточнить заявку" должны передаваться данные из задачи "Рассмотреть заявку" через граничное событие "Требуются уточнения". В качестве передаваемых данных возьмем текст с описанием требуемой дополнительной информации. Для передачи данных необходимо настроить их передачу через параметры. Для этого нажатием кнопки F2 заходим в свойства элемента "Требуются уточнения" диаграммы и заполняем параметры.

6_prikkartinka_02f77ba6-5ac5-44b2-a406-59c21f52a6d4.png

На закладке "Параметры входа" добавляем параметр "ТекстЗапросаУточнения". Этот параметр мы будем заполнять кодом в обработчике кнопки "На согласование" формы задачи "Рассмотреть заявку". На закладке "Параметры выхода" также добавляем параметр "ТекстЗапросаУточнения". Заполнение на параметрах выхода необходимо для дальнейшей миграции параметра. Этот параметр будет заполнен автоматически при выполнении задачи граничного непрерывающего события.

Настройка задачи "Рассмотреть заявку".

7_prikkartinka_f3fcf0c8-3bcb-465c-a485-7d46f8db03a5.png

Задача "Рассмотреть заявку" должна выполняться с использованием внешней формы задачи. Это необходимо по тем причинам, что задачи на граничных непрерывающих элементах могут быть созданы только кодом, т.к. необходимо запустить исходящую задачу так, чтобы текущая задача-владелец осталась открытой. Для этого в настройках задачи указываем выполнение с использованием обработки.

После настройки внешней формы и добавления формы в программу, приступаем к выполнению БП. Стартованный бизнес-процесс из Монитора БП выполнил автоматически стартовую задачу и остановился на задаче "Рассмотреть задачу". При клике на карте маршрута (пользователь открывает свои задачи из панели задач) будет открыта форм задачи, в которой проверяющий может указать текст и нажать кнопку "На согласование".
В результате выполненного кода будет создана и выполнена автоматически задача "Требуется уточнение". Элемент диаграммы для создания задачи будет найден по коду. Где брать код см. на картинке выше. Текст запроса уточнения будет передан задаче "Уточнить заявку" через параметры элемента "Требуется уточнение".

Настройка задачи "Уточнить заявку".

Для выполнения этой задачи необходимо добавить также параметр входа "ТекстЗапросаУточнения". Значение этого параметра будет заполнено автоматически при старте этой задачи после автоматического выполнения задачи граничного непрерывающего. В данном случае можно обойтись и встроенной формой задачи, но для примера мы используем внешнюю, на которую выведем текст запроса уточнения.
Как видно на карте маршрута выполнения БП, задача "Рассмотреть заявку" осталась открытой, граничный элемент "Требуется уточнение" запустил новый поток и создал задачу "Уточнить заявку". При клике на задаче "Уточнить заявку" срабатывает код, который при открытии формы заполняет поле текстом запроса.

Запуск регламентным заданием с передачей параметров.
Некоторые граничные непрерывающие события (таймер) должны автоматически срабатывать при наступлении какого либо условия. Для примера рассмотрим моделирование и выполнение процесса "Контроль посещения". В этом процессе задача "Проверить посещения" должна срабатывать через 15 минут после начала "Проведения занятия". Стартованный альтернативный поток от граничного события должен закончится завершающим событием "Посещения проверены" без прерывания основного потока. При моделировании параметр задержки старта граничного события вынесем в параметры для возможности его изменения пользователем без участия программиста. Выполнение будет без передачи параметров, но в коде оставим закомментированное использование для примера передачи.

10_prikkartinka_76de958e-6511-47cb-809f-0cfd12f18345.png

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

11_prikkartinka_6ce5b86b-2fed-4ebc-a694-fe848df44d1a.png

Проверка этого условия происходит каждые две минуты на сервере 1С из регламентного задания. Код проверки условия напишем в спр. "Внешние отчеты и обработки" с типом "Внешний алгоритм". Для настройки кода проверки условия необходимы следующие данные.
1) Значение параметра "ПроверятьПосещениеЧерезМинут". Это параметр входа граничного элемента.

2) GUID графического элемента "Проведение занятия".

12_prikkartinka_1837467f-0a5e-438a-8c04-77036bf67d14.png

3) GUID графического элемента "через 15 минут". Получается аналогично п.2 через контекстное меню.

GUIDы используются для более точной работы с элементами диаграммы, т.к. для каждого элемента Дерева процессов может быть несколько элементов на диаграмме, а нам необходимо указать конкретный элемент на диаграмме. Кратко опишем алгоритм запуска граничного события. Выполнение начинается с получения открытых задач "Проведение занятия" для всех открытых экземпляров БП. Далее для каждой открытой задачи проверяется, превышает ли время ее старта указанную в параметре задержку. Если превышает, то должна быть проверка, что для экземпляра БП проверяемой задачи, запущенное событие "через 15 минут" отсутствует. Т.к. проверка условий запускается каждые две минуты, то без проверки на существование запущенного граничного, граничный элемент и будет стартовать каждые две минуты. Если запущенного граничного еще нет, то выполнение граничного элемента для этого экземпляра БП запускается методом ЗапуститьЗадачуПоКодуЭлементаДП().

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

15_prikkartinka_2fb7f104-e814-4284-9b14-d7227623b449.png

Роль точки должна быть "Действие" и "Не запускать следующие задачи". Таким образом, поток завершится на этой точке без завершения остальных задач БП.

Ручной запуск граничного непрерывающего из подпроцесса.
В прошлых примерах рассматривались запуски граничных элементов на одном уровне выполнения. В данном примере мы рассмотрим запуск граничного непрерывающего элемента из вложенного подпроцесса. Моделировать будем событие типа "Эскалация". В Навигаторе БП создадим процесс "Консультировать исполнителя" и подпроцесс "Обработать кредитную заявку". Из подпроцесса граничное событие будет создаваться на задаче "Отправить на согласование менеджеру" с передачей параметра. В качестве передаваемого параметра будем использовать строку с текстом для менеджера. Промежуточное событие "заявка отправлена менеджеру" подпроцесса является простой визуализацией выполненного действия в задаче "Отправить на согласование менеджеру" и будет выполнена автоматически системой BPMS без каких либо привязанных действий. Для выполнения нам необходимо настроить только два элемента, это задача "Отправить на согласование менеджеру" для старта и граничное событие "получена заявка для менеджера". Настройка завершающего события "Менеджером решение принято" описана в разделе выше.

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

Настройка задачи BPMN "Отправить на согласование менеджеру".
По условиям выполнения БП, граничное событие "получена заявка для менеджера" создается пользователем при выполнении задачи "Отправить на согласование менеджеру". Значит для этой задачи должна быть настроена и подключена собственная форма. В настройках элемента указываем, что задача выполняется пользователем с использованием формы внешней обработки.
18_prikkartinka_2fb7f104-e814-4284-9b14-d7227623b449.png

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

После нажатия кнопки "Отправить" будет создана и выполнена автоматическая задача на граничном элементе процесса. В самом подпроцессе автоматически выполнится задача на промежуточном событии "заявка отправлена менеджеру" и БП будет остановится на промежуточном событии "ожидание решения менеджера".

20_prikkartinka_bc8f19f8-8dc5-429a-84ec-ce1bb5262322.png

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

21_prikkartinka_cec88a2b-119b-462b-a79e-d6fd1045c7a5.png
Для передачи результата задачи "Принять решение" в точку подпроцесса "ожидание решения менеджера" смотрите "Межпроцессное взаимодействие".

Автоматический запуск граничного непрерывающего из подпроцесса.
В следующем примере мы рассмотрим использование возможностей BPMS системы ОптимаСофт:Менеджер процессов для моделирования и выполнения бизнес-процессов, в которых должен быть автоматический запуск граничного непрерывающего из подпроцесса. Основное отличие от предыдущего раздела в том, что этот же код (создающий и запускающий граничный элемент) используется в автоматически выполняемом элементе. Запускающий в подпроцессе элемент может выполняться как из регламентного задания, так и в потоке сразу при выполнении предыдущей задачи.
В примере мы используем запуск граничного элемента "оповестили о готовности" процесса при автоматическом выполнении генерирующей задачи "оповестить о готовности" в потоке подпроцесса. Демонстрационный БП "Накормить семью" будем выполнять без передачи параметров. Тип граничного элемента BPMN будет "Получение сообщения". В примере настраивать будем два элемента, это промежуточное событие "оповестить о готовности" подпроцесса и промежуточное событие "оповестили о готовности" верхнего процесса.

22_prikkartinka_d9b4eb1c-4818-4f36-b9d0-a9df278b4a32.png

Настройка граничного элемента "оповестили о готовности".
По условиям бизнес-процесса, этот элемент должен запускаться кодом 1С из подпроцесса и автоматически выполняться. При старте нет передаваемых параметров, поэтому вся настройка сводится к указанию что это выполняемый элемент. Остальные настройки оставим по умолчанию. Также запомним реквизит "Код" этого элемента справочника для адресации по нему в алгоритмах.

23_prikkartinka_d90036d5-1c98-4ea5-8799-6c0371e690a0.png

Настройка промежуточного события "оповестить о готовности".
Это промежуточное событие BPMN подпроцесса при выполнении должно запускать граничный элемент верхнего процесса. Т.к. задача на этом элементе должна выполняться автоматически, то алгоритм выполнения можно хранить без создания внешней обработки. Для этого создаем новый элемент спр. "Внешние отчеты и обработки" с типом "Внешний алгоритм". На закладке "Внешний алгоритм" указываем код 1С, который запустит задачу верхнего процесса по значению реквизита "Код".

Задача этого элемента должна запуститься и выполниться автоматически после ручного выполнения задачи "Приготовить пироги в духовке". На следующей картинке отображена карта маршрута выполнения экземпляра БП, в котором подпроцесс выполнился быстрее задачи "Собраться за столом". БП остановился на параллельном шлюзе для ожидания всех входящих потоков. Номерами показан порядок создания задач для этого экземпляра бизнес-процесса.

25_prikkartinka_ec4c5ae5-3d6f-4917-b9c3-5a8f0e9d2f36.png

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


написать комментарий
*Имя *e-mail
*разрешена загрузка файлов типа:
**максимальный размер загружаемого файла: 150 kb.


прикрепить файл
 
Защита от автоматического заполнения
CAPTCHA
обновить изображение
Введите слово с картинки*: