Структура BPMN

8.3 Общие элементы (Common Elements)

В следующих подразделах содержится описание элементов BPMN, которые МОГУТ добавляться на диаграммы разных типов (Процесс (Process), Взаимодействие (Collaboration), и Хореография (Choreography)).

8.3.1 Артефакты (Artifacts)

Для разработчиков моделей в BPMN предусмотрена возможность внесения дополнительной информации о Процессе (Process). Такая информация не связана непосредственно с Потоками Операций (Sequence Flow) или Потоками Сообщений (Message Flow) этого Процесса.

В данном документе представлено три типа стандартных Артефактов: Ассоциация (Association), Группа (Group) и Текстовая Аннотация (Text Annotation), что, однако, не исключает возможности добавления других Артефактов в последующих версиях спецификации (т.е. в будущем МОГУТ БЫТЬ добавлены новые Артефакты). Разработчики моделей или инструменты моделирования МОГУТ расширять диаграммы BPMN, добавляя при этом на Диаграммы собственные типы Артефактов. Любой искусственно добавленный Артефакт ДОЛЖЕН соответствовать правилам соединения с Потоком Операций и Потоком Сообщений (см. ниже). Для соединения Артефактов с Элементами Потока (Flow Objects) используется Ассоциация (Association) (для получения более подробной информации см. таблицу 7.2).

На фигуре 8.8 отображена диаграмма класса Artifacts. Артефакт хранится либо во Взаимодействии (Collaboration), либо в элементе FlowElementsContainer (Процесса (Process) или Хореографии (Choreography)).


Фигура 8.8 – Метамодель Артефакта

Общие определения для Артефактов

В следующих подразделах представлена информация об определениях, общих для всех Артефактов.

Соединение Артефакта с Потоком Операций

Для получения более подробной информации об элементах BPMN, которые МОГУТ являться как источниками, так и целями Потоков Операций (Sequence Flow), см. подраздел 7.5.1.

  • Артефакты НЕ ДОЛЖНЫ являться целями Потоков Операций.
  • Артефакты НЕ ДОЛЖНЫ служить источниками Потоков Операций.

Соединение Артефакта с Потоком Сообщений

Для получения более подробной информации об элементах BPMN, которые МОГУТ являться как источниками, так и целями Потоков Сообщений (Message Flow), см. подраздел 7.5.2.

  • Артефакты НЕ ДОЛЖНЫ являться целями Потоков Сообщений.
  • Артефакты НЕ ДОЛЖНЫ служить источниками Потоков Сообщений.


Ассоциация (Association)

Ассоциация (Association) используется для установки соответствия между какой-либо информацией и Артефактом и Элементами Потока (Flow Objects). Текстовые и графические элементы, не являющиеся Элементами Потока, также могут быть ассоциированы с Элементами Потока и каким-либо Потоком операций. Ассоциация используется и для отображения Действия (Activity) компенсации. Для получения более подробной информации о компенсации см. раздел 10.6.

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

Фигура 8.9 – Ассоциация (Association)



Фигура 8.10 – Диаграмма класса Association

Для того чтобы отобразить направление Ассоциации, необходимо следовать правилам:

  • Графический элемент Ассоциация МОЖЕТ отображаться со стрелкой (см. фигуру 8.11).
    • Ассоциация может иметь одно (1) или два направления.



Фигура 8.11 – Направленная Ассоциация

Обратите внимание, что описанная в BPMN 1.2 направленная Ассоциация использовалась для отображения того, каким образом Объекты Данных (Data Object) входили в Действия (Activity) или выходили из них. В BPMN 2.0 для этого используется Ассоциация Данных (Data Association) (для получения более подробной информации см. фигуру 10.64). При добавлении на диаграмму Ассоциации Данных используется та же нотация, что и для добавления направленной Ассоциации (см. фигуру 8.11).

Ассоциация используется для соединения указанного пользователем текста (Аннотации (Annotation)) с Элементами Потока (Flow Objects) (см. фигуру 8.12).


Фигура 8.12 – Ассоциация, применяемая к Текстовой Аннотации

Элемент Association наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.20 содержит информацию о дополнительных атрибутах и ассоциациях элемента Association.

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


Название атрибута Описание/использование
associationDirection: AssociationDirection = None {None | One | Both} Данный атрибут указывает на то, будет ли Ассоциация иметь направление (т.е. будет ли отображаться со стрелкой). Значением по умолчанию является «None» (подразумевает отсутствие стрелки). Значение «One» используется для указания того, что Ассоциация ДОЛЖНА БЫТЬ направлена к Элементу, являющемуся Источником. Значение «Both» указывает на то, что стрелка ДОЛЖНА отображаться на обоих концах графического элемента Ассоциация.
sourceRef: BaseElement Определяет элемент BaseElement, от которого направлена Ассоциация.
targetRef: BaseElement Определяет элемент BaseElement, к которому направлена Ассоциация.


