В реальной жизни Менеджеры тоже являются Сотрудниками. Так что это, безусловно, просто цепь растущей специализации:
User -> Employee -> Manager -> Top Manager
редактировать
"Это программа для управления
планы отпусков рабочих. "
В вашей компании Менеджеры берут запланированный отпуск? Конечно, они делают. И точно так же вы не собираетесь создавать отдельное приложение для управления этим. Так что вам действительно нужно это:
User -> Requester
-> Approver
Каждый Пользователь будет Запрашивающим в одной цепочке утверждений. (Вам могут потребоваться специальные меры для генерального директора). Кроме того, некоторые пользователи будут утверждающими в одной или нескольких цепях. Окончательный утверждающий, вероятно, будет различаться в зависимости от класса заявителя: генеральный директор не захочет беспокоиться об утверждении порядка отпусков обслуживающего персонала.
Вам понадобятся некоторые правила для обеспечения того, кто может быть утверждающим на праздники любого заявителя. Если у вас нет чрезвычайно плоской организации, вы обнаружите, что у вас есть иерархия рабочих и менеджеров. Например, руководитель группы или бригадир - люди, которые в других отношениях являются «работниками», а не «менеджерами» - могут быть в цепи. Также вам может понадобиться рассмотреть другие аспекты организации. Например, если работник желает перенести отпуск на следующий год, который может потребовать одобрения отдела кадров, кто-то, кто обычно не несет никакой управленческой ответственности за сотрудника.
Редактировать 2
Хорошо, мы моделируем произвольный набор правил, а не реалистичный сценарий.
Посмотрим. Каждый пользователь вписывается в одну категорию, определяемую этими задачами:
- Сотрудник может запросить отпуск
- менеджер может утвердить или отклонить запрос на отпуск
- Топ-менеджер может принять или отменить утверждение или отклонение
Менеджеры и топ-менеджеры не имеют общего поведения. Следовательно, первая модель является правильной.