24.02.2013 Aufrufe

MODELLGETRIEBENE ARCHITEKTUR IN EINEM J2EE ... - OXSEED

MODELLGETRIEBENE ARCHITEKTUR IN EINEM J2EE ... - OXSEED

MODELLGETRIEBENE ARCHITEKTUR IN EINEM J2EE ... - OXSEED

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

objekte<br />

modellgetriebene architektur<br />

Abb. 3: Die Modell-Klasse „BL-User”, die auf ein COBOL-Modul abgebildet wird<br />

und eine Änderung der Bestandsdaten<br />

wird nur zugelassen, wenn dieser Zeitstempel<br />

jünger ist als derjenige der letzten<br />

Datensatzänderung. Beim Workflow-<br />

Management-System greifen wir auf eine<br />

Eigenentwicklung zurück, die sich in unserem<br />

automatisierten Dokumenten-Management-System<br />

bewährt hat.<br />

Business-Layer: Host<br />

Die Programme dieser Business-Schicht bieten<br />

der Serverseite ihre Dienste mit XMLfähigen<br />

Methodenaufrufen an und steuern<br />

die für deren Abarbeitung erforderlichen<br />

Abläufe einschließlich dem Aufbau der<br />

XML-Rückantworten. Dabei werden vorrangig<br />

Methoden der logischen Schicht aufgerufen,<br />

aber auch Methoden der Business-<br />

Schicht können herangezogen werden und<br />

– falls erforderlich – werden Methoden<br />

innerhalb des gleichen Moduls benutzt.<br />

Methoden der Module der Business-<br />

Schicht und auch der logischen Schicht<br />

werden grundsätzlich über einen eigens<br />

entwickelten Name-Service angesprochen,<br />

der die Namen der Methoden in Aufrufe<br />

von COBOL-Programmen umsetzen<br />

kann. Der Name-Service wird beim CICS-<br />

Start oder auf Anforderung durch einen<br />

Rundruf an alle COBOL-Module, welche<br />

die von ihnen angebotenen Methoden mitteilen,<br />

initialisiert. Die Methoden selbst<br />

sind innerhalb der Module als eigenständige<br />

Unterprogramme (sogenannte Nested<br />

Programs) implementiert. Dieses Verfahren<br />

ermöglicht den geschachtelten Aufruf<br />

von Methoden innerhalb eines<br />

Moduls. Außerdem löst es das Problem<br />

des reflektiven Aufrufs, wenn die Methoden<br />

über die XML-Schnittstelle anhand<br />

ihres Namens aufrufbar sein müssen.<br />

Die Nutzdaten werden bei diesen<br />

Methodenaufrufen über Zeiger auf XML-<br />

Bäume weitergeleitet, die mit XML-<br />

Modulen verwaltet werden können. Die<br />

XML-Module dienen hierbei als dynamische<br />

Datencontainer und können mit<br />

Copy-Strecken oder Character-Feldern mit<br />

XML-Inhalt gefüllt werden. Für die<br />

COBOL-Module wurde ein Mechanismus<br />

zur Ausnahmebehandlung implementiert.<br />

Bei einem Fehlerfall sorgt die klammernde<br />

Methode der Business-Schicht dafür, dass<br />

die Ausnahme mit ihrem Aufruf-Stack in<br />

die XML-Rückantwort gestellt wird.<br />

Da die Module prozedural arbeiten,<br />

werden sie als Klassen ohne Attribute<br />

modelliert (siehe Abb. 3). Ihre Methoden<br />

werden auf Nested Programs abgebildet<br />

und ein Überschreiben ist nicht erlaubt.<br />

Als Übergabeparameter und Rückgabewerte<br />

sind primitive Datenklassen und<br />

Schnittstellenklassen möglich. Die Modellklassen<br />

werden über den Stereotyp «host»<br />

als COBOL-Module kenntlich gemacht.<br />

Zur Pflege der auf acht Stellen begrenzten<br />

Modulnamen setzen wir eine vierstellige<br />

Kennung auf der Ebene eines Modell-<br />

Pakets ein und fügen dieser eine vierstellige<br />