Группа (Group)

Элемент Группа (Group) является Артефактом, служащим в качестве неформального механизма отображения группы элементов на диаграмме. Такая группировка связана со значением CategoryValue соответствующего элемента. Это означает, что Группа представляет собой визуальное отображение конкретного значения CategoryValue.

Примечание: Значение CategoryValue также может быть выделено другими способами, например, цветом, выбранным разработчиком модели или инструментом моделирования.

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




Фигура 8.13 – Артефакт типа Группа

Как и Артефакт, Группа не является Действием (Activity) или одним из Элементов Потока (Flow Object), поэтому данный графический элемент не может быть соединен с Потоком Операций (Sequence Flow) или с Потоком Сообщений (Message Flow). Ограничения использования Пулов (Pool) и Дорожек (Lane) не распространяются на использование Групп. Это означает, что для объединения элементов Диаграммы Группа может простираться за границы Пула (см. фигуру 8.14). В таком качестве Группа используется для отображения Действий (Activity), являющихся частью масштабных взаимоотношений типа B2B (business-to-business).



Фигура 8.14 – Группа, объединяющая Действия из разных Пулов

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

На фигуре 8.15 отображена диаграмма класса Group.



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

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

Таблица 8.21 – Ассоциации элемента Group

Название атрибута Описание/использование
categoryValueRef: Category- Value [0..1] Данный атрибут указывает значение categoryValueRef, которое представлено Группой. Для получения более подробной информации об элементах Category CategoryValue см. следующий подраздел. Название Группы состоит из названия элемента Category и значения CategoryValue, разделенных знаком «.» (точкой). Значения CategoryValue назначаются на графические элементы, расположенные внутри Группы.


Категория (Category)

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

Группы являются одним из способов, при помощи которых Категории объектов отображаются на диаграмме. Это означает, что Группа является визуальным отображением конкретного значения CategoryValue. Графические элементы, заключенные в Группы, назначаются на конкретное значение CategoryValue данной Группы. Значение CategoryValue, перед которым указано название Категории и стоит разделитель «:», отображается на диаграмме в качестве названия Группы. Обратите внимание, что Категории могут быть выделены другими способами, например, цветом, выбранным разработчиком модели или инструментом моделирования. На диаграмме одна Категория может использоваться в нескольких Группах.

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

Таблица 8.22 – Ассоциации элемента Category

Название атрибута Описание/использование
name: string Описательное имя элемента.
categoryValue: CategoryValue [0..*] Посредством атрибута categoryValue указывается одно или более значений элемента Category. К примеру, если Category означает «Регион», то для неё могут быть установлены следующие значения: «север», «юг», «запад», «восток».


Элемент CategoryValue наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.23 содержит информацию о дополнительных атрибутах и ассоциациях элемента CategoryValue.

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

Название атрибута Описание/использование
value: string Посредством данного атрибута устанавливается значение элемента CategoryValue.
category: Category [0..1] Данный атрибут используется для определения Категории как таковой и содержит значение CategoryValue (для получения более подробной информации о Категории см. Описание выше).
categorizedFlowElements: FlowElement [0..*] Посредством данного атрибута указываются все элементы (например, События (Events), Действия (Activities), Шлюзы (Gateways) и Артефакты (Artifacts)), заключенные в Группу.


Текстовая Аннотация (Text Annotation)

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

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


Графический элемент Текстовая Аннотация может быть присоединен к определенному элементу на Диаграмме при помощи Ассоциации (Association), однако, он не оказывает влияния на ход Процесса. Текст, ассоциированный с Аннотацией, может располагаться в пределах данного графического элемента.



Фигура 8.16 – Текстовая Аннотация


Элемент Text Annotation наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.24 содержит информацию о дополнительных атрибутах элемента Text Annotation.

Таблица 8.24 – Атрибуты элемента Text Annotation

Название атрибута Описание/использование
text: string Данный атрибут представляет собой текст, который разработчик модели желает сообщить конечному пользователю Диаграммы.
textFormat: string Посредством данного атрибута указывается формат текста. Его значение ДОЛЖНО БЫТЬ указано в формате MIME-тип. Значением по умолчанию является «text/plain».


Представление XML-схемы для Артефактов

Таблица 8.25 - XML-схема для элемента Artifact








Таблица 8.26 - XML-схема для элемента Association

