Controller

Andre Schemschat

Das Zentrum der Architektur befindet sich in den Controllern. In ihnen befindet sich die gesammelte Geschäftslogik, sowie die einzige Interaktion mit der Datenhaltung. Alle Aktionen, die zum Spielverlauf ausgeführt werden müssen dementsprechend in dieser Schicht implementiert werden. Jeder Controller wird dafür initialisiert und mit dem Messagebus verknüpft, um auf eingehende Nachrichten zu reagieren und eine entsprechende Aktion auszuführen. Dabei können selbst wieder weitere Nachrichten versendet werden, um eine Aufgabe in kleinere Unterportionen zu zerteilen. Weiter sind Controller der einzige Teil der Applikation, der mit der Datenbank interagieren darf. Dies sorgt für einen einheitlichen Umgang mit der Datenschicht. Das abgebildete Sequenz-Diagramm zeigt einen typischen Verlauf den eine versendete Nachricht nimmt. Um die Abgeschlossenheit der Transaktion sicherzustellen dürfen Controller-Objekte jedoch selbst keine Transaktion öffnen, sie nutzen lediglich eine geöffnete Session. Tritt innerhalb der Verarbeitung ein Fehler auf, so werfen die Methoden eine ControllerException.

Das Sequenzdiagramm zeigt einen kurzen Ausschnitt einer Kommunikation innerhalb verschiedener Controller. Aus einem externen Teil kommt die Anfrage einen neuen Spieler anzulegen. Diese Bitte wird von dem Bus an den Playercontroller weitergeleitet, der seinerseits wieder eine Nachricht an den TeamController schickt um ein Team zu laden. Beide Methoden interagieren mit der Datenbank, um bestimmte Objekte zu laden oder zu speichern, jedoch kennt keiner die Implementationsdetails des jeweils Anderen. Der gesamte Ablauf erfolgt dabei synchron, die Quelle der Anfrage bekommt also erst dann eine Antwort, wenn alle Unteraufrufe erfolgreich beendet worden sind.

Abb. 1: Ablauf einer Anfrage an die Controller


Page last modified on March 21, 2011, at 10:15 AM