Шлюзы (Gateways)

Шлюзы используются для контроля расхождений и схождений Потоков операций (маршрутов Токенов) в Процессе. В случае, если необходимости в контроле потока нет, то отпадает и необходимость использования Шлюза. Под термином «шлюз» подразумевается пропускное устройство, которое либо пропускает поток через себя, либо не пропускает. Это означает, что при запуске Шлюза токены, прибывающие к нему либо сливаются на входе, либо разделяются на выходе.
Как и Действия (Activities), Шлюзы могут получать и генерировать дополнительные токены контроля, эффективно осуществляя контроль исполнительной семантики текущего Процесса. Основное отличие состоит в том, что Шлюзы не служат для отображения осуществляемой «деятельности», а также не оказывают влияния на критерии выполнения Процесса (стоимость, время и т.д.).

Шлюзы используются для контроля как сходящихся, так и расходящихся Потоков Операций (Sequence Flows). Это означает, что один Шлюз может иметь множество потоков, как на входе, так и на выходе. Разработчики моделей и инструменты моделирования могут захотеть применить лучшие наработки по использованию Шлюзов, используя лишь одну из предложенных функций. Именно поэтому для объединения и последующего разделения Потоков Операций необходимо использовать два последовательных Шлюза.



Фигура 8.24 – Диаграмма классов элемента Gateway

Для получения более подробной информации о типах Шлюзов (Эксклюзивном, Неэксклюзивном, Параллельном, Основанном на Событиях, Комплексном), используемых в Процессах, см. раздел 10.5; информацию о типах Шлюзов, используемых в Хореографиях (Choreographies), см. в разделе 11.6.

Класс Gateway представляет собой абстрактный тип. Каждый из его конкретных подклассов определяет свою семантику для каждого типа Шлюзов, в соответствии с которой Шлюз ведет себя в той или иной ситуации.

Элемент Gateway наследует атрибуты и ассоциации элемента FlowElement (см. таблицу 8.44). Таблица 8.46 содержит информацию о дополнительных атрибутах элемента Gateway.

Таблица 8.46 – Атрибуты элемента Gateway

Название атрибута Описание/использование
gatewayDirection: GatewayDirection = Unspecified
{ Unspecified | Converging | Diverging | Mixed }
Посредством значений данного атрибута указываются ограничения на то, каким образом МОГУТ использоваться Шлюзы.
  • Unspecified: В данном случае ограничения отсутствуют. Шлюз МОЖЕТ иметь любое количество входящих и исходящих Потоков Операций.
  • Converging: Шлюз МОЖЕТ иметь любое количество входящих Потоков Операций, однако, количество исходящих от данного Шлюза Потоков Операций ДОЛЖНО БЫТЬ не более одного (1)
  • Diverging: Шлюз МОЖЕТ иметь любое количество исходящих Потоков Операций, однако, количество входящих Потоков Операций ДОЛЖНО БЫТЬ не более одного (1).
  • Mixed: Шлюз соединен с множеством исходящих и входящих Потоков Операций.



8.3.10 Определение компонента (Item Definition)

Такие элементы BPMN, как Объекты Данных (DataObjects) и Сообщения (Messages), представляют собой компоненты, на которые в ходе выполнения Процесса можно оказывать воздействие и которые можно передавать, изменять и хранить. Такие компоненты могут быть физическими (к примеру, деталями транспортного средства) и информационными (например, каталогом деталей транспортного средства).

Важнейшей характеристикой любого компонента Процесса является его структура. BPMN не требует использования какого-то определенного формата структуры данных, однако, нотация выделяет язык XML Schema, так как он определен по умолчанию. Атрибут structure ссылается на текущую структуру данных.

Для всех элементов формат структуры данных по умолчанию определяется в элементе Definitions с указанием значения его атрибута typeLanguage. К примеру, значение атрибута typeLanguage, равное «http://www.w3.org/2001/XMLSchema», указывает на то, что структура данных, используемая для элементов Definitions, должна иметь тип XML Schema. Если же значение не указано, то по умолчанию определяется тип XML Schema. Элемент Импорт (Import) используется для дальнейшего указания расположения структуры данных (если она пригодна к использованию). Например, если форматом структуры данных является XML schema, то для указания расположения файла этой схемы используется Import.

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

Посредством элемента ItemDefinition указывается ссылка для импорта, ведущая к месту расположения необходимого определения структуры.