name="association" type="tAssociation" substitutionGroup="artifact"/>
name="tAssociation">

<xsd:extension base="tArtifact">
name="sourceRef" type="xsd:QName" use="required"/>
name="targetRef" type="xsd:QName" use="required"/>
name="associationDirection" type="tAssociationDirection" default="None"/>




name="tAssociationDirection">
base="xsd:string">
value="None"/>
value="One"/>
value="Both"/>



Таблица 8.27 - XML-схема для элемента Category

name="category" type="tCategory" substitutionGroup="rootElement"/>
name="tCategory">

base="tRootElement">

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

name="name" type="xsd:string"/>\




Таблица 8.28 - XML-схема для элемента CategoryValue

name="categoryValue" type="tCategoryValue"/>
name="tCategoryValue">

base="tBaseElement">
name="value" type="xsd:string" use="optional"/>\




Таблица 8.29 - XML-схема для элемента Group

name="group" type="tGroup" substitutionGroup="artifact"/>
name="tGroup">

base="tArtifact">
<xsd:attribute name="categoryValueRef" type="xsd:QName" use="optional"/>




Таблица 8.30 - XML-схема для элемента Text Annotation

name="textAnnotation" type="tTextAnnotation" substitutionGroup="artifact"/>
name="tTextAnnotation">

base="tArtifact">

ref="text" minOccurs="0" maxOccurs="1"/>

name="textFormat" type="xsd:string" default="textplain"/>




8.3.2 Корреляция (Correlation)

Выполнение Бизнес-Процесса может осуществляться в течение нескольких дней или даже месяцев, сопровождаясь асинхронным общением через Сообщения (Message). В то же время параллельно могут выполняться множество экземпляров (instance) конкретного Процесса, к примеру, множество экземпляров процесса заказа, каждый из которых представляет собой отдельно взятый заказ. Корреляция используется для установки соответствия между каким-либо Сообщением и исходящим Обменом сообщениями (Conversation) двух различных экземпляров Процесса. BPMN позволяет использовать данные из существующих Сообщений для установки такой корреляции. К примеру, в процессе заказа каждый отдельно взятый экземпляр этого процесса может быть идентифицирован посредством относящегося к нему атрибута ordered или customerID, а не путем запроса технических данных о корреляции.

Суть Корреляции заключается в ассоциировании Сообщения с Задачей типа Отправка (Send Task) или Задачей типа Получение (Receive Task), что также называется маршрутизацией экземпляра (instance routing). Корреляция особенно важна, когда для осуществления маршрутизации экземпляра не может быть использована поддержки инфраструктура. Обратите внимание, что такая ассоциация может просматриваться на различных уровнях моделирования, т.е. во Взаимодействии (Collaboration (Conversation)), Хореографии (Choreography) и Процессе (Process). Однако собственно корреляция выполняется в ходе выполнения процесса (к примеру, на одном из уровней Процесса). Посредством корреляций описывается набор утверждений, касаемых Сообщения (как правило, передаваемых приложением данных). Эти утверждения должны быть удовлетворены, иначе Сообщение не будет ассоциировано с обособленной Задачей Отправка или Задачей Получение. Кроме того, любая Задача Отправка и любая Задача Получение может участвовать в одном или более Обменах сообщениями (Conversation). К тому же Задача такого типа идентифицирует Сообщение, которое она отсылает, и, таким образом, устанавливает связь с одним или несколькими Ключами Корреляции - CorrelationKeys.

