inOffice
Employee
onAssignment isIllonVacations
Trial
Contractor
Permanent
onTraining
Interlude
1 1
promote(to)[to=Interlude]
promote(to)[to=Permanent]
promote(to)[to=Contractor]
go(where)[where=onTraining]
go(where)[where=inOffic e]
Рис. 4.72. Синхронизирующие состояния
Рассмотрим еще раз, как будет происходить изменение конфигурации активных
состояний в диаграмме на рис. 4.72. Вначале активна пара состояний inOffice и
Trail. (Может ли сотрудник, проходящий испытательный срок, заболеть, получить
отпуск, отправиться в командировку — все это вопросы мы на данной диаграмме
не рассматриваем). Когда испытательный срок заканчивается
137
(событие promote с
аргументом Interlude) срабатывает составной переход и активными становятся
первое синхронизирующее состояние (на диаграмме оно слева) и состояние
Interlude. Теперь при наступлении события go с аргументом onTraining
сработает составной переход в верней области и активным станет состояние
onTraining (вместе с состоянием Interlude). Обратите внимание, что пока первое
синхронизирующее состояние не активно (т. е. испытательный срок не закончен),
все попытки отправить сотрудника на учебу не сработают. Далее изменение
конфигурации активных состояний произойдет при наступлении события
go с
аргументом inOffice — свежеобученный сотрудник предстанет перед начальством
для решения своей судьбы. При этом активными будут состояния inOffice,
Interlude и второе синхронизирующее состояние. Как только будет принято
решение (произойдет событие promote), сотрудник перейдет в состояние
Permanent или Contractor в зависимости от значения аргумента данного события.
Нам осталось рассмотреть два важных обстоятельства, связанных с
синхронизирующими состояниями. Во-первых, разъяснить, что означает число,
которое указывается в синхронизирующем состоянии и, во-вторых, обсудить, какая
информация может быть передана через синхронизирующее состояние из исходной
машины состояний в целевую.
137
Судя по нашему личному опыту работы с кадрами, испытательный срок лучше завершать не по
времени (не по событию таймера), а по достижении определенного результата, например, по
выполнении индивидуального задания.