В случаях, когда структура данных представляет собой коллекцию, это разнообразие может быть указано посредством атрибута isCollection. Если значение этого атрибута равно «true», но текущий тип структуры данных коллекцией не является, такая модель считается неверной. Благодаря гибкости инструментов BPMN, имеется возможность выполнения элементарной проверки на наличие таких противоречий и создания отчетов об ошибках. Значением по умолчанию, определенным для данного элемента, является «false».

Атрибут itemKind определяет, является ли компонент физическим или информационным.

На фигуре 8.25 отображена диаграмма классов элемента ItemDefinition. Если значение элемента ItemDefinition все же указано, оно содержится в Definitions.



Фигура 8.25 – Диаграмма классов элемента ItemDefinition

Элемент ItemDefinition наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5) посредством его связи с элементом RootElement. Таблица 8.47 содержит информацию о дополнительных атрибутах и ассоциациях элемента ItemDefinition.

Таблица 8.47 – Атрибуты и ассоциации элемента ItemDefinition

Название атрибута Описание/использование
itemKind: ItemKind = Information { Information | Physical } Определяет, является ли компонент физическим или информационным. Возможны значения «physical» и «information». Значением по умолчанию является «information».
structureRef: [Element [0..1] Конкретная структура данных, которая будет использована.
import: Import [0..1] Определяет расположение структуры данных и её формат. В случае если значение атрибута importType не указано, берется значение typeLanguage, определенное для элемента Definitions, содержащего данный элемент ItemDefinition.
isCollection: boolean = False Значение «true» данного атрибута указывает на то, что текущий тип структуры данных – коллекция.

8.3.11 Сообщение (Message)

Сообщение (Message) представляет собой содержимое диалога между двумя Участниками (Participants). Согласно BPMN 2.0, Сообщение выступает в роли графического декоратора (в BPMN 1.2 данный элемент относился к элементам поддержки). Для определения структуры Сообщения используется элемент ItemDefinition.

Графически Сообщение отображается следующим образом:

  • Графический элемент Сообщение представляет собой прямоугольник, линии в котором расположены таким образом, чтобы получилось изображение конверта (см. фигуру 8.26). Данный графический элемент ДОЛЖЕН БЫТЬ выполнен одинарной тонкой линией.
    • Текст, цвет, размер, а также линии, используемые для изображения Сообщения, ДОЛЖНЫ соответствовать правилам, указанным в разделе «Использование Текста, Цвета и Линий в Моделировании Диаграмм».




Фигура 8.26 - Сообщение

Для одной Задачи Хореографии (Choreography Task) на Диаграмме Хореографии (Choreography) МОЖЕТ использоваться более одного Сообщения. В данном случае необходимо знать, какое из Сообщений является первым, т.е. инициирует взаимодействие. Для удобства графическое изображение Сообщения, не являющегося инициирующим, имеет светлую заливку (см. фигуру 8.27).



Фигура 8.27 – Неинициирующее Сообщение

  • Любое Сообщение, отправляемое неинициирующим Участником (Participant) или Подхореографией (Sub-Choreography), ДОЛЖНО иметь светлую заливку.


Во Взаимодействии (Collaboration) сам диалог представлен Потоком Сообщений (Message Flow, для получения более подробной информации см. раздел Поток Сообщений, расположенный ниже). По желанию, Сообщение может изображаться в качестве графического декоратора Потока Сообщений Взаимодействия (см. фигуры 8.28 и 8.29).



Фигура 8.28 – Ассоциация Сообщений, перекрывающая Потоки Сообщений

В Хореографии (Choreography) диалог представлен Задачей Хореографии (Choreography Task, для получения более подробной информации см. раздел 11.4.1). Сообщение в ней может изображаться в качестве декоратора, ассоциированного с Задачей Хореографии (см. фигуру 8.29).



Фигура 8.29 – Сообщения, графически ассоциированные с Задачей Хореографии

На фигуре 8.30 представлена диаграмма классов, содержащая атрибуты и ассоциации элемента Message.



Фигура 8.30 – Диаграмма классов элемента Message

Элемент Message наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5) посредством его связи с элементом RootElement. Таблица 8.48 содержит информацию о дополнительных атрибутах и ассоциациях элемента Message.

Таблица 8.48 – Атрибуты и ассоциации элемента Message

Название атрибута Описание/использование
name: string Название представляет собой текстовое описание Сообщения.
itemRef : ItemDefinition [0..1] Данный атрибут используется для определения полезной нагрузки Сообщения.

8.3.12 Ресурсы (Resources)

Класс Resource используется для определения ресурсов, на которые ссылаются Действия (Activities). Ресурсы могут представлять собой как людские (Human Resources), так и любые другие типы Ресурсов, назначаемых на Действия в ходе выполнения Процесса.

