<<предыдущая содержание следующая>>






9.4 Обмен Сообщениями (Conversations)

Обмен Сообщениями (Conversation) является частным случаем использования диаграммы Взаимодействия и её неформальным описанием. Выражаясь общими терминами, Обмен Сообщениями представляет собой упрощенный вариант Взаимодействия, однако, диаграмма Обмена Сообщениями все же поддерживает все характеристики Взаимодействия. В частности, Участники (Пулы) диаграммы Обмена Сообщениями могут содержать Процессы для отображения связи между Обменом Сообщениями и Действиями (Activities).

Диаграмма Обмена Сообщениями содержит два дополнительных графических элемента, которые не отображаются на других диаграммах BPMN:

  1. Узел Взаимодействия (Conversation Node). Сюда входят Обмен Сообщениями, Подчиненный Обмен Сообщениями (Sub-Conversation) и Обмен Сообщениями типа Вызов (Call Conversation).
  2. Ссылка на Обмен Сообщениями (Conversation Link).


Обмен Сообщениями представляет собой логическое оформление (группировку) обмена Сообщениями (Потоков Сообщений), имеющих общую Корреляцию (Correlation). Посредством Обмена Сообщениями также отображается логическое отношение, характерное для обмена Сообщениями. В действительности логическое отношение часто связано с важными бизнес-объектами, например, «Заказом», «Транспортировкой и Доставкой», «Выставлением счета». Соответственно, Обмен Сообщениями ассоциирован с набором пар "имя-значение" или Ключом корреляции (Correlation Key, например, «Идентификатор Заказа» или «Идентификатор Доставки»), который записан в Сообщениях, подлежащих обмену. В данном случае Сообщение может быть направлено в конкретный экземпляр Процесса, ответственный за получение и обработку данного Сообщения.

На фигуре 9.16 представлен простой пример диаграммы Обмена Сообщениями.



Фигура 9.16 - Диаграмма Обмена Сообщениями

На фигуре 9.17 представлен один из вариантов расположенной выше диаграммы. В данном случае узел Обмена Сообщениями расширен с продолжением в собственные Потоки Сообщений. Обратите внимание, что диаграмма имеет такой же вид, что и диаграмма простого Взаимодействия (см. фигуру 9.3).



Фигура 9.17 - Диаграмма Обмена Сообщениями, расширенного в Потоки Сообщений

Случаи обмена Сообщениями связаны друг с другом и являются отражением удаленных бизнес-сценариев. Отношения иногда оказываются простыми, как, например, запрос, за которым следует ответ (такой пример может быть описан в качестве компонента структурного интерфейса какого-либо сервиса, например, определения операции WSDL). Однако в коммерческих операциях, управляемых Бизнес-процессами, отношения могут быть сложными, когда задействуется взаимный продолжительный обмен Сообщениями. В таких случаях отношения могут представлять собой не двусторонние, а комплексные, многосторонние Взаимодействия. Рассмотрим пример из логистики. Пополнение запасов товаров подразумевает следующие сценарии: формирование заказов, назначение проводника для доставки товаров по нескольким заказам, прохождение таможни/карантин, оплата и рассмотрение отводов.

Говоря об оркестровке Процесса, следует помнить, что Обмены Сообщениями являются значимыми для Хореографии (Choreography), однако, не отображаются в ней. Отличие состоит в том, что Хореография представляет собой проекцию комплексного (с несколькими Участниками) Обмена Сообщениями. Причиной этого является то, что обмен Сообщениями, моделируемый с использованием Действий Хореографии (Choreography Activities), подразумевает наличие нескольких Участников. Эта схема отличается от оркестровки Процесса, где элементы отправки и получения Сообщения принадлежат одному Участнику. Ещё одним отличием является то, что понятие Обмена Сообщениями сохраняется и в Хореографии, и в оркестровке. Таким образом, обмен Сообщениями будет, в итоге, выполняться и в оркестровке Процесса.

Поскольку Взаимодействие представляет собой проекцию обмена Сообщениями в режиме нисходящего моделирования (в период проектирования), то абстрактное представление всех Обменов Сообщениями, связанных с моделируемой областью, доступно во всех диаграммах Обменов Сообщениями. На диаграмме Обмена Сообщениями (такой, как на фигуре 9.18) в виде шестиугольников показаны Обмены Сообщениями между Участниками. Благодаря этому обеспечивается вид «с высоты птичьего полета» различных Обменов Сообщениями, связанных с определенной областью.



