Моделирование людей / Роли компании - PullRequest
3 голосов
/ 09 мая 2011

Я работал над проектом, который выполняет работу по обслуживанию дома, но мне трудно моделировать роли, которые играют разные люди и компании. Если это имеет значение, система написана с использованием zendFramework, с mySql в качестве хранилища данных.

Я сделаю все возможное, чтобы объяснить, но я не очень хорошо разбираюсь в языке моделирования данных.
конечным пользователем этой системы является компания по обслуживанию, которую я буду называть HammerTime в следующих примерах. Это то, что я до сих пор:

WorkOrderRequests поступают из двух основных источников: Источник 1: Резидент >> requestWorkOrder >> PropertyManagementCompany >> requestWorkOrder >> HammerTime

Источник 2: HomeOwner >> requestWorkOrder >> HammerTime

Я думаю, что все эти организации являются клиентами, но только PropertyManagementCompanies и HomeOwners являются «прямыми» клиентами, которые будут получать счета. Также резидентом может быть HomeOwner , если он владеет собственностью, в которой он проживает. Кроме того, чтобы добавить еще один слой бизнес-логики, все Резиденты принадлежат Свойству и все запросы от резидента к PropertyManagementCompany выполняются PropertyManager

Когда WorkOrderRequests входит в HammerTime , они сохраняются как WorkOrders , а затем обрабатываются несколькими различными способами.

Обработано 1: HammerTime >> assignWorkOrder >> Сотрудник

Обработано 2: HammerTime >> contractOutWorkOrder >> ServiceVendor

Я думаю об этих сущностях как о работниках, и их легче моделировать.

Проблема в том, что я хотел бы иметь возможность предоставить доступ ко всем этим объектам в систему на основе их типов ролей. На мой взгляд, я хотел бы сгруппировать их всех в Member абстрактный суперкласс, который может быть разделен на два дополнительных абстрактных класса Person и Company . тогда Person и Company могут быть далее разделены на более конкретные классы, такие как Employee или PropertyManagementCompany и т. д.

Куда подойдет Свойство , поскольку это не человек или компания. Я думаю, может быть, это будет Участник

У меня такое чувство, что я что-то упускаю, потому что что-то не так. Так что любые идеи или указатели будут с благодарностью.

1 Ответ

2 голосов
/ 10 мая 2011

Я вообще не знаю php или Zend, но вы можете посмотреть на шаблон "Party-Role". (Просто Google, см. Например ( 1 ) ( 2 ) ( 3 )).

В вашем сценарии персона и организация являются подтипами партии. Сотрудник, ServiceVendor, Resident и т. Д. - все это подтипы роли. Между Party & Role много-много-много отношений. При необходимости вы можете определить отношения между подтипами ролей. Назначение разрешений должно стать легким; каждая Сторона получает разрешения для каждой назначенной ей роли.

НТН.

...