Nummer hinzu, die wir auf übersichtliche<br />

Weise für alle Module einer Schicht im<br />

Modell pflegen. Für jede Methode wird<br />

eine Copy-Strecke generiert, über die mit<br />

dem Name-Service kommuniziert wird. In<br />

Architektureinheit Anteil generierter Codezeilen<br />

XML-Schnittstelle 100 %<br />

Frontend-Layer 40 %<br />

Business-Layer Server 60 %<br />

Business-Layer Host 70 %<br />

Logical-Layer Server 70 %<br />

Logical-Layer Host 60 %<br />

Physical-Layer Server 90 %<br />

Physical-Layer Host 90 %<br />

Tabelle 1: Die relativen Anteile generierter Zeilen einschließlich Kommentaren für<br />

die anwendungsfallabhängigen Codeteile der einzelnen Architekturschichten und der<br />

Artefakte der Schnittstellenklassen. Für die Frontend-Schicht wurden nur die Java-<br />

Klassen, nicht aber die JSP-Seiten berücksichtigt.<br />

ihren achtstelligen Namen geht eine eindeutige<br />

Kennung des Modulnamens und<br />

ihr dreistelliger Stereotyp ein. Auf Methodenebene<br />

werden die aufgerufenen<br />

Fremdmethoden im Modell gepflegt, die<br />

der Generator über Abhängigkeitsbeziehungen<br />

auflösen kann. Auf diese Weise<br />

gelingt es, umfangreiche Teile der Module<br />

zu generieren, denn der zum Bestücken<br />

von Methoden-Schnittstellen unter<br />

COBOL sehr hohe Aufwand ist vollständig<br />

aus dem Modell ableitbar (siehe<br />

Tabelle 1). Die Fachlogik wird innerhalb<br />

der Nested Programs ausprogrammiert.<br />

Logical-Layer<br />

Die logische Datenzugriffsschicht ist als<br />

Adapter der physischen Zugriffsschicht<br />

implementiert und erlaubt es, mit Value<br />

Objects unter Java oder mit XML-Copy-<br />

Strecken unter COBOL auf die Datenbank<br />

zuzugreifen. Da auf Serverseite das<br />

Datenmodell das Klassenmodell der Value<br />

Objects nahezu abbildet, beschränkt sich<br />

deren Aufgabe im Wesentlichen auf das<br />

Aufsammeln assoziierter Instanzen. Hostseitig<br />

bildet die logische Schicht das<br />

gewachsene Datenmodell des Kernsystems<br />

auf die neuen Datenstrukturen ab und entkoppelt<br />

die darüber liegende Business-<br />

Schicht von zukünftigen Überarbeitungen<br />

des Datenbankschemas.<br />

Serverseitig wird die logische Schicht<br />

durch Java-Klassen, host-seitig durch<br />

COBOL-Module realisiert, die jeweils aus<br />

Modell-Klassen, in denen die Schnittstellen<br />

definiert werden, generierbar sind.<br />

Lediglich die Logik der Methoden ist zu<br />

programmieren.<br />

Die obigen Ausführungen zur Generierung<br />

von COBOL-Modulen der<br />

Business-Schicht treffen in gleicher Weise<br />

auf diejenigen der logischen Schicht zu.<br />

Der Generator verwendet sogar dieselbe<br />

Generierungsschablonen.<br />

Physical-Layer: Server<br />

Die physische Datenzugriffsschicht realisiert<br />

die Zugriffe auf die Datenbank,<br />

wobei auf der Serverseite über JDBC auf<br />

Oracle zugegriffen wird. Das Datenmodell<br />

ist serverseitig nahezu isomorph zum<br />

Modell der Value Objects. Die Standardzugriffe<br />

auf die Datenbanktabellen werden<br />

mit Data Access Objects (vgl. [Sun02]) zur<br />

Verfügung gestellt, die mit Value Objects<br />

korrespondieren. Sie werden daher nicht<br />

eigens modelliert, sondern sind durch<br />

zusätzliche Modellparameter aus den<br />

Schnittstellenklassen ableitbar. So wird im<br />

Modell definiert, ob eine Schnittstellen

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!