Существуют два механизма неэксклюзивной корреляции:

  1. Корреляция, основанная на ключах. В данном случае между Сообщениями, которые были отправлены и получены в ходе Обмена сообщениями (Conversation), устанавливается логическая корреляция посредством одного или более общих ключей CorrelationKeys. Это означает, что в любом Сообщении, которое отсылается или принимается в ходе Обмена сообщениями (Conversation), должно храниться значение по-меньшей мере одного экземпляра CorrelationKey, входящее в передаваемые им данные. Посредством CorrelationKey указывается ключ (составной) (key/composite key). Сообщение, которое отсылается или принимается первым, инициализирует один или более экземпляров CorrelationKey, ассоциированных с Обменом сообщениями (Conversation). Другими словами, оно указывает значения для экземпляров CorrelationProperty, являющихся полями/частичными ключами (fields/partial keys) элементов CorrelationKey. CorrelationKey может быть использован лишь в случае, если Сообщение оказало влияние на все поля CorrelationProperty ключа, содержащего значение. Если следующее Сообщение получает экземпляр CorrelationKey (с учетом, что данный CorrelationKey был уже инициализирован в Обмене сообщениями (Conversation)), то значение CorrelationKey, содержащееся в Сообщении, ДОЛЖНО соответствовать значению CorrelationKey, содержащемуся в Обмене сообщениями. Если же следующее Сообщение получает экземпляр CorrelationKey, ассоциированный с Обменом сообщениями (Conversation), однако, предварительно не инициализированный, то значение CorrelationKey становится ассоциированным с Обменом сообщениями. Поскольку в Обмен сообщениями (Conversation) могут входить различные Сообщения, его структура также может быть разной, а каждое значение Свойства Корреляции - CorrelationProperty - сопровождается количеством правил извлечения (CorrelationPropertyRetrievalExpression) для соответствующих частичных ключей, соответствующим количеству Сообщений.
  2. Корреляция, основанная на контексте. В данном случае контекст Процесса (например, Объекты данных (Data Object) или Свойства (Properties)) могут динамически воздействовать на критерии соответствия. Это означает, что CorrelationKey может быть дополнен CorrelationSubscription, относящимся к Процессу. CorrelationSubscription объединяет столько элементов CorrelationPropertyBindings, сколько CorrelationProperties содержится в данном CorrelationKey. CorrelationPropertyBinding связан с конкретным CorrelationProperty, а также ссылается на Формальное Выражение - FormalExpression, которое указывает на правило динамического извлечения, действующее поверх контекста Процесса. В ходе выполнения процесса экземпляр CorrelationKey для отдельно взятого Обмена сообщениями (Conversation) распространяется (и динамически обновляется), исходя из контекста Процесса и используя FormalExpressions (формальные выражения). В этом смысле изменения в контексте Процесса могут менять условия корреляции.

Корреляция может быть использована в Потоках Сообщений (Message Flows), входящих в состав Взаимодействия (Collaboration) и Хореографии (Choreography) (для получения более подробной информации см. Главы 9 и 11 соответственно). Ключи, используемые в Потоках Сообщений, представляют собой ключи контейнеров или группировок Потоков Сообщений, представленными в виде Взаимодействия, Хореографии, Точек Обмена Сообщениями (Conversation Nodes) и Действий Хореографии (Choreography Activities). Результатом могут стать множественные CorrelationKeys, используемые в том же самом Потоке Сообщений (возможно, из-за многочисленных слоев ограничения). В частности, вызовы Взаимодействия и Хореографии представляют собой особые Точки Обмена Сообщениями (Conversation Nodes) и Действия Хореографии соответственно. Они рассматриваются в качестве ограничений, необходимых для корреляции. Значения CorrelationKeys, заданные в вызывающем операторе, используются в Потоках Сообщений вызываемого Взаимодействия или вызываемой Хореографии.



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

Ключ Корреляции (CorrelationKey)

Ключ Корреляции (CorrelationKey) представляет собой составной ключ из одного или более Свойств Корреляции (CorrelationProperties), который главным образом определяет извлечение Выражений (Expressions) поверх Сообщений. В результате каждое Свойство Корреляции выступает в роли частичного ключа корреляции. В любом Сообщении, которое отсылается или принимается как часть какого-то Обмена сообщениями (Conversation), Свойства Корреляции должны указывать выражение CorrelationPropertyRetrievalExpression, которое устанавливает связь (ссылку) между Формальным Выражением (FormalExpression) и передаваемыми Сообщением данными. Это означает, что для каждого Сообщения, используемого в Обмене Сообщениями, существует Выражение (Expression), которое извлекает соответствующие данные, передаваемые в Сообщении.

Элемент CorrelationKey наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.31 содержит информацию о дополнительных ассоциациях элемента CorrelationKey.

Таблица 8.31 – Ассоциации элемента CorrelationKey

Название атрибута Описание/использование
name: string [0..1] Указывает название элемента CorrelationKey.
correlationPropertyRef: CorrelationProperty [0..*] Свойства корреляции (CorrelationProperties), представляющие собой частичные ключи данного Ключа Корреляции (CorrelationKey).


Основанная на ключах Корреляция (Key-based Correlation)

Основанная на ключах корреляция представляет собой простую и эффективную форму корреляции, при которой для идентификации Обмена Сообщениями (Conversation) используются один или несколько ключей. Любое входящее Сообщение (Message) должно быть противопоставлено Ключу Корреляции (CorrelationKey) путем извлечения Свойств Корреляции (CorrelationProperties) из этого Сообщения в соответствии с выражением CorrelationPropertyRetrievalExpression. При этом для данного Обмена Сообщениями выполняется сравнение составного ключа с экземпляром Ключа Корреляции (CorrelationKey). Смысл заключается в использовании объединенного «токена» (token), как отправляемого, так и получаемого, а также исходящих (outgoing) и входящих (incoming) Сообщений. Сообщения ассоциируются с каким-либо Обменом Сообщениями (Conversation) в том случае, если составной ключ, извлеченный из передаваемых данных, соответствует Ключу Корреляции (CorrelationKey), инициализированному для данного Обмена Сообщениями.

