Можно комбинировать entry, during, и exit действия, выполняющие те же задачи в состоянии.
Комбинируя действия состояния, выполняющие одни и те же задачи, вы устраняете избыточный код. Например:
| Отдельные действия | Эквивалентные комбинированные действия |
|---|---|
entry: y = 0; y=y+1; during: y=y+1; |
entry: y = 0; entry, during: y=y+1; |
en: fcn1(); fcn2(); du: fcn1(); ex: fcn1(); |
en, du, ex: fcn1(); en: fcn2(); |
Объединение действий состояния таким образом приводит к тому же поведению выполнения диаграммы (семантике) и создает тот же код, что и эквивалентные отдельные действия.
Объединение набора entry, duringи/или exit действия, выполняющие ту же задачу, что и список, разделенный запятыми, в состоянии. Ниже приведен синтаксис:
entry, during, exit: task1; task2;...taskN;
Можно также использовать эквивалентные сокращения:
en, du, ex: task1; task2;...taskN;
Можно использовать любую комбинацию этих трех действий. Например, допустимы следующие комбинации:
en, du:
en, ex:
du, ex:
en, du, ex:
В списке, разделенном запятыми, можно комбинировать действия в любом порядке. Например, en, du: дает тот же результат, что и du, en:.
Невозможно объединить два или более действий одного типа. Например, следующие комбинации недопустимы:
en, en:
ex, en, ex:
du, du, ex:
При объединении нескольких действий одного типа появляется предупреждение о том, что диаграмма выполняет действие только один раз.
Состояния выполняют комбинированные действия в том же порядке, что и отдельные действия:
Entry действия сначала, сверху вниз в порядке их появления в состоянии
During действия вторые, сверху вниз
Exit действия последние, сверху вниз
Порядок объединения действий не влияет на поведение выполнения состояния. Например:
| Это состояние... | Выполняет действия в таком порядке... |
|---|---|
|
|
|
|
|
|
|
|
Не объединяйте несколько действий одного типа.
Не создавайте данные, события или сообщения, имена которых совпадают с ключевыми словами действия: entry, en, during, du, exit, ex.