В следующих подразделах содержится описание элементов BPMN, которые МОГУТ добавляться на диаграммы разных типов (Процесс (Process), Взаимодействие (Collaboration), и Хореография (Choreography)).
Для разработчиков моделей в 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 – Ассоциация (Association)
Фигура 8.10 – Диаграмма класса Association
Для того чтобы отобразить направление Ассоциации, необходимо следовать правилам:
Фигура 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 – Артефакт типа Группа
Как и Артефакт, Группа не является Действием (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 дополнительную информацию, являющуюся важной для конечного пользователя Диаграммы.
Графический элемент Текстовая Аннотация может быть присоединен к определенному элементу на Диаграмме при помощи Ассоциации (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
<xsd:extension base="tArtifact">
Таблица 8.27 - XML-схема для элемента Category
<xsd:element ref="categoryValue" minOccurs="0" maxOccurs="unbounded"/>
Таблица 8.28 - XML-схема для элемента CategoryValue
Таблица 8.29 - XML-схема для элемента Group
<xsd:attribute name="categoryValueRef" type="xsd:QName" use="optional"/>
Таблица 8.30 - XML-схема для элемента Text Annotation
Выполнение Бизнес-Процесса может осуществляться в течение нескольких дней или даже месяцев, сопровождаясь асинхронным общением через Сообщения (Message). В то же время параллельно могут выполняться множество экземпляров (instance) конкретного Процесса, к примеру, множество экземпляров процесса заказа, каждый из которых представляет собой отдельно взятый заказ. Корреляция используется для установки соответствия между каким-либо Сообщением и исходящим Обменом сообщениями (Conversation) двух различных экземпляров Процесса. BPMN позволяет использовать данные из существующих Сообщений для установки такой корреляции. К примеру, в процессе заказа каждый отдельно взятый экземпляр этого процесса может быть идентифицирован посредством относящегося к нему атрибута ordered или customerID, а не путем запроса технических данных о корреляции.
Суть Корреляции заключается в ассоциировании Сообщения с Задачей типа Отправка (Send Task) или Задачей типа Получение (Receive Task), что также называется маршрутизацией экземпляра (instance routing). Корреляция особенно важна, когда для осуществления маршрутизации экземпляра не может быть использована поддержки инфраструктура. Обратите внимание, что такая ассоциация может просматриваться на различных уровнях моделирования, т.е. во Взаимодействии (Collaboration (Conversation)), Хореографии (Choreography) и Процессе (Process). Однако собственно корреляция выполняется в ходе выполнения процесса (к примеру, на одном из уровней Процесса). Посредством корреляций описывается набор утверждений, касаемых Сообщения (как правило, передаваемых приложением данных). Эти утверждения должны быть удовлетворены, иначе Сообщение не будет ассоциировано с обособленной Задачей Отправка или Задачей Получение. Кроме того, любая Задача Отправка и любая Задача Получение может участвовать в одном или более Обменах сообщениями (Conversation). К тому же Задача такого типа идентифицирует Сообщение, которое она отсылает, и, таким образом, устанавливает связь с одним или несколькими Ключами Корреляции - CorrelationKeys.
Существуют два механизма неэксклюзивной корреляции:
Корреляция может быть использована в Потоках Сообщений (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
minOccurs="0" maxOccurs="unbounded"/>
Таблица 8.37 – XML-схема для элемента Correlation Property
<xsd:element ref="correlationPropertyRetrievalExpression"
minOccurs="1" maxOccurs="unbounded"/>
<xsd:attribute name="type" type="xsd:QName"/>
Таблица 8.38 – XML-схема для элемента Correlation Property Binding
<xsd:complexType name="tCorrelationPropertyBinding">
<xsd:extension base="tBaseElement">
Таблица 8.39 – XML-схема для элемента Correlation Property Retrieval Expression
Таблица 8.40 – XML-схема для элемента Correlation Subscription
<xsd:element name="correlationPropertyBinding" type="xsd:QName"
minOccurs="0" maxOccurs="unbounded"/>
Ошибка (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. |
Эскалация (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. |
Событие (Event) – это то, что происходит в течение Процесса. Событие оказывает влияние на ход Процесса и чаще всего имеет причину (cause) или оказывает воздействие (impact). Сам термин «событие» является достаточно объемным и подразумевает многие явления, происходящие в Процессе. Начало выполнения Действия, его завершение, смена статуса документа, прибывшее Сообщение и т.д., - все это может подходить под категорию «события». Однако в BPMN существуют ограничения использования Событий. Таким образом, Событиями BPMN могут называться лишь те события, которые оказывают влияние на последовательность Действий Процесса или время их выполнения.
Фигура 8.20 – Диаграмма классов элемента Event
Элемент Event наследует атрибуты и ассоциации элемента FlowElement (см. таблицу 8.44), однако, не может иметь каких-либо дополнительных атрибутов и ассоциаций.
Информацию о типах Событий (Стартовое, Промежуточное, Конечное) см. в подразделе 10.4.5.
Класс 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). |
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] | Метод указания свойств мониторинга. Данный атрибут может использоваться только для Процесса. |
Элемент 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 не используются в Хореографиях и Подхореографиях. |