Задача Отправка (Send Task) или Задача получение (Receive Task), стоящая первой в составе Обмена Сообщениями (Conversation), ДОЛЖНА распространить по-меньшей мере один из экземпляров Ключа Корреляции (CorrelationKey) за счет извлечения значений из Свойств Корреляции (CorrelationProperties) в соответствии с выражением CorrelationPropertyRetrievalExpression, содержащимся в предварительно переданном или полученном Сообщении. Затем распространенные в Обмене Сообщениями экземпляры Ключа Корреляции (CorrelationKey) используются для описываемой процедуры согласования, когда составной ключ извлекается из входящих Сообщений и используется для идентификации соответствующего Обмена Сообщениями (Conversation). Когда такие, не способные к инициации Сообщения являются источникам значений для Ключей Корреляции (CorrelationKey), ассоциированных с Обменом Сообщениями, однако, ещё не распространенных, тогда извлеченные значения будут ассоциированы с экземпляром данного Обмена Сообщениями.

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

Таблица 8.32 – Ассоциации элемента CorrelationProperty

Название атрибута Описание/использование
name: string [0..1] Указывает название элемента CorrelationProperty.
type: string [0..1] Указывает тип элемента CorrelationProperty.
correlationPropertyRetrieval- Expression: CorrelationPropertyRetrieval- Expression [1..*] Представляет собой выражение CorrelationPropertyRetrievalExpressions для данного Ключа Корреляции (CorrelationKey), представляющее, в свою очередь, ассоциации Формальных Выражений (FormalExpressions), или путей извлечения, с Сообщениями, входящими в состав данного Обмена Сообщениями (Conversation).



Элемент CorrelationPropertyRetrievalExpression наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.33 содержит информацию о дополнительных ассоциациях элемента CorrelationPropertyRetrievalExpressions.

Таблица 8.33 – Ассоциации элемента CorrelationPropertyRetrievalExpression

Название атрибута Описание/использование
messagePath: FormalExpression Формальное Выражение (FormalExpression), определяющее то, каким образом Свойство Корреляции (CorrelationProperty) извлекается из передаваемых в Сообщении данных.
messageRef: Message Конкретное Сообщение, из которого Формальное Выражение (FormalExpression) извлекает Свойство Корреляции (CorrelationProperty).


Основанная на контексте Корреляция (Context-based Correlation)

По сравнению с корреляцией, основанной на ключах, корреляция, основанная на контексте, является более точной. В дополнении к скрытому распространению экземпляра Ключа Корреляции (CorrelationKey), начиная с первого отправленного или полученного Сообщения (Message), добавляется ещё один механизм установления связи между Ключом Корреляции (CorrelationKey) и контекстом Процесса. Это означает, что Процесс МОЖЕТ предоставить Подписку на Корреляцию (CorrelationSubscription), которая по отношению к Ключу Корреляции (CorrelationKey) выполняет функцию специального дубликата. В данном случае Обмен сообщениями (Conversation) МОЖЕТ дополнительно ссылаться на данные контекста Процесса, которые скрыто обновляются. Это позволяет определить, является ли получение Сообщения необходимым или нет. В ходе выполнения экземпляр Ключа Корреляции (CorrelationKey) хранит составной ключ, значение которого динамически высчитывается, исходя из контекста Процесса, а также автоматически обновляется, независимо от того, когда изменяются расположенные ниже Объекты Данных (Data Object) или Свойства (Properties).

Элементы CorrelationPropertyBindings представляют собой частичные ключи Подписки на корреляцию (CorrelationSubscription), каждый из которых относится к какому-то Свойству корреляции (CorrelationProperty) соответствующего Ключа Корреляции (CorrelationKey). Посредством Формального выражения (FormalExpression) определяется то, каким образом, исходя из контекста Процесса, распространяется и обновляется экземпляр Свойства Корреляции (CorrelationProperty) в ходе выполнения.

Элемент CorrelationSubscription наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.34 содержит информацию о дополнительных ассоциациях элемента CorrelationSubscription.

Таблица 8.34 – Ассоциации элемента CorrelationSubscription

Название атрибута Описание/использование
correlationKeyRef: CorrelationKey Ключ Корреляции (CorrelationKey), на который ссылается элемент CorrelationSubscription.
correlationPropertyBinding: CorrelationPropertyBinding [0..*] Связь со Свойствами Корреляции (CorrelationProperties) и Формальными Выражениями (FormalExpressions) (правила извлечения поверх контекста Процесса).


