Деятельность может также выполняться в результате получения объектом
некоторого события. Например: объект "банковский счет" может быть в состоянии
"открыт". При получении некоторого сообщения выполняется определенная
деятельность.
Переход - это перемещение объекта из одного состояния в другое. На диаграмме
все переходы изображают в виде стрелки, начинаются на первоначальном
состоянии и заканчиваются в последующем. Эти переходы могут быть
рефлексивными - объект может перейти в тоже состояние, в котором он
находится в настоящий момент. Рефлексивные переходы изображают в виде
стрелки начинающейся и заканчивающейся на одном и том же состоянии. У
перехода существует несколько спецификаций: они включат события, аргументы,
ограничивающие условия, действия и посылаемые события.
Рассмотрим каждое из них в контексте примера банковской системы:
1. Событие - это то, что вызывает переход из одного состояния в другое.
Например, событие "клиент требует закрыть" вызывает переход счета из
открытого в закрытое состояние. Событие размещают на диаграмме вдоль
линии перехода.
На диаграмме для отображения события можно использовать как имя
операции, так и обычную фразу. В нашем примере события описаны
обычными фразами. Если нужно использовать операцию, то данное
событие можно назвать RequestClosure().
У события могут быть аргументы такие как событие "сделать вклад",
вызывающее переход счета из состояния превышения кредита в состояние
"открыто", а может иметь аргумент, называемый Amount, описывающий
сумму депозита.
Большинство переходов должны иметь события, т.к. именно они, прежде
всего, заставляют переход осуществиться. Тем не менее, бывают и
автоматические переходы, не имеющие событий, при этом объект сам
перемещается из одного состояния в другое со скоростью позволяющей
осуществиться входным действиям деятельности и выходным действиям.
2. Ограждающее условие - определяет, когда переход может или не может
осуществиться. В нашем примере событие сделать вклад переведет счет из
состояния "открыт", но только при условии, если баланс больше нуля. В
противном случае переход не осуществиться.
Ограждающее условие изображают на диаграмме вдоль линий перехода,
после имени события заключают их в квадратные скобки. Ограждающее
условие задавать не обязательно, однако если существуют несколько
автоматических переходов из состояний необходимо определять для них
взаимоисключающие ограждающие условия. Это поможет читателю
диаграммы понять, какой путь перехода будет автоматически выбран.
3. Действие являются непрерывным поведением, которое осуществляется
как часть перехода. Входные и выходные действия показывают внутри
состояния, поскольку они определяют, что происходит, когда объект входит
или выходит из состояния. Тем не менее, большую часть действий
изображают вдоль линии перехода, так как они не должны осуществляться
при входе или выходе из состояния. Например, при переходе счета из
открытого в закрытое состояние выполняется действие "сохранить дату
закрытия счета". Это непрерываемое поведение осуществляется только во
время перехода из состояния "открыт" в состояние "закрыт".