Фигура 9.18 – Диаграмма Обмена Сообщениями, изображающая несколько Обменов Сообщениями между Участниками одной области

На фигуре 9.18 изображены 13 обособленных Обменов Сообщениями между взаимодействующими Участниками (рассматривается область логистики). Участники «Retailer» (продавец) и «Supplier» (поставщик) участвуют в Обмене Сообщениями «Delivery Negotiations» (переговоры о доставке), а Участник «Consignee» (грузополучатель) ведет переговоры с Участниками «Retailer» и «Supplier» посредством Обменов Сообщениями «Delivery/Dispatch Plan» (план отправки и доставки) и «Shipment Schedule» (схема доставки) соответственно. В Обмен Сообщениями МОГУТ БЫТЬ вовлечены более двух участников (например, в Обмене Сообщениями «Detailed Shipment Schedule» (детальная схема доставки) могут участвовать «Consignee», «Consolidator» (консолидатор) и «Shipper»). Для того, чтобы указать количество вовлеченных в Обмен Сообщениями Участников, необходимо указать ассоциации между этими Участниками и Обменом Сообщениями. К примеру, в Обмене Сообщениями «Deliver Negotiations» один экземпляр Участника «Retailer» ведет переговоры с другим (одним) экземпляром Участника «Supplier». Однако один экземпляр Участника «Shipper» ведет обсуждение с несколькими экземплярами Участника «Carrier» (на диаграмме такой Участник обозначен многоэкземплярным маркером Пула) в Обмене Сообщениями «Carrier Planning» (планирование перевозки). Обратите внимание, что в рамках Обмена Сообщениями множественность (многоэкземплярность) подразумевает наличие одного и более экземпляров (а не от нуля и более).

Поведение различных Обменов Сообщениями моделируется в отдельных Хореографиях (Choreographies), где детализируется последовательность обмена Сообщениями. В действительности тесно связанные Обмены Сообщениями могут использоваться совместно в одной и той же модели Хореографии, к примеру, обмен Сообщениями в «Delivery Negotiation» ведет к Обменам Сообщениями «Shipment Schedule», «Delivery Planning» и «Delivery/Dispatch», которые, в свою очередь, могут использоваться вместе в одной Хореографии. При этом они также по отдельности могут входить в состав разных Хореографий.

На фигуре 9.19 изображено подмножество более крупного Обмена Сообщениями, представленного на фигуре 9.18. На фигурах 9.20 и 9.21 более детально показан Подчиненный Обмен Сообщениями «Delivery Negotiations». Он растягивает Обмен Сообщениями за счет Потоков Сообщений, благодаря которым обеспечивается структура Обмена Сообщениями и не нарушается последовательность в нем. На фигуре 9.19 также изображен Ключ Корреляции (CorrelationKey), входящий в состав Потоков Сообщений данного Обмена Сообщениями. К примеру, «Order Id» (ID заказа) необходим для всех Сообщений, составляющих Потоки Сообщений в «Delivery Negotiation». Некоторые из этих Потоков Сообщений требуют наличия Variation Id (это необходимо для работы с видами поставок на основании продукции).



Фигура 9.19 – Пример Подчиненного Обмена Сообщениями

На фигуре 9.20 отображен Подчиненный Обмен Сообщениями, представленный на фигуре 9.19, который расширен с помощью Потоков Сообщений и Обмена Сообщениями более высокого уровня.



Фигура 9.20 – Пример Подчиненного Обмена Сообщениями, расширенного Обменом Сообщениями и Потоками Сообщений

На фигуре 9.21 отображен Обмен Сообщениями, представленный на фигуре 9.20, который также расширен с помощью набора Потоков Сообщений в сочетании с предыдущими Потоками Сообщений. Обратите внимание, что вновь открытые Потоки Сообщений, принадлежащие Обмену Сообщениями более низкого уровня, взаимосвязаны посредством Ключа Корреляции (CorrelationKey) как Обмена Сообщениями более низкого уровня (Variation Id), так и Подчиненного Обмена Сообщениями более высокого уровня (Order Id).