Элемент CorrelationPropertyBinding наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.35 содержит информацию о дополнительных ассоциациях элемента CorrelationPropertyBinding.

Таблица 8.35 – Ассоциации элемента CorrelationPropertyBinding

Название атрибута Описание/использование
dataPath: FormalExpression Формальное Выражение (FormalExpression), определяющее правило извлечения поверх контекста Процесса.
correlationPropertyRef: CorrelationProperty Свойства Корреляции (CorrelationProperties), на которые ссылается данный элемент CorrelationPropertyBinding.


В ходе выполнения механизм корреляции работает следующим образом: когда создается экземпляр Процесса, экземпляры Ключа Корреляции (CorrelationKey) во всех Обменах Сообщениями (Conversations) инициализируются вместе с некоторыми начальными значениями, посредством которых указывается корреляция с любым входящим Сообщением (Message) данных Обменов Сообщениями. Свойство Подписки (SubscriptionProperty) обновляется независимо от того, когда меняется любой Объект Данных (Data Objects) или Свойство (Properties), на которые в соответствующем Формальном Выражении (FormalExpression) есть ссылка. В результате, входящее Сообщение противопоставлено экземпляру Ключа Корреляции (CorrelationKey). Дальше, по ходу следования маршрута Процесса, Свойства Подписки (SubscriptionProperties) опять-таки могут изменить (в том числе, и скрыто) критерии корреляции. В качестве альтернативы может быть использован установленный механизм получения первой Задачи Отправка (Send Task) или Задачи Получение (Receive Task), используемых для распространения экземпляра Ключа Корреляции (CorrelationKey).

Представление XML-схемы для Корреляции (Correlation)

Таблица 8.36 – XML-схема для элемента Correlation Key

name="correlationKey" type="tCorrelationKey"/>
name="tCorrelationKey">

base="tBaseElement">

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

name="name" type="xsd:String" use="optional"/>




Таблица 8.37 – XML-схема для элемента Correlation Property

name="correlationProperty" type="tCorrelationProperty" substitutionGroup="rootElement"/>
name="tCorrelationProperty">

base="tRootElement">

<xsd:element ref="correlationPropertyRetrievalExpression"
minOccurs="1" maxOccurs="unbounded"/>

name="name" type="xsd:String" use="optional"/>
<xsd:attribute name="type" type="xsd:QName"/>





Таблица 8.38 – XML-схема для элемента Correlation Property Binding

name="correlationPropertyBinding" type="tCorrelationPropertyBinding"/>
<xsd:complexType name="tCorrelationPropertyBinding">

<xsd:extension base="tBaseElement">

name="dataPath" type="tFormalExpression" minOccurs="1" maxOccurs="1"/>

name="correlationPropertyRef" type="xsd:QName" use="required"/>




Таблица 8.39 – XML-схема для элемента Correlation Property Retrieval Expression

name="correlationPropertyRetrievalExpression" type="tCorrelationPropertyRetrievalExpression"/>
name="tCorrelationPropertyRetrievalExpression">

base="tBaseElement">

name="messagePath" type="tFormalExpression" minOccurs="1" maxOccurs="1"/>

name="messageRef" type="xsd:QName" use="required"/>




Таблица 8.40 – XML-схема для элемента Correlation Subscription

name="correlationSubscription" type="tCorrelationSubscription"/>
name=" tCorrelationSubscription ">

base="tBaseElement">

name="process" type="xsd:QName" use="required"/>
ref="correlationKeyRef" minOccurs="1" maxOccurs="1"/>
<xsd:element name="correlationPropertyBinding" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>



8.3.3 Ошибка (Error)

Ошибка (Error) представляет собой содержимое События типа Ошибка (Error Event) либо Ошибку (Fault) при сбое Операции (Operation). Посредством класса ItemDefinition указывается структура Ошибки (Error). Ошибка генерируется тогда, когда в ходе обработки Действия (Activity) возникает критическая проблема, либо когда выполнение Операции завершается ошибкой.



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

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

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

