Примечание: Выполнение пунктов данной главы является НЕОБХОДИМЫМ условием для Соответствия Требованиям Моделирования Хореографии BPMN, Соответствия Требованиям Моделирования Процесса BPMN и Соответствия Общим Требованиям BPMN. Однако следование изложенной в данной главе информации НЕ ТРЕБУЕТСЯ для Соответствия Требованиям Исполнения Процесса BPMN или Соответствия Требованиям Исполнения Процесса BPEL BPMN. Для получения более подробной информации см. раздел 2.1 документа.
Пакет Взаимодействие (Collaboration) содержит классы, используемые для моделирования Взаимодействия, представляющего собой совокупность Участников (Participants), представленных в виде Пулов (Pools), и взаимоотношений, представленных в виде Потоков Сообщений (Message Flows). Внутри Пулов Взаимодействия или в Хореографиях между этими Пулами МОГУТ находиться Процессы (см. фигуру 9.1). Хореография (Choreography) представляет собой расширенный тип Взаимодействия. Если Взаимодействие определено, это значение содержится в Definitions.
Фигура 9.1 – Классы пакета Collaboration
Элемент Collaboration наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5) посредством его связи с элементом RootElement. Таблица 9.1 содержит информацию о дополнительных атрибутах и ассоциациях элемента Collaboration.
Таблица 9.1 – Атрибуты и ассоциации элемента Collaboration
Название атрибута | Описание/использование |
name: string | Текстовое описание Взаимодействия. |
choreographyRef: Choreography [0..*] | Ассоциация choreographyRef указывает Хореографии, которые могут отображаться между Пулами Взаимодействия. Хореография служит для определения делового соглашения (или заказа, при котором происходит обмен сообщениями) между взаимодействующими Участниками. Для получения более подробной информации о Хореографии см. Главу 11. Ассоциации participantAssociations (см. описание ниже) используются для установления соответствия между Участниками Хореографии и Участниками Взаимодействия. Ассоциации MessageFlowAssociations (см. описание ниже) используются для установления соответствия между Потоками Сообщений Хореографии и Потоками Сообщений Взаимодействия. Ассоциации conversationAssociations (см. описание ниже) используются для установления соответствия между Обменами Сообщений Хореографии и Обменами Сообщений Взаимодействия. Обратите внимание, что данный атрибут не применяется в Хореографиях или Глобальных Обменах Сообщениями (GlobalConversation), являющихся подтипами Взаимодействия. Таким образом, одна Хореография не может ссылаться на другую. |
correlationKeys: CorrelationKey [0..*] | Данная ассоциация служит для указания Ключей Корреляции (CorrelationKeys), используемых для ассоциирования Сообщений с каким-либо Взаимодействием. |
conversationAssociations: ConversationAssociation [0..*] | Посредством данного атрибута определяется список соответствий между Обменами Сообщениями ссылающегося Взаимодействия и Обменами Сообщениями другого Взаимодействия. Используется, если:
|
conversations: ConversationNode [0..*] | Объединенное взаимоотношение conversations допускает наличие Обменов Сообщениями во Взаимодействии с целью группировки Потоков Сообщений данного Взаимодействия и установления ассоциаций с информацией корреляции, как того ТРЕБУЕТ модель определения Взаимодействия или Процесса. Обмены Сообщениями отображаются в том случае, если Взаимодействие является непосредственно Взаимодействием, а не Хореографией. |
conversationLinks: ConversationLink [0..*] | Ссылки на Обмен Сообщениями (Conversation Links), используемые во Взаимодействии. |
artifacts: Artifact [0..*] | Посредством данного атрибута определяется список Артефактов (Artifacts), содержащихся во Взаимодействии. |
participants: Participant [0..*] | Посредством данного атрибута определяется список Участников (Participants), принимающих участие во Взаимодействии. Во Взаимодействии Участники отображаются в виде Пулов, а в Хореографии – в виде Секций Участников (Participant Bands) графических элементов Задач Хореографии (Choreography Activities). |
participantAssociations: ParticipantAssociations [0..*] | Посредством данного атрибута определяется список соответствий между Участниками ссылающегося Взаимодействия и Участниками другого Взаимодействия. Используется, если:
|
messageFlow: Message Flow [0..*] | Посредством данного атрибута определяется список Потоков Сообщений, используемых во Взаимодействии. Потоки Сообщений отображаются во Взаимодействии (в виде пунктирных линий), но скрыты в Хореографии. |
messageFlowAssociations: Message Flow Association [0..*] | Посредством данного атрибута определяется список соответствий между Потоками Сообщений Взаимодействия и Потоками Сообщений соответствующей модели. Используется, если:
|
IsClosed: boolean = false | Булевское значение, указывающее на то, могут ли Потоки Сообщений, смоделированные вне Взаимодействия, появиться при выполнении этого Взаимодействия.
|
Набор Потоков Сообщений (Message Flows) какого-либо Взаимодействия МОЖЕТ принадлежать Обмену Сообщениями (Conversation). Обмен Сообщениями (Conversation) представляет собой набор Потоков Сообщений, имеющих общее предназначение, другими словами, все они связаны с обработкой одного заказа (для получения более подробной информации об Обмене Сообщениями см. раздел 9.4).
В состав Взаимодействия, как правило, входят два или более Пулов (Pools), представляющих собой его Участников (Participants). Обмен Сообщениями (Messages) между Участниками отображается посредством Потока Сообщений, соединяющих два Пула (или объекты внутри Пулов). Сообщения, ассоциированные с Потоками Сообщений, также МОГУТ отображаться графически. Примеры Взаимодействия приведены на фигурах 9.3, 9.4 и 9.5.
Пул МОЖЕТ БЫТЬ пустым (т.е. представлять собой «черный ящик»), а МОЖЕТ содержать в себе Процесс. Поскольку Хореографии разделяют Потоки Сообщений внутри Пулов, они МОГУТ отображаться в пространстве между Пулами. Взаимодействие допускает использование любых сочетаний Пулов, Процессов и Хореографий.
Некоторые из элементов BPMN являются общими как для Процессов и Хореографий (Choreography), так и для Взаимодействий. Такие элементы используются во всех перечисленных диаграммах. Следующие подразделы содержат информацию об использовании во Взаимодействии Сообщений (Messages), Потоков Сообщений (Message Flows), Участников (Participants), Потоков Операций (Sequence Flows), Артефактов (Artifacts), Корреляций (Correlations), Выражений (Expressions) и Сервисов (Services).
Пул (Pool) представляет собой графическое изображение Участника (Participant) Взаимодействия. Участник (см. подраздел 9.2.1) может являться более узкой Партнерской Сущностью (PartnerEntity, к примеру, компания) либо представлять достаточно общую Партнерскую Роль (PartnerRole, к примеру, покупатель, продавец, производитель). Пул МОЖЕТ ссылаться, а МОЖЕТ НЕ ссылаться на Процесс. Пул НЕ ОБЯЗАТЕЛЬНО содержит Процесс, т.е. может быть «черным ящиком»,
Текст, цвет, размер, а также линии, используемые для изображения Пула, ДОЛЖНЫ соответствовать правилам, указанным в разделе «Использование Текста, Цвета и Линий в Моделировании Диаграмм».
Фигура 9.2 - Пул
Для удобства работы с Диаграммой, Пул растянут на всю её длину (как по вертикали, так и по горизонтали). Однако на выбор размера и расположения Пула ограничения не налагаются. Разработчики моделей и инструменты моделирования могут использовать Пулы как угодно в целях сохранения на экране или напечатанной странице текущего размера Диаграммы.
Пул выступает в роли контейнера Потоков Операций (Sequence Flows) между Действиями (Activities), содержащимися в Процессе. Потоки Операций могут пересекать границы Дорожек (Lanes) внутри Пула (для получения более подробной информации о Дорожках см. подраздел 10.7), однако, не могу пересекать границ самого Пула. Это означает, что Процесс полностью находится в Пуле. Связь между Пулами отображается посредством Потоков Сообщений.
Другая особенность использования Пула заключается в возможности добавления в него деталей Действия (Activity). Соответственно, Пул МОЖЕТ отображаться как «Белый Ящик» (все детали показаны) или как «Черный Ящик» (все детали спрятаны). С Пулом, отображаемым в виде «Черного Ящика», не может быть ассоциировано ни одного Потока Операций, однако, Потоки Сообщений могут присоединяться к границам такого Пула (см. фигуру 9.3).
Фигура 9.3 – Потоки Сообщений, присоединенные к границам двух Пулов
Действия внутри Пула, отображаемого в качестве «Белого Ящика», организованы посредством Потоков Операций. Потоки Сообщений в данном случае могут пересекать границы Пула для соединения с соответствующими Действиями (см. фигуру 9.4).
Фигура 9.4 – Потоки Сообщений, соединяющие Элементы Потока внутри Пулов
Взаимодействие может содержать два (2) или более Пулов (т.е. Участников). Однако с точки зрения разработчиков модели, Процесс, представляющий собой выполняемую работу, рассматривается как «внутренний» (internal) и НЕ ТРЕБУЕТ заключения в границы Пула, в то время как остальные Пулы на Диаграмме ДОЛЖНЫ отображаться с границами (см. фигуру 9.5).
Фигура 9.5 – Основной (Внутренний) Пул, не имеющий границ
В BPMN для Пулов предусмотрен маркер - маркер многоэкземплярности, который МОЖЕТ отображаться в Пуле (см. фигуру 9.6). Данный маркер используется в том случае, если Участник, указанный в Пуле, является множественным. Для получения более подробной информации о множественности Участников см. соответствующий пункт следующего подраздела.
Фигура 9.6 – Пулы с маркерами Множественного Участника
Участник представляет собой конкретную Партнерскую Сущность (PartnerEntity, например, компанию) и/или менее узкую Партнерскую Роль (PartnerRole, например, покупателя, продавца, производителя), являющиеся Участниками Взаимодействия. Как правило, Участник отвечает за выполнение Процесса, заключенного в его Пуле. Однако Пул МОЖЕТ существовать и без Процесса.
На фигуре 9.7 представлена диаграмма классов элемента Participant и его отношений с другими элементами BPMN. Если Участник указан, это значение хранится во Взаимодействии, содержащем подтипы Хореографии (Choreography), Глобального Обмена Сообщениями (GlobalConversation) и Глобальной Задачи Хореографии (GlobalChoreographyTask).
Фигура 9.7 – Диаграмма классов элемента Participant
Элемент Participant наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 9.2 содержит информацию о дополнительных атрибутах и ассоциациях элемента Participant.
Таблица 9.2 – Атрибуты и ассоциации элемента Participant
Название атрибута | Описание/использование |
name: string [0..1] | Текстовое описание Участника. Имя Участника может отображаться напрямую либо быть заменено ассоциированной Партнерской Ролью (PartnerRole) или Партнерской Сущностью (PartnerEntity). Также возможен вариант, когда имя Партнерской Роли и имя Партнерской Сущности отображаются одновременно. |
processRef: Process [0..1] | Посредством атрибута processRef указывается Процесс, который используется Участником во Взаимодействии. Процесс отображается в Пуле данного Участника. |
partnerRoleRef: PartnerRole [0..*] | Посредством атрибута partnerRoleRef указывается Партнерская Роль, принадлежащая Участнику Взаимодействия. Для Участника МОЖЕТ быть указана как Партнерская Роль, так и Партнерская Сущность. Данный атрибут образован от атрибута participantRefs Партнерской Роли. |
partnerEntityRef: PartnerEntity [0..*] | Посредством атрибута partnerEntityRef указывается Партнерская Сущность, принадлежащая Участнику Взаимодействия. Для Участника МОЖЕТ быть указана как Партнерская Роль, так и Партнерская Сущность. Данный атрибут образован от атрибута participantRefs Партнерской Сущности. |
interfaceRef: Interface [0..*] | Посредством данной ассоциации указываются Интерфейсы (Interfaces), которые поддерживает Участник. Определение Интерфейса см. в подразделе 8.4.1) |
participantMultiplicity: participant- Multiplicity [0..1] | Ассоциация participantMultiplicityRef используется для определения Участника, который представляет собой более одного (1) экземпляра Участника в данном взаимодействии. Ниже содержится более подробное описание ParticipantMultiplicity. |
endPointRefs: EndPoint [0..*] | Данный атрибут используется для указания адреса (или ссылки на конечную точку) конкретного сервиса для реализации Участника. |
Партнерская Сущность (PartnerEntity)
Партнерская Сущность(PartnerEntity) является одним из типов Участника (см. подраздел выше).
Элемент PartnerEntity наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 9.3 содержит информацию о дополнительных атрибутах и ассоциациях элемента PartnerEntity.
Таблица 9.3 – Атрибуты и ассоциации элемента PartnerEntity
Название атрибута | Описание/использование |
name: string | Текстовое описание Партнерской Сущности. |
participantRef: Participant [0..*] | Данный атрибут определяет то, каково участие Партнерской Сущности во Взаимодействии или Хореографии (Choreography). |
Партнерская Роль (PartnerRole)
Партнерская Роль(PartnerRole) является одним из типов Участника (см. подраздел выше).
Элемент PartnerRole наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 9.4 содержит информацию о дополнительных атрибутах и ассоциациях элемента PartnerRole.
Таблица 9.4 – Атрибуты и ассоциации элемента PartnerRole
Название атрибута | Описание/использование |
name: string | Текстовое описание Партнерской Роли. |
participantRef: Participant [0..*] | Данный атрибут определяет то, каково участие Партнерской Роли во Взаимодействии или Хореографии (Choreography). |
Множественность Участника
Элемент ParticipantMultiplicity используется для указания на множественность Участника.
К примеру, производитель может получить запрос от множества поставщиков, участвующих во Взаимодействии.
Фигура 9.8 – Пул с Множественным Участником
На фигуре 9.9 изображена диаграмма классов для Множественного Участника.
Фигура 9.9 – Диаграмма классов для Множественного Участника
Маркер многоэкземплярности отображается в центре нижней части Пула (Участника, см. фигуру 9.9) или Секции Участника в Действии Хореографии (см. раздел 11.4). Он используется в случае, если элемент ParticipantMultiplicity ассоциирован с Участником, а значение атрибута maximum не указано или равно «два и больше».
Таблица 9.5 содержит информацию об атрибутах элемента ParticipantMultiplicity.
Таблица 9.5 – Атрибуты элемента ParticipantMultiplicity
Название атрибута | Описание/использование |
minimum: integer = 0 | Посредством атрибута minimum указывается минимальное количество Участников, которые ДОЛЖНЫ участвовать во Взаимодействии. Если указано также и значение атрибута maximum, оно ДОЛЖНО БЫТЬ больше или равно значению данного атрибута. |
maximum: integer [0..1] = 1 | Посредством атрибута maximum указывается максимальное количество Участников, которые МОГУТ участвовать во Взаимодействии. Данное значение ДОЛЖНО БЫТЬ равно «1» или больше, А ТАКЖЕ ДОЛЖНО БЫТЬ равно или больше значения атрибута minimum. |
Таблица 9.6 содержит информацию об атрибутах Экземпляра (Instance)элемента ParticipantMultiplicity.
Таблица 9.6 – Атрибуты Экземпляра элемента ParticipantMultiplicity
Название атрибута | Описание/использование |
numParticipants: integer [0..1] | Текущее значение множественности Участника для данного Экземпляра Хореографии или Взаимодействия. |
Ассоциация Участника (ParticipantAssociation)
Данные элементы используются для установки соответствия между двумя элементами, содержащими Участников. Время от времени могут возникать ситуации, когда Участники разных Диаграмм могут быть определены по-разному (т.к. они создавались по-отдельности), но при этом данные Участники представляют собой одно и то же. Элемент ParticipantAssociation служит для установки соответствия между такими Участниками.
Элемент ParticipantAssociation используется в случае, если одна (внешняя) диаграмма с Участниками в составе содержит другую (внутреннюю) диаграмму также с Участниками в составе. BPMN выделяет четыре случая, когда необходимо применение элемента ParticipantAssociation:
Элемент ParticipantAssociation может быть присвоен внешней диаграмме или одному из её элементов. На фигуре 9.10 изображена диаграмма классов элемента ParticipantAssociation.
Фигура 9.10 - Диаграмма классов элемента ParticipantAssociation
Элемент ParticipantAssociation наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 9.7 содержит информацию о дополнительных ассоциациях элемента ParticipantAssociation.
Таблица 9.7 – Ассоциации элемента ParticipantAssociation
Название атрибута | Описание/использование |
innerParticipantRef: Participant | Посредством данного атрибута определяется Участник элемента, на который ссылаются (например, Хореография, которая будет использована во Взаимодействии) и который соответствует родительскому элементу (например, Взаимодействию). |
outerParticipantRef: Participant | Посредством данного атрибута определяется Участник родительского элемента (например, Взаимодействие ссылается на Хореографию), соответствующий элементу, на который ссылаются (например, Хореография). |
Дорожки (Lane) разграничивают внутреннее пространство Процесса (как правило, Пула) и простираются на всю длину уровня Процесса, как вертикально (см. фигуру 10.123), так и горизонтально (см. фигуру 10.124). Для получения более подробной информации о Дорожках см. раздел 10.7.
Поток Сообщений (Message Flow) используется для отображения обмена сообщениями между двумя Участниками (Participants), готовыми эти Сообщения отсылать и получать.
Фигура 9.11 – Поток Сообщений
На Диаграмме Взаимодействия (вид Процесса Хореографии в сочетании с Процессами Оркестровки) Поток Сообщений может быть расширен с целью показать Сообщение, поступающее от одного Участника к другому (см. фигуру 9.12).
Фигура 9.12 – Поток Сообщений с Присоединенным Сообщением
В случае, если в состав Взаимодействия входит Хореография (Choreoraphy), то Поток Сообщений, поскольку он соединяет двух Участников, проходит через Задачу Хореографии (Choreography Task), см. фигуру 9.13.
Фигура 9.13 – Поток Сообщений, проходящий через Задачу Хореографии
На фигуре 9.14 представлена диаграмма классов Потока Сообщений, а также его отношения с другими элементами BPMN. Если Поток Сообщений определен, это значение хранится либо во Взаимодействии, либо в Хореографии или Глобальной Задаче Хореографии (GlobalChoreographyTask).
Фигура 9.14 – Диаграмма классов элемента Message Flow
Элемент Message Flow наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 9.8 содержит информацию о дополнительных атрибутах и ассоциациях элемента Message Flow.
Таблица 9.8 – Атрибуты и ассоциации элемента Message Flow
Название атрибута | Описание/использование |
name: string | Текстовое описание Потока Сообщений. |
sourceRef: InteractionNode | Определяет Узел Взаимодействия (InteractionNode), от которого отходит Поток Операций. Из элементов, относящихся к Узлам Взаимодействия, только Пулы/Участники, Действия (Activities) и События (Events) могут являться источниками Потока Сообщений. |
targetRef: InteractionNode | Определяет Узел Взаимодействия (InteractionNode), к которому направлен Поток Операций. Из элементов, относящихся к Узлам Взаимодействия, только Пулы/Участники, Действия (Activities) и События (Events) могут являться целями Потока Сообщений. |
messageRef: Message [0..1] | Посредством ассоциации messageRef указывается Сообщение, проходящее через Поток Сообщений (для получения более подробной информации см. подраздел 8.3.11). |
В отличие от индивидуальных ассоциаций элементов, соединяющихся с Потоками Сообщений (см. раздел выше), элемент InteractionNode используется для указания другого элемента в качестве источника или цели ассоциаций Потока Сообщений (см. фигуру 9.14). Соединяться с Потоками Сообщений могут лишь Пулы/Участники, Действия (Activities) и События (Events). Элемент InteractionNode также используется для указания других элементов в качестве источников или целей Ссылок на Обмен Сообщениями (Conversation Links), см. подраздел 9.4.6.
Элемент InteractionNode не может иметь никаких атрибутов и ассоциаций, а также не наследует от других элементов BPMN. Поскольку Пулы/Участники, Действия и События обладают собственными атрибутами и ассоциациями, а также наследуют от других элементов, элементу InteractionNode не требуется никаких дополнительных атрибутов и ассоциаций.
Описанные здесь элементы используются для установки соответствия между двумя элементами, содержащими Потоки Сообщений. Элемент MessageFlowAssociation применяется для установки соответствия между Потоками Сообщений.
Элемент MessageFlowAssociation используется в случае, если одна (внешняя) диаграмма с Потоками Сообщений содержит другую (внутреннюю) диаграмму, в состав которой также входят Потоки Сообщений. Данная ассоциация применяется в случае, когда:
На фигуре 9.15 представлена диаграмма классов элемента MessageFlowAssociation.
Фигура 9.15 – Диаграмма классов элемента MessageFlowAssociation
Элемент MessageFlowAssociation наследует атрибуты и ассоциации элемента BaseElement (см. таблицу 8.5). Таблица 9.9 содержит информацию о дополнительных атрибутах и ассоциациях элемента MessageFlowAssociation.
Таблица 9.9 – Атрибуты и ассоциации элемента MessageFlowAssociation
Название атрибута | Описание/использование |
innerMessageFlowRef: Message Flow | Посредством данного атрибута определяется Поток Сообщений элемента, на который ссылаются (например, Хореография, которая будет использована во Взаимодействии) и который соответствует родительскому элементу (например, Взаимодействию). |
outerMessageFlowRef: Message Flow | Посредством данного атрибута определяется Поток Сообщений родительского элемента (например, Взаимодействие ссылается на Хореографию), соответствующий элементу, на который ссылаются (например, Хореография). |