Шлюзы используются для контроля расхождений и схождений Потоков операций (маршрутов Токенов) в Процессе. В случае, если необходимости в контроле потока нет, то отпадает и необходимость использования Шлюза. Под термином «шлюз» подразумевается пропускное устройство, которое либо пропускает поток через себя, либо не пропускает. Это означает, что при запуске Шлюза токены, прибывающие к нему либо сливаются на входе, либо разделяются на выходе.
Как и Действия (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 } |
Посредством значений данного атрибута указываются ограничения на то, каким образом МОГУТ использоваться Шлюзы.
|
Такие элементы 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» данного атрибута указывает на то, что текущий тип структуры данных – коллекция. |
Сообщение (Message) представляет собой содержимое диалога между двумя Участниками (Participants). Согласно BPMN 2.0, Сообщение выступает в роли графического декоратора (в BPMN 1.2 данный элемент относился к элементам поддержки). Для определения структуры Сообщения используется элемент ItemDefinition.
Графически Сообщение отображается следующим образом:
Фигура 8.26 - Сообщение
Для одной Задачи Хореографии (Choreography Task) на Диаграмме Хореографии (Choreography) МОЖЕТ использоваться более одного Сообщения. В данном случае необходимо знать, какое из Сообщений является первым, т.е. инициирует взаимодействие. Для удобства графическое изображение Сообщения, не являющегося инициирующим, имеет светлую заливку (см. фигуру 8.27).
Фигура 8.27 – Неинициирующее Сообщение
Во Взаимодействии (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] | Данный атрибут используется для определения полезной нагрузки Сообщения. |
Класс 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 | Указывает на то, является ли данный параметр опциональным или обязательным. |
Поток Операций (Sequence Flow) используется для отображения последовательности Элементов Потока (Flow Elements), входящих в состав Процесса или Хореографии (Choreography). Каждый Поток Операций имеет лишь один источник (source) и одну цель (target). И цель, и источник Потока Операций ДОЛЖНЫ относиться к следующим Элементам Потока: События (Стартовое, Промежуточное, Конечное), Действия (Задачи и Подпроцессы, - для Процессов), Действия Хореографии (Задачи Хореографии и Подхореографии, - для Хореографий), Шлюзы.
Фигура 8.32 – Поток Операций
По желанию, для Потока операций может быть определено условное Выражение (condition Expression), указывающее на то, что токен пересечет Поток Операций только в случае, если значение данного Выражения будет равно «true». Условное Выражение используется, как правило, тогда, когда источником Потока Операций является Шлюз (Gateway) или Действие (Activity).
Фигура 8.33 – Условный Поток Операций
Поток Операций, источником которого является Эксклюзивный (Exclusive), Неэксклюзивный (Inclusive) или Комплексный (Complex) Шлюз или Действие, может являться Потоком Операций по умолчанию (default). Такой Поток Операций изображается с маркером, указывающим на его статус. Поток Операций по умолчанию выбирается (т.е. через него проходит токен) только в случае, если все остальные исходящие Потоки Операций, направленные от Действия или Шлюза, не являются верными (к примеру, условные Выражения, содержащиеся в них, имеют значения «false»).
Фигура 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). Если значение данного атрибута не определено, то выбор семантики по умолчанию зависит от типа модели, содержащей Потоки Операций:
|
Узел Потока (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
<xsd:complexType name="tError">
Таблица 8.54 – XML-схема для элемента Escalation
Таблица 8.55 – XML-схема для элемента Expression
<xsd:complexType name="tExpression">
<xsd:extension base="tBaseElementWithMixedContent"/>
Таблица 8.56 – XML-схема для элемента FlowElement
Таблица 8.57 – XML-схема для элемента FlowNode
Таблица 8.58 – XML-схема для элемента FormalExpression
Таблица 8.59 – XML-схема для элемента InputOutputBinding
Таблица 8.60 – XML-схема для элемента ItemDefinition
Таблица 8.61 – XML-схема для элемента Message
Таблица 8.62 – XML-схема для элемента Resources
<xsd:element ref="resourceParameter" minOccurs="0" maxOccurs="unbounded"/>
Таблица 8.63 – XML-схема для элемента ResourceParameter
Таблица 8.64 – XML-схема для элемента SequenceFlow
Посредством элемента 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). |
В данной спецификации не рассматривается текущее определение адреса сервиса. Элемент EndPoint является точкой расширения от элемента RootElement. Элемент EndPoint МОЖЕТ БЫТЬ расширен посредством определений ссылок на конечные точки, описанных в других спецификациях (например, WS-Addressing ). Элементы EndPoint могут быть определены для Участников (Participants).
Операция (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.67 – XML-схема для элемента Interface
Таблица 8.68 – XML-схема для элемента Operation
Таблица 8.69 – XML-схема для элемента EndPoint