Понятие Ресурса – абстрактное, т.к. оно лишь определяет Ресурс, однако, не объясняет, к примеру, того, какие ассоциации для текущих ID пользователей создаются в ходе выполнения Процесса. Для множественных Действий (Activities) могут назначаться одни и те же Ресурсы.

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



Фигура 8.31 – Диаграмма классов элемента Resource

Элемент Resource наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5) посредством его связи с элементом RootElement. Таблица 8.49 содержит информацию о дополнительных ассоциациях элемента Resource.

Таблица 8.49 – Атрибуты и ассоциации элемента Resource

Название атрибута Описание/использование
name: string Посредством данного атрибута указывается название Ресурса.
resourceParameters: ResourceParameter [0..*] Данная ассоциация определяет параметры, необходимые в ходе выполнения Процесса для выбора Ресурса.


Как было описано выше, элемент Resource может определять параметры, необходимые для указания запроса о выборе текущих ресурсов (например, пользовательские ID).

Элемент ResourceParameter наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5) посредством его связи с элементом RootElement. Таблица 8.50 содержит информацию о дополнительных ассоциациях элемента ResourceParameter.

Таблица 8.50 – Атрибуты и ассоциации элемента ResourceParameter

Название атрибута Описание/использование
name: string Определяет название параметра для запроса.
type: ItemDefinition Определяет тип параметра для запроса.
isRequired: boolean Указывает на то, является ли данный параметр опциональным или обязательным.

8.3.13 Поток Операций (Sequence Flow)

Поток Операций (Sequence Flow) используется для отображения последовательности Элементов Потока (Flow Elements), входящих в состав Процесса или Хореографии (Choreography). Каждый Поток Операций имеет лишь один источник (source) и одну цель (target). И цель, и источник Потока Операций ДОЛЖНЫ относиться к следующим Элементам Потока: События (Стартовое, Промежуточное, Конечное), Действия (Задачи и Подпроцессы, - для Процессов), Действия Хореографии (Задачи Хореографии и Подхореографии, - для Хореографий), Шлюзы.

  • Поток Операций отображается в виде линии со стрелкой. Линия ДОЛЖНА БЫТЬ одинарной и жирной (фигура 8.32).
    • Текст, цвет, размер, а также линии, используемые для изображения Потока Операций, ДОЛЖНЫ соответствовать правилам, указанным в разделе «Использование Текста, Цвета и Линий в Моделировании Диаграмм».




Фигура 8.32 – Поток Операций

По желанию, для Потока операций может быть определено условное Выражение (condition Expression), указывающее на то, что токен пересечет Поток Операций только в случае, если значение данного Выражения будет равно «true». Условное Выражение используется, как правило, тогда, когда источником Потока Операций является Шлюз (Gateway) или Действие (Activity).

  • Условный исходящий (conditional outgoing) Поток Операций, направленный от Действия, ДОЛЖЕН отображаться с маркером, выполненным в виде небольшого ромба и находящимся в начале графического элемента Потока Операций (см. фигуру 8.33).
    • В случае если условный (conditional) Поток Операций направлен от Действия, являющегося источником, то от этого Действия ДОЛЖЕН БЫТЬ направлен по-меньшей мере ещё один исходящий Поток Операций.
  • Условный исходящий (conditional outgoing) Поток Операций, направленный от Шлюза, НЕ ДОЛЖЕН отображаться с маркером в виде ромба, находящимся в начале графического элемента Потока Операций.
    • Шлюз, являющийся источником, НЕ ДОЛЖЕН быть Параллельным (Parallel) или основанным на Событиях (Event).




Фигура 8.33 – Условный Поток Операций


Поток Операций, источником которого является Эксклюзивный (Exclusive), Неэксклюзивный (Inclusive) или Комплексный (Complex) Шлюз или Действие, может являться Потоком Операций по умолчанию (default). Такой Поток Операций изображается с маркером, указывающим на его статус. Поток Операций по умолчанию выбирается (т.е. через него проходит токен) только в случае, если все остальные исходящие Потоки Операций, направленные от Действия или Шлюза, не являются верными (к примеру, условные Выражения, содержащиеся в них, имеют значения «false»).

  • Исходящий Поток Операций по умолчанию (default outgoing Sequence Flow) ДОЛЖЕН изображаться с маркером, выполненным в виде символа «/» (наклонной черты) и находящимся в начале графического элемента Потока Операций (см. фигуру 8.34).




Фигура 8.34 – Поток Операций по умолчанию


Фигура 8.35 – Диаграмма классов элемента SequenceFlow

