10.4.3 Конечное событие
Как видно из названия, Конечное событие указывает на то, в какой точке завершается тот или иной Процесс. В контексте Потока операций Конечное событие завершает ход Процесса; это означает, что никакой Поток операций (в том числе Исходящий поток операций) не может быть соединен с Конечным событием.
Изображается в виде круга со свободным центром (установленное в BPMN отображение графического элемента Событие), предназначенным для дифференцировки внутренними маркерами различных типов Событий.
- Конечное событие представляет собой круг, который ДОЛЖЕН БЫТЬ выполнен одинарной жирной линией (см. фигуру 10.71).
- Текст, цвет, размер, а также линии, используемые для изображения Конечного события, ДОЛЖНЫ соответствовать правилам, указанным в разделе «Использование Текста, Цвета и Линий в Моделировании Диаграмм».
- Толщина линии ДОЛЖНА БЫТЬ жирной настолько, чтобы без труда можно было бы отличить Конечное событие от Стартового и Промежуточного.
Фигура 10.71 – Графический элемент Конечное событие
Конечное событие является точкой, где заканчивается Токен, сформированный на том же уровне Процесса при запуске Стартового события. В случае, если в Параллельном потоке операций запланировано Конечное событие, то Токены будут заканчиваться в момент соединения с Конечным событием. Все Токены, сформированные внутри Процесса, ДОЛЖНЫ завершиться в точке расположения Конечного события до полного окончания данного Процесса. В случаях, когда Процесс является Подпроцессом, он может быть завершен заранее посредством прерывающего Промежуточного события. В подобных случаях Токены будут завершены Промежуточным событием, соединенным с границами Подпроцесса.
Конечное событие имеет следующие особенности:
- Процессы МОГУТ содержать несколько Конечных событий на каждом уровне.
- Конечного события является ОПЦИОНАЛЬНЫМ. Процесс определенного уровня - Процесс или Развернутый Подпроцесс – МОЖЕТ содержать в своем составе Конечное событие, однако, это не является необходимым условием.
- В случае, если диаграмма не содержит Конечного события, то скрытое Конечное событие НЕ ДОЛЖНО оказывать влияние на результат Процесса.
- В случае, если диаграмма содержит Стартовое событие, то ДОЛЖНО БЫТЬ по-меньшей мере и одно Конечное событие.
- В случае, если диаграмма не содержит Конечного события, то Элементы потока, не имеющие Исходящих потоков операций (не являющиеся источниками Потоков операций), указывают на окончание какого-либо маршрута, содержащегося в Процессе. Однако Процесс НЕ ДОЛЖЕН БЫТЬ завершен до тех пор, пока к концу не придут все параллельные маршруты.
Примечание: Диаграмма Процесса может содержать Процессы разных уровней (например, Развернутый Подпроцесс или Действие Вызов, используемое для вызова других Процессов). Использование Стартового и Конечного событий является свободным для Процессов любого уровня, содержащихся в диаграмме.
В случае, если Конечное событие не включено в состав Процесса, то Токен, содержащийся в данном Процессе, соединяется с Элементом потока, чей маршрут ведет к завершению Процесса, и завершается в момент окончания обработки данных (окончания маршрута) этим Элементом потока (как если бы токен продолжил движение до Конечного события). В момент, когда все токены данного экземпляра Процесса заканчиваются, Процесс считается завершенным.
End Event Results Результаты Конечного события
По типу результата Конечные события делятся на: Неопределенные, Сообщения, Эскалации, Ошибки, Отмены, Компенсации, Сигналы, Завершения, Множественные. Каждый из этих девяти типов Конечного события определяет то, каким образом Поток операций достигнет этого События.
Таблица 10.87 – Типы Конечного события
Тип результата |
Описание |
Маркер |
Неопределенное |
Данный тип Конечного события не подразумевает какой-то определенный результат. Для Конечных событий Неопределенного типа не существует конкретного подкласса EventDefinition. Если Конечное событие не связано ни с одним элементом EventDefinition, то данное Событие отображается на диаграмме пустым (без маркера). |
|
Сообщение |
Данный тип Конечного события служит для указания того, что Участник отправил Сообщение в момент завершения Процесса. Текущий Участник, от которого было получено Сообщение, определяется посредством соединения графического элемента События с Участником при помощи Потока сообщений. В Процессе это отображается в рамках Взаимодействия (см. таблицу 10.1). |
|
Ошибка |
Данный тип Конечного события служит для указания необходимости формирования определенной Ошибки. В результате прерываются все действующие в текущий момент маршруты Подпроцесса. На Ошибку реагирует соответствующее Промежуточное событие Ошибка, имеющее такое же значение errorCode или не имеющее errorCode. Иерархически, оно должно быть соединено с границей ближайшего родительского Действия, в котором находится. В случае, если в иерархии не существует ни одного Действия, включающего такое Промежуточное событие, поведение Процесса непредсказуемо. В этом случае для выполнения Процесса может быть определена дополнительная обработка Ошибки, представляющая собой завершение экземпляра Процесса. |
|
Эскалация |
Данный тип Конечного события служит для указания того, что должна быть запущена Эскалация. Это не влияет на ход других действующих маршрутов, - их выполнение продолжается. На Эскалацию может отреагировать соответствующее Промежуточное событие Эскалация, имеющее такое же значение escalationCode или не имеющее escalationCode. Иерархически, оно должно быть соединено с границей ближайшего родительского Действия, в котором находится. В случае, если в иерархии не существует ни одного Действия, включающего такое Промежуточное событие, поведение Процесса непредсказуемо. |
|
Отмена |
Данный тип Конечного события предназначен для использования в Подпроцессе Транзакция. Оно служит для указания того, что должна быть отменена Транзакция, а также для дальнейшего запуска Промежуточного события Отмена, присоединенного к границе Подпроцесса. Такое Конечное событие также указывает на то, что субъектам, включенным в Транзакцию, должно быть отправлено Сообщение TransactionProtocol Cancel. |
|
Компенсация |
Данный тип Конечного события служит для указания необходимости компенсации. Если указанное Действие выполнено успешно, оно будет компенсировано. Такое Действие ДОЛЖНО БЫТЬ видимо из Конечного события Компенсация, т.е. ДОЛЖНО БЫТЬ удовлетворено одно из следующих требований:
Для того, чтобы Действие было компенсировано, на границе оно ДОЛЖНО иметь Событие Компенсация или содержать работающий с событиями Подпроцесс Компенсация. |
|
Сигнал |
Данный тип Конечного события служит для указания того, что в момент завершения маршрута будет передан сигнал. Обратите внимание, что Сигнал, передаваемый в какой-либо принимающий сигналы Процесс, может пересекать уровни этого Процесса или границы Пулов, однако, не является при этом Сообщением, которое все же имеет конкретные источники и цели. Информацию об атрибутах Конечного события Сигнал смотрите в соответствующем разделе. |
|
Завершение |
Данный тип Конечного события служит для указания того, что выполнение всех Действий Процесса должно быть немедленно прекращено. Это относится как к экземплярам Действия, так и к Многоэкземплярным Действиям. Процесс завершается без возможности компенсации или обработки Событий. |
|
Множественный |
Данный тип Конечного события служит для указания того, что завершение Процесса имеет несколько результатов. Все эти результаты имеют быть (к примеру, может быть отправлено несколько соообщений). Для Конечных событий Множественного типа не существует конкретного подкласса EventDefinition. Если Конечное событие связано с более, чем одним соответствующим элементом EventDefinition, то данное Событие содержит маркер, выполненный в виде пятиугольника. |
Соединение с Потоком операций
Для того, чтобы увидеть полный список графических элементов и узнать, каким образом они МОГУТ являться целями и источниками Потока операций, обратитесь к пункту 7.5.1 «Правила Соединения Потоков Операций».
- Конечное событие ДОЛЖНО являться целью Потока операций.
- Конечное событие МОЖЕТ иметь множество Входящих потоков операций.
Маршруты, направленные к Конечному событию, могут быть как параллельными, так и альтернативными. Для большего удобства моделирования каждый маршрут МОЖЕТ соединяться с отдельным Конечным событием. Конечное событие используется в качестве воронки, куда попадают все прибывшие к нему токены. Все токены, сформированные при запуске Стартового события Процесса, в конечном итоге ДОЛЖНЫ прибыть к Конечному событию. Процесс считается незавершенным до тех пор, пока не будут завершены все содержащиеся в нем токены.
- Конечное событие НЕ ДОЛЖНО являться источником Потока операций. Оно НЕ ДОЛЖНО иметь Исходящих потоков операций.
- Исключением является ситуация, когда Конечное событие включено в состав Развернутого Подпроцесса и соединено с границами этого Подпроцесса. В данном случае, Поток операций, направленный от Процесса более высокого уровня, на выходе МОЖЕТ быть присоединен к Конечному событию, а не границам Подпроцесса.
Соединение с Потоком сообщений
Для того, чтобы увидеть полный список графических элементов и узнать, каким образом они могут являться целями Потока сообщений, обратитесь к пункту 7.5.2 «Правила Соединения Потоков Сообщений».
Примечание: Все Потоки сообщений ДОЛЖНЫ соединять два разных Пула. Они МОГУТ быть присоединены к границам Пула, а также к Элементам потока внутри этого Пула. Они НЕ ДОЛЖНЫ использоваться для соединения двух элементов внутри одного Пула.
- Конечное событие НЕ ДОЛЖНО являться целью Потока сообщений. Оно не должно иметь Входящих потоков сообщений.
- Конечное событие МОЖЕТ являться источником Потока сообщений и иметь как несколько Исходящих потоков сообщений, так и ни одного. Любой Исходящий поток сообщений, направленный от Конечного события, будет содержать Сообщение, отсылаемое при запуске этого События.
- Если от Конечного события отходит несколько Исходящих потоков сообщений, то атрибут Result Конечного сообщения ДОЛЖЕН иметь значение Message или Multiple.
- Если от Конечного события отходит более одного Исходящего потоа сообщений, то атрибут Result Конечного сообщения ДОЛЖЕН иметь значение Multiple.
10.4.4 Промежуточное событие
Промежуточное событие происходит на отрезке Процесса, ограниченном Стартовым и Конечным событиями. Промежуточное событие влияет на ход Процесса, однако, не может являться его началом или непосредственным завершением. Промежуточное событие может быть задействовано для того, чтобы:
- Указать отрезок Процесса, где ожидается получение сообщений или планируется их отправка.
- Указать отрезок Процесса, на котором ожидаются задержки.
- Нарушить ход Стандартного потока операций при помощи исключений.
- Указать на необходимость дополнительной работы в рамках компенсации.
Изображается в виде круга со свободным центром (установленное в BPMN отображение графического элемента Событие), предназначенным для дифференцировки внутренними маркерами различных типов Событий.
- Промежуточное событие представляет собой круг, который ДОЛЖЕН БЫТЬ выполнен двойной тонкой линией (см. фигуру 10.72).
- Текст, цвет, размер, а также линии, используемые для изображения Промежуточного события, ДОЛЖНЫ соответствовать правилам, указанным в разделе «Использование Текста, Цвета и Линий в Моделировании Диаграмм», с учетом того, что линия ДОЛЖНА быть двойной для того, чтобы без труда можно было отличить Промежуточное событие от Стартового или Конечного.
Фигура 10.72 – Графический элемент Промежуточное событие
Промежуточное событие может быть использовано, в частности, для отображения исключений или компенсации, входящих в Процесс. Для этого Промежуточное событие изображают на границе необходимой Задачи или Подпроцесса (как свернутого, так и развернутого); Исходящие потоки операций при этом могут двигаться в любом направлении. Однако для большей прозрачности диаграмм разработчикам рекомендуется выбирать определенную точку соединения. Например, в случае, если диаграмма располагается горизонтально, то Промежуточное событие может быть соединено с нижней границей Действия, а Поток операций направлен строго вниз и вправо. Если же диаграмма располагается вертикально, то Промежуточное событие может быть соединено как с правой, так и с левой сторонами Действия, а Поток операций направлен либо вправо, либо влево, и вниз.
Триггеры Промежуточного события
ВPMN выделяет двенадцать типов Промежуточных событий: Неопределенное, Сообщение, Таймер, Эскалация, Ошибка, Отмена, Компенсация, Условие, Связь, Сигнал, Множественной, Неопределенное Множественное. Для определения типа Промежуточного события используются различные маркеры, позволяющие отличить данный тип События от другого.
Существует два способа использования Промежуточного события:
- Промежуточное событие, включенное в состав Стандартного потока операций какого-либо Процесса, может быть использовано для одной из двух целей: такое событие может как реагировать на триггер, так и воздействовать на другие События.
- Промежуточное событие, присоединенное к границе Действия, может быть использовано только в качестве реагирующего на триггер События.
Промежуточное событие в составе Стандартного потока операций
Когда токен прибывает к Промежуточному событию, входящему в состав Стандартного потока операций, наблюдается одно из нижеописанных явлений:
- Если Промежуточное событие запускает триггер (приводит к какому-то результату), то такой триггер срабатывает немедленно (например, отсылается Сообщение); при этом дальнейший ход токена будет совпадать с ходом основного Исходящего потока операций.
- Если Промежуточное событие реагирует на триггер, то токен не покидает данное Событие до тех пор, пока не появится триггер (например, получение сообщения). После этого дальнейший ход токена будет совпадать с ходом основного Исходящего потока операций.
Стандартный поток операций предполагает использование десяти или двенадцати типов Промежуточного события (см. таблицу 10.89).
Таблица 10.89 – Промежуточное событие в составе Стандартного потока операций
Тип триггера |
Описание |
Маркер |
Неопределенное |
Данный тип Промежуточного события может быть использован только в Стандартном потоке операций. Оно НЕ МОЖЕТ использоваться на границе Действия. Несмотря на то, что маркер для данного типа Промежуточного события отсутствует, оно относится к определяющим результат (запускающим триггер). Такая характеристика необходима при создании методологий, использующих События для отображения изменения хода Процесса. Для Промежуточных событий Неопределенного типа не существует конкретного подкласса EventDefinition. Если данное Промежуточное событие не связано ни с одним элементом EventDefinition, то оно отображается на диаграмме пустым (без маркера). |
Возбуждающее триггер |
Сообщение |
Данный тип Промежуточного события может быть использован как для отправки, так и для получения сообщений. При отправке сообщения маркер Промежуточного события ДОЛЖЕН иметь заливку (верхняя фигура). При получении сообщения маркер Промежуточного события ДОЛЖЕН быть пустым (нижняя фигура). Использование одного из этих маркеров определяет либо дальнейшее выполнение Процесса после получения сообщения, либо изменение хода Процесса с целью обработки исключения. Текущий Участник, от которого было получено Сообщение, определяется посредством соединения графического элемента События с Участником при помощи Потока сообщений. В Процессе это отображается в рамках Взаимодействия (см. таблицу 10.1). |
Возбуждающее триггер Обрабатывающее триггер |
Таймер |
В Стандартном потоке операций Промежуточное событие данного типа используется для того, чтобы отложить время вызова События (изменить дату/время или параметры цикличность, к примеру, каждый понедельник в 9.00 утра). Промежуточное событие Таймер ДОЛЖНО отображаться с маркером, выполненным в виде аналоговых часов. |
Обрабатывающее триггер |
Эскалация |
В Стандартном потоке операций Промежуточное событие данного типа используется для вызова эскалации. Поскольку данное Событие запускает триггер, помещенный в нем маркер должен иметь заливку. |
Возбуждающее триггер |
Компенсация |
В Стандартном потоке операций Промежуточное событие данного типа используется для указания необходимости компенсации. Следовательно, оно запускает Событие Компенсация, поэтому помещенный в нем маркер ДОЛЖЕН иметь заливку. Если указанное Действие выполнено успешно, оно будет компенсировано. Такое Действие ДОЛЖНО БЫТЬ видимо из Промежуточного события Компенсация, т.е. ДОЛЖНО БЫТЬ удовлетворено одно из следующих требований:
Если не указано ни одного Действия, то компенсируются все успешно выполненные Действия, видимые из Конечного события Компенсация. Компенсация производится в порядке, обратном порядку Потока операций. Видимость Действия подразумевает:
Для того, чтобы Действие было компенсировано, на границе оно ДОЛЖНО иметь Событие Компенсация или содержать работающий с событиями Подпроцесс Компенсация. |
Возбуждающее триггер |
Условие |
Промежуточное событие данного типа запускается в том случае, если какое-либо условие становится верным («true»). Условие представляет собой Expression тип. Атрибуты элемента Expression тип смотрите в соответствующем разделе . |
Возбуждающее триггер |
Связь |
Данный тип Промежуточного события может быть использован только в Стандартном потоке операций. Оно НЕ МОЖЕТ использоваться на границе Действия. Посредством Связи соединяются два участка Процесса. События типа Связь могут применяться для отображения цикличности либо для того, чтобы избежать использования слишком длинных цепочек Потоков операций. Использование Событий Связь допустимо для отображения любых соединений только на одном уровне Процесса (например, с их помощью нельзя соединять родительский Процесс с Подпроцессом). Парные Промежуточные события этого типа могут быть использовать в качестве «соединителя страниц». Такое соединение удобно в тех случаях, когда необходимо напечатать Процесс, размещенный на нескольких страницах. Они также могут использоваться для перехода к определенным точкам (в качестве общих объектов «GOTO») в рамках какого-либо одного уровня Процесса. В качестве источников может быть использовано любое количество таких Событий, однако, в качестве цели может использоваться лишь одно Промежуточное событие типа Связь. Если Событие данного типа используется в качестве запускающего триггер, содержащийся в нем маркер должен иметь заливку (верхняя фигура). Если оно используется в качестве реагирующего на триггер, маркер отображается без заливки (нижняя фигура). |
Возбуждающее триггер Обрабатывающее триггер |
Сигнал |
Данный тип Промежуточного события используется для отправки и получения сигнала. Событие типа Сигнал используется для отображения общих взаимоотношений как в рамках одного уровня Процесса, так и между его уровнями, а также между Пулами и диаграммами бизнес-процессов. По принципу действия Событие Сигнал, описанное в BPMN, схоже с сигнальной ракетой, которую запускают в небо для того, чтобы кто-то, кому это небезразлично, мог заметить её и, конечно, каким-либо образом отреагировать. Данный тип Промежуточного события имеет источник, но не имеет специально предназначенной цели. Данное событие может отправлять и получать сигналы, если оно входит в состав Стандартного потока операций. Данное событие может лишь получать сигналы, если оно присоединено к границе Действия. Событие типа Сигнал отличается от События типа Ошибка тем, что посредством Сигнала указывается более общее и не являющееся ошибкой условие для прерывания выполнения Действия (например, успешное выполнение другого Действия). Область применения Сигнала шире, чем у Ошибки. Если Событие данного типа используется в качестве запускающего триггер, содержащийся в нем маркер должен иметь заливку (верхняя фигура). Если оно используется в качестве реагирующего на триггер, маркер отображается без заливки (нижняя фигура). Атрибуты элемента Signal смотрите в соответствующем разделе. |
Возбуждающее триггер Обрабатывающее триггер |
Множественный |
Появление на диаграмме Промежуточного события данного типа означает, что для него используется несколько триггеров. Если данное Событие включено с состав Стандартного потока операций, оно может как реагировать на триггер, так и запускать его. Если данное Событие присоединено к границе Действия, оно может лишь реагировать на триггер. Если данное Событие используется в качестве реагирующего на триггер, для него НЕОБХОДИМО указать один-единственный триггер. В этом случае маркер отображается без заливки (нижняя фигура). Если данное Событие используется в качестве запускающего триггер (так же, как и Множественное Конечное событие), то все указанные для него триггеры будут запущены. В этом случае маркер имеет заливку (верхняя фигура). Для Промежуточных событий Множественного типа не существует конкретного подкласса EventDefinition. Если Промежуточное событие связано с более, чем одним соответствующим элементом EventDefinition, то данное Событие содержит маркер, выполненный в виде пятиугольника. |
Возбуждающее триггер Обрабатывающее триггер |
Параллельный Множественный |
Появление на диаграмме Промежуточного события данного типа означает, что для него используется несколько триггеров. Если данное Событие включено с состав Стандартного потока операций, оно может лишь реагировать на триггер. Если данное Событие присоединено к границе Действия, оно также может лишь реагировать на триггер. В отличие от Множественного Промежуточного события, все указанные для Параллельного Множественного Промежуточного события триггеры ДОЛЖНЫ БЫТЬ запущены. Оно должно отображаться с маркером, выполненным в виде знака «плюс» без заливки. Для Промежуточных событий Параллельного Множественного типа не существует конкретного подкласса EventDefinition. Если Промежуточное событие связано с более, чем одним соответствующим элементом EventDefinition, а значение атрибута parallelMultiple данного События равно «true»,то оно содержит соответствующий маркер. |
Обрабатывающее триггер |
Промежуточное событие, соединенное с Действием
Таблица 10.90 содержит информацию о Промежуточных событиях, которые могут быть соединены с границами Действий.
Таблица 10.90 – Типы Промежуточного события, соединенного с Действием
Тип триггера |
Описание |
Маркер |
Сообщение |
Сообщение поступает от Участника и запускает Событие. В случае, если Промежуточное событие типа Сообщение присоединено к границе Действия, то в момент его запуска Стандартный поток операций становится Потоком исключений. Граница События данного типа, прерывающего выполнение Действия, к которому присоединено, отображается целой (верхняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «true». Граница События данного типа, не прерывающего выполнение Действия, к которому присоединено, выполнена пунктиром (нижняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «false». Текущий Участник, от которого было получено Сообщение, определяется посредством соединения графического элемента События с Участником при помощи Потока сообщений. В Процессе это отображается в рамках Взаимодействия (см. таблицу 10.1). |
Прерывающее Непрерывающее |
Таймер |
Для запуска Промежуточного события Таймер могут быть установлены определенные параметры даты/времени или цикличности (к примеру, каждый понедельник в 9.00 утра). В случае, если Промежуточное событие Таймер присоединено к границе Действия, то в момент его запуска Стандартный поток операций становится Потоком исключений. Граница События данного типа, прерывающего выполнение Действия, к которому присоединено, отображается целой (верхняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «true». Граница События данного типа, не прерывающего выполнение Действия, к которому присоединено, выполнена пунктиром (нижняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «false». |
Прерывающее Непрерывающее |
Эскалация |
Промежуточное событие Эскалация используется в Процессе для обработки определенной Эскалации. Если такое Событие присоединено в границе Действия, оно реагирует на Эскалацию. В отличие от Ошибки, по умолчанию прерывающей выполнение Действия, Эскалация не оказывает такого влияния на Действие, к которому присоединено. Однако разработчик модели может включить в состав Процесса и прерывающее Действие Промежуточное событие Эскалация. Графически это отображается следующим образом:
|
Прерывающее Непрерывающее |
Ошибка |
Промежуточное событие Ошибка, реагирующее на триггер, может лишь присоединяться к границе Действия, следовательно, оно НЕ МОЖЕТ входить в состав Стандартного потока операций. Использование данного типа События в таком контексте подразумевает то, что оно реагирует на определенную ошибку (ловит ошибку). В случае, если ошибка не указана, оно также может реагировать на любую появившуюся ошибку. Обратите внимание, что Промежуточное событие Ошибка всегда прерывает выполнение Действия, к которому присоединено. Это значит, что не существует События данного типа, которое не прерывало бы выполнение Действия. Граница такого События отображается целой. |
Прерывающее |
Отмена |
Промежуточное событие Отмена используется в рамках Подпроцесса Транзакция. Событие данного типа ДОЛЖНО БЫТЬ присоединено к границе Подпроцесса. Оно ДОЛЖНО запускаться в том случае, если Поток операций достигает Конечного события Отмена данного Подпроцесса. Оно также ДОЛЖНО запускаться в случае, если в ходе выполнения Транзакции получено сообщение об отмене (от TransactionProtocol). Обратите внимание, что Промежуточное событие Отмена всегда прерывает выполнение Действия, к которому присоединено. Это значит, что не существует События данного типа, которое не прерывало бы выполнение Действия. Граница такого События отображается целой. |
Прерывающее |
Компенсация |
При присоединении к границе Действия Промежуточное событие Компенсация реагирует на Событие Компенсация, следовательно, маркер этого События ДОЛЖЕН БЫТЬ без заливки. Событие данного типа активируется запущенной компенсацией, целью которой является Действие. Когда Событие запущено, происходит выполнение Действия Компенсация, связанного с данным Событием. Обратите внимание, что Событие Компенсация не может быть ни прерывающим, ни непрерывающим. Оно запускается только после завершения выполнения Действия, к которому присоединено, и не может его прерывать. Граница такого События всегда отображается целой. |
|
Условие |
Промежуточное событие Условие запускается, когда определенное условие становится верным («true»). Условие представляет собой Expression тип. Атрибуты элемента Expression тип смотрите в соответствующем разделе. При запуске Условия, присоединенного к границам Действия, Стандартный поток операций становится Потоком исключений. Граница События данного типа, прерывающего выполнение Действия, к которому присоединено, отображается целой (верхняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «true». Граница События данного типа, не прерывающего выполнение Действия, к которому присоединено, выполнена пунктиром (нижняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «false». |
Прерывающее Непрерывающее |
Сигнал |
Промежуточное событие Сигнал, присоединенное к границе Действия, используется для получения сигнала. При запуске Сигнала, присоединенного к границам Действия, Стандартный поток операций становится Потоком исключений. Событие типа Сигнал отличается от События типа Ошибка тем, что посредством Сигнала указывается более общее и не являющееся ошибкой условие для прерывания выполнения Действия (например, успешное выполнение другого Действия). Область применения Сигнала шире, чем у Ошибки. Граница События данного типа, прерывающего выполнение Действия, к которому присоединено, отображается целой (верхняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «true». Граница События данного типа, не прерывающего выполнение Действия, к которому присоединено, выполнена пунктиром (нижняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «false». |
Прерывающее Непрерывающее |
Множественный |
Появление на диаграмме Промежуточного события данного типа означает, что для него используется несколько триггеров. Если данное Событие присоединено к границе Действия, оно может лишь реагировать на триггер. Если данное Событие присоединено к границе Действия, оно может лишь реагировать на триггер. Если для данного События НЕОБХОДИМ один-единственный триггер, то маркер данного События в момент его запуска будет отображаться без заливки, а Стандартный поток операций станет Потоком исключений. Для Промежуточных событий Множественного типа не существует конкретного подкласса EventDefinition. Если данное Промежуточное событие связано с более, чем одним соответствующим элементом EventDefinition, то данное Событие содержит маркер, выполненный в виде пятиугольника. Граница События данного типа, прерывающего выполнение Действия, к которому присоединено, отображается целой (верхняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «true». Граница События данного типа, не прерывающего выполнение Действия, к которому присоединено, выполнена пунктиром (нижняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «false». |
Прерывающее Непрерывающее |
Параллельный Множественный |
Появление на диаграмме Промежуточного события данного типа означает, что для него используется несколько триггеров. Если данное Событие присоединено к границе Действия, оно может лишь реагировать на триггер. В отличие от Множественного Промежуточного события, все указанные для Параллельного Множественного Промежуточного события триггеры ДОЛЖНЫ БЫТЬ запущены. Оно должно отображаться с маркером, выполненным в виде знака «плюс» без заливки. Для Промежуточных событий Параллельного Множественного типа не существует конкретного подкласса EventDefinition. Если Промежуточное событие связано с более, чем одним соответствующим элементом EventDefinition, а значение атрибута parallelMultiple данного События равно «true»,то оно содержит соответствующий маркер. Граница События данного типа, прерывающего выполнение Действия, к которому присоединено, отображается целой (верхняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «true». Граница События данного типа, не прерывающего выполнение Действия, к которому присоединено, выполнена пунктиром (нижняя фигура). Обратите внимание, что согласно BPMN, значение атрибута cancelActivity этого Действия по умолчанию равно «false». |
Прерывающее Непрерывающее |
Атрибуты Событий, присоединенных к границам элементов
Элемент BoundaryEvent - Промежуточное событие, присоединенное к границам других Элементов потока - наследует атрибуты и ассоциации элемента CatchEvent (см. таблицу 8.44). Таблица 10.91 содержит информацию о дополнительных атрибутах и ассоциациях элемента BoundaryEvent.
Таблица 10.91 – Атрибуты элемента BoundaryEvent
Название атрибута |
Описание/использование |
attachedTo: Activity |
Данный атрибут указывает на Действие, к которому присоединено Промежуточное событие. |
cancelActivity: boolean |
Данный атрибут указывает на то, должно ли быть отменено выполнение Действия или нет. Другими словами, он указывает на то, какой тип имеет присоединенное к Действию и реагирующее на триггер Промежуточное событие: Ошибка или Эскалация. Если отмены выполнения Действия не происходит, то многочисленные экземпляры События могут выполняться одновременно. Данный атрибут не может быть использован для Событий типа Ошибка (где его значение всегда равно «true») или Компенсация (для которого он не используется в принципе). |
Таблица 10.92 содержит информацию, которая позволяет определить, возможно ли использование атрибута cancelActivity для Промежуточного события, присоединенного к Действию, в зависимости от значения EventDefinition, на которое это Событие реагирует.
Таблица 10.92 – Возможные значения атрибута cancelActivity
Тип Промежуточного события |
Возможные значения атрибута cancelActivity |
Неопределенный |
Нет значений, т.к. данное Событие не может быть присоединено к границе Действия. |
Сообщение |
True/false |
Таймер |
True/false |
Эскалация |
True/false |
Ошибка |
True |
Отмена |
True |
Компенсация |
Нет значений, т.к. Действие уже выполнено и не может быть более отменено после запуска компенсации. |
Условие |
True/false |
Сигнал |
True/false |
Множественный |
True/false(если все триггеры События допускают использование данного атрибута). Данная опция является наиболее ограничительной, т.е. в случае возникновения ошибки или отмены триггеров используется Yes. |
Соединение с Действием
Промежуточное событие может быть присоединено к границе Действия при соблюдении следующих требований:
- Непосредственно к границе Действия МОЖЕТ БЫТЬ присоединено одно или более Промежуточных событий.
- Присоединенное Промежуточное событие ДОЛЖНО БЫТЬ одного из следующих типов (EventDefinition): Сообщение (Message), Таймер (Timer), Ошибка (Error), Эскалация (Escalation), Отмена (Cancel), Компенсация (Compensation), Условие (Conditional), Сигнал (Signal), Множественный (Multiple), Параллельный Множественный (Parallel Multiple).
- Промежуточное событие типа Отмена МОЖЕТ БЫТЬ присоединено к границе Подпроцесса только при значении атрибута Transaction Подпроцесса, равном «true».
Соединение с Потоком операций
Для того, чтобы увидеть полный список графических элементов и узнать, каким образом они МОГУТ являться целями и источниками Потока операций, обратитесь к пункту 7.5.1 «Правила Соединения Потоков Операций».
- Если Промежуточное событие присоединено к границе Действия, то:
- Промежуточное событие НЕ ДОЛЖНО являться целью Потока операций или иметь каких-либо Входящих потоков операций.
- Промежуточное событие ДОЛЖНО являться источником Потока операций.
- Промежуточное событие МОЖЕТ являться источником множества Потоков операций. Для каждого такого Потока операций ДОЛЖЕН БЫТЬ создан новый параллельный маршрут.
- Промежуточное событие НЕ ДОЛЖНО являться целью Потока операций или иметь каких-либо Входящих потоков операций.
- Исключением является Промежуточное событие Компенсация, которое НЕ ДОЛЖНО ИМЕТЬ Исходящих потоков операций, однако, МОЖЕТ иметь исходящую Ассоциацию.
- В состав Стандартного потока операций МОГУТ входить Промежуточные события следующих типов (EventDefinition): Неопределенное (None), Сообщение (Message), Таймер (Timer), Эскалация (Escalation), Компенсация (Compensation), Условие (Conditional), Связь (Link), Сигнал (Signal), Множественный (Multiple), Параллельный Множественный (Parallel Multiple). В Стандартном потоке операций НЕ ДОЛЖНЫ участвовать Промежуточные события типов Отмена (Cancel) и Ошибка (Error).
- Если Промежуточное событие включено в состав Стандартного потока операций, то:
- Промежуточное событие ДОЛЖНО являться целью Потока операций. Примечание: В отличие от BPMN 2.0, BPMN 1.2 допускает возможность отсутствия у некоторых Промежуточных событий Входящих потоков операций.
- Промежуточное событие МОЖЕТ иметь множество Входящих потоков операций.Примечание: Если Промежуточное событие имеет множество Входящих потоков операций, то Поток операций считается неконтролируемым. Это означает, что Событие будет запущено по прибытии токена по одному из маршрутов (для того, чтобы отреагировать на триггер или запустить его). Данное Событие не будет ожидать прибытия других токенов по оставшимся маршрутам. Если по тому же или какому-либо другому маршруту прибывает другой токен, запускается другой экземпляр События. Если возникает необходимость в контроле Потока операций, все маршруты должны быть соединены посредством Шлюза, предшествующего Событию (дополнительную информацию о Шлюзах смотрите в разделе 10.5 «Шлюзы»).
- Если Промежуточное событие включено в состав Стандартного потока операций, то:
- Промежуточное событие ДОЛЖНО являться источником Потока операций.
- Промежуточное событие МОЖЕТ иметь множество Исходящих потоков операций. Для каждого такого Потока операций ДОЛЖЕН БЫТЬ создан новый параллельный маршрут.
- Исключением является используемое в качестве источника Промежуточное событие Связь. Наличие у такого События Исходящих потоков операций НЕ ОБЯЗАТЕЛЬНО.
- Промежуточное событие типа Связь НЕ ДОЛЖНО являться источником и целью Потока операций одновременно.
Для использования Промежуточного события Связь в качестве Соединителя страниц или объекта «GOTO» необходимо учитывать следующие требования:
- Промежуточное событие Связь МОЖЕТ являться как целью (Событие Связь как цель), так и источником (Событие Связь как источник) Потока операций. Однако оно НЕ ДОЛЖНО являться и целью, и источником одновременно.
- Одно Событие Связь, используемое как цель, МОЖЕТ иметь множество Событий Связь, используемых как источники.
- Одно Событие Связь, используемое как источник, НЕ ДОЛЖНО иметь множество Событий Связь, используемых как цели.
Соединение с Потоком сообщений
Для того, чтобы увидеть полный список графических элементов и узнать, каким образом они могут являться целями Потока сообщений, обратитесь к пункту 7.5.2 «Правила Соединения Потоков Сообщений».
Примечание: Все Потоки сообщений ДОЛЖНЫ соединять два разных Пула. Они МОГУТ быть присоединены к границам Пула, а также к Элементам потока внутри этого Пула. Они НЕ ДОЛЖНЫ использоваться для соединения двух элементов внутри одного Пула.
- Промежуточное событие Сообщение МОЖЕТ являться целью Потока сообщений. Оно может иметь один Входящий поток сообщений.
- Промежуточное событие Сообщение МОЖЕТ являться источником Потока сообщений. Оно может иметь один Исходящий поток сообщений.
- Промежуточное событие Сообщение МОЖЕТ быть соединено как с входящим, так и исходящим Потоком операций, однако, не с входящим и исходящим Потоками операций одновременно.