Ich arbeite an einem System und versuche, ddd mit node.js zu verwenden. Hier ist das ein Beispiel für das System, von einem High-Level:DDD: Logik, die mehrere Modelle umfasst, wohin soll es gehen?
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.
}]
Die Business-Logik besagt, dass nur der Patient oder ein Arzt, der ein Mitglied einer der Abteilungen bei den Patienten ist, kann Abteilung Liste überprüfen seine medizinischen Informationen. Ich dachte ursprünglich, dass es in einem separaten Domain-Service sein sollte, da es scheint, Entitäten zu umfassen, aber der Nachteil ist, dass andere Dienste einen Berechtigungsservice aufrufen müssten und ich dachte, dass Services keine anderen Services aufrufen sollten. Wenn ich in die Labor- und Medikamenteneinheiten eintrage, dann bin ich Duplikationscode und verletze mich trocken. Wenn ich zum Dienstbereich der Abteilung hinzufüge, mache ich einen Dienst, der einen anderen Dienst anruft. Aus einer DDD-Perspektive, wo gehört eine solche Logik?
Anwendungsdienste sollten keine anderen Anwendungsdienste aufrufen, da es sich um Use-Case-Einstiegspunkte handelt. Es gibt jedoch keine Begrenzung für die Anzahl der verfügbaren Domänen-Services. – plalx