Report-Entwurf mit Mediator-Entwurfsmuster

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
5 Beiträge Seite 1 von 1
5 Beiträge Seite 1 von 1

Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von Maximus (ForumUser / 12 / 5 / 1 ) » 15. Nov 2019 18:42

Hallo zusammen,

ich bin dabei einen neuen Report zu entwerfen der dafür gedacht ist, SAP-Daten ins fremde System per API zu importieren bzw. diese dort zu aktualisieren oder zu löschen. Dabei versuche ich mich an einem ABAP-OO-Konstrukt.

In Anlage <Users.pdf> habe ich eine grobe UML-ähnliche Skizze hinzugefügt in der die Architektur einwenig veranschaulicht wird.

Der grobe Ablauf ist wie folgt:

Initialisierung bei Starten des Reports
1. Selektieren der Daten in beide interne Tabellen: t_chef_alv und t_empl_alv
2. Aufbauen einer Objekthierarchie anhand der beiden Tabellen: to_users
3. Erzeugen und Konfigurieren der ALV-Controlls: to_alv_ctrl

Action: Aktualisieren der geänderten Daten
1. der Benutzer markiert Zeilen in Employer-ALV-Grid und klickt auf Button <update>
2. über die Rückwärtsreferenz auf Controller wird die Methode update_empl() ausgeführt, die entsprechende Methode bei allen zuständigen Empoyer-Objekte aufruft.

....

Ich würde hier gerne von ABAP-OO Experten gerne noch paar Optimierungstipps bzw. Anregungen lesen.

Viele Grüße und vielen Dank im Voraus!
Maximus
Zuletzt geändert von Maximus am 22. Nov 2019 10:08, insgesamt 1-mal geändert.


Re: Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von jocoder (ForumUser / 92 / 0 / 20 ) » 19. Nov 2019 11:59

Soll das ganze nachdem MVC (Model, View, Controller) Entwurfsmuster aufgebaut werden?
Die User-Klassen wären das Datenmodell (Model)? Die ALV-Klassen die Views?

Was mir dabei aufgefallen ist, dass der Controller mehrere Aufgaben übernimmt (er hält die Referenzen der ALV-Klassen und steuert deren Verhalten?, die ALV-Klassen rufen die Controllermethoden INSERT_CHEF, UPDATE_CHEF bzw. INSERT_EMPL, UPDATE_EMPL auf? so meine Vermutung).
Vielleicht wäre es besser, die Controllermethoden INSERT_CHEF, UPDATE_CHEF bzw. INSERT_EMPL, UPDATE_EMPL in eine eigene Klasse, die nur die Event-Handler-Methoden enthält, zu verschieben?
Dann brauchen die ALV-Klassen ALV_CHEF und ALV_EMPL keine Referenzen auf den Controller zu halten und eine zyklische Abhängigkeit wird vermieden.

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag (Insgesamt 2):
Legxis (19. Nov 2019 12:05) • Maximus (19. Nov 2019 14:59)

Autor von Qualitätsmanagement in der ABAP-Entwicklung,
ABAP, Java, JavaScript, GitHub

Re: Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von Maximus (ForumUser / 12 / 5 / 1 ) » 19. Nov 2019 14:59

jocoder hat geschrieben:
19. Nov 2019 11:59
Soll das ganze nachdem MVC (Model, View, Controller) Entwurfsmuster aufgebaut werden?
Was ist hier versuche ist ein modifizierter Vermittler-Entwurfsmuster.

Mein Ziel ist es eine flexible User-Objecthierarchie zu schaffen, die von deren Darstellung im ALV abgekapselt ist.

Die Controllerklasse soll einfach vermitteln in dem sie die im ALV-aufgerufene Funktionen an die korrespondierte Objekte weiterleitet.

