Помогите применить DDD к приложению с динамической формой - PullRequest
0 голосов
/ 07 июля 2011

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

Один вариант использования позволяет администратору (из отдела кадров) определять поля формы.Они должны иметь возможность создавать новую форму, добавлять / удалять поля из формы и помечать форму как «удаленную».

Второй вариант использования - когда менеджер просматривает форму и вводит значения в поля формы.для конкретного сотрудника.Они должны иметь возможность сохранять значения в любое время и вызывать сохраненные значения при повторном просмотре формы для того же сотрудника.

Наконец, когда менеджер удовлетворен значениями, введенными для этого сотрудника,они могут «отправить» данные формы, которые сохраняют сведенные данные в хранилище данных для целей отчетности.Когда это будет сделано, «рабочая» копия данных будет удалена, поэтому форма будет отображаться пустой в следующий раз, когда они просматривают ее для этого сотрудника.

В данный момент меня не интересует внешний интерфейс иработая над серверным приложением службы, которое находится между клиентом и хранилищем данных.Приложение должно предоставлять детальный интерфейс для всего необходимого поведения.

Мой вопрос состоит в том, сколько у меня на самом деле совокупных корней (и из этого, сколько репозиториев и т. Д.)?Должен ли я отделять определение формы от данных формы, даже если мне нужно и то, и другое при отображении формы пользователю?

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Я вижу два основных объекта: EmployeeEvaluationSchema и EmployeeEvaluation.Сущность EmployeeEvaluationSchema будет иметь коллекцию объектов-значений FieldDefinition, которые будут содержать свойства, определяющие поле, наиболее основным из которых является имя поля.Сущность «EmployeeEvaluation» будет иметь коллекцию объектов-значений «FieldValue», которые содержат значения для каждого поля из определения.В простейшем случае он будет иметь имя поля и значение свойства.Затем «EmployeeEvaluation» может иметь ссылку на «EmployeeEvaluationSchema», чтобы указать, на каком определении основана конкретная оценка.Это также может быть использовано для обеспечения определения формы в каждой оценке.У вас будет два хранилища - по одному для каждой сущности.Если бы вы использовали ORM, такой как NHibernate, то при извлечении сущности «EmployeeEvaluation» будет также извлекаться связанная «EmployeeEvaluationSchema», даже если для нее есть специальный репозиторий.

0 голосов
/ 08 июля 2011

По вашему описанию кажется, что ваши объекты не имеют никакого поведения и являются простыми DTO.Если это так, возможно, вам не стоит беспокоиться о том, чтобы делать DDD.Можете ли вы представить свои сущности без добытчиков?Есть лучшие способы сделать CRUDish-приложение, чем DDD.Опять же, это допустимо только в том случае, если ваш «домен» не имеет соответствующего поведения.

...