Я работаю над системой и пытаюсь использовать ddd с node.js. Вот пример для системы, от высокого уровня:ddd: логика, охватывающая несколько моделей, куда она должна идти?
database tables(mongoldb):
user
username: String
firstName: String
middleName: String
lastName: String
department
title: String
members: [{
user: {type: this.mongoose.Schema.ObjectId, ref: 'user’},
permissions: String
}]
patient
user: {type: this.mongoose.Schema.ObjectId, ref: 'user’},
department: [{type: this.mongoose.Schema.ObjectId, ref: ‘department’}]
lab: [{
patient: {type: this.mongoose.Schema.ObjectId, ref: ‘patient’}
doctor: {type: this.mongoose.Schema.ObjectId, ref: 'user’},
type: String,
results: {there is a lot going on here, }
}]
medication: [{
patient: {type: this.mongoose.Schema.ObjectId, ref: ‘patient’}
doctor: {type: this.mongoose.Schema.ObjectId, ref: 'user’},
name: String,
dosage: Number,
etc.
}]
бизнеса-логика гласит, что только пациент или врач, который является членом одного из департаментов пациентов, список отдела может рассмотреть его медицинскую информацию. Первоначально я думал, что это должно быть в отдельной службе домена, поскольку она, по-видимому, охватывает объекты, но недостатком является то, что для вызова службы разрешений потребуются другие службы, и я думал, что услуги не должны вызывать другие службы. Если я помещаюсь в лабораторию и объекты медикаментов, то я являюсь кодом дублирования и нарушая сухость. Если я добавлю в службу доменов отделов, я делаю вызов службы другой службой. С точки зрения ddd, где же такая логика?
Службы приложений не должны обращаться к другим службам приложений, поскольку они являются точками ввода для использования, но нет ограничений на количество услуг домена, которые вы можете использовать. – plalx