Название атрибута Описание/использование
structureRef : ItemDefinition [0..1] Используется для определения полезной нагрузки Ошибки.
name : string Описательное имя Ошибки.
errorCode: string Для Конечных Событий (End Event):
Если результатом является Ошибка, то ДОЛЖЕН предоставляться errorCode (в данном случае значение атрибута processType Процесса равно «executable»). Инициирует Ошибку.
Для Промежуточных Событий (Intermediate Event) в составе стандартного потока операций:
Если триггер является Ошибкой, то ДОЛЖЕН быть введен errorCode (в данном случае значение атрибута processType Процесса равно «executable»). Инициирует Ошибку.
Для Промежуточных Событий (Intermediate Event), присоединенных к границе Действия (Activity):
Если триггер является Ошибкой, то МОЖЕТ БЫТЬ введен errorCode. Событие данного типа обрабатывает (catch) Ошибку. В случае если значение errorCode не введено, то Событие ДОЛЖНО инициироваться любой ошибкой. В случае если значение errorCode все же введено, то Событие ДОЛЖНО инициироваться лишь соответствующей Ошибкой, указанной в errorCode.

8.3.4 Эскалация (Escalation)


Эскалация (Escalation) возникает в момент, когда Процесс каким-либо образом должен отреагировать на происходящее. Класс ItemDefinition используется для определения структуры Эскалации.



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

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

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

Название атрибута Описание/использование
structureRef : ItemDefinition [0..1] Используется для определения полезной нагрузки Эскалации.
name : string Описательное имя Эскалации.
escalationCode: string Для Конечных Событий (End Event):
Если результатом является Эскалация, то ДОЛЖЕН предоставляться escalationCode (в данном случае значение атрибута processType Процесса равно «executable»). Инициирует Эскалацию.
Для Промежуточных Событий (Intermediate Event) в составе стандартного потока операций:
Если триггер является Эскалацией, то ДОЛЖЕН быть введен escalationCode (в данном случае значение атрибута processType Процесса равно «executable»). Инициирует Эскалацию.
Для Промежуточных Событий (Intermediate Event), присоединенных к границе Действия (Activity):
Если триггер является Эскалацией, то МОЖЕТ БЫТЬ введен errorCode. Событие данного типа обрабатывает (catch) Эскалацию. В случае, если значение escalationCode не введено, то Событие ДОЛЖНО инициироваться любой Эскалацией. В случае, если значение escalationCode все же введено, то Событие ДОЛЖНО инициироваться лишь соответствующей Эскалацией, указанной в escalationCode.

8.3.5 События (Events)

Событие (Event) – это то, что происходит в течение Процесса. Событие оказывает влияние на ход Процесса и чаще всего имеет причину (cause) или оказывает воздействие (impact). Сам термин «событие» является достаточно объемным и подразумевает многие явления, происходящие в Процессе. Начало выполнения Действия, его завершение, смена статуса документа, прибывшее Сообщение и т.д., - все это может подходить под категорию «события». Однако в BPMN существуют ограничения использования Событий. Таким образом, Событиями BPMN могут называться лишь те события, которые оказывают влияние на последовательность Действий Процесса или время их выполнения.


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

Элемент Event наследует атрибуты и ассоциации элемента FlowElement (см. таблицу 8.44), однако, не может иметь каких-либо дополнительных атрибутов и ассоциаций.

Информацию о типах Событий (Стартовое, Промежуточное, Конечное) см. в подразделе 10.4.5.

8.3.6 Выражения (Expressions)

Класс Expression используется для определения Выражения (Expression) в виде текста на естественном языке. Такие Выражения являются неисполняемыми. Текст на естественном языке вводится с использованием атрибута documentation, заимствованного из элемента BaseElement.

Элемент Expression наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5), однако, не может иметь каких-либо дополнительных атрибутов и ассоциаций.

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

BPMN поддерживает использование недостаточно определенных Выражений, в которых логика представлена в виде описательного текста на естественном языке разработчика модели. Язык также поддерживает формальные Выражения (formal Expressions), в которых логика является исполняемой и описана с использованием конкретного языка Выражений.



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

Класс Expression

Класс Expression (выражений) используется для определения Выражения (Expression) в виде текста на естественном языке. Такие Выражения являются неисполняемыми и считаются недостаточно определенными.

Выражение (Expression) может использоваться двумя способами: оно может содержаться там же, где и используется, либо оно может быть указано на одном из уровней Процесса, куда к нему ведет ссылка из места, где оно должно быть использовано.

Элемент Expression наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5), однако, не может иметь каких-либо дополнительных атрибутов и ассоциаций.

Класс Formal Expression

Класс FormalExpression (формальных выражений) используется для определения исполняемых Выражений (Expression) с использованием конкретного языка Выражений. В качестве дополнения к основному требованию определения таких Выражений также может быть использовано описание на естественном языке.

Язык Выражений, использующийся по умолчанию для определения всех Выражений, указывается в элементе Definitions посредством атрибута expressionLanguage, хотя для определения какого-либо Формального Выражения, использующего этот атрибут, указанный по умолчанию язык может быть изменен.

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

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