Элемент SequenceFlow наследует атрибуты и ассоциации элемента FlowElement (см. таблицу 8.44). Таблица 8.51 содержит информацию о дополнительных атрибутах и ассоциациях элемента SequenceFlow.

Таблица 8.51 – Атрибуты и ассоциации элемента SequenceFlow

Название атрибута Описание/использование
sourceRef: FlowNode Посредством данного атрибута указывается Узел Потока (FlowNode), от которого направлен Поток Операций.
Для Процессов: Источниками могут являться лишь Действия, Шлюзы и События. Однако Действия, представляющие собой Событийные Подпроцессы, не могут быть источниками.
Для Хореографии (Choreography): Источниками могут являться лишь Действия, Шлюзы и События Хореографии.
targetRef: FlowNode Посредством данного атрибута указывается Узел Потока (FlowNode), к которому направлен Поток Операций.
Для Процессов: Целями могут являться лишь Действия, Шлюзы и События. Однако Действия, представляющие собой Событийные Подпроцессы, не могут быть целями.
Для Хореографии (Choreography): Источниками могут являться лишь Действия, Шлюзы и События Хореографии.
conditionExpression: Expression [0..1] Опциональное булевское Выражение, выступающее в роли пропускного условия. Токен будет помещен в данный Поток Операций лишь в случае, если значение для условного Выражения (conditionExpression) будет равно «true».
isImmediate: boolean [0..1] Опциональное булевское значение, указывающее на то, может ли Действие или Действие Хореографии, не включенное в модель с Потоком Операций, появляться между элементами, которые данный Поток Операций соединяет. Значение «true» означает, что НЕ МОГУТ, а значение «false» означает, что МОГУТ. Необходимо также обратить внимание на атрибут isClosed Процесса, Хореографии и Взаимодействия (Collaboration). Если значение данного атрибута не определено, то выбор семантики по умолчанию зависит от типа модели, содержащей Потоки Операций:
  • При отсутствии значения для невыполняемых Процессов (публичных Процессов и невыполняемых приватных Процессов) и Хореографий будет выбрана та же семантика, как если бы значение было равно «false».
  • При отсутствии значения для выполняемых Процессов будет выбрана та же семантика, как если бы значение было равно «true».
  • Значение данного атрибута для выполняемых Процессов НЕ ДОЛЖНО быть равно «false».



Узел Потока (Flow Node)

Элемент FlowNode используется для указания ассоциаций с каким-то элементом как с источником и целью Потока Операций (см. фигуру 8.35). Это необходимо для того, чтобы не указывать отдельные ассоциации элементов, способных соединяться с Потоком Операций (см. описание выше). С Потоком Операций могут соединяться лишь Шлюзы, Действия, Действия Хореографии и События, поэтому только эти элементы могут являться подклассами элемента FlowNode.

Известно, что Шлюзы, Действия, Действия Хореографии и События обладают собственными атрибутами, ассоциациями и правами наследования. Что касается элемента FlowNode, то он не может ничего наследовать от других элементов BPMN. Таблица 8.52 содержит информацию о дополнительных ассоциациях элемента FlowNode.

Таблица 8.52 – Ассоциации элемента FlowNode

Название атрибута Описание/использование
incoming: Sequence Flow [0..*] Посредством данного атрибута указывается входящий Поток Операций Узла Потока.
outgoing: Sequence Flow [0..*] Посредством данного атрибута указывается исходящий Поток Операций Узла Потока. Является упорядоченным множеством.

8.3.14 Представление XML-схем для Пакета Общий (Common Package) Таблица 8.53 – XML-схема для элемента Error

name="error" type="tError" substitutionGroup="rootElement"/>
<xsd:complexType name="tError">

base="tRootElement">
name="name" type="xsd:string"/>
name="errorCode" type="xsd:string"/>
name="structureRef" type="xsd:QName"/>




Таблица 8.54 – XML-схема для элемента Escalation

name="escalation" type="tEscalation" substitutionGroup="rootElement"/>
name="tEscalation">

base="tRootElement">
name="name" type="xsd:string"/>
name="escalationCode" type="xsd:string"/>
name="structureRef" type="xsd:QName"/>




Таблица 8.55 – XML-схема для элемента Expression

name="expression" type="tExpression"/>
<xsd:complexType name="tExpression">

<xsd:extension base="tBaseElementWithMixedContent"/>




Таблица 8.56 – XML-схема для элемента FlowElement








minOccurs="0" maxOccurs="unbounded"/>






Таблица 8.57 – XML-схема для элемента FlowNode

name="flowNode" type="tFlowNode"/>
name="tFlowNode" abstract="true">

base="tFlowElement">

