универсальные модели данных и реализации модели предметной области - PullRequest
1 голос
/ 28 июля 2011

Один автор универсальной модели данных, который я читаю, утверждает, что, по его опыту, 50% всех корпоративных систем являются «универсальными» в том, что им нужно иметь дело со Сторонами, рабочими усилиями и т. Д., 25% универсальны в рамках отрасли этого бизнеса, с балансом, являющимся уникальным для данного бизнеса (например, Coke v Pepsi).

Но мне неизвестен код, основанный на этом, и я не могу думать о том, чтобы кто-то действительно смотрел на шаблоны с точки зрения предметной области, в отличие от модели для моделирования данных, поскольку Фаулер сделал это в середине 90-х годов.

Кто-нибудь с ориентацией DDD имеет какой-либо опыт, основанный на мнении относительно полезности универсальных моделей данных?

Есть ли у вас буквально подтипы партий, ограниченные личностью и организацией, со всеми остальными в ролях? Как вы реализуете это, если так?

Любые руководства по внедрению или системы с открытым исходным кодом, которые вам нравятся?

Приветствия
Berryl

Ответы [ 2 ]

3 голосов
/ 28 июля 2011

Данные и модели предметной области, представленные в книгах Universal Patterns и шаблонах анализа Фаулера, полезны тем, что они предоставляют подробный и обобщенный обзор структуры моделей. Я использовал их в качестве справочного материала при создании более конкретных моделей предметной области и обычно использовал только часть модели, описанной в книгах.

Что касается шаблонов подотчетности из книги Фаулера, то партия отличается от роли в том, что данная партия может выполнять несколько ролей. Так что для меня имеет смысл, что партия может быть либо личностью, либо организацией. Примером .NET Framework являются интерфейсы IIdentity и IPrincipal . IIdentity может представлять сторону, тогда как IPrincipal - это сочетание идентификатора и набора ролей.

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

Есть ли у вас буквально подтипы партии, ограниченные персоной и Организация, со всеми остальными в ролях? Как вы реализуете это если так?

Для одной минимальной реализации см. этот SO-ответ .

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

Определенная роль ссылается на личный подтип, если он может быть заполнен только человеком. «Персонал» или «Сотрудник» может быть хорошим примером.

А конкретная роль ссылается на организационный подтип, если она может быть заполнена только организацией. «Работодатель» или «Бывший работодатель» может быть хорошим примером.

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

...