состояния (прямоугольник со скругленными углами), но в тоже время отлично от
него.
109
Тем самым подчеркивается родственная связь диаграмм состояний и
действий. Внутри фигуры состояния деятельности пишется так называемое
выражение деятельности. Никакого специального синтаксиса для данного
выражения UML не определяет: это может быть текст на псевдокоде, фрагмент
кода на языке программирования и просто название деятельности на естественном
языке. Никакой видимой внутренней структуры состояние деятельности не имеет, в
противоположность простому состоянию, которое может иметь действия на входе,
выходе, внутренние и отложенные переходы. Собственно говоря, то, что написано
внутри фигуры состояния деятельности — это и есть его внутренняя активность.
Но это отнюдь не означает, что состояние деятельности атомарно и не имеет
внутренней структуры. Напротив, оно по определению не атомарно и имеет
внутреннюю структуру. Предполагается, что либо эта структура не важна на
выбранном уровне абстракции, либо она раскрывается в другом месте
110
с
помощью машины состояний, другой диаграммы деятельности или иным
способом.
На диаграмме деятельности применяется еще один тип сущностей — объекты — и
целый ряд фигур, похожих на сущности, но таковыми не являющимися. Мы
обсудим их в подходящем контексте.
4.3.2. Переходы по завершении и ветвления
На диаграмме деятельности применяется один основной тип отношений —
простые переходы по завершении (а также поток объектов, см. разд. 4.3.4). Переход
по завершении не имеет возбуждающего события — событием является
завершение внутренней активности (деятельности) в состоянии. Как правило,
исходящий переход по завершении один; если их несколько, они должны быть
снабжены сторожевыми условиями, образующими полную дизъюнктную систему
предикатов (см. разд. 4.2.2). Кроме того, можно использовать и переходы,
возбуждаемые событиями. Срабатывание такого перехода означает прерывание
выполнения деятельности в состоянии и переход в другое состояние.
ЗАМЕЧАНИЕ
Граница между диаграммой состояний и диаграммой деятельности весьма условна и
зыбка. Мы определим ее так: диаграмма деятельности – это такая диаграмма
состояний, в которой все или почти все состояния являются состояниями действия
или деятельности, и все или почти все переходы являются переходами по
завершении. Осталось только договориться, что значит "почти все".
Таким образом, в рамках объектно-ориентированной семантики машины состояний
авторы UML сумели описать семантику обычных блок-схем (в которых нет
109
При достаточно мелком масштабе отличие заметно разве что под микроскопом. Честно говоря,
мы затрудняемся дать однозначную оценку тому факту, что обозначения путаются. С одной
стороны, это нехорошо, а с другой стороны, как еще побудить людей, привыкших думать в
терминах блок-схем, побудить начать думать в терминах переходов-состояний? Только подав
новое
средство в привычной упаковке. Но в UML 2.0 от этих проблем решили просто отказаться — все
рисуется одинаково.
110
Почти все инструменты поддерживают эффективную навигацию в модели, позволяющую
раскрыть структуру состояния деятельности, если она определена.