name="incoming" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
name="outgoing" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>





Таблица 8.58 – XML-схема для элемента FormalExpression

name="formalExpression" type="tFormalExpression" substitutionGroup="expression"/>
name="tFormalExpression">

base="tExpression">
name="language" type="xsd:anyURI" use="optional"/>
name="evaluatesToTypeRef" type="xsd:QName"/>




Таблица 8.59 – XML-схема для элемента InputOutputBinding





name=”inputDataRef" type="xsd:IDREF"/>
name=”outputDataRef" type="xsd:IDREF"/>
name=”operationRef" type="xsd:QName"/>




Таблица 8.60 – XML-схема для элемента ItemDefinition



















Таблица 8.61 – XML-схема для элемента Message

name="message" type="tMessage" substitutionGroup="rootElement"/>
name="tMessage">

base="tRootElement">
name="name" type="xsd:string"/>
name="itemRef" type="xsd:QName"/>




Таблица 8.62 – XML-схема для элемента Resources

name="resource" type="tResource" substitutionGroup="rootElement"/>
name="tResource">

base="tRootElement">

<xsd:element ref="resourceParameter" minOccurs="0" maxOccurs="unbounded"/>

name="name" type="xsd:string" use="required"/>




Таблица 8.63 – XML-схема для элемента ResourceParameter

name="resourceParameter" type="tResourceParameter" />
name="tResourceParameter">

base="tBaseElement">
name="name" type="xsd:string"/>
name="type" type="xsd:QName"/>
name="isRequired" type="xsd:Boolean" />




Таблица 8.64 – XML-схема для элемента SequenceFlow














8.4 Пакет Сервис (Services)

Пакет Сервис (Service package) содержит конструкции, необходимые для моделирования сервисов, интерфейсов и видов деятельности.



Фигура 8.36 – Диаграмма классов пакета Service

8.4.1 Интерфейс (Interface)

Посредством элемента Interface указывается набор операций, выполняемых Сервисами (Services).

Элемент Interface наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5) посредством его связи с элементом RootЕlement. Таблица 8.65 содержит информацию о дополнительных атрибутах и ассоциациях элемента Interface.

Таблица 8.65 – Атрибуты и ассоциации элемента Interface

Название атрибута Описание/использование
name: string Описательное имя элемента.
operations: Operation [1..*] Посредством данного атрибута указываются операции, являющиеся частью Интерфейса (должна быть указана по-меньшей мере одна Операция).
callableElements: CallableElement [0..*] Посредством данного атрибута указываются Вызываемые Элементы (CallableElements), использующие данный Интерфейс.
implementationRef: Element [0..1] Данный атрибут позволяет указывать ссылку на конкретный артефакт базовой технологии реализации, представляющий интерфейс (например, WSDL porttype).

8.4.2 Конечная Точка (EndPoint)


В данной спецификации не рассматривается текущее определение адреса сервиса. Элемент EndPoint является точкой расширения от элемента RootElement. Элемент EndPoint МОЖЕТ БЫТЬ расширен посредством определений ссылок на конечные точки, описанных в других спецификациях (например, WS-Addressing ). Элементы EndPoint могут быть определены для Участников (Participants).

8.4.3 Операция (Operation)

Операция (Operation) определяет Сообщения (Message), которые удаляются и, по желанию, могут создаваться тогда, когда вызывается Операция. Операция также может определять ошибки (от нуля и более), возвращаемые при сбое операции. Элемент Operation наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.66 содержит информацию о дополнительных атрибутах и ассоциациях элемента Operation.

Таблица 8.66 – Атрибуты и ассоциации элемента Operation

Название атрибута Описание/использование
name: string Описательное имя элемента.
inMessageRef: Message Посредством данного атрибута указывается входное Сообщение Операции. Операция имеет лишь одно такое Сообщение.
outMessageRef: Message [0..1] Посредством данного атрибута указывается выходное Сообщение Операции. Операция может иметь максимум одно такое Сообщение.
errorRef: Error [0..*] Посредством данного атрибута указываются ошибки, возвращаемые Операцией. Для Операции МОЖЕТ БЫТЬ указано любое количество элементов Ошибка (Error) – от нуля и более.
implementationRef: Ele-ment [0..1] Данный атрибут позволяет указывать ссылку на конкретный артефакт базовой технологии реализации, представляющий операцию (например, операция WSDL).



8.4.4 Представление XML-схемы для Пакета Сервис (Service Package)


Таблица 8.67 – XML-схема для элемента Interface














Таблица 8.68 – XML-схема для элемента Operation

















Таблица 8.69 – XML-схема для элемента EndPoint