Hallo zusammen,
ich habe einige Fragen zur Softwarearchitektur bei denen ich mir trotz viel Recherche nicht sicher bin, ob ich das richtig handhaben möchte.
Es geht um eine Lagerverwaltung, d.h. es sollen Artikel die in unterschiedlichen Lagern liegen gesucht und ein-/ausgebucht werden können.
Damit es jetzt nicht zu umfangreich wird nur ein kleiner Auszug daraus und ich beginne auf der "Datenseite". Nehmen wir an es gibt die Datenbanktabellen "ItemTable" (die Artikel) und "BaseUnitTable" (die Mengeneinheit eines Artikels). Daten im ItemTable halten einen Fremdschlüssel auf die zugehörige BaseUnit. Weitere Tabellen wären z.B. StorageTable (Lager), ItemStockTable (in den Lagern gelagerte Artikel) usw.
In einem zugehörigen Domänenmodell gäbe es jetzt entsprechende Klassen (Aggregate? Entities?) "Item" und "BaseUnit", wobei ein Item ja auch eine BaseUnit hat.
Außerdem in der Datenzugriffsschicht die Repositories "ItemRepository" und "BaseUnitRepository" (wobei vom ItemRepository ebenfalls die zugehörige BaseUnit mitgeliefert wird, aber zur Stammdatenpflege von BaseUnits müssen diese auch unabhängig verfügbar sein). Viel Geschäftslogik wird es in diesen beiden Klassen nicht geben. Bei weiteren Domänenklassen, die z.B. Lagerbuchungen verwalten ist das dann spätestens der Fall.
Auf der UI-Seite haben wir sowas wie
"EditItemView.fxml" + "EditItemView.css" + "EditItemController.java"
"EditBaseUnitView.fxml" + "EditBaseUnitView.css" + "EditBaseUnitController.java"
Ist das soweit erst mal korrekt?
Die Controller benötigen ja nicht unbedingt Klassen aus dem Domänenmodell, sondern ggf. Datenobjekte mit speziell zusammengestellten Inhalten, z.B. eine Tabelle von Artikeln mit ihren Beständen in den unterschiedlichen Lagern.
Ist das so richtig, dass die UI-Schicht ihre eigenen Datenklassen für ihre Belange definiert?
Woher erhält die UI-Schicht diese Daten? Gibt es dafür noch eine zusätzliche Schicht zwischen UI und Domäne und wie wird diese im Normalfall realisiert? Oder greift die UI direkt auf Domänenobjekte zu?
Ich hoffe es findet sich jemand, der meine Fragen beantworten kann und bedanke mich schon mal dafür
Gruß,
Temi
ich habe einige Fragen zur Softwarearchitektur bei denen ich mir trotz viel Recherche nicht sicher bin, ob ich das richtig handhaben möchte.
Es geht um eine Lagerverwaltung, d.h. es sollen Artikel die in unterschiedlichen Lagern liegen gesucht und ein-/ausgebucht werden können.
Damit es jetzt nicht zu umfangreich wird nur ein kleiner Auszug daraus und ich beginne auf der "Datenseite". Nehmen wir an es gibt die Datenbanktabellen "ItemTable" (die Artikel) und "BaseUnitTable" (die Mengeneinheit eines Artikels). Daten im ItemTable halten einen Fremdschlüssel auf die zugehörige BaseUnit. Weitere Tabellen wären z.B. StorageTable (Lager), ItemStockTable (in den Lagern gelagerte Artikel) usw.
In einem zugehörigen Domänenmodell gäbe es jetzt entsprechende Klassen (Aggregate? Entities?) "Item" und "BaseUnit", wobei ein Item ja auch eine BaseUnit hat.
Außerdem in der Datenzugriffsschicht die Repositories "ItemRepository" und "BaseUnitRepository" (wobei vom ItemRepository ebenfalls die zugehörige BaseUnit mitgeliefert wird, aber zur Stammdatenpflege von BaseUnits müssen diese auch unabhängig verfügbar sein). Viel Geschäftslogik wird es in diesen beiden Klassen nicht geben. Bei weiteren Domänenklassen, die z.B. Lagerbuchungen verwalten ist das dann spätestens der Fall.
Auf der UI-Seite haben wir sowas wie
"EditItemView.fxml" + "EditItemView.css" + "EditItemController.java"
"EditBaseUnitView.fxml" + "EditBaseUnitView.css" + "EditBaseUnitController.java"
Ist das soweit erst mal korrekt?
Die Controller benötigen ja nicht unbedingt Klassen aus dem Domänenmodell, sondern ggf. Datenobjekte mit speziell zusammengestellten Inhalten, z.B. eine Tabelle von Artikeln mit ihren Beständen in den unterschiedlichen Lagern.
Ist das so richtig, dass die UI-Schicht ihre eigenen Datenklassen für ihre Belange definiert?
Woher erhält die UI-Schicht diese Daten? Gibt es dafür noch eine zusätzliche Schicht zwischen UI und Domäne und wie wird diese im Normalfall realisiert? Oder greift die UI direkt auf Domänenobjekte zu?
Ich hoffe es findet sich jemand, der meine Fragen beantworten kann und bedanke mich schon mal dafür
Gruß,
Temi