На фигуре 9.19 изображен Обмен Сообщениями с иерархической структурой, которая просматривается в одном наборе Потоков Сообщений, находящемся в родительско-дочерних отношениях с другим. В частности, после «Planned Order Variations» на родительском уровне (использовался Order Id) Потоки Сообщений дочернего уровня следуют до «Retailer Order and Delivery Variations Ack» (использовались Variation Id и Order Id). Оставшиеся Потоки Сообщений (использовался Order Id) находятся на родительском уровне. Дочерний Обмен Сообщениями является частью родительского Обмена Сообщениями. Вложенный Обмен Сообщениями графически отмечен знаком «+», указывающим на то, что Подчиненный Обмен Сообщениями или Обмен Сообщениями типа Вызов вызывает Взаимодействие. Вложенный Обмен Сообщениями может охватить любое количество уровней.

Отношения подчинения между Обменами Сообщениями могут частично перекрываться. Это происходит тогда, когда в двух или более Обменах Сообщениями происходят общие для них двоих отправка и получение Сообщений. Как изображено на фигуре 9.18, Сообщение отсылается как часть «Detailed Shipment Schedule» (используется Carrier Schedule Id) с целью активации «Delivery Monitoring» (используется Shipment Id). В ходе операции «Delivery Monitoring» Сообщение может быть отправлено в «Detailed Shipment Schedule» с целью запросить информацию об изменениях в случае, если возникнут какие-то проблемы при транспортировке.

Разделение и слияние относятся к сценариям перекрытия. Разделение Обмена Сообщениями возникает тогда, когда обмен Сообщением, являющимся частью данного Обмена Сообщениями, происходит между двумя или более Участниками, которые одновременно активируют новый удаленный Обмен Сообщениями (между этими же или другими Участниками). При разделении Обмена Сообщениями ни последующего обмена Сообщениями, ни последующего слияния Обменов Сообщениями не происходит. Примером может служить Обмен Сообщениями «Delivery Planning», ведущий к «Carrier Planning» и «Special Cover». Слияние Обмена Сообщениями происходит тогда, когда несколько этих элементов объединяются в один Обмен Сообщениями. При этом в исходных Обменах Сообщениями отправка и принятие Сообщений прекращается, что означает завершение Обменов Сообщениями. Итак, разделение и слияние представляют собой рефакторинг Обменов Сообщениями и подразумевают разделение одного Обмена Сообщениями на параллельные и последующее их объединение.

9.4.1 Узел Обмена Сообщениями (Conversation Node)

ConversationNode представляет собой абстрактный суперкласс для всех элементов, которые могут содержать элементы Обмена Сообщениями диаграммы Взаимодействия. Такими элементами являются Обмен Сообщениями (Conversation, см. подраздел 9.4.2), Подчиненный Обмен Сообщениями (Sub-Conversation, см. подраздел 9.4.3) и Обмен Сообщениями типа Вызов (Call Conversation, см. подраздел 9.4.4).



Фигура 9.22 – Метамодель взаимосвязанных элементов Узла Обмена Сообщениями

Элементы ConversationNode соединяется с Участниками посредством Ссылок на Обмен Сообщениями (Conversation Links, см. подраздел 9.4.6).

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

Таблица 9.10 – Ассоциации элемента ConversationNode

Название атрибута Описание/использование
name: string [0..1] Текстовое описание элемента ConversationNode.
participantRefs: Partici-pant [2..*] Предоставляет список Участников, задействованных в Узле Обмена Сообщениями согласно списку родительского Обмена Сообщениями Узла Обмена Сообщениями. Данная ссылка отображается посредством элемента Ссылка на Обмен Сообщениями (Conversation Links, см. подраздел 9.4.6).
messageFlowRefs: MessageFlow [0..*] Ссылка на все Потоки Сообщений (и, соответственно, на Сообщения), сгруппированные посредством Обмена Сообщениями.
correlationKeys: CorrelationKey [0..*] Список Ключей Корреляции Узла Обмена Сообщениями, используемые для группировки Потоков Сообщений Узла Обмена Сообщениями.

9.4.2 Обмен Сообщениями (Conversation)

