Модель для распределения ресурсов - PullRequest
1 голос
/ 17 июля 2009

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

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

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

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

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

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

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

ОТВЕТ НА ORBMAN

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

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

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

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

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

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

...