Die Eventhändler-Methoden sind in den konkreten ALV-Klassen implementiert, die auf Klicke der Toolbar-Buttons der ALV-Grids reagieren und ensprechende Funktionen über das referenzierte Controller-Object an die User-Hierarchie weiterleiten.
jocoder hat geschrieben:
19. Nov 2019 11:59
Was mir dabei aufgefallen ist, dass der Controller mehrere Aufgaben übernimmt (er hält die Referenzen der ALV-Klassen und steuert deren Verhalten?, die ALV-Klassen rufen die Controllermethoden INSERT_CHEF, UPDATE_CHEF bzw. INSERT_EMPL, UPDATE_EMPL auf? so meine Vermutung). Vielleicht wäre es besser, die Controllermethoden INSERT_CHEF, UPDATE_CHEF bzw. INSERT_EMPL, UPDATE_EMPL in eine eigene Klasse, die nur die Event-Handler-Methoden enthält, zu verschieben?
Aus meiner Sicht ist es die Aufgabe des Vermittlers(Controllers) die Funktionen an die zuständigen Objekte zu delegieren. Damit vermeide ich wilde Verbindung zwischen den ALV-Eventhändler-Methoden und der relativ komplexen User-Hierarchie.

Aber die Controller-Klasse ist trotzdem überfüllt das stimmt.

Ich habe inzwischen eine Fabrik-Klasse(Singelton) für die Erstellung der User-Hierarchie und eine Daten-Klasse(Singelton) die die flachen Tabellen mit Lese-Methoden kapselt. Damit fällt die Controller-Klasse schlanker aus.

Re: Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von qyurryus (ForumUser / 40 / 30 / 10 ) » 21. Nov 2019 09:14

Zum einen erst ein mal Lob dafür, dass du dir Vorüberlegungen machst!
Ich würde dir generell empfehlen, alle Klassen komplett in Englisch zu benennen, statt einen Mischmasch anzuwenden.
Die Bedeutung von "Chef" wäre im englischen z.B. "Koch" (und ist im deutschen zu informell) - besser wäre vielleicht "manager" oder ggf. "employer". Dabei stellt sich auch die Frage, ob du mit "employer" wirklich Vorgesetzte meinst oder normale Mitarbeiter? Letzteres wäre "employee".

Re: Report-Entwurf mit Mediator-Entwurfsmuster

Beitrag von Maximus (ForumUser / 12 / 5 / 1 ) » 22. Nov 2019 09:53

qyurryus hat geschrieben:
21. Nov 2019 09:14
Zum einen erst ein mal Lob dafür, dass du dir Vorüberlegungen machst!
Ich würde dir generell empfehlen, alle Klassen komplett in Englisch zu benennen, statt einen Mischmasch anzuwenden.
Die Bedeutung von "Chef" wäre im englischen z.B. "Koch" (und ist im deutschen zu informell) - besser wäre vielleicht "manager" oder ggf. "employer". Dabei stellt sich auch die Frage, ob du mit "employer" wirklich Vorgesetzte meinst oder normale Mitarbeiter? Letzteres wäre "employee".
Vielen Dank für den Lob. Gedanken sollte sich jeder Entwickler vor dem Implementieren der Software machen :-)
Auch Cleancode-Richtlinien sollte man beachten das stimmt. Ich mag es auch nicht wenn jemand Methoden wie z.B. GET_ARBEITER benennt. Notfalls hilft der geliebte Deepl. Im Diagramm war ich einwenig schlampig das stimmt.
So jetzt habe ich das Diagramm an einigen Stellen angepasst und das ganze in ABAP schon umgesetzt. Bin gespannt wie performant das ganze bei 1000 Users wird.

Seite 1 von 1

Aktuelle Forenbeiträge

PopUp bei Fakturaerstellung
vor 50 Minuten von TravellingEntwickler 1 / 10
Unterschiedliche Konditionen AB und Rechnungdruck
vor 5 Stunden von Sebastian82 1 / 34
Anzahlungsrechnung drucken
vor 6 Stunden von Sebastian82 1 / 30
Generierte Datei auf bestimmte Email Adresse versenden gelöst
vor 22 Stunden von M@atze! 9 / 2081

Unbeantwortete Forenbeiträge

PopUp bei Fakturaerstellung
vor 50 Minuten von TravellingEntwickler 1 / 10
Unterschiedliche Konditionen AB und Rechnungdruck
vor 5 Stunden von Sebastian82 1 / 34
Anzahlungsrechnung drucken
vor 6 Stunden von Sebastian82 1 / 30
Änderungsbelege für Kundenfelder im BP
vor 4 Tagen von GerryRe 1 / 1990