Обмен Сообщениями (Conversation) представляет собой простой элемент, предназначенный для диаграммы Обмена Сообщениями (Взаимодействия). Является набором Потоков Сообщений (Message Flows), сгруппированных по общему принципу и\или в соответствии с Ключом Корреляции (CorrelationKey).

  • Обмен Сообщениями (Conversation) представляет собой шестиугольник, который ДОЛЖЕН БЫТЬ выполнен тонкой одинарной линией (см. фигуру 9.23).




Фигура 9.23 – Обмен Сообщениями

Элемент Conversation наследует атрибуты и ассоциации элемента ConversationNode (см. таблицу 9.10), однако, не может иметь каких-либо других атрибутов или ассоциаций.

9.4.3 Подчиненный Обмен Сообщениями (Sub-Conversation)

Подчиненный Обмен Сообщениями (Sub-Conversation) является Узлом Обмена Сообщениями (ConversationNode). Представляет собой иерархическое деление внутри родительского Взаимодействия. Данный графический элемент расположен внутри Взаимодействия, однако, он может быть «открытым» для того, чтобы посредством него были показаны детали нижнего уровня Обмена Сообщениями, состоящего из Потоков Сообщений (Message Flows), Обменов Сообщениями и/или других Подчиненных Обменов Сообщениями. Участники (Participants) Подчиненного Обмена Сообщениями являются Участниками его родительского Обмена Сообщениями.

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



Фигура 9.24 – Составной элемент Обмена Сообщениями

Элемент Sub-Conversation наследует атрибуты и ассоциации элемента ConversationNode (см. таблицу 9.10). Таблица 9.11 содержит информацию о дополнительных ассоциациях элемента Sub-Conversation.

Таблица 9.11 – Ассоциации элемента Sub-Conversation

Название атрибута Описание/использование
conversationNodes:
ConversationNode [0..*]
Объединяющая связь модели Узла Обмена Сообщениями допускает присутствие в Подчиненном Обмене Сообщениями других Узлов Обмена Сообщениями. Благодаря этому осуществляется группировка Потоков Сообщений Подчиненного Обмена Сообщениями и установка ассоциаций с коррелятивной информацией.

9.4.4 Обмен Сообщениями типа Вызов (Call Conversation)

Обмен Сообщениями типа Вызов указывает место Обмена Сообщениями (Взаимодействия), где используется глобальный Обмен Сообщениями или элемент GlobalConversation.

  • В случае, если Обмен Сообщениями типа Вызов вызывает Глобальный Обмен Сообщениями, то отображаться он будет так же, как стандартный Обмен Сообщениями, однако, его границы ДОЛЖНЫ БЫТЬ выполнены жирной линией (см. фигуру 9.25).
  • В случае, если Обмен Сообщениями типа Вызов вызывает Взаимодействие, то отображаться он будет так же, как Подчиненный Обмен Сообщениями, однако, его границы ДОЛЖНЫ БЫТЬ выполнены жирной линией (см. фигуру 9.26).



Фигура 9.25 - Обмен Сообщениями типа Вызов, вызывающий Глобальный Обмен Сообщениями



Фигура 9.26 - Обмен Сообщениями типа Вызов, вызывающий Взаимодействие

Элемент Call Conversation наследует атрибуты и ассоциации элемента ConversationNode (см. таблицу 9.10). Таблица 9.12 содержит информацию о дополнительных ассоциациях элемента Call Conversation.

Таблица 9.12 – Ассоциации элемента Call Conversation

Название атрибута Описание/использование
calledCollaborationRef: Collaboratioin [0..1] Элемент, который необходимо вызвать, МОЖЕТ являться либо Взаимодействием, либо Глобальным Обменом Сообщениями. Вызываемый элемент НЕ ДОЛЖЕН быть Хореографией или Глобальной Задачей Хореографии (оба этих элемента являются подтипами Взаимодействия).
participantAssociations: Participant Association [0..*] Посредством данного атрибута Участники родительского Обмена Сообщениями получают список соответствий от Участников соответствующего Глобального Обмена Сообщениями или Обмена Сообщениями.


Примечание – атрибут messageFlowRef Узла Обмена Сообщениями не применяется в Обмене Сообщениями типа Вызов.

9.4.5 Глобальный Обмен Сообщениями (Global Conversation)

