2016-10-30 3 views
3

Мы учимся в школе, что переход Поведенческой диаграммы состояний имеет синтаксис:Один перехода с несколькими событиями в UML диаграммы состояний

список события [караул состояние]/список действий

Но я не удалось найти какой-либо пример в Интернете, где используется переход с несколькими событиями. Это действительно возможно? Если да, то как оно себя ведет? Означает ли это, что транзакция реализуется, когда происходит одно из этих событий (и, конечно, условие выполнено)?

ответ

5

Да, переход может быть вызван одним из многих событий в списке. Вы должны использовать такую ​​конструкцию, чтобы избежать множественных линий между состояниями, делая более аккуратную диаграмму.

Вот что 2,5 спецификация говорит:

14.2.3.9.2 Enabled Переходов

Переход разрешен, если и только если:

  • [ , , , ]

  • По крайней мере, один из триггеров перехода имеет событие, соответствующее типу события отправленного события.

Это логически переходы AND-ed указано текстуально в виде запятой списке на переходном этапе, как указано в §14.2.4.9:

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]] 
+0

Черт, почему ты всегда находишь вишни ;-) –

+0

Спасибо за ваш ответ :) – MacakM

1

К сожалению, спецификация UML не является конкретной в этом отношении (я думал, но у Джима есть правильный ответ). Так или иначе:

14.2.4.9 Переход

Текстуальное обозначения по умолчанию для перехода определяется следующим выражением: BNF

[<trigger> [‘,’ <trigger>]* [‘[‘ <guard>’]’] [‘/’ <behavior-expression>]] 

Где стандартное обозначение для триггеров (см. подпункт 13.3.4), является булевым выражением для защитника, а необязательным является выражение, определяющее эффект Behavior, написанный на определенном языке специфического или стандартного текстового поверхностного языка (см. su b пункт 16.1). Триггер может быть любым из стандартных типов триггеров. Триггеры SignalEvent и триггеры CallEvent не различаются по синтаксису и должны быть дискриминированы по их объявлению в другом месте.

Есть другие места в спецификациях, где этот абзац выглядит аналогичным образом, но без объяснения того, как будут обрабатываться несколько триггеров. I считать, что это OR -condition. Но это только предположение. Увы, поскольку вы не видели примеров (я тоже), это, вероятно, неизвестный факт. Просто не используйте его - это действительно возможно ;-) И если вам удастся найти пример, просто спросите автора, что он имел в виду. UML - это разговоры друг с другом.

+0

Спасибо за подробный ответ :) – MacakM

+1

для нескольких триггеров, там PSSM (Precise Семантика для автоматов) является вашим другом, даже если он еще не формальная спецификация: «А переход может владеть набор триггеров, каждый из которых указывает событие, появление которого при отправке может вызвать обход перехода. " – CharlesRivet

+0

Я рад узнать, что другие люди знают о PSSM! –