Модель для распределения ресурсов

Я работаю над проектом по управлению временем и ищу некоторые практические модели объектов / постоянства. У Фаулера есть несколько отличных идей о распределении ресурсов в его книге "Шаблоны анализа", но многие излишне излишни в том, что мне нужно прямо сейчас, и в силу своего замысла весьма концептуальны (в отличие от реализуемых)

Фокусным концептуальным объектом, о котором я думаю, будет объект Allocation, который выглядит примерно так:

Allocation : Entity
-------------
Id : Id
ResourceId : Id
AtivityId : Id
EventDate ; DateTime
TimeSpent : TimeQuantity

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

Другими двумя концептуальными объектами будут Ресурс и Деятельность. У обоих был бы набор распределений, но после этого я немного застрял в размышлениях об интерфейсах. Различные типы сотрудников, членов и консультантов представляют интерес. Основной интерес для Деятельности будет основан на Проекте, а действия, не связанные с Проектом, будут основаны на различных Счета заработной платы.

Это проект aC#, использующий nhibernate.

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

ОТВЕТ НА ORBMAN

Хорошие вопросы:

1) Чье время отслеживается (ресурсы), которое можно
- FullTimeStaff
- AdminStaff
- Консультанты
2) период записи еженедельный
- Пользователь может ввести и изменить время, проведенное в любое время до публикации
- табели рабочего времени должны публиковаться для просмотра руководителем отдела каждую неделю (воскресенье) (система не разрешит пользователю публиковать сообщения, пока не будут соблюдены еженедельные квоты)
- менеджер должен до следующего вторника утвердить / отклонить
3) время должно быть выделено на мероприятия, которые являются двумя основными типами
- Проектная деятельность
- внепроектные мероприятия (которые в конечном итоге публикуются на различных счетах П / П)
4) отчеты по ресурсам или по видам деятельности, доступные за специальные периоды времени.

Основная проблема, с которой я столкнулся, связана с полиморфизмом, необходимым как для Ресурса, так и для Деятельности, и с тем, как его следует сохранить. В домене более полезно иметь IResource или IActivity, которые реализуют IAllocatable: UniqueId: Id BusinessId: string Описание: string Распределения: ISet

Ограничение в том, что Ресурс может только выделять время для Активности, является тем, что отличает их (для Активности нужен метод ClockIn, а для Ресурса - нет). Оба должны быть обертками для хорошо известных объектов, которые служат другим целям в системе (например, StaffMember, Project).

Мне нужен уникальный идентификатор для постоянства и, возможно, суррогатный ключ для самого распределения. Я также не уверен, должна ли существовать ссылочная целостность между распределениями и обернутыми ресурсами / действиями, и как это отобразить, если это так. Я использовал Fluent NHibernate, но я думаю, что может оказаться проще просто использовать NHibernate.

Еще раз спасибо за хорошие вопросы.

0 ответов

Другие вопросы по тегам