Название атрибута Описание/использование
language: string [0..1] Отменяет язык Выражений (Expression language), указанный в Definitions. Язык ДОЛЖЕН иметь формат UML.
body: Element Тело Выражения. Обратите внимание, что данный атрибут не является значимым в случае, если для замены использован язык XML Schema. Напротив, сложным типом FormalExpression поддерживается смешанное наполнение. Тело Выражения определяется как наполнение элемента.
Пример:

count(../dataObject[id="CustomerRecord_1"]/emailAddress) > 0

evaluatesToTypeRef: ItemDefinition Тип объекта, возвращаемый Выражением при вычислении. К примеру, условные Выражения (conditional Expressions) вычисляются как булевские (boolean).

8.3.7 Элемент Потока (Flow Element)


FlowElement представляет собой абстрактный суперкласс для всех элементов, входящих в состав потоков Процесса - так называемых Узлов Потока (FlowNodes, см. соотв. пункт раздела 8.3.13). Узлы Потока состоят из Действий (Activities, см. раздел 10.2), Действий Хореографии (Choreography Activities, см. раздел 11.4), Шлюзов (Gateways, см. раздел 10.5), Событий (Events, см. раздел 10.4), Объектов Данных (Data Objets, см. раздел 10.3.1), Ассоциаций Данных (Data Association, см. соотв. пункт раздела 10.3.2), Потоков Операций (Sequence Flow, см. раздел 8.3.13).



Фигура 8.22 – Диаграмма класса элемента FlowElement


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

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

Название атрибута Описание/использование
name: string [0..1] Описательное имя элемента.
categoryValueRef: Category- Value [0..*] Ссылка на Значения Категории (Category Values), ассоциированные с данным Элементом Потока (Flow Element).
auditing: Auditing [0..1] Метод указания свойств проверки. Данный атрибут может использоваться только для Процесса.
monitoring: Monitoring [0..1] Метод указания свойств мониторинга. Данный атрибут может использоваться только для Процесса.

8.3.8 Контейнер Элементов Потока (Flow Elements Container)

Элемент FlowElementsContainer представляет собой абстрактный суперкласс для диаграмм BPMN (видов) и служит для определения расширенного набора элементов, отображаемых на диаграммах. В основном, Контейнер Элементов Потока содержит такие Элементы Потока, как События (Events, см. раздел 10.4), Шлюзы (Gateways, см. раздел 10.5), Потоки Операций (Sequence Flow, см. раздел 8.3.13), Действия (Activities, см. раздел 10.2) и Действия Хореографии (Choreography Activities, см. раздел 11.4).

Действий (Activities, см. раздел 10.2), Действий Хореографии (Choreography Activities, см. раздел 11.4), Шлюзов (Gateways, см. раздел 10.5), Событий (Events, см. раздел 10.4), Объектов Данных (Data Objets, см. раздел 10.3.1), Ассоциаций Данных (Data Association, см. соотв. пункт раздела 10.3.2), Потоков Операций (Sequence Flow, см. раздел 8.3.13).

BPMN выделяет четыре (4) типа Контейнеров Элементов Потока (см. фигуру 8.23): Процесс (Process), Подпроцесс (Sub-Process), Хореография (Choreography) и Подхореография (Sub-Choreography).



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

Элемент FlowElementsContainer наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 8.45 содержит информацию о дополнительных ассоциациях элемента FlowElementsContainer.

Таблица 8.45 – Ассоциации элемента FlowElementsContainer

Название атрибута Описание/использование
flowElements: Flow Element [0..*] Данная ассоциация используется для указания конкретных элементов потока (flow elements), содержащихся в Контейнере Элементов Потока. Элементами Потока являются: События, Шлюзы, Потоки Операций, Действия, Объекты Данных, Ассоциации Данных и Действия Хореографии.
Обратите внимание:
  • Действия Хореографии НЕ ДОЛЖНЫ являться Элементами Потока Процесса.
  • Действия, Ассоциации Данных, а также Объекты Данных НЕ ДОЛЖНЫ являться Элементами Потока Хореографии.
laneSets: LaneSet [0..*] Данный атрибут служит для определения списка элементов LaneSets, используемых в Контейнере Элементов Потока. LaneSets не используются в Хореографиях и Подхореографиях.
Данные материалы предназначены исключительно для ознакомления в личных целях.Любое воспроизведение, копирование, а так же коммерческое и некоммерческое использование материалов должно согласовываться с авторами материалов (inbox@elma365.com). Допускается использование материалов сайта без уведомления авторов, но с явным указанием источника.