Глобальный Обмен Сообщениями (GlobalConversation) является повторно используемым простым элементом Обмена Сообщениями, который вызывается из любого Взаимодействия или Обмена Сообщениями типа Вызов.

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

Глобальный Обмен Сообщениями представляет собой ограниченный тип Взаимодействия, т.е. «пустое Взаимодействие».

  • Глобальный Обмен Сообщениями не должен содержать Узлов Обмена Сообщениями.

Поскольку в Глобальном Обмене Сообщениями не содержится никаких Элементов Потока (Flow Elements), для него не требуется использование элементов MessageFlowAssociations (Ассоциаций с Элементами Потока), ParticipantAssociations (Ассоциаций с Участниками), ConversationAssociations (Ассоциаций с Обменом Сообщениями) или Артефактов (Artifacts). Чаще всего Глобальный Обмен Сообщениями представляет собой повторно используемых Участников (Participants), Потоков Сообщений (Message Flows) или Ключей Корреляции (CorrelationKeys). Атрибут choreographyRef Взаимодействия не может быть применен в Глобальном Обмене Сообщениями.

9.4.6 Ссылка на Обмен Сообщениями (Conversation Link)

Ссылки на Обмен Сообщениями (Conversation Links) используются для установления связи между Узлами Обмена Сообщениями (ConversationNodes) и Участниками (Participants), т.е. Пулами (Pools). Связь может быть направлена как от Участников, так к ним (см. фигуру 9.27).

  • Графический элемент Ссылка на Обмен Сообщениями ДОЛЖЕН БЫТЬ выполнен двойной тонкой линией.



Фигура 9.27 - Ссылка на Обмен Сообщениями


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



Фигура 9.28 – Ссылки на Обмен Сообщениями, ведущие к Действиям и Событиям



Фигура 9.29 – Метамодель элементов, связанных с элементом Ссылка на Обмен Сообщениями

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

Таблица 9.13 – Атрибуты и ассоциации элемента Conversation Link

Название атрибута Описание/использование
name: string [0..1] Посредством данного атрибута указывается название Ссылки на Обмен Сообщениями.
sourceRef: InteractionNode Посредством данного атрибута указывается Узел Обмена Сообщениями (InteractionNode), от которого ведет Ссылка на Обмен Сообщениями. Ссылка на Обмен Сообщениями ДОЛЖНА вести лишь к одному Узлу Обмена Сообщениями. В случае, если значение данного атрибута не равно «ConversationNode», то значение атрибута targetRef ДОЛЖНО БЫТЬ равно «ConversationNode».
targetRef: InteractionNode Посредством данного атрибута указывается Узел Обмена Сообщениями (InteractionNode), к которому ведет Ссылка на Обмен Сообщениями. Ссылка на Обмен Сообщениями ДОЛЖНА вести лишь к одному Узлу Обмена Сообщениями. В случае, если значение данного атрибута не равно «ConversationNode», то значение атрибута sourceRef ДОЛЖНО БЫТЬ равно «ConversationNode».


Ссылки на Обмен Сообщениями, используемые в Обменах Сообщениями типа Вызов, служат для указания имен Участников во вложенном или глобальном Взаимодействии (указано в элементах ParticipantAssociations). К примеру, на фигуре 9.30 (слева направо) отображены Взаимодействие и Обмен Сообщениями типа Вызов, ведущий к Взаимодействию. Ссылки на Обмен Сообщениями, отображаемые слева, указывают на то, какие Участники вызываемого Взаимодействия (справа) соотносятся с Участниками вызывающего Взаимодействия (слева). К примеру, Участники, относящиеся к расположенному справа «Credit Agency» (кредитному агентству), соотносятся с Участником «Financial Company» (финансовой компании) слева. Посредством элементов ParticipantAssociations (на диаграмме не отображаются) каждый из Участников расположенного слева Взаимодействия привязывается к Участнику Взаимодействия справа. Эти элементы могут быть использованы для отображения имен Участников во вложенном или глобальном Взаимодействии.



Фигура 9.30 – Ссылки Обмена Сообщениями типа Вызов

9.4.7 Ассоциация Обмена Сообщениями (Conversation Association)

Элемент Ассоциация Обмена Сообщениями (ConversationAssociation) используется на диаграммах Взаимодействий и Хореографий (Choreographies) с целью использования повторно выполняемых Обменов Сообщениями в Потоках Сообщений (Message Flows) вышеуказанных диаграмм.

Элемент Ассоциация Обмена Сообщениями используется тогда, когда на диаграммах имеются ссылки на Обмен Сообщениями для предоставления коррелятивной информации из Сообщения и/или для логической группировки Потоков Сообщений. Таким образом, данный элемент используется в ситуации, когда:

  • Взаимодействие ссылается на Хореографию для включения её между Пулами (Участниками) данного Взаимодействия. Узлы Обмена Сообщениями (ConversationNodes), принадлежащие Хореографии (внутренняя диаграмма), должны соответствовать Узлам Обмена Сообщениями (ConversationNodes) Взаимодействия (внешняя диаграмма).




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

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

Таблица 9.14 – Ассоциации элемента ConversationAssociation

Название атрибута Описание/использование
innerConversationNodeRef: ConversationNode [0..1] Посредством данного атрибута указываются Узлы Обмена Сообщениями элемента (например, Хореографии, используемой во Взаимодействии), который соответствует родительскому элементу (например, Взаимодействию).
outerConversationNodeRef: ConversationNode [0..*] Посредством данного атрибута указываются Узлы Обмена Сообщениями родительского элемента (например, Взаимодействия, ссылающегося на Хореографию), который соотносится с соответствующим элементом (например, Хореографией).



9.4.8 Корреляция (Correlations)

Корреляцией называется механизм назначения Сообщений на соответствующие экземпляры Процесса. Указывается для Потоков Сообщений (Message Flows), принадлежащих Обмену Сообщениями. Корреляции используются для указания Обменов Сообщениями, расположенными между Процессами. Такие Обмены Сообщениями являются достаточно простыми образцами Обмена Сообщениями, а значит:

  • Данные, содержащиеся в Обмене Сообщениями, хорошо известны и определены посредством участвующих Процессов, что, однако, не делает расположенные ниже системы типов идентичными. Достаточно того, что идея данных известна на (потенциально очень высоком) бизнес-уровне.
  • Обмен Сообщениями отображается в виде простого обмена Сообщениями между Процессами, другие варианты рассматриваться НЕ ДОЛЖНЫ.
  • Данные Обмена Сообщениями принимаются Задачами отправки и получения (к примеру, Заказ, отправленный Задачей Процесса, должен быть получен по-меньшей мере одной Задачей участвующего Процесса).
  • Корреляция как таковая указывается в полях корреляции, которые подразумевают подмножество данных, необходимых для использования в корреляции (например, если такие данные содержат заказ, то поле корреляции должно быть отмечено ID (идентификатором) заказа).


В некоторых приложениях удобнее использовать большее количество Сообщений, передаваемых Участниками (Participants) выполняемого Взаимодействия, чем то, что содержится в модели Взаимодействия. Это позволяет Участникам обмениваться другими Сообщениями по мере необходимости, и при этом не придется изменять само Взаимодействие. Если значение атрибута isClosed Взаимодействия равно «false» (либо данное значение вообще не установлено), Участники МОГУТ отсылать друг другу Сообщения без использования в данном Взаимодействии дополнительных Потоков Сообщений (Message Flows). Если же значение атрибута isClosed Взаимодействия равно «true», то Участники НЕ МОГУТ отсылать друг другу Сообщения без использования в данном Взаимодействии дополнительных Потоков Сообщений. Если в состав Взаимодействия входит Хореография (Choreography), то значение атрибута isClosed ДОЛЖНО БЫТЬ таким же, как во Взаимодействии. Ограничение немоделирумого обмена Сообщениями, указанное посредством атрибута isClosed, применимо лишь во Взаимодействии, содержащем ограничение. Элементы PartnerEntities (Партнерские Сущности) и PartnerRoles (Партнерские Роли), принадлежащие Участникам, МОГУТ отсылать друг другу Сообщения в рамках других Хореографий (Choreographies), Взаимодействий и Обменов Сообщениями.

9.5 Процесс в составе Взаимодействия (Process within Collaboration)

Процессы могут входить в состав диаграммы Взаимодействия. Участник/Пул, содержащийся во Взаимодействии, может заключать в себе Процесс (хотя это НЕ ОБЯЗАТЕЛЬНО). В качестве примера см. фигуру 9.4.

Если Дорожка (Lane) Процесса представляет собой Обмен Сообщениями, то Элементы Потока (Flow Elements), содержащиеся в ней и отправляющие или отсылающие Сообщения, ДОЛЖНЫ выполнять вышеперечисленные действия в качестве Обмена Сообщениями, для отображения которого служит данная Дорожка.

9.6 Хореография в составе Взаимодействия (Choreography within Collaboration)

Хореографии (Choreographies) могут входить в состав диаграммы Взаимодействия. Во Взаимодействии указывается то, каким образом устанавливается соответствие между Участниками (Participants) и Потоками Сообщений (Message Flows) Хореографии и Участниками и Потоками Сообщений Взаимодействия. Для этой цели во Взаимодействии используются элементы ParticipantAssociations и MessageFlowAssociations.

Для установки соответствий между Участниками элементы innerParticipant и ParticipantAssociation ссылаются на Участника Хореографии, в то время как элемент outerParticipant ссылается на Участника Взаимодействия, содержащего данную Хореографию. Такое соответствие устанавливается и между Секциями Участников (Participant Bands) Задач Хореографии (Choreography Activities) данной Хореографии и Пулами (Pools) Взаимодействия. Таким образом, использование имен в Секциях Участников становится НЕОБЯЗАТЕЛЬНЫМ (см. фигуру 9.32).



Фигура 9.32 – Пример Хореографии в составе Взаимодействия

Для установки соответствий между Потоками Сообщений элементы innerMessageFlow и MessageFlowAssociation ссылаются на Потоки Сообщений Хореографии, в то время как элемент outerMessageFlow ссылается на Поток Сообщений Взаимодействия, содержащего данную Хореографию. Такое соответствие устанавливается между Потоками Сообщений Хореографии (которые не отображаются) и Потоками Сообщений Взаимодействия (которые отображаются). Это позволяет Потокам Сообщений Взаимодействия «подключаться» с помощью соответствующего Действия Хореографии (см. фигуру 9.32).

Ассоциации Участников (ParticipantAssociations) могут образовываться исходя из Партнерских Сущностей (partnerEntities) и Партнерских Ролей (partnerRoles) Участников. К примеру, если на Действие Хореографии назначен Участник с той же Партнерской Сущностью, что и Участник Взаимодействия, содержащего это Хореографию, то оба этих Участника могут стать внутренними (inner) и внешними Участниками (outerParticipants) Ассоциации Участников (ParticipantAssociation). Подобным образом, Потоки Сообщений, ссылающиеся на одно и то же Сообщение Действия Хореографии типа Вызов и Взаимодействия, могут быть автоматически синхронизированы с помощью Ассоциации Потока Сообщений (MessageFlowAssociation), но только при условии, что данное Сообщение входит в состав только одного Потока Сообщений.



Фигура 9.33 – Хореография в составе диаграммы классов Взаимодействия


9.7 Представление XML-схемы для пакета Collaboration

Таблица 9.15 – XML-схема для элемента Call Conversation

<xsd:element name="callConversation" type="tCallConversation" substitutionGroup="conversationNode"/>
<xsd:complexType name="tCallConversation">
<xsd:complexContent>
<xsd:extension base="tConversationNode">
<xsd:sequence>
<xsd:element ref="participantAssociation" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="calledCollaborationRef" type="xsd:QName" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="collaboration" type="tCollaboration" substitutionGroup="rootElement"/>
<xsd:complexType name="tCollaboration">
<xsd:complexContent>
<xsd:extension base="tRootElement">
<xsd:sequence>
<xsd:element name="choreography" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="participant" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="messageFlow" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="conversationNode" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="conversationLink" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="conversationAssociation" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="participantAssociation" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="MessageFlowAssociation" type="tMessageFlowAssociation"
minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="correlationKey" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="isClosed" type="xsd:boolean" default="false"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="conversation" type="tConversation" substitutionGroup="conversationNode"/>
<xsd:complexType name="tConversation">
<xsd:complexContent>
<xsd:extension base="tConversationNode"/>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="conversationAssociation" type="tConversationAssociation"/>
<xsd:complexType name="tConversationAssociation">
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:attribute name="innerConversationNodeRef" type="xsd:QName" use="required"/>
<xsd:attribute name="outerConversationNodeRef" type="xsd:QName" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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


<xsd:element name="conversationLink" type="tConversationLink"/>
<xsd:complexType name="tConversationLink">
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="sourceRef" type="xsd:QName" use="required"/>
<xsd:attribute name="targetRef" type="xsd:QName" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="conversation" type="tConversation" substitutionGroup="rootElement"/>
<xsd:complexType name="tConversation">
<xsd:complexContent>
<xsd:extension base="tCallableElement">
<xsd:sequence>
<xsd:element ref="conversationNode" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="participant" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="artifact" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="messageFlow" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="messageFlowRef" type="xsd:QName" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element ref="correlationKey" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

Таблица 9.21 – XML-схема для элемента Conversation Node

<xsd:element name="conversationNode" type="tConversationNode"/>
<xsd:complexType name="tConversationNode" abstract="true">
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:sequence>
<xsd:element name="messageFlowRef" type="xsd:QName" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element name="participantRef" type="xsd:QName" minOccurs="0"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="conversationRef" type="xsd:QName"/>
<xsd:attribute name="correlationKeyRef" type="xsd:QName"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

Таблица 9.22 – XML-схема для элемента Global Conversation

<xsd:element name="globalConversation" type="tGlobalConversation" substitutionGroup="collaboration"/>
<xsd:complexType name="tGlobalConversation">
<xsd:complexContent>
<xsd:extension base="tCollaboration"/>
</xsd:complexContent>
</xsd:complexType>


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

<xsd:element name="messageFlow" type="tMessageFlow"/>
<xsd:complexType name="tMessageFlow">
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="sourceRef" type="xsd:QName" use="required"/>
<xsd:attribute name="targetRef" type="xsd:QName" use="required"/>
<xsd:attribute name="messageRef" type="xsd:QName"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="messageFlowAssociation" type="tMessageFlowAssociation"/>
<xsd:complexType name="tMessageFlowAssociation">
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:attribute name="innerMessageFlowRef" type="xsd:QName" use="required"/>
<xsd:attribute name="outerMessageFlowRef" type="xsd:QName" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="participant" type="tParticipant"/>
<xsd:complexType name="tParticipant">
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:sequence>
<xsd:element name="interfaceRef" type="xsd:QName" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element name="endPointRef" type="xsd:QName" minOccurs="0"
maxOccurs="unbounded"/>
<xsd:element ref="participantMultiplicity" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="processRef" type="xsd:QName" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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


<xsd:element name="participantAssociation" type="tParticipantAssociation"/>
<xsd:complexType name="tParticipantAssociation">
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:sequence>
<xsd:element name="innerParticipantRef" type="xsd:QName" use="required"/>
<xsd:element name="outerParticipantRef" type="xsd:QName" use="required"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="participantMultiplicity" type="tParticipantMultiplicity"/>
<xsd:complexType name="tParticipantMultiplicity">
<xsd:complexContent>
<xsd:extension base="tBaseElement">
<xsd:attribute name="minimum" type="xsd:int"/>
<xsd:attribute name="maximum" type="xsd:int"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="partnerEntity" type="tPartnerEntity" substitutionGroup="rootElement"/>
<xsd:complexType name="tPartnerEntity">
<xsd:complexContent>
<xsd:extension base="tRootElement">
<xsd:attribute name="name" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

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

<xsd:element name="partnerRole" type="tPartnerRole" substitutionGroup="rootElement"/>
<xsd:complexType name="tPartnerRole">
<xsd:complexContent>
<xsd:extension base="tRootElement">
<xsd:attribute name="name" type="xsd:string"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

Таблица 9.30 – XML-схема для элемента Sub-Conversation

<xsd:element name="subConversation" type="tSubConversation" substitutionGroup="conversationNode"/>
<xsd:complexType name="tSubConversation">
<xsd:complexContent>
<xsd:extension base="tConversationNode">
<xsd:sequence>
<xsd:element ref="conversationNode" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>


<<предыдущая содержание следующая>>




Данные материалы предназначены исключительно для ознакомления в личных целях.Любое воспроизведение, копирование, а так же коммерческое и некоммерческое использование материалов должно согласовываться с авторами материалов (elma@elewise.ru). Допускается использование материалов сайта без уведомления авторов, но с явным указанием источника.