Gesamtverband der Deutschen Versicherungswirtschaft e.V. Prozesse Objekte Funktionen Daten Komponenten Request Broker VA A Edition 1999 Die Anwendungsarchitektur der Versicherungswirtschaft DAS OBJEKTORIENTIERTE TECHNISCHE REFERENZMODELL VERSION 1.0 OBJEKTORIENTIERT © GDV 1999 http://www.gdv.de/vaa Autoren: Das Projektteam "Objektorientiertes technisches Referenzmodell" Administration, Koordination: Gesamtverband der Deutschen Versicherungswirtschaft e.V., Berlin http://www.gdv.de/vaa © GDV 1999 Das objektorientierte technische Referenzmodell Willkommen bei VAA Edition 1999! Liebe Leserin, lieber Leser, haben Sie bereits eine der Broschüre der VAA Edition 1999 gelesen? Wenn ja, können Sie gleich weiter blättern, denn dieses Kapitel steht gleichlautend am Anfang jedes VAA-Dokuments dieser Ausgabe. Ansonsten freuen wir uns über Ihr Interesse an der VAA und gratulieren Ihnen zu Ihrer Entscheidung, sich mit diesem Thema zu beschäftigen, an dem wir seit Jahren mit großem Engagement und immer noch mit viel Spaß arbeiten. Mit WIR sind alle gemeint, die sich in den letzten Jahren direkt an der Arbeit in den VAA-Gremien beteiligten. Um wen es sich dabei im einzelnen handelt, können Sie in einem Anhang der Broschüre ANFORDERUNGEN UND PRINZIPIEN nachlesen, darüber hinaus werden die VAA-Gremien auf der neuen VAA-CD und im Internet (Adresse http://www.gdv.de/vaa) vorgestellt. Nun zur Sache: Die VAA wurde in den vergangenen zwei Jahren in zwei Richtungen weiterentwickelt. Der erste Schritt in Richtung Objektorientierung ist getan. Sie finden in der VAA Edition 1999 das OBJEKTORIENTIERTE FACHLICHE REFERENZMODELL und das OBJEKTORIENTIERTE TECHNISCHE REFERENZMODELL der VAA. Das Geschäftsobjekt PRODUKT wurde bereits detailliert ausgearbeitet. Die prozedurale Variante lebt weiter. Sie wurde ergänzt um eine weitere fachliche Komponente, INKASSO/KONTOKORRENT. Darüber hinaus wurden die aufgrund der Aufnahme der Objektorientierung notwendig gewordenen Überarbeitungen und Ergänzungen der Dokumente der 2. Auflage von VAA vorgenommen. Es entstand eine Vielzahl von zum Teil sehr umfangreichen Dokumenten, die auf drei Wegen veröffentlicht werden: CD-ROM, Internet und als gebundene Broschüren in Papierform. Um Ihnen die Orientierung zu erleichtern, haben wir als Übersicht über die verfügbaren Dokumentationen der VAA Edition 1999 einen grafischen Wegweiser erstellt, den Sie auf der nächsten Seite finden können. Vielleicht hilft er Ihnen, sich zurechtzufinden und Ihre Schwerpunktthemen "herauszufischen". Viel Spaß beim Studium des hier und in den übrigen Dokumenten zusammengestellten VAA-Wissens. © GDV 1999 http://www.gdv.de/vaa Das objektorientierte technische Referenzmodell Dokumentenstruktur der VAA Edition 1999 Anforderungen und Prinzipien neu Glossar überarbeitet VAA prozedural (pVAA) Version 2.1 Prozeduraler Rahmen neu Fachliche Beschreibung Inkasso/Kontokorrent neu Partner Partner/Anhang Provision überarbeitet Schaden/Leistung Vertrag Technische Beschreibung Datenmanager Datenmanager/Anhang Dialogmanager Parametersystem Workflow-/Vorgangsmanager VAA objektorientiert (oVAA) Version 1.0 Objektorientiertes fachliches Referenzmodell Hauptdokument neu Anhang A – Use-Case-Modell – neu Anhang B – Klassenmodell – neu Modell in Rational-Rose-Format neu Objektorientiertes technisches Referenzmodell neu Produkt neu http://www.gdv.de/vaa © GDV 1999 Das objektorientierte technische Referenzmodell Inhalt Inhaltsverzeichnis I. Einführung und Überblick.................................................................................... 6 I.1. Kontext .......................................................................................................................................... 6 I.2. Elemente des technischen Referenzmodells ................................................................................ 7 I.2.1. Die technische Architektur .................................................................................................... 8 I.2.2. Die Systemarchitektur ........................................................................................................... 8 I.2.3. Fachliche Komponenten und technisches Referenzmodell ................................................... 9 II. Die technische Architektur der VAA ................................................................. 11 II.1. Die Object Management Architecture (OMA) .............................................................................. 12 II.1.1. Definitionen und Grundbegriffe ........................................................................................... 12 II.1.2. Der Object Request Broker (ORB) ...................................................................................... 14 II.1.3. Charakterisierung der einzelnen Services ........................................................................... 14 II.1.3.1. Life Cycle Service ....................................................................................................... 15 II.1.3.2. Naming Service ........................................................................................................... 16 II.1.3.3. Relationship Service ................................................................................................... 17 II.1.3.4. Persistence Service .................................................................................................... 21 II.1.3.5. Transaction Service .................................................................................................... 23 II.1.3.6. Concurrency Service ................................................................................................... 26 II.1.3.7. Trader Service............................................................................................................. 27 II.1.3.8. Collection Service ....................................................................................................... 31 II.1.3.9. Property Service.......................................................................................................... 33 II.1.3.10. Query Service ............................................................................................................. 34 II.1.3.11. Security Service .......................................................................................................... 37 II.1.3.12. Externalization Service ................................................................................................ 38 II.1.3.13. Event Service .............................................................................................................. 41 II.1.4. II.2. CORBA 3.0 und Java .......................................................................................................... 43 Distributed Internet Architecture (DNA) ....................................................................................... 45 II.2.1. Definition und Grundbegriffe ............................................................................................... 45 II.2.2. Komponenten ...................................................................................................................... 45 III. II.2.2.1. Präsentation ................................................................................................................ 46 II.2.2.2. Anwendungsservice .................................................................................................... 47 Die Systemarchitektur der VAA ..................................................................... 48 III.1. Komponente ............................................................................................................................ 48 III.2. Business Object ...................................................................................................................... 49 III.2.1. Definition ............................................................................................................................. 49 III.2.2. Struktur eines Business Objects ......................................................................................... 50 III.2.3. Typisierung ......................................................................................................................... 51 III.2.3.1. Entity Business Object (EBO) ..................................................................................... 51 III.2.3.2. Process Business Object (PBO) ................................................................................. 52 III.2.4. © GDV 1999 Dienste ................................................................................................................................ 53 i Inhalt Das objektorientierte technische Referenzmodell III.2.4.1. BO-Manager - Framework und BO-Persistence Service ............................................. 54 III.2.4.2. Transparenter Zugriff auf Methoden eines Business Objects ...................................... 56 III.2.4.3. Transparentes Speichern von Business Objects ......................................................... 56 III.2.4.4. Suchen von Business Objects ..................................................................................... 58 III.2.4.5. Erzeugen von Business Objects .................................................................................. 59 III.2.4.6. Löschen von Business Objects ................................................................................... 59 III.2.4.7. Transaktionsmanagement ........................................................................................... 60 III.2.4.8. Verwalten von BO-Beziehungen ................................................................................. 61 III.2.4.9. Parametrisierung von Business Objects ...................................................................... 62 III.2.4.10. Benachrichtigungsdienst zwischen Business Objects ................................................. 62 III.2.5. III.2.5.1. Vom Business Object zur Komponente ....................................................................... 63 III.2.5.2. Allgemeine Typen von Objekten .................................................................................. 64 III.3. Präsentationskomponente ....................................................................................................... 65 III.4. Verteilung von Präsentation und Business Object................................................................... 68 III.5. Kopplung von Systemen ......................................................................................................... 70 III.5.1. Entkoppelung und Anpassung von Funktionalität ................................................................ 71 III.5.2. Anpassungen der System- bzw. technischen Architektur .................................................... 71 IV. Architekturmodelle im Überblick ................................................................... 75 IV.1. Einordnung .............................................................................................................................. 75 IV.2. OMG Vorschläge zur Business Object Architecture ................................................................ 76 IV.2.1. Architekturziele und Kontext ................................................................................................ 76 IV.2.2. Grundmuster der Architektur ............................................................................................... 77 IV.2.2.1. Definitionen ................................................................................................................. 77 IV.2.2.2. Services....................................................................................................................... 80 IV.2.2.3. BO- und Type-Manager Interfaces .............................................................................. 81 IV.2.2.4. Shared Services .......................................................................................................... 88 IV.2.3. IV.3. Wertung ............................................................................................................................... 91 IBM San Francisco .................................................................................................................. 91 IV.3.1. Architekturziele und Kontext ................................................................................................ 91 IV.3.2. Grundmuster der Architektur ............................................................................................... 92 IV.3.2.1. Foundation Layer ........................................................................................................ 93 IV.3.2.2. Common Business Objects Layer (CBOs) .................................................................. 95 IV.3.2.3. Core Business Processes Layer ................................................................................. 95 IV.3.3. IV.4. ii Business Objects und Komponenten .................................................................................. 63 Wertung ............................................................................................................................... 97 Enterprise JavaBeans ............................................................................................................. 97 IV.4.1. Architekturziele und Kontext ................................................................................................ 97 IV.4.2. Grundmuster der Architektur ............................................................................................... 98 IV.4.2.1. Komponente ................................................................................................................ 98 IV.4.2.2. Container ..................................................................................................................... 98 IV.4.2.3. Das Komponentenmodell ............................................................................................ 98 IV.4.2.4. Granularität der Komponenten .................................................................................... 98 © GDV 1999 Das objektorientierte technische Referenzmodell IV.4.2.5. Standardisierte Schnittstellen ...................................................................................... 98 IV.4.2.6. Anpassung ohne Änderung im Source Code .............................................................. 98 IV.4.3. Enterprise JavaBeans Komponentenmodell ....................................................................... 99 IV.4.3.1. Implizite Services ........................................................................................................ 99 IV.4.3.2. Portabilitätsschicht ...................................................................................................... 99 IV.4.3.3. Ausführung der Services ........................................................................................... 100 IV.4.4. Detaillierte Beschreibung der EJB Architektur .................................................................. 100 IV.4.4.1. Transiente und persistente Objekte .......................................................................... 101 IV.4.4.2. Naming und Registry ................................................................................................. 101 IV.4.4.3. EJB Objektschnittstelle ............................................................................................. 102 IV.4.4.4. Deklarierte Attribute .................................................................................................. 102 IV.4.4.5. Kontext Objekt und Environment Objekt ................................................................... 102 IV.4.5. Inhalt Beschreibung der Services ............................................................................................... 102 IV.4.5.1. Distribution Services ................................................................................................. 102 IV.4.5.2. State Management .................................................................................................... 103 IV.4.5.3. Persistence Management ......................................................................................... 103 IV.4.5.4. Transaction Management ......................................................................................... 104 IV.4.5.5. Security ..................................................................................................................... 105 IV.4.6. Enterprise JavaBean Deployment ..................................................................................... 105 IV.4.7. Wertung ............................................................................................................................ 106 V. Ausblick ............................................................................................................ 107 VI. Glossar........................................................................................................... 109 VII. Literatur ......................................................................................................... 114 © GDV 1999 iii Inhalt Das objektorientierte technische Referenzmodell Verzeichnis der Abbildungen Abbildung 1: Weg zu SW-Komponenten 7 Abbildung 2: Das technische Referenzmodell der VAA 8 Abbildung 3: Zusammenhang der Modelle und Architekturen 9 Abbildung 4: OMG-Architektur verteilter Systeme 12 Abbildung 5: Kommunikation zwischen Client- und Serverobjekten mit Hilfe des ORBs 14 Abbildung 6: Beispiel für CORBA Naming Context 17 Abbildung 7: Beispiel für die Verwendung des Relationship Services 20 Abbildung 8: Beispiele für die Verwendung von "graphs-of-related-objects" 21 Abbildung 9: Komponenten des Persistence Service 22 Abbildung 10: Komponenten des Transaction Service 24 Abbildung 11: Beispiel CORBA Transaction Service 25 Abbildung 12: Locking Modes des Concurrency Services 26 Abbildung 13: Kommunikation zwischen Trader, Server und Client im Trader Service 28 Abbildung 14: Beispiel Trader Service 30 Abbildung 15: Typen von Collections im Collection Service 32 Abbildung 16: Beispiel für den Property Service 34 Abbildung 17: Der CORBA Query Service 35 Abbildung 18: Beispiel für eine Query mit dem QueryManager 36 Abbildung 19: Prinzipieller Ablauf einer Berechtigungsprüfung in CORBA 38 Abbildung 20: Lesen und Schreiben von Objekten im Externalization Service 40 Abbildung 21: Beispiel für den Event-Service 42 Abbildung 22: Präsentation in der DNA 46 Abbildung 23: Kategorien von Business Objects 51 Abbildung 24: Entity Business Object 52 Abbildung 25: Process Business Object 53 Abbildung 26: Contracts zwischen Business Objects, BO-Manager - Framework und BO-Persistence Service 55 Abbildung 27: Proxy-Objekte für Business Objects 56 Abbildung 28: Business Objects als Komponenten 64 Abbildung 29: Heterogene komponentenorientierte Systeme 64 Abbildung 30: Kompatibilitätsebenen 65 Abbildung 31: Zusammenhänge im MVC-Konzept 66 Abbildung 32: Business Objects und Präsentationskomponenten 67 Abbildung 33: Konstruktionsprinzip von Präsentationen 68 Abbildung 34: Fat Client 69 Abbildung 35: Thin Client 69 Abbildung 36: Ultra Thin Client 70 Abbildung 37: Beispiel einer Systemanbindung durch Fassaden und Adapter 72 Abbildung 38: Konvergenz der Architekturen 72 Abbildung 39: Beispiel für die Anbindung eines Legacy - Systems 74 Abbildung 40: Einordnung der betrachteten Architektur-Frameworks 76 Abbildung 41: Interaktion von Business System Domains 78 Abbildung 42: Interface Hierarchie für Business Objects und Type Managers 80 Abbildung 43: InterOp Services über verschiedene Komponenten 81 Abbildung 44: Phasen des Commits im Transaction-Service (Interoperability Specification) 90 Abbildung 45: Ausblick auf die "Multi Layer Architecture" von San Francisco 92 Abbildung 46: Die San Francisco Architektur 93 Abbildung 47: Kategorien von Common Business Objects (CBO-Layer) 95 iv © GDV 1999 Das objektorientierte technische Referenzmodell Abbildung 48: Kern-Geschäftsprozesse in San Francisco Abbildung 49 : Enterprise JavaBeans Container Abbildung 50: Konvergenz der Komponenten-Architekturen Inhalt 96 100 107 Verzeichnis der Tabellen Tabelle 1: Operationen des CORBA Naming Service Tabelle 2: Eigenschaften von Diensten beim CORBA-Trader Service Tabelle 3: Functional Interfaces des CORBA Trader Service Tabelle 4: Administration Interfaces des CORBA Trader Service Tabelle 5: Merkmale von CORBA Collections Tabelle 6: Interfaces des CORBA Property Service Tabelle 7 : Kompatibilität der Dienste des BO-Frameworks und der CORBA Services Tabelle 8: Identity eines Business Objects (Interoperability Specification) Tabelle 9: Life Cycle Operationen der Interoperability Specification Tabelle 10: State Access Operationen der Interoperability Specification Tabelle 11: Intrinsic events (Interoperability Specification) Tabelle 12: Bedingungen für das Auslösen von Events (Interoperability Specification) Tabelle 13: Bedingungen für die Übermittlung von Events (Interoperability Specification) Tabelle 14: Interfaces des Query Service der Interoperability Specification Tabelle 15: Introspection Interface (Interoperability Specification) Tabelle 16: Exception Categories (Interoperability Specification) Tabelle 17: Eigenschaften des Transaction Service (Interoperability Specification) © GDV 1999 17 28 29 30 32 34 56 82 84 84 85 86 86 87 88 88 89 v Einführung und Überblick Das objektorientierte technische Referenzmodell I. Einführung und Überblick I.1. Kontext Das technische und fachliche Referenzmodell [i] bilden gemeinsam das Fundament der objektorientierten Versicherungs-Anwendungs-Architektur (VAA). Unter Referenzmodell wird in diesem Kontext folgendes verstanden: Das Referenzmodell ist eine einheitliche und konsistente Struktur, die es erlaubt, minimal und vollständig die Strukturen von Versicherungsunternehmen zu beschreiben. Einheitlichkeit und Konsistenz setzen präzise Definitionen der verwendeten Strukturelemente und ihrer Eigenschaften und Beziehungen voraus. In der objektorientierten Betrachtungsweise sind Objekte die grundlegenden Strukturelemente eines Modells, ihre Eigenschaften manifestieren sich in der Definition von Methoden und Objektvariablen. Einheitlichkeit in der Darstellung von Eigenschaften und Beziehungen sowie die Gewährleistung der Konsistenz wird durch den Einsatz einer Modellierungssprache wie UML (Unified Modelling Language) erleichtert. Das objektorientierte Begriffssystem und die Darstellungsformen der UML bilden somit die definitorischen und methodischen Grundlagen des technischen und fachlichen Referenzmodells. Die Rahmenbedingungen und Grundprinzipien der VAA sind auch Grundlage für die Gestaltung der objektorientierten Referenzmodelle. Sie sind ausführlich in dem Dokument Die Anwendungsarchitektur der Versicherungswirtschaft Grundlagen und Prinzipien beschrieben. Das objektorientierte technische Referenzmodell der VAA ist entsprechend der oben angegebenen Definition eine einheitliche und konsistente Struktur, die es erlaubt, minimal und vollständig den technischen Lebensraum von Versicherungskomponenten zu beschreiben. Das technische Referenzmodell soll die vollständige Umsetzung des fachlichen Modells ermöglichen, wobei die Beschreibung der dazu notwendigen technischen Mechanismen auf einer Stufe erfolgt, die unterschiedliche Realisierungsalternativen offenläßt, ohne daß die Wahl einer Alternative die Änderung des Referenzmodells erfordert. Komponentenmodelle und Softwarekomponenten Das technische Referenzmodell liefert die Vorgaben für die Strukturierung von Komponenten aus technischer Sicht. Das aus dem technischen Referenzmodell hervorgehende Komponentenmodell definiert, wie Komponenten miteinander kommunizieren und gemeinsame Dienste (z.B. für Transaktionssicherung) genutzt werden. Das technische Komponentenmodell bildet dabei den Rahmen für die Umsetzung fachlicher Komponenten im Sinne eines Metamodells. Dieses Metamodell definiert Begriffe wie „Business Object“ oder „Transaktion“ zur Verwendung im fachlichen Komponentenmodell, ohne daß ihre innere Funktion oder Struktur bekannt sein muß. 6 © GDV 1999 Das objektorientierte technische Referenzmodell Einführung und Überblick Eine Softwarekomponente entsteht somit durch Zerlegung des fachlichen Referenzmodells in fachliche Teile (z.B. Partner und Vertrag) und deren Integration in das technische Komponentenmodell. Die folgende Abbildung zeigt schematisch den Zusammenhang zwischen Referenzmodell, Komponentenmodellen und Softwarekomponenten. Abbildung 1: Weg zu SW-Komponenten I.2. Elemente des technischen Referenzmodells Das technische Referenzmodell beschreibt einmal rein technische Dienste, die für das „Funktionieren“ einer Anwendung notwendig sind (z.B. die Datenspeicherung oder die Präsentationstechnik), ohne daß diese Funktionen im fachlichen Modell in Erscheinung treten. Zudem definiert es Strukturvorgaben, Verhalten und Kategorien von Objekten (z.B. „Business Object“), die für die Bildung fachlicher Komponenten relevant sind. Beide Aspekte des technischen Referenzmodells sollten – soweit möglich – getrennt voneinander betrachtet werden. Die Trennung zwischen technischen Diensten und Strukturvorgaben erleichtert die Beschreibung fachlicher Komponenten, ohne daß die konkrete technische Funktionsweise bekannt sein muß. Damit wird ein höherer Grad an Allgemeingültigkeit und Abstraktion erreicht, gleichzeitig ist ein Abgleich zwischen den fachlichen und technischen Anforderungen an ein Referenzmodell möglich, ohne daß technische Details diskutiert werden müssen. In fast allen modernen Anwendungsarchitekturen ist eine Trennung zwischen Strukturvorgaben und technischen Diensten zu finden. In Anlehnung an übliche Konventionen wird in diesem Dokument der Begriff Technische Architektur für die Beschreibung der technischen Dienste und der Begriff Systemarchitektur für Strukturvorgaben, Verhalten und Kategorien von Objekten verwendet. © GDV 1999 7 Einführung und Überblick Das objektorientierte technische Referenzmodell Technisches Referenzmodell Dienste Business Objects und Komponenten • BO-Transaktionen • BO-Persistenz • BO-Beziehungen • Parametrisierung • Events • ... • Suchen • Erzeugen • Löschen Technische Dienste • CORBA Services • Präsentation • Datenbanken SystemArchitektur Technische Architektur Object Request Broker Abbildung 2: Das technische Referenzmodell der VAA I.2.1. Die technische Architektur Basis der technischen Architektur des Referenzmodells ist die Object Management Architecture der OMG (OMA), die Spezifikationen der CORBA-Services [ii] und des Object Request Brokers [iii]. Soweit bekannt wurden die unter CORBA 3.0 erwarteten Erweiterungen dieses Standards ebenfalls berücksichtigt. Die technische Architektur beschreibt die technischen Dienste des Referenzmodells in Form von Schnittstellenspezifikationen auf Basis der von der OMG genormten Interface Definition Language (IDL). IDL ist sprach- und plattformunabhängig und kann mittels sogenannter Language Bindings auf Programmiersprachen abgebildet werden. Der Begriff Dienst oder Service in objektorientierten Umgebungen beinhaltet nicht nur Funktionen, die von der eigentlichen Anwendung völlig getrennt sind und nur über eine Programmierschnittstelle (API) aufgerufen werden. Ebenso zählen auch Eigenschaften dazu, die ein Anwendungsobjekt von einer Serviceklasse „erben“ kann (Beispiel: CORBA Collection und Property Service). In vielen Fällen werden Dienste auch als eine Konvention des gegenseitigen Nachrichtenaustauschs zwischen einem Serviceobjekt und den Anwendungsobjekten definiert, d.h. beide Objekte müssen ganz bestimmte Schnittstellen implementieren (Beispiel: CORBA Transaction und Event Service). Für diese Art der Servicegestaltung haben sich die Begriffe Protokoll oder Contract eingebürgert. Ebenfalls zu den technischen Diensten zählen Klassenbibliotheken für die Präsentation und Datenbanken. I.2.2. Die Systemarchitektur Das grundlegende Strukturelement der Systemarchitektur ist das Business Object (Geschäftsobjekt). Die Systemarchitektur definiert den Begriff Business Object und beschreibt dessen innere Struktur, arbeitet verschiedene Typen von Business Objects heraus und definiert Anforderungen an Komponenten und deren Interaktion. Sie stellt somit ein Metamodell für die Realisierung fachlicher 8 © GDV 1999 Das objektorientierte technische Referenzmodell Einführung und Überblick Objekte und Komponenten dar. Das Metamodell bedient sich dabei technischer Dienste und Strukturen, die in der technischen Architektur definiert sind. Die Systemarchitektur beschreibt darüber hinaus Dienste für die Verwaltung von Business Objects und Komponenten. Zusätzlich beschreibt sie Verteilungsoptionen für Anwendungssysteme. Wie bei der technischen Architektur sind Dienste der Systemarchitektur nicht nur als Programmierschnittstellen zu verstehen. In vielen Fällen sind sie als Basisklassen für Business Objects angelegt oder definieren ein Protokoll zwischen Business- und Service-Objects. Die OMG benennt Dienste auf der Ebene der Systemarchitektur in den Common Facilities Architecture (CORBAFacilities) [iv]. Die Dienste der Systemarchitektur vereinfachen die Verwendung der technischen Dienste im Kontext von Business Objects und ergänzen stärker fachlich oder system-management - orientierte Funktionalität. Die dadurch erzielte Entkopplung zwischen technischen Diensten und Business Objects bedeutet gleichzeitig eine größere Unabhängigkeit von der Weiterentwicklung technischer Plattformen. Die Systemarchitektur der VAA orientiert sich an bekannten Ansätzen komponentenorientierter, verteilter Anwendungsarchitekturen wie (Enterprise)JavaBeans, SanFrancisco und der Interoperability Specification der OMG, ohne jedoch eine spezifische Implementierung vorauszusetzen. I.2.3. Fachliche Komponenten und technisches Referenzmodell Die folgende Abbildung zeigt den Zusammenhang Systemarchitektur und technischer Architektur: zwischen fachlichen Komponenten, Fachliches Referenzmodell V ersionierbar (from LibraryP ackage) IcisB asis (from LibraryP ackage) A ctor-Role -P attern V ersionierbarerA kteur Fachliche Komponentenmodelle Rolle 0..* S tandard 0..1 P erson S tandard 0..1 * Rufnummer S tandard 0..1 JurP erson anzuwendendeA nschrift A nschrift 0..1 * anzuwendende * B ankverbindung B ankverbindung 0..1 P artner NatP erson V ertragsabhaengigerP artner V ermittler Dienste P roduktpartner V ersicherte P erson Technisches Referenzmodell ObjektP artner S onstigeP artnerrolle partn erart V ersicherungsnehmer P ostempfaenger B eitragszahler Leistungsempfaenger Business Objects und Komponenten • BO-Transaktionen • BO-Persistenz • BO-Beziehungen • Suchen • Erzeugen • Löschen Technische Dienste • Parametrisierung • Events • ... • CORBA Services • Präsentation • Datenbanken SystemArchitektur Technische Architektur Object Request Broker Abbildung 3: Zusammenhang der Modelle und Architekturen © GDV 1999 9 Einführung und Überblick Das objektorientierte technische Referenzmodell Basisdienste wie Betriebssysteme, Netzwerkprotokolle bzw. -Infrastruktur und HardwareEigenschaften sind nicht Bestandteil des technischen Referenzmodells, sondern stellen die technische Infrastruktur eines Anwendungssystems dar. Aspekte der technischen Infrastruktur werden nur berücksichtigt, wenn damit wichtige Anforderungen an die Realisierung des technischen Referenzmodells verknüpft werden. 10 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA II. Die technische Architektur der VAA Basis der technischen Architektur des Referenzmodells ist die Object Management Architecture der OMG (OMA) und die Spezifikationen der CORBA-Services und des Object Request Brokers. Die Object Management Architecture implementiert wichtige Elemente der VAA-Grundprinzipien [v]: Verteilung (Grundprinzip der Zerlegung) Der Object Request Broker (ORB) ermöglicht die plattformübergreifende Verteilung von Systemkomponenten. Entkopplung (Grundprinzip der Zerlegung) CORBA stellt mit seinem Interface-Konzept den Grundmechanismus für die Entkopplung von Systemkomponenten zur Verfügung. CORBA-Interfaces sind sprachneutral und können unter den gebräuchlichsten Sprachumgebungen (u.a. prozedurale Sprachen wie COBOL und C) eingesetzt werden. Viele CORBA-Services sind auf eine möglichst weitreichende Unabhängigkeit von Komponenten ausgelegt (z.B. Relationship und Event Service). Interaktion (Grundprinzip der Zerlegung) CORBA stellt einen Event Service für die Kommunikation zwischen Komponenten zur Verfügung und stellt mit IDL eine typsichere Schnittstellenbeschreibungssprache zur Verfügung. Wiederverwendung, Konvergenz und Migration (Grundprinzip der evolutionären Entwicklung) Durch die Trennung von Interface und Implementierung von verteilten Objekten werden die Voraussetzungen für eine evolutionäre Entwicklung von Systemteilen und ihrer Wiederverwendung in anderem Kontext geschaffen. Grundprinzip der Strukturierung Die Object Management Architecture liefert ein technisches Modell für die Strukturierung von Anwendungssystemen in ORB, Services, Facilities und Domain Interfaces (siehe folgenden Abschnitt). Microsofts Distributed InterNet Architecture (DNA) ist ein konkurrierendes Architekturkonzept. Obwohl in DNA eine Reihe von Merkmalen wie Plattformunabhängigkeit und Interoperabilität weniger stark ausgeprägt sind wie in OMA, handelt es sich um ein Modell, das aufgrund der weiten Verbereitung von MS Windows eine wichtige Rolle bei der Entwicklung verteilter Anwendungssysteme spielt, insbesondere in desktop-orientierten Systemen. Im Anschluß an die Darstellung der Object Management Architecture folgt eine kurze Darstellung der Architektur und der Komponenten von DNA. Vergleiche zwischen DNA (bzw. den zugrundeliegenden Basistechnologien) und CORBA unter verschiedenen Aspekten sind in der Literatur zu finden (vgl. [vi] und [vii]). Weitere Elemente der technischen Architektur Die CORBA Standards enthalten keine Spezifikationen zur Benutzerschnittstelle. Angaben dazu in den CORBA Facilities [iv] haben lediglich Definitionscharakter. Wichtig aus Sicht des VAAReferenzmodells ist vor allem das Zusammenspiel zwischen Fachlogik, Steuerung und Präsentation © GDV 1999 11 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell unter Verteilungsaspekten (siehe hierzu Kapitel III.2.5 und III.3), die Präsentationstechnik selbst ist nicht Gegenstand des Referenzmodells. Das technische Referenzmodell berücksichtigt in stärkerem Maße die unterschiedlichen Formen der Datenspeicherung als der CORBA Persistence Service. Insbesondere die bei Versicherungsunternehmen immer noch wichtige Anbindung von IMS- oder VSAM - Datenbanken wird konzeptionell berücksichtigt (siehe hierzu Kapitel III.2.4.1). II.1. Die Object Management Architecture (OMA) II.1.1. Definitionen und Grundbegriffe Untenstehende Abbildung zeigt die Architektur verteilter, objektorientierter Systeme aus Sicht der Object Management Group, die sogenannte Object Management Architecture (OMA). Abbildung 4: OMG-Architektur verteilter Systeme Object Request Broker und CORBA Services Im Mittelpunkt der OMA-Architektur steht der Object Request Broker (ORB). Seine Funktionsweise und Systemeinbettung bildet einen der Hauptbestandteile der CORBA-Spezifikation. Unter dem Sammelbegriff CORBA 2.0 werden neben der reinen Broker-Funktionalität auch eine Reihe allgemeiner technischer Dienste verstanden, die sogenannten CORBA-Services (s.u.). Die CORBAServices spezifizieren Verhalten und Schnittstellen verteilter Objektsysteme hinsichtlich Transaktionsmanagement, Objekterzeugung, Persistenz u.ä. 12 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Interface Definition Language (IDL) Die Beschreibung des Verhaltens von Objekten erfolgt durch Spezifikation ihrer Schnittstellen („Methoden“) mit Hilfe der Interface Definition Language IDL. IDL ermöglicht die plattform- und sprachenunabhängige Spezifikation dieser Schnittstellen. Das Ziel der Sprachenunabhängigkeit wird von der OMG dabei konsequent verfolgt. So werden zum Beispiel auch Vererbungsbeziehungen auf der Ebene der IDL-Schnittstellen beschrieben und nicht durch Angabe entsprechender Objektbeziehungen. Für die Implementierung existieren sogenannte Language Binding – Spezifikationen, die beschreiben, auf welche Weise IDL-Aufrufstrukturen und Datentypen auf die Strukturen der jeweiligen Programmiersprache abgebildet werden. Internet Interorb Protocol (IIOP) Für die Kommunikation verwenden Object Request Broker heutzutage vor allem das ebenfalls von der OMG spezifizierte Internet Interorb Protokoll (IIOP), das auch die Kommunikation zwischen ORBs verschiedener Hersteller erlaubt. Domain Interfaces In den letzten Jahren entwickelte die OMG verstärkt Aktivitäten zur Spezifikation von sogenannten Domain Interfaces. Domain Interfaces beschreiben das Verhalten von verteilten, objektorientierten Systemen, die ein bestimmtes Geschäftsfeld („business domain“) abdecken. Verantwortlich für Spezifikationen in diesem Bereich sind sogenannte Domain Task Forces. Wichtig für Finanzdienstleistungsunternehmen ist die Business Object Domain Task Force (BODTF) und die Financial Domain Task Force (FDTF) und ihre Arbeitsgruppe Insurance Working Group (IWG). Die Arbeiten von FDTF und IWG sind rein fachlich orientiert und dienen im wesentlichen zur Spezifikation eines fachlichen Referenzmodells. BODTF liefert Spezifikationen für Business Objects allgemeiner Natur und ist deshalb für die technische Referenzarchitektur von Bedeutung. Die folgenden Standardisierungsvorschläge der BODTF wurden bei der Definition des technischen Referenzmodells näher betrachtet (siehe Kapitel IV.2): Interoperability Specification [viii] Business Object Component Architecture (BOCA) [ix] Es ist nicht damit zu rechnen, daß diese Vorschläge in ihrer heutigen Form zur Standardisierung gelangen. Der Erfolg von Java und dem Komponentenmodell JavaBeans bzw. Enterprise-JavaBeans veranlaßte die OMG, sich stärker an dieser Entwicklung zu orientieren. Man kann davon ausgehen, daß innerhalb des Jahres 1999 OMG-Spezifikationen vorliegen werden, die sich stark an JavaBeans und Enterprise-JavaBeans orientieren (siehe Kapitel II.1.4). Aus diesem Grund wurden bei der Definition des technischen Referenzmodells die JavaBeans- und Enterprise-JavaBeans Spezifikationen besonders berücksichtigt (siehe Kapitel IV.4). Ein weiterer Grund für die Orientierung an modernen Java-basierten Komponententechnologien ist das Fehlen ausreichender OMG-Spezifikation für die Serverseite einer verteilten Anwendung. Die CORBA 2.0 Spezifikation läßt zuviel Raum für ORB-Hersteller bei der Gestaltung der Objekt- und Transaktionsverwaltung auf der Serverseite, wodurch Implementierung mit unterschiedlichen ORBs nicht kompatibel sind. Diese Mängel sollen durch CORBA 3.0 (siehe Kapitel II.1.4) und vor allem durch das Zusammenwachsen von CORBA und Enterprise-JavaBeans behoben werden. © GDV 1999 13 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell II.1.2. Der Object Request Broker (ORB) Der Object Request Broker (ORB) definiert einen Objektbus, auf dem Client-Objekte mit verteilten Serverobjekten plattformunabhängig kommunizieren können. Der ORB ist unter anderem zuständig für die Übertragung der Aufrufparameter, der plattformabhängigen Formatierung der Werte und der Erzeugung einer system-übergreifenden Objektreferenz. Im allgemeinen kommuniziert ein ClientObjekt nicht direkt mit dem ORB, wenn es Methoden eines Server-Objektes aufrufen will, sondern über sogenannte Stubs. Stubs sind lokale Repräsentationen von Server-Objekten auf dem Client, die aus der IDL-Spezifikation der Serverobjekte generiert werden. Die Kommunikation mit dem ORB geschieht innerhalb der Stubs. Für den Client erscheint dadurch das Serverobjekt wie ein lokales Objekt. Server-seitig geschieht die Anbindung des Server-Objektes an den ORB über sogenannte Skeletons und Object Adapters. Skeletons übermitteln Methodenaufrufe eines Clients an das Serverobjekt, Object Adapters stellen den Skeletons und den Serverobjekten eine ORB-Schnittstelle zur Verfügung. CORBA spezifiziert die Grundfunktionalität, die jeder Object Adapter zur Verfügung stellen muß, den sogenannten Basic Object Adapter (BOA). Der ORB benötigt sowohl auf dem Client als auch auf dem Server Informationen über die Schnittstellen, Bezeichnungen und Aufrufparameter verteilter Objekte. Client-seitig werden diese Informationen im Interface Repository gespeichert, auf dem Server im Implementation Repository. Stubs sind nur verwendbar, wenn alle Methoden und Aufrufparameter eines Serverobjekts zur Entwicklungszeit bekannt sind. Für dynamisch konfigurierbare Systeme stellt CORBA ein dynamic invocation interface (DII) zur Verfügung, mit deren Hilfe Methodenaufrufe zur Laufzeit erstellt werden können. Analog dazu gibt es server-seitig ein dynamic skeleton interface (DSI). Client Server static invocation 1. Objekt erzeugen mit Angabe der Referenz 2. Aufruf method() Implementierung der Klasse von "aObj" Stub von "aObj" method() Client ORB Skeleton Server-ORB Anwendungsobjekt dynamic invocation (DII) Anwendungsobjekt 1. aObj, Parameter, method() dem reqObjekt mitteilen; 2. Aufruf req.invoke() Request - Objekt invoke() Client ORB aObj method() IIOP IIOP Abbildung 5: Kommunikation zwischen Client- und Serverobjekten mit Hilfe des ORBs II.1.3. Charakterisierung der einzelnen Services Generell bestehen alle CORBA-Spezifikationen aus Schnittstellen-Beschreibungen, die sogenannten Interface Definitions. In einem verteilten, plattformunabhängigen System sind die in IDL definierten Interfaces das einzige, was ein Objekt von einem Service wissen muß. Der Ort des Objektes, das einen Service implementiert, ist völlig transparent. CORBA Services bestehen in vielen Fällen aus Interface - Beschreibungen von Objekten, die den betreffenden Service implementieren und Beschreibungen von Interfaces, die ein Objekt, das den Service nutzen will, selbst implementieren muß. Es handelt sich also um eine wechselseitige 14 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Vereinbarung, wie mit bestimmten Aufgaben umzugehen ist. In der objektorientierten Literatur hat sich dafür der Begriff Protokoll eingebürgert. Objekte, die einen Service implementieren, werden vom Hersteller eines CORBA kompatiblen ORBs zur Verfügung gestellt. Für Interfaces, die ein Objekt implementieren muß, das einen Service nutzen will, stehen im allgemeinen Basisklassen zur Verfügung, von denen die Anwendungsobjekte abgeleitet werden können. CORBA Interface-Beschreibungen werden in sogenannten Modulen zusammengefaßt. So enthält zum Beispiel das Modul cosRelationships alle Interface-Beschreibungen des Relationship Service. II.1.3.1. Life Cycle Service Definition Der Life Cycle Service definiert Dienste und Konventionen zur Erzeugung, zum Löschen, Kopieren und Verschieben von Objekten. Diese Operationen können auch Beziehungen zwischen Gruppen verwandter Objekte behandeln. Das sind z.B. Containment- und Referenzbeziehungen, oder das Erzwingen von referentieller Integrität zwischen Objekten. Beziehungen zwischen Objekten werden mit dem Relationship Service definiert, d.h. der Life Cycle Service stellt Schnittstellen bereit, die vom Relationship Service abgeleitet sind. Darüber hinaus benötigt der Life Cycle Service noch den Naming Service, um Objekte zu finden. Objekte werden durch sogenannte Factories erzeugt. Factories sind Objekte, die über Methoden verfügen um ein Objekt eines bestimmten Typs zu erzeugen [x]. Um ein neues Objekt zu erzeugen, muß ein Client zunächst die zugehörige Factory finden. Dazu benutzen Clients entweder Suchmechanismen, wie den Trader Service oder das FactoryFinder - Interface oder sie erhalten Factory-Objekte als Parameter von Operationen. Es gibt kein Standard Interface für eine Factory. Sie sind abhängig von der Objektimplementierung, d.h. verschiedene Objektimplementierungen können verschiedene Factory Interfaces definieren. Da es kein Standard Interface für eine Factory gibt, existiert ein Generic Factory Interface, das eine generische Operation zur Erzeugung von Objekten bereitstellt. Um ein Objekt zu erzeugen, muß der Client eine Objekt Referenz für eine Factory (entweder generische Factory oder objektspezifische Factory) besitzen und einen create - Request an diese absetzen. Als Ergebnis auf den create - Aufruf wird ein neues Objekt von der Factory erzeugt und die Objektreferenz an den Client zurückgeliefert. Die Factory ist für die Bereitstellung der benötigten Ressourcen verantwortlich. Um ein Objekt zu löschen, muß der Client einen remove - Request an das Objekt absetzen. Dieses Objekt muß jedoch das LifeCycleObject Interface unterstützen. Die Objektreferenz wird ungültig, der Client ist jedoch nicht für das Freigeben der Ressourcen verantwortlich. Um Objekte zu kopieren oder zu verschieben, muß der Client einen copy- oder move - Request an das Objekt absetzen. Auch hier muß das Objekt wieder das LifeCycleObject Interface unterstützen. Zunächst wird ein neues Objekt im Bereich des Factory Finders angelegt. Der Factory Finder definiert eine Schnittstelle, um Factories zu finden. Bei einem copy oder move wird demnach mit Hilfe © GDV 1999 15 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell des Factory Finders die entsprechende Factory im Zielnamensraum gefunden und ein neues Objekt durch die gefundene Factory erzeugt. Dieses Objekt wird mit den Daten des zu kopierenden oder zu verschiebenden Objektes initialisiert. Bei einem move - Request wird zusätzlich noch die Objektreferenz im Quellnamensraum gelöscht. Bei einem sogenannten deep-copy oder deep-move werden nicht nur die angegebenen Objekte in einen anderen Namensraum transferiert, sondern alle mit diesem Objekt in Beziehung stehenden Objekte. Diese werden über den Relationship Service identifiziert. Wertung In einem über mehrere Adressräume verteiltem Objektsystem ist ein Life Cycle - Service unbedingt erforderlich. Der Life Cycle - Service von CORBA stellt einen Satz von Schnittstellen bereit, die auch bei Verwendung unterschiedlicher Plattformen in einer Systemlandschaft die gleichen Verfahren zum Erzeugen, Verschieben und Löschen von Objekten garantieren. II.1.3.2. Naming Service Definition Der Naming Service ist ein Mechanismus für Objekte in einer verteilten Umgebung andere Objekte zu finden. Der Naming Service erlaubt die Assoziation eines Objekts mit einem Namen in einem sogenannten Namensraum, das sogenannte Name Binding. Dieser Namensraum bildet den Namenskontext (Naming Context), in dem der Objektname eindeutig ist, d.h. Namen werden immer relativ zu einem Namenskontext definiert. Der Naming Service wird von folgenden Diensten benötigt: Life Cycle, Query, Ein Name setzt sich aus einer geordneten Folge von Komponenten (ordered sequence of components) zusammen, wobei eine Komponente aus einem Key-Value - Paar (identifier attribute / kind attribute) besteht, das vom Naming Service nicht interpretiert wird. Die Folge von Komponenten bilden einen zusammengesetzten Namen (vergleichbar mit der Pfadangabe einer Datei bestehend aus einer Kette von Unterverzeichnissen). Jede Komponente, mit Ausnahme der letzten, wird dazu verwendet, den Kontext zu benennen. Die letzte Komponente stellt den eigentlichen Namen des Objektes dar. Allein die Implementierung kann anwendungs- oder plattformspezifisch sein. Das CosNaming Modul besteht aus zwei Schnittstellen, die den Naming Service definieren. Naming Context Interface Binding Iterator Interface Im Naming Context - Interface sind folgende Operationen definiert: Binding objects Eine Namen-Objekt Zuordnung wird für einen bestimmten Kontext erzeugt. Name resolution Hiermit wird ein Objekt über den assoziierten Namen gefunden. Es wird jedoch nicht der Typ des Objektes zurückgeliefert. Der Client ist für den richtigen Objekttyp selbst verantwortlich. 16 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Unbinding Die Zuordnung Objekt – Name wird für einen bestimmten Kontext aufgehoben. Creating naming contexts Anlegen neuer Namenskontexte Deleting contexts Löschen bestehender Namenskontexte Listing a naming context Anzeigen bestehender Namenskontexte Tabelle 1: Operationen des CORBA Naming Service Das Binding Iterator - Interface kann benutzt werden, um die gesamte Kette der Komponenten eines Namens Schritt für Schritt durchzugehen. Beispiel Abbildung 6: Beispiel für CORBA Naming Context Wertung In verteilten Systemen ist die Möglichkeit der hierarchischen Namensgestaltung für Objekte unbedingt erforderlich. Insbesondere für systemweit verfügbare Dienste sind „sprechende“ Namen zu empfehlen. Gegenüber anderen Implementierungen hat der CORBA Naming Service den Vorteil der Plattformunabhängigkeit. II.1.3.3. Relationship Service Definition © GDV 1999 17 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Der Relationship Service ermöglicht es, Beziehungen von Objekten plattformübergreifend zu verwalten. Folgende Merkmale zeichnen den Service aus: Zur Darstellung von Relationen wurden zwei neue Arten von Objekten eingeführt: Rollen und Relationen. Beide können spezifische Attribute zur Beschreibung einer Relation erhalten. Typbeschränkungen und Kardinalitätskriterien können über den Relationship Service definiert und überprüft werden. Sie sind unabhängig von den beteiligten Objekten. Der Life Cycle Service und Relationship Service sind aufeinander abgestimmt. Einerseits werden Operationen wie Copy, Move und Remove auf Graphen von Objekten angewandt. Andererseits stellt der Relationship Service Methoden zur Verfügung, mit denen der Life Cycle Service Graphen von Objekten durchlaufen kann, ohne die entsprechenden Objekte zu aktivieren. Der Relationship Service unterstützt die Komponente compound life cycle des Life Cycle Service Verteilte Implementierungen des Relationship Service können eine ähnliche Performanz und Verfügbarkeit haben, wie Corba-Zugriffe über die Objektreferenz. Rollenobjekte können zusammen mit Ihren Objekten abgelegt werden und müssen nicht notwendigerweise in einem zentralen Repository hinterlegt werden. Der Relationship Service ist dreistufig aufgebaut: Base Relationship Model Graphs of related Objects Specific Relationships Base Relationship Model Relationen und Rollen bilden die Basis des Relationship Services. Rollenobjekte ermöglichen eine dynamische Subtypisierung von Objekten. Durch die Einführung von Rollenobjekten ist es möglich, kontextabhängige und -unabhängige Aspekte von Objekten zu trennen. Eigenschaften, die über Rollen definiert sind, und Relationen, die auf diesen Rollen aufsetzten, können sich kontextabhängig ändern, ohne daß die Objekte, denen sie zugeordnet sind, ihre Eigenschaften ändern müssen. Demgegenüber werden die kontextunabhängigen Eigenschaften von Objekten in deren eigene Spezifikation und Schnittstelle übernommen. Die Relationen und die Rollen, die innerhalb des Relationship Service eingesetzt werden, haben IDLSchnittstellen und werden über eigene Factories verwaltet. Die Kardinalität einer Rolle gibt an, wie viele Relationen eine Verbindung zu ihr haben können. Der Grand (Degree) einer Relation gibt an, zu wie vielen Rollen sie in Verbindung stehen kann. Im Base Relationship Model stehen folgende Operationen zur Verfügung: Erzeugen eines Rollen- oder Relationenobjektes (fällt in die Zuständigkeit der Rollen- oder Relationen-Factory). Navigieren durch eine Relation Löschen von Rollen und Relationen Iteration über die Relationen an denen eine Rolle teilnimmt (fällt in die Zuständigkeit des Relationen-Iterators). 18 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Für jede Rolle werden zwei Typen von Kardinalitäten definiert: Minimum und Maximum. Minimum: Die minimale Anzahl von Instanzen einer Relation, an denen die Rolle teilnimmt. Maximum: Die maximale Anzahl von Instanzen einer Relation, an denen die Rolle teilnimmt. Die Interfaces des Base Relationship Models werden im CosRelationships - Modul beschrieben. Letzteres enthält Relationship- und Role Interface Relationship- und Role Factory Relationship Iterator (zählt die Anzahl der Relationen, an denen eine Rolle teilnimmt). Beispiel Ein Beitragszahler überweist seine Beiträge zu einem bestimmten Vertrag über sein Girokonto auf ein Konto des entsprechenden Versicherungsunternehmens. Durch die Zuordnung „Kunde - Kundenkonto - Eingangskonto Vertrag“ wird eine Zahlung als Beitragszahlung zu dem entsprechenden Vertrag identifiziert. Es wäre nicht ausreichend nur das Kundenkonto zu ermitteln und dieses einer Person zuzuordnen. Es besteht die Möglichkeit, daß dieselbe Person eine Immobilie aus dem Vermögen der Versicherung gemietet hat und die Miete von dem gleichen Konto überweist. Eine sichere Unterscheidung ist - in diesem Beispiel - nur möglich, wenn für diese Mietzahlungen ein anderes Eingangskonto eingerichtet wird. In der beschriebenen Situation treten unterschiedliche Aspekte eines Girokontos zu Tage. Letzteres hat zunächst eine Reihe von Eigenschaften, die unabhängig von besonderen Anwendungssituationen sind: Kontonummer, Bankleitzahl etc. Diese Eigenschaften wird man in die Definition der Klasse „Konto“ übernehmen. Darüber hinaus gibt es jedoch einige Aspekte, die nur in bestimmten Anwendungssituationen von Bedeutung sind. Ein Konto dient z.B. als Beitragskonto für Versicherungsbeiträge und in diesem Zusammenhang spielt die Zuordnung „Girokonto des Kunden - Vertrag - Eingangskonto“ eine Rolle. Ähnlich verhält es sich mit dem Mietverhältnis zwischen dem Versicherungsunternehmen und dem Kunden. Hier ist die Zuordnung „Girokonto des Kunden - Immobilie Eingangskonto der Vermögensverwaltung“ von Bedeutung. Wird das Konto eines Partners mit der Rolle „Kundenkonto“ versehen, so wird es dadurch zu einer speziellen Ausprägung der Klasse „Konto“ und stellt somit eine Reihe von neuen Eigenschaften zur Verfügung. Diese Subtypisierung kann vorgenommen werden, ohne daß das Objekt „Konto“ selbst etwas davon "erfährt". Das Konto kann darüber hinaus eine Reihe von zusätzlichen Rollen erhalten - z.B. „Mietkonto“ - ohne daß diese gegenseitig sich in irgendeiner Form beeinflussen. Erfolgt in unserem Beispiel nach einer gewissen Zeit eine Beitragsfreistellung des Vertrages, dann wird die Relation „Beitragsverhältnis“ gelöscht und mit ihr die entsprechenden Rollenobjekte „Kundenkonto“, „beitragspflichtiger Vertrag“ etc. Die Darstellung des Kontos selbst und auch die übrigen Rollen des Kontos bleiben davon unberührt. Bei den übrigen Objekten „Kunde“, „Versicherungsunternehmen“ etc. und ihren Rollen liegen ähnliche Verhältnisse vor. © GDV 1999 19 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Rolle: Konto von Rolle: Kontoinh. Person Konto Relation Girokonto Rolle: Beitragszahler Vertrag Relation Beitragsverhältnis Rolle: Beitragspflichtiger Vertrag Rolle: Beitragskonto für Vertrag Relation Girokonto VU Konto Rolle: Konto von Rolle: Kontoinh. In diesem Beispiel hat die Relation "Beitragsverhältnis“ den Degree 3 und die Relation „Girokonto“ den Degree 2. Die Kardinalität der Rolle "Konto von" wäre 1 und der Rolle „Eingangskonto“ wäre die Kardinalität n zuzuordnen. Abbildung 7: Beispiel für die Verwendung des Relationship Services Graphs of related Objects Ein Graph ist eine Menge, die aus Knoten (Nodes) und Kanten (Edges) besteht. Dabei sind Knoten identifizierbare Objekte, die das Node-Interface unterstützen. Knoten stellen eine Menge (Collection) aus verschiedenen Rollen eines Objektes und dem Objekt selbst dar. Über das Node-Interface der einzelnen Knoten können Graphen nach verschiedenen Kriterien durchlaufen werden (Traversal ). Dazu muß ein Knoten folgende Eigenschaften besitzen: Ein Readonly Attribut, das alle Rollen des Knotens beschreibt Eine Methode, die es erlaubt, Rollen eines bestimmten Typs auszugeben Operationen, um Rollen hinzuzufügen oder zu löschen. Der Relationship Service definiert ein Traversal Object, das bei Angabe eines Startpunktes eine Folge von gerichteten Kanten des entsprechenden Graphen ausgibt. Jede dieser Kanten ist wie folgt aufgebaut: Eine Instanz der Relation Ein Start-Knoten und eine Start-Rolle der Kante Eine Folge der restlichen Knoten ( bei einer n-ären Relation sind dies (n - 1) Knoten ) Beim Durchlaufen eines Graphen müssen Zyklen erkannt bzw. vermieden werden. Ferner wird durch das TraversalCriteria - Interface der Durchlauf des Graphen gesteuert. Zu jeder Kante eines Graphen wird über dieses Interface geklärt, ob der Durchlauf bei einem der nächsten Knoten fortgesetzt werden soll oder nicht. In Abhängigkeit von dieser Festlegung wird entschieden, ob eine Kante in die Ergebnismenge ausgegeben wird und bei welchem Knoten die Suche fortgesetzt werden soll. 20 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Beispiel Ein Beispiel für den Base Relationship Service wurde bereits durch die dreiwertige Relation „Konto-Vertrag-Person“ gegeben. Einsatzbeispiele zur zweiten Stufe - den „Graphs of related Objects“ - des Relationship Services sind: Distributed Desktops: Ordner und Objekte werden über Graphen miteinander verknüpft. Ordner referenzieren Objekte und andere Objekte. Letztere könne über mehrere Maschinen verteilt sein. Compound Documents: Eine Compound Document Architektur verknüpft Texte, Tabellen, Graphiken, Videos etc. Abbildung 8: Beispiele für die Verwendung von "graphs-of-related-objects" Specific Relationships In den Relationship Service wurden zwei spezielle Relationen mit aufgenommen, die von großer allgemeiner Bedeutung sind: Die Containment - Relation Die Reference - Relation Es handelt sich in beiden Fällen um binäre Relationen (Degree = 2), das heißt, es gibt nur zwei Rollen, die miteinander in Relation stehen. Die Containment - Relation ist eine (1 : n) - Relation, das heißt, auf einer Seite der Relation können mehrere Objekte die gleiche Rolle einnehmen. Die Reference Relation ist eine (n : m) - Relation, das heißt auf beiden Seiten können mehrere Objekte die jeweiligen Rollen einnehmen. Wertung Die Nutzung des Relationship - Service ist nicht zwingend erforderlich für verteilte, objektorientierte Systeme, da Rollen und Relationen auch innerhalb des jeweiligen Fachmodells als CORBA-Objekte modelliert werden können. Die Verwendung macht nur dann Sinn, wenn rollenabhängige Beziehungen zwischen Komponenten möglichst flexibel gestaltet werden sollen. Dabei ist abzuwägen zwischen Ansprüchen an Flexibilität und Performance. II.1.3.4. Persistence Service Definition Der Persistent Object Service (POS) dient der dauerhaften Speicherung von Objekten in verteilten Systemen. Der Persistent Object Service ermöglicht es Objekten auch dann persistent (dauerhaft) zu existieren, wenn die Applikation, die das Objekt erzeugt hat, oder der Client, der es verwendet hat, beendet wurden. Der Persistent Object Service besteht aus den folgenden Komponenten: © GDV 1999 21 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Client Persistentes Objekt PO Protokoll Persistence Data Service PID POM Persistence-ID Persistence ObjectManager PDS Datenspeicher Abbildung 9: Komponenten des Persistence Service Persistente Objekte (PO) sind Objekte, deren Zustand dauerhaft gespeichert wird. Das PO ist letztendlich für seine Dauerhaftigkeit verantwortlich. D.h. das PO legt fest, welches Datenspeicherungs-Protokoll zu verwenden ist und wieviel Sichtweite es seinem Client einräumt. Manche Objekte machen sich selbst persistent, während andere Objekte diese Funktion ihrem Client überlassen. Mittels der Persistence-ID (PID) identifiziert der Persistent Object Service das Objekt, das gespeichert wird. Ähnlich wie die Objektreferenzen kann das PID in späteren Sessionen benutzt werden. Die PID kann ausschließlich im Kontext vom POS benutzt werden. In der Realität gibt es mehrere Persistenzdienste, Speichermedien und Protokolle. Der Persistence Object Manager (POM) trifft die Entscheidung, welches ausgewählt wird. Der Persistence Data Service (PDS) implementiert die Schnittstelle zum Protokoll, und er führt die aktuelle Speicheroperation aus. Der Datenspeicher kann eine einfache Datei sein oder eine Datenbank. Da einige Datenspeicher passiv sind, benötigen sie den PDS, um die Speicherung und die wiedergewonnenen Operationen zu initialisieren. Wertung Der CORBA-Persistence Service wird aufgrund seiner oberflächlichen Spezifikation und der mangelnden Kompatibilität mit anderen Standards (z.B. der ODMG) von keinem Datenbankhersteller unterstützt. Ein Persistence Service ist für die Architektur der VAA unbedingt notwendig, CORBA´s Spezifikationen sind als Basis allerdings nicht ausreichend. Generell geht der Trend hin zu Transaction Frameworks wie Enterprise JavaBeans, die Transaktionsmanagement und Persistenz in einem einheitlichen Rahmen zur Verfügung stellen. Auch die OMG geht mit CORBA 3.0 diesen Weg. 22 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA II.1.3.5. Transaction Service Definition Der Object Transaction Service (OTS) von CORBA unterstützt das allgemeine Transaktionskonzept, d.h. ein Arbeitsschritt ist dann eine Transaktion, wenn die folgenden grundlegenden ACID-Charakteristika erfüllt sind: 1. Eine Transaktion ist atomar (atomic), wenn bei einer Unterbrechung aufgrund eines Fehlers sämtliche Auswirkungen bis zu diesem Zeitpunkt zurückgesetzt (rolled back) werden. 2. Eine Transaktion liefert konsistente (consistent) Ergebnisse. 3. Eine Transaktion ist isoliert (isolated). Ihre Zwischenstände sind für andere Transaktionen nicht sichtbar. Sie laufen vordergründig seriell ab, obwohl sie konkurrierend zu anderen Transaktionen stehen. 4. Eine Transaktion ist dauerhaft (durable), wenn die Folgen einer abgeschlossenen Transaktion persistent sind. Eine Transaktion kann auf zweifache Weise enden: sie wird entweder commited oder rolled back. Commited heißt, daß sämtliche Änderungen permanent werden, anderenfalls werden die Veränderungen auf ihren ursprünglichen Ausgangsstand zurückgesetzt (rolled back). Jede Transaktion besteht aus dem Start, einer Zahl von Transaction-Events (z.B. DB Updates) und einem definierten Ende. Der CORBA Transaction Service beschreibt Interfaces, die verteilten Objekten erlauben atomar zu sein. Die Interfaces gestatten es den Objekten, gemeinsam Transaktionen per commit oder rollback abzuschließen. Insbesondere bietet der Transaction Service: Transaktionen an, die unterschiedliche verteilte ACID-Objekte einschließen. die Option, Objekte und Ressourcen aus der Nicht-Objektwelt zu integrieren. Die Sychronisation der an einer Transaktion beteiligten Objekte und dem Transaction Service erfolgt mit Hilfe eines Transaction Context, der von den beteiligten Objekten gemeinsam genutzt wird. Der Transaction Context wird bei jedem Methodenaufruf tranparent für den Client vom ORB als Parameter übergeben. Die vom Transaction Service unterstützten Anwendungen bestehen aus folgenden Komponenten: Der Transactional Client (TC) in Form eines Programms kann Operationen auf verschiedenen Transactional Objects in einer einzigen Transaktion durchführen und ist verantwortlich für das Auslösen und Beenden einer Transaktion. Ein Objekt, dessen internes Verhalten von der Teilnahme an einer Transaktion beeinflußt wird, muß das Interface TransactionalObject implementieren. TransactionalObject ist ein abstraktes Interface, das selbst keine Operationen definiert. Es dient lediglich dem ORB als Kennzeichen, daß das betroffene Objekt an einer Transaktion teilnehmen soll. Ein Recoverable Object ist ein Objekt, das an einer Transaktion beteiligt ist und dessen Zustand in einer Resource (eine Datei oder eine Datenbank) gespeichert wird. Ein Recoverable Object muß deshalb sowohl das TransactionalObject- als auch das Resource-Interface implementieren. Ein Recoverable Object beteiligt sich am Transaction © GDV 1999 23 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Service Protokoll, in dem sich beim Service registrieren läßt. Der Service aktiviert das Commit Protokoll durch Requests an die registrierte Resource. Ein Transactional Server besteht aus Objekten, deren Verhalten von der Transaktion beeinflußt wird, die aber selbst keinen transaktionsrelevanten Zustand besitzen. Der Server ist nicht an der Vollendung einer Transaktion beteiligt, kann aber aufgrund fachlicher Zusammenhänge einen Rollback erzwingen. Der Recoverable Server verwaltet ein oder mehrere Recoverable Objects und ihre Resources. Der Transaction Service selbst besteht vor allem aus den Interfaces Current und Coordinator. Current stellt im wesentlichen das Interface für den Transactional Client zum Transaction Service dar, der Coordinator verwaltet das Zusammenspiel zwischen den Transactional Objects. Abbildung 10: Komponenten des Transaction Service Der Transaction Service unterstützt zwei verteilte Transaktionsmodelle: 1. Flache (Flat) Transaktionen. Das flache Transaktionsmodell ist abgeleitet von den Definitionen des X/Open DTP (Distributed Transaction Processing) Transaktionsmodells. Es besteht aus einer Haupttransaktion, die keine Child-Transaktion haben darf. 2. Geschachtelte (Nested) Transaktionen. Geschachtelte Transaktionen erlauben eine feinere Granularität beim Rollback mit dem Ziel, daß nicht effiziente Teile der Transaktion unberücksichtigt bleiben können. In einer Geschachtelte Transaktionen (Parent) kann die Anwendung eine eingebettete, eigene Transaktion (Child) aufrufen. Mehrere Transaktionen lassen sich somit vertikal und horizontal zusammenfassen. Eine Transaktion kann nur dann commited werden, wenn ihre Child-Transaktionen selbst commited wurden. Eine Vorteil liegt in der Fehlerkorrektur von Parent-Transaktionen im Falle eines Rollbacks einer Child-Transaktion. Ein Two-Phase Commit setzt immer dann sämtliche Veränderungen zurück, wenn eine einzige Ressource einen Fehler dokumentiert bekommen hat. 24 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Beispiel Das folgende Sequenzdiagramm stellt einen transaktionsgesicherten Überweisungsvorgang zwischen Konten von Bank 1 und Bank 2 dar. Transactional Client Resource Resource (recoverable object) (recoverable object) Current Coordinator begin abheben get_control register_resource einzahlen get_control register_resource commit prepare prepare commit commit Revocerable Server Bank 1 Revocerable Server Bank 2 Transaction Service Erläuterungen: Der Client startet die Transaktion durch Aufruf der begin-Methode des Current-Interfaces Durch Aufruf der abheben-Methode des Kontos in Bank 1 wird automatisch die zugeordnete Resource mit register_resource beim Transaction Service (Interface Coordinator) registriert, da das Konto ein recoverable object ist. Durch den Aufruf von get_control erhält ein recoverable object eine Referenz zum zugeordneten Coordinator. Nach Beenden der Transaktion durch Aufruf der commit-Methode des Current-Interfaces durch den Client führt der Transaction Service ein Two-Phase-Commit auf beiden Resourcen durch (Aufruf von prepare und commit für jede registrierte Resource) Abbildung 11: Beispiel CORBA Transaction Service Wertung Der CORBA Transaction Service ist essentiell für die Gestaltung verteilter, objektorientierter Systeme. Allerdings sind die Spezifikationen von OTS für verteilte Objektsysteme mit hohen Transaktionsraten nicht ausreichend. Für große OLTP-Systeme ist nicht nur die Verwaltung der Daten-Resourcen und ihre Transaktionssicherung wichtig, sondern vor allem das Management der Resourcen der beteiligten Anwendungsserver und die Anbindung an traditionelle TP-Monitore wie CICS. Dies geht weit über die in OTS definierten Standards hinaus. In der Literatur hat sich hierfür der Begriff Object © GDV 1999 25 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Transaction Monitor (OTM) eingebürgert. Da bisher keine Spezifikationen der OMG für OTMs vorliegen, wurden von verschiedenen ORB und TP-Monitor-Herstellern CORBA-Erweiterungen in Richtung OTM vorgenommen. Beispiele hierfür sind der Component Broker von IBM oder BEAs Iceberg. Diese Erweiterungen sind allerdings nicht kompatibel. Derzeit sind bei der OMG und wichtigen Herstellern Aktivitäten im Gange, die einen CORBA-OTM auf Basis von EnterpriseJavaBeans spezifizieren sollen. Mit entsprechenden Submissions ist noch im Jahre 1999 zu rechnen. Durch die Unterstützung aller namhafter ORB-Hersteller und deren Zusammengehen mit Herstellern von Transaktionsmonitoren wird OTS und OTM daher die für große Anwendungen notwendige Reife in den nächsten Jahren erreichen. Insgesamt bleibt unter dem Gesichtspunkt einer zeitlich lang andauernden und auch über eine Vielzahl von Clients und Servern verteilten Transaktion die Performance-Frage zu verifizieren. Der eher konservative CORBA-Ansatz kann durch verschiedene Redesigns (in der Versionierung) inzwischen gute Performance-Werte liefern. II.1.3.6. Concurrency Service Definition Der Concurrency Control Service versetzt verschiedene Clients in die Lage eine gemeinsam zu nutzende Resource zu verwalten. Bei im Konfikt stehenden Zugriffen auf eine Resource hat der Service die Aufgabe, die Resource in einem konsistenten Zustand zu belassen. Eine direkt konkurrierende Nutzung wird über Locks geregelt. Dabei steht jeder einzelne Lock in Verbindung mit einem Client und einer Resource. Der Service verfügt über verschiedene Interfaces; der Anwender hat die Wahl zwischen: Transactual Mode: der Transaction Service (s.o.) regelt die Locks gemäß dem Ausgang der Einzeltransaktionen (Commit oder Rollback). Non-Transactual Mode: die Verantwortung liegt nicht im Transaction Service sondern allein im Concurrency Control Service. Der Concurrency Control Service definiert die folgenden Locking Modes: Abbildung 12: Locking Modes des Concurrency Services 26 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Die Tabelle stellt die Kompatibilität zwischen unterschiedlichen Locking Modes dar, wobei ein * einen Konflikt darstellt. Wenn beispielsweise ein Client ein Lock auf eine Ressource absetzen will, die von einem anderen Client im gleichen Mode gehalten wird, so liegt ein Konflikt vor. Der anfordernde Client muß warten, bis der erste Client die Ressource wieder freigibt. Wertung Der Concurrency Service ist im Zusammenhang mit dem Transaction Service unbedingt notwendig. Durch das in CORBA vorgesehene Zusammenspiel zwischen diesen Diensten bleibt die Verwaltung von Zugriffskonflikten transparent für den Client. II.1.3.7. Trader Service Definition Der Trader-Service hat die Aufgabe, Objekte anhand ihrer verfügbaren Dienste und Dienstearten zu finden. Ein Trader ist ein besonderes Objekt, das für andere Objekte „passende“ Dienste bereitstellt bzw. vermittelt. Der Trader Service fungiert dabei als „Vermittler“. Der Trader arbeitet mit zwei Arten von Objekten, den Diensteanbietern bzw. Exporteuren und Dienstenutzern bzw. Importeuren. Dienstanbieter bieten dem Trader ihre Dienste einschließlich deren Beschreibung an. Dienstenutzer erfragen und erhalten gewünschte Dienste durch den Trader. Hauptaufgabe eines Traders ist, Dienstleistungen zu vermitteln, die als Serverobjekte auf einem beliebigen Knoten in einem verteilten Rechnernetz liegen und von Clientobjekten transparent angefordert werden können. Transparent bedeutet, die Clients melden die gewünschten Dienste beim Trader an, alles weitere obliegt dem Trader. Dieser ermittelt den passenden Diensteanbieter bzw. das entsprechende Serverobjekt einschließlich seiner angebotenen Methoden. Diese Zuordnung geschieht dynamisch. Clients können beim Trader auch nach einer bestimmten Art von Dienst fragen, der am besten zum Kontext des angefragten Dienstes und zum Angebot des Providers paßt. Ein Serverobjekt meldet seine Methoden beim Trader an und übergibt ihm die folgenden Informationen: Objektreferenz Name und Art des Dienstes Informationen über Methoden, die der Dienst implementiert einschließlich der Parameter und Ereignistypen. Zusätzlich stehen Informationen über unterschiedliche Eigenschaften im Trading-Kontext zur Verfügung. Eigenschaften des Dienstes Enthält individuelle Werte bezogen auf die Eigenschaften eines offerierten Dienstes, den ein Exporteur (Serverobjekt) bereitstellt. Eigenschaften (properties) können obligatorisch oder optional sein. Der Exporteur muß obligatorische Eigenschaften mit Werten vorbelegen. © GDV 1999 27 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Tabelle 2: Eigenschaften von Diensten beim CORBA-Trader Service 1. 2. Trader 3. 1 Server 2 3 Der Server bietet dem Trader einen Dienst an (Export) Der Client fragt den Trader nach einem geeigneten Dienst (Import) Der Trader vermittelt und der Client bedient sich direkt des ermittelten Dienstes Client Abbildung 13: Kommunikation zwischen Trader, Server und Client im Trader Service Durch die Zuordnung individueller Eigenschaften können unterschiedliche Ausprägungen eines Dienstes formuliert werden, die als Dienstetypen bezeichnet werden. Der Trader verwaltet in einem Verzeichnis, dem Service Type Repository, die verschiedenen Dienstetypen der Dienste. Im Service Type Repository sind jeweils die Schnittstelle des Dienstes sowie eine Anzahl von Eigenschaften, die diesen Dienst beschreiben, enthalten. Es besteht auch die Möglichkeit, einem Dienst weitere Eigenschaften dynamisch zuzuordnen. Dies geschieht zu dessen Laufzeit, wenn der Dienst von einem Client aktiviert wird. Diese Form der dynamischen Zuordnung obliegt dem Evaluator, einer Unterfunktion des Traders. Diensteobjekte, die Instanzen der im Service Type Repository gespeicherten Dienstearten sind, werden vom Trader in einer speziellen Datenbank verwaltet. Die Suche nach einem gewünschten Dienst in einem Trader oder in einem Trader - Verbund, in dem die Dienste gemeinsam in einem Pool koordiniert zur Verfügung gestellt werden, kann recht aufwendig und resourcenintensiv werden. Deshalb bestehen Möglichkeiten, eingeschränktes Suchen mittels Berechtigungen, Restriktionen oder Preferenzen vorzunehmen. Mit Policies kann vorgegeben werden wie die Suche durchzuführen ist sowie die Zahl der zu prüfenden Dienste. Mittels Constraints lassen sich Suchkriterien auf der Basis einer Constraint Language definieren. So kann z.B. SQL als Constraint Language gewählt werden. Preferences legen fest, in welcher Reihenfolge passende Angebote zurückgegeben werden sollen. Policies, Constraints oder Preferences sind Parameter des Suchvorganges, der durch den Aufruf der Lookup-Schnittstelle angestoßen wird. Der Trader Service ist durch zwei Gruppen von Interfaces beschrieben: Functional Interfaces Administration Interfaces 28 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Functional Interfaces sind: Lookup-Interface Die Lookup-Schnittstelle verfügt nur über die Methode QUERY, mit der Clients Dienste anfordern und importieren können. Die Suche kann durch Vorgabe von Restriktions-Parametern eingeschränkt werden. OfferIterator-Interface Über die Lookup-Schnittstelle wird eine Menge von gewünschten Diensten geliefert. Mit den Methoden max_left, next_n oder destroy kann in der gelieferten Menge navigiert werden bzw. diese gelöscht werden. Register-Interface Mit der Methode export offeriert ein Exporteur seine Dienste dem Trader, der vergibt dann eine eindeutige Referenz (OfferId). Mit withdraw kann ein bereits angebotener Dienst zurückgenommen werden. Mit der Methode modify kann ein angebotener Dienst geändert werden und mit describe wird eine Beschreibung eines offerierten Dienstes vom Trader geliefert. Link-Interface Diese Schnittstelle ermöglicht einem Trader, die Dienste eines anderen Traders zu verwenden (Trader-Pool). In diesem Pool kann dann mit der Methode query nach gewünschten Diensten nachgefragt werden, um diese zu importieren. Proxy-Interface Mit diesen speziellen Methoden wird einem Trader ermöglicht, Objektreferenzen zur Angebotszeit zu ermitteln, die einen Dienst bereitstellen können, aber es de facto noch nicht getan haben. Aus diesem Grunde kann der Trader auch noch nicht über die Objektreferenz des Dienstes verfügen, sondern erhält diese über ein Proxy-Objekt, welches intern mittels query-Methode auf ein LookupObjekt die Offer-Id ermittelt. Proxies sind nützlich, um angebotene Dienste z.B. unter Berücksichtigung einer performanten Verteilung dynamisch berücksichtigen zu können. DynamicPropEval Dynamische Eigenschaften ermöglichen frühzeitige Informationen über potentielle Dienste, gehen aber dafür eindeutig zu Lasten der Performance. Der Trader verwendet die Methode evalDP, um den Wert einer dynam. Eigenschaft eines Dienstes zur Angebotszeit aufzulösen, ehe dieser importiert wird. Tabelle 3: Functional Interfaces des CORBA Trader Service Die Administrations-Schnittstelle des Traders und die dort definierten Methoden dienen der Verwaltung des Service Type Repository, in welchem die inviduellen Ausprägungen der angebotenen Dienste, die Dienstetypen, enthalten sind. © GDV 1999 29 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Administration Interfaces sind: ServiceTypeRepository-Interface Die Methoden für das Dienstearten-Verzeichnis (ServiceTypeRepository) können dessen Inhalt manipulieren. Es können Dienstearten hinzugefügt, entfernt oder aufgelistet werden, mit oder ohne Beschreibung. Ebenso können vorhandene Dienstetypen durch Maskieren nicht mehr zur Verfügung stehen. Maskierte Services können wieder aktiv gesetzt werden. Die zahlreichen Aufrufe (Methoden) an die Administrations-Schnittstelle Admin erlauben es dem Administrator, das System zu konfigurieren und verschiedene Parameter zu setzen, um z.B. die Suche nach gewünschten Diensten einzuschränken bzw. ressourcen-intensives Recherchieren zu begrenzen. Admin-Interface Tabelle 4: Administration Interfaces des CORBA Trader Service Beispiel 1. Der Besitzer eines italienischen Restaurants wendet sich an den Verlag der Gelben Seiten, um sich mit seinem Restaurant (Service Type) aufnehmen zu lassen. 2. Die individuellen Besonderheiten seines Restaurants übermittelt er an den Verlag. 3. Ein Interessent durchsucht die Gelben Seiten, um in einem Restaurant mit italienischen Spezialitäten essen zu gehen. 4. Der Interessent findet die Rubrik „italienische Restaurants“ . 5. Er wählt ein Restaurant in seiner Nähe, das auch in der Mittagszeit geöffnet hat.Er greift zum Telefon und bestellt einen Tisch. Client - Objekt Lookup Register ServiceTypeRepository Server - Objekt Kunde Auswahl Verlag Gelbe Seiten Restaurant 1. add_type 2. export 3. list_types 4. describe_type 5. query 6. Aufruf der Methoden Abbildung 14: Beispiel Trader Service 30 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Wertung Insbesondere für konfigurierbare, komponentenorientierte Anwendungssysteme ist der Trader-Service ein geeignetes Werkzeug für die dynamische Koppelung von Diensten und Komponenten. Allerdings wird seine zukünftige Relevanz durch die Entwicklungen der Java-Komponentenmodelle und deren Konvergenz mit CORBA in Frage gestellt. II.1.3.8. Collection Service Definition Objekte können aufgrund bestimmter Gruppen-Charakteristiken zu Objektgruppen, den Collections, zusammengefaßt werden. Beispiele für Collections sind Warteschlangen, Stapel, Listen, Felder, Bäume und Mengen. Methoden des Collection Services beziehen sich auf eine Gruppe, nicht auf den Inhalt einzelner Objekte innerhalb der Gruppe. Aufrufe des Collection Services erlauben nur, Collections zu erzeugen bzw. Elemente zu einer existierenden Collection hinzuzufügen oder daraus zu löschen. Das Manipulieren einzelner Elemente in der Gruppe ist nicht möglich, weil der Collection Service keine Interfaces, um auf einzelnen Objekten innerhalb der Collection operieren zu können. Eine Untermenge des Collection Service wird vom Query-Service verwendet, der als Ergebnis einer Abfrage eine Collection von Objekten zurückgibt, die den in der Abfrage definierten Suchkriterien entsprechen. Als Collectiontyp wird eine Objektgruppe definiert, die ein typisches Gruppenmerkmal besitzt, welches sein Verhalten prägt. Dieses Merkmal ist nicht vom Datentyp der Elemente in der Collection abhängig. Ein typisches Gruppierungsmerkmal ist z.B., daß auf die Elemente eines bestimmten Collectiontyps nur mittels Schlüssel zugegriffen werden kann und nicht direkt über die Position in der Collection. In CORBA können Collections mit folgenden Basis-Gruppenmerkmalen definiert werden: Reihenfolge der Elemente Die Reihenfolge der Elemente innerhalb einer Collection kann geordnet oder ungeordnet sein. Ist die Reihenfolge der Elemente geordnet, so können diese in sequentieller oder sortierter Reihenfolge vorliegen. Zugriff über Schlüssel Der Zugriff auf die Elemente einer Collection kann wahlweise mit Schlüssel oder ohne Schlüssel erfolgen. Eine Collection, die über einen Schlüssel definiert wird, ermöglicht einen direkten Zugriff auf ihre Elemente. Elementgleichheit Ermöglicht es, die Elemente einer Collection auf ihre Gleichheit zu testen Eindeutigkeit der Einträge Bestimmt, ob ein beliebiges Element innerhalb © GDV 1999 31 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell einer Collection nur genau einmal (unique) oder auch mehrfach (multiple) vorkommen darf. Tabelle 5: Merkmale von CORBA Collections Diese Eigenschaften bzw. Basis-Gruppenmerkmale können kombiniert werden, um eine ganze Reihe von unterschiedlichen Collection-Typen zu definieren. Für jeden Collection-Typ existiert ein entsprechendes Interface.. Die folgende Matrix zeigt die Kombinationsmöglichkeiten die sich für Typen von Collections ergeben: Ordered Sorted Sequential Multiple Unique Multiple Multiple Unordered Unique Element Map Relation Sorted Map Sorted Relation Key No Element KeysSet KeyBag KeysSet KeyBag Quality No Key Element Quality No Element Quality Set Bag Set Bag Heap Equality Sequence Sequence Abbildung 15: Typen von Collections im Collection Service Da Collections Basisklassen für einen breiten Bereich von Applikationen sind, müssen sie Elemente beinhalten können, die durchaus unterschiedlichen Datentyps sind. Das ist deshalb möglich, weil Operationen des Collection Services nicht auf den Inhalt der Objekte zugreifen, d.h. die Daten bleiben verborgen. Collections verfügen über eine einheitliche Schnittstelle, deren Operationen add, replace, retrieve, remove und insert sich auf Elemente der Collection beziehen, aber nicht den Inhalt (Daten, etc.) eines einzelnen Objektes manipulieren können. Collections verfügen über Zähler, die sogenannten Iteratoren, die es ermöglichen, durch die Collection zu navigieren und auf Elemente darin zuzugreifen. Zusätzlich können Zähler dazu benutzt werden, gezielt Elemente zu lesen, zu ersetzen, zu löschen oder hinzuzufügen. Der Collection Service hat zusätzlich eine CollectionFactory, die die Instanziierung von Collection ermöglicht. Wertung Im allgemeinen stehen in jeder objektorientierten Programmiersprache Bibliotheken mit den oben aufgeführten Collection-Typen zur Verfügung (zum Beispiel die Standard Template Library oder die Microsoft Foundation Classes für C++ und teilweise auch in JDK). Der Collection Service von CORBA ist ein Versuch, die Vielzahl teilweise unterschiedlicher Typen von Collections zu vereinheitlichen und die Verwendung von sprach- und systemunabhängigen, verteilbaren Collections zu ermöglichen. 32 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Sinnvoll sind sprach- und systemunabhängige Collections in Zusammenhang mit dem Query Service (s.u.) und in komponentenorientierten Anwendungssystemen, in denen strukturierte Mengen zwischen unabhängig implementierten Komponenten ausgetauscht werden müssen. Dennoch ist der Collection Service für die Gestaltung verteilter Anwendungssysteme nicht unbedingt notwendig, wenn nicht gleichzeitig der Query Service eingesetzt wird. In den meisten Fällen genügt für den Austausch von Daten der in CORBA definierte Datentyp Sequence. II.1.3.9. Property Service Definition Einem CORBA-Objekt können Eigenschaften in Form von Attributen zugeordnet werden. Ein Attribut im CORBA-Sinn ist eine Variable, die normalerweise im Interface eines CORBA-Objekts definiert ist und anschließend kompiliert wird. Die Variable besteht aus dem Namen (Typ string), einem Wert (Typ any) und wahlweise einem Modus. Sie ist mit einem Objekt assoziiert. Die Zuordnung von Eigenschaften zu einem Objekt zur Compilierungszeit wird als statische Zuweisung bezeichnet. Zum Zeitpunkt der Compilierung werden die Werte zugeordneter Properties einer Typprüfung unterzogen, um Unstimmigkeiten rechtzeitig erkennen zu können. Manchmal ist es aber notwendig, eine Eigenschaft einem Objekt zuzuordnen, dessen IDL-Definitionen bereits compiliert vorliegen. Genau hier greift der Property Service. Er macht es möglich, dynamisch Attribute zur Laufzeit, ohne Hilfe von IDL zu definieren um sie dann bestehenden Objekten zuzuordnen. Diese Zuordnung wird als dynamische Zuweisung von Eigenschaften bezeichnet. Sobald diese Eigenschaften definiert sind, können sie instanziiert, manipuliert und gelöscht werden, was bei statischer Zuordnung nicht möglich ist. Dynamische Zuweisung von Eigenschaften zu Objekten bedeutet aber auch, daß die Eigenschaftswerte keiner Typenprüfung durch den IDL-Precomiler unterzogen werden. Die Zuordnung außerhalb des IDL-Typensystems ist möglich, weil Eigenschaften unabhängig von Objekten verwaltet werden können. Die zwei Hauptschnittstellen des Property Services sind das PropertySet-Interface und das PropertySetDef-Interface. PropertySet-Interface stellt Methoden bereit, mit denen Eigenschaften definiert, gelöscht, gezählt und auf Existenz geprüft werden können. PropertySetDef-Interface stellt Methoden bereit, mit denen Eigenschaftsmodi kontrolliert bzw. verändert werden können. Es bestehen fünf sich gegenseitig ausschließende Property-Modi: Normal: es bestehen keine Manipulations-Einschränkungen. Neue Werte zu bestehenden Eigenschaften können definiert oder Eigenschaft löschen werden. Readonly: Property-Informationen können nur gelesen oder gelöscht werden. © GDV 1999 33 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Fixed_Normal: Eigenschaften können nicht gelöscht werden, aber neue Werte zu bestehenden Eigenschaften dürfen definiert werden. Fixed_Readonly: Eigenschaften können nicht gelöscht werden, lesender Zugriff erlaubt. Undefined: gilt nicht für eine einzelne Eigenschaft, nur für Gruppen erlaubt. Tabelle 6: Interfaces des CORBA Property Service Beispiel In den OMG-Unterlagen wird anhand eines Objektes mit dem Namen „Dokument“ die Bedeutung von attributähnlichen Eigenschaften demonstriert: Ein Dokument kann z.B. wichtig oder unwichtig sein. Über den Property-Service ist es möglich, diese Eigenschaft wichtig oder unwichtig einem existierenden Objekt namens „Dokument“ zur Laufzeit für Archivierungszwecke zuzuordnen, um das Objekt, falls es den Wert wichtig beinhaltet, zu archivieren. Die Archivinformation wird dem Objekt nur assoziiert, wird also nicht Bestandteil der Typen des Objekts selbst. Abbildung 16: Beispiel für den Property Service Wertung Der CORBA Property Service bietet ein Grundgerüst für die Verwaltung von Eigenschaften beliebiger, verteilter Objekte. Besonders die Möglichkeit, Eigenschaften zu bestehenden Objekten zuzuordnen, ohne deren Implementierung zu ändern, macht den Einsatz dieses Services für komponentenorientierte Systeme interessant. Dem CORBA Property Service fehlen allerdings die in JavaBeans enthaltenen Möglichkeiten, Properties direkt mit Ereignissen (Events) zu verbinden, die bei einer Wertänderung ausgelöst werden. Außerdem fehlen Spezifikationen, um Properties über Eigenschafts-Editoren zur Konfigurationszeit anzupassen. In der kommenden CORBA Beans Spezifikation sollen allerdings CORBA-Beans als direkt als JavaBeans einsetzbar sein, so daß deren Möglichkeiten auch für CORBA-Objekte zur Verfügung stehen. Generell erscheint das Property-Modell von JavaBeans vor allem unter dem Gesichtspunkt der Komponentenorientierung heute ausgereifter und vollständiger als die CORBA-Spezifikation. II.1.3.10. Query Service Definition Der Query Service hat die Aufgabe, die Objekte zu finden, deren Attribute den vorgegebenen Suchbedingungen genügen. Dabei ist es für den Nutzer des Services transparent, ob die Objekte in einer OODB, einer RDB, einem File oder in einer anwendungsinternen Collection gespeichert sind. Neben dem rein lesenden Zugriff auf die Objekte stellt der Service Operationen bereit, die Objekte aus der Collection zu entfernen, Objekte in der Collection ändern etc. Zur Formulierung der Queries können folgende Sprachen genutzt werden: 34 OQL – ODMG-93 Objekt Query Language © GDV 1999 Das objektorientierte technische Referenzmodell SQL mit objektorientierten Erweiterungen Eine Mischung aus den SQL und OQL Die technische Architektur der VAA Schematische Darstellung des Ablaufes: Client Query Evaluator Query Evaluator Query Evaluator Native Query System Objekt Abbildung 17: Der CORBA Query Service Das Ergebnis einer Query ist eine Collection, die auch Basis für weitere Suchoperationen sein kann. Mit Hilfe von Iteratoren können die Collections durchlaufen werden. Sollen diese Collections wiederum die Basis für neue Queries auf der zugehörigen Objektmenge sein, müssen diese Collections die Eigenschaft besitzen, QueryEvaluator zu sein. Man spricht dann von einer QueryableCollection. Das QueryableCollection-Interface verfügt über eine evaluate-Methode, mit deren Hilfe Queries (übergeben in Form eines SQL- oder OQL-Statements) direkt ausgeführt werden können. Wie jede Collection stellt auch QueryableCollection einen Iterator zur Verfügung, mit dem über die Ergebnismenge navigiert werden kann. Da die Bearbeitung einer Abfrage u.U. sehr zeit- und ressourcenintensiv ist, bietet der Query Service einen Mechanismus in Form des Query - Interfaces an. Ein Query-Object, das von einem QueryManager, einer mächtigeren Form des QueryEvaluators, erzeugt wird, vermag eine übergebene Query (in Form eines SQL- oder OQL-Statements) zunächst zu kompilieren und sie nach Bedarf beliebig oft ausführen. Um den unterschiedlichen Konstruktionen Rechnung zu tragen, wird in CORBA zwischen dem Service vom Typ Collections und dem Service vom Typ Query Framework unterschieden. Der Typ Collection wird in dem Module CosQueryCollection spezifiziert und enthält die Interfaces CollectionFactory; zum Erzeugen einer Collection Collection; repräsentiert die Collection Iterator; ermöglicht das navigieren in der Collection Der Typ Query Framework wird in dem Modul CosQuery spezifiziert und enthält folgende Interfaces QueryLanguageType; definiert die Query Language QueryEvaluator; repräsentiert den Query Auswerter © GDV 1999 35 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell QueryableCollection; Ergebnis-Collection und Basis neuer Queries QueryManager; erzeugt ein Query Object Query; repräsentiert ein Query Object Beispiel Das folgende Sequenzdiagramm stellt den Ablauf einer Query mit Hilfe eines Query-Objects dar: Client QueryManager Query create QueryableCollection create create prepare execute Iterator get_result create create_iterator next usw... 1. Der Client ruft die Methode create des Query Managers auf, der seinerseits das QueryObject erzeugt und die Referenz auf das Objekt zurückgibt. 2. Die Query wird mittels prepare compiliert (aber noch nicht ausgeführt), wobei als Parameter ein Statement in SQL- oder OQL-Syntax mitgegeben wird. 3. Die Query wird mittels execute ausgeführt und dabei die Ergebnismenge in der Queryable Collection hinterlegt. 4. Mittels get_result kann der Client erfahren, ob seine Query erfolgreich ausgeführt wurde. 5. Um über die Ergebnismenge zu navigieren wird durch die Methode create_iterator ein Iterator erzeugt. 6. Durch die next-Methode des Iterators kann von einem Ergebnis zum anderen gesprungen werden. Abbildung 18: Beispiel für eine Query mit dem QueryManager Wertung 36 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Bei einer Datenbankabfrage (Query) ist der Object Query Service abhängig vom Datenschema und dem zugrunde liegenden Datenmodell. Damit wird die Flexibilität und die Performance des Services stark eingeschränkt. Damit bietet der Query Service wenig Vorteile. Dies ist sicherlich auch ein Grund, warum die meisten CORBA ORB Hersteller diesen Service noch nicht implementiert haben. II.1.3.11. Security Service Definition Der Security Service von CORBA definiert Schnittstellen mit denen Sicherheitsmechanismen bzw. – technologien in einem Object Request Broker integriert werden können. Dieser Dienst ist - analog zum Transaktionsdienst - für die Client- und die Serverobjekte transparent, d.h. der Dienst muß nicht explizit aufgerufen werden, sondern führt seine Aufgaben im „Hintergrund“ durch. Nur für spezielle Absicherungen von Programmteilen kann der Sicherheitsdienst explizit aufgerufen werden. Folgende Aufgabenstellungen werden vom Security Service unterstützt, um eine sichere Kommunikation in einer verteilten Umgebungen zu ermöglichen: Die Überprüfung der Identität des Clients bzw. des Benutzers einer Client-Anwendung (Authentication) Die Absicherung der Nachrichtenübermittlung gegen Abhören und Manipulation. (Security of Communication) Die Überprüfung, ob ein Client berechtigt ist, die aufgerufene Operation des betreffenden Objekts zu benutzen. (Authorization) Aufzeichnung von sicherheitsrelevanten Aktionen, für die der Benutzer später verantwortlich gemacht werden kann. (Auditing) Nachweis, daß eine Kommunikation zwischen Client und Server unwiderlegbar stattgefunden hat. (Non-Repudiation) Zusammenarbeit mit anderen Systemen, die keine bzw. andere Sicherheitsverfahren besitzen. (Interoperability) Der CORBA Security Service wurde so konzipiert, daß er nicht an spezielle Verfahren und Technologien gebunden ist, sondern für die Einbindung von allen Arten von Sicherungssystemen offen ist. Beispiel Anhand einer schematischen Darstellung des Ablaufes einer Berechtigungsprüfung wird hier gezeigt, wie die Sicherheitsmechanismen in CORBA integriert sind: 1. Der Client muß gegenüber einem Beglaubigungssystem (PrincipalAuthenticator) seine Identität nachweisen. Als Bestätigung seiner Identität erhält der Client ein Dokument, das seine Identität und seine Rechte (evtl. zeitlich befristet) nachweist (Credential). Die Erstellung der Credentials kann das Sicherheitssystem auch ohne explizite Aufforderung vom Betriebssystem ermitteln. 2. Diese Credentials werden - für den Client transparent - über den COBRBA::CURRENT Kontext zusammen mit der eigentlichen Nachricht zum Server übermittelt. Verschlüsselung und Quersummenbildungen (ParityCheck) sorgen dabei für eine sichere Kommunikation zwischen Client und Server. 3. Das Server-Objekt hat die Aufgabe zu überprüfen, ob die angeforderte Operation vom Aufrufer (Client) © GDV 1999 37 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell überhaupt verwendet werden darf. Dazu reicht der ORB das mitgelieferte Zugriffsentscheidung des Sicherheitsdienstes (AccessDecision) weiter. Hinter Schnittstellen verbirgt sich das eigentliche Autorisierungsverfahren, das ermittelt ob seine Identität und Rollen für die betreffenden Ressource (Server-Objekt) berechtigt Operation auszuführen. Credential an die dieser abstrakten der Aufrufer durch ist, die gewünschte 4. Zusätzlich erfragt der ORB beim Sicherheitsdienst, ob das gerade eingetretene Ereignis sicherheitsrelevant war (AuditDecision) und daher vom ORB im Protokollkanal (AuditChannel) abgelegt werden muß. 5. Je nachdem, ob die gewünschte Operation abgelehnt oder ausgeführt wurde, wird an den Client eine Sicherheitsausnahme (Security-Exception) oder das Ergebnis der Operation zurückgegeben. Tritt ein Objekt in einer Aufrufkette als Client und als Server auf, so kann im Sicherheitsdienst festgelegt werden, ob nur die Credentials des Aufrufers, nur die Credentials des Aufgerufenen oder eine Zusammenfassung aus beiden an den nächsten Server weitergeleitet werden. Zur Kooperation mit anderen ORBS und anderen Sicherheitssystemen werden alle Informationen des Sicherheitskontextes in das IIOP-Protokoll eingebettet. Weitere Details können der Security Service Spezifikation (Kapitel 15 der CORBAServices) entnommen werden. Abbildung 19: Prinzipieller Ablauf einer Berechtigungsprüfung in CORBA Wertung Sicherheit ist eine der essentiellen Anforderungen an verteilte Systeme, insbesondere wenn ihre Kommunikation z.T. in öffentlichen Netzen stattfindet (Internet). Zur Einbindung der verschieden Sicherheitssystems RACF, Windows NT und UNIX bietet der CORBA Sicherheitsdienst sicherlich flexiblere Möglichkeiten als das Sicherheitsmodell vom DCOM. Dennoch ist man bei der Bereitstellung eines solchen Service auf die Verfügbarkeit von Produkten angewiesen, da der Aufwand einer eigenen Implementierung des Sicherheitsdienstes im Rahmen der VAA viel zu hoch wäre. II.1.3.12. Externalization Service Definition Der Externalization Service beschreibt die erforderlichen Interfaces, Protokolle und Vereinbarungen zur Auslagerung (externalize) und Wiedereinlagerung (internalize) von Objekten. Aus Portabilitätsgründen nutzen alle CORBA - konformen Implementierungen dieses Services ein standardisiertes Datenformat, daß als Teil dieses Dienstes definiert ist. In diesem Rahmen können viele verschiedene Datenformate und Speichermedien unterstützt werden. Der Externalization Service ist funktional eine Untermenge des Persistence Service, da er ebenfalls den Zustand eines Objektes dauerhaft speichert, Änderungen des Zustands jedoch nicht automatisch berücksichtigt. Um ein Objekt auszulagern, wird der Zustand des Objektes in Form eines Datenstromes („Streams“) aufgezeichnet. Dieser Datenstrom kann je nach Anwendung im Speicher gehalten, auf einen externen Datenträger geschrieben oder über ein Netzwerk versandt werden. Der so entstandene Datenstrom kann in Form eines neuen Objektes in denselben oder einen anderen Prozeß wiedereingelagert werden. Der Externalization Service benutzt den Relationship Service um Gruppen von in Beziehung zueinander stehenden Objekten innerhalb des gleichen Streams auszulagern und Interfaces des LifeCycle Services um aus einem Stream Objekte zu erzeugen. Der Kern des Service manifestiert sich in dem sogenannten Stream Objekt. 38 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Im Rahmen des Externalization Service sind die folgenden drei Sichten und Verantwortlichkeiten mit jeweils eigenen, standardisierten Interfaces definiert. 1. Die Sicht des Benutzers des Services, die sich aus den Interfaces zusammensetzt, die benutzt werden, um Objekte auszulagern und wiedereinzulagern. Diese Sicht ist durch das Stream Interface definiert. 2. Die Sicht des auszulagernden Objektes, die sich aus den Interfaces zusammensetzt, die von auslagerbaren Objekten benutzt werden, um ihren Zustand in einem oder aus einem externen Datenstrom aufzuzeichnen oder wiederherzustellen. Diese Sicht ist im StreamIO Interface definiert. 3. Die Sicht des Stream Objektes, die sich aus den Interfaces zusammensetzt, die von ihm benutzt werden, um den Zustand auslagerbarer Objekte oder auslagerbarer Objektgruppen aus untereinander abhängigen Objekten in einem oder aus einem externen Datenstrom aufzuzeichnen oder wiederherzustellen. Diese Sicht ist durch die Interfaces Streamable, Node, Role und Relationship definiert. Darüber hinaus sind einige Factory-Objekte mit create - Schnittstellen im Konzept vorgesehen. Die Benutzersicht der Auslagerung von Objekt Zuständen ist sehr simpel. Ein Benutzer erzeugt ein Stream-Objekt und übergibt ihm ein oder mehrere Objekte zur Auslagerung. Ein Stream Objekt wird erzeugt durch den Aufruf einer StreamFactory. Man kann ebenso einen Datenstrom für die Auslagerung in eine Datei erzeugen. Dazu wird eine FileStreamFactory aufgerufen. Durch den Aufruf der Methode externalize mit der Objektreferenz des auszulagernden Objektes wird das Stream Objekt aufgefordert, den Zustand des Objektes in einem Datenstrom („Stream“) auszulagern. Ebenso kann der Zustand mehrerer Objekte gemeinsam in einem Datenstrom ausgelagert werden. Dazu wird zu Beginn die Methode begin_context, nachfolgend für jedes auszulagernde Objekt die Methode externalize und zum Abschluß die Methode end_context des Stream-Objektes aufgerufen. Es wird dasselbe Interface zur Auslagerung eines einzelnen Objektes oder einer Gruppe von abhängigen Objekten benutzt. Wenn das Stream-Objekt den Aufruf von externalize registriert, veranlaßt es seinerseits den Aufruf der Methode externalize_to_stream des Streamable Interface des Zielobjektes. Alle auslagerbaren Objekte müssen dieses Interface implementieren. Das auzulagernde Objekt ruft seinerseits die Methoden des StreamIO - Interface auf, um seinen Zustand in einen Datenstrom zu schreiben oder von ihm zu lesen. Dieses Interface wird durch den Stream Service implementiert; er stellt Operationen zum Lesen und Schreiben aller IDL-Datentypen zur Verfügung. Das Stream Objekt implementiert dieses Interface entweder selbst, oder übergibt eine Objektreferenz darauf, wenn es das auszulagernde Objekt aufruft. Um ein Objekt aus einem Datenstrom wiedereinzulagern, ruft der Benutzer die internalize -Methode des Stream-Objektes auf. Das Stream-Objekt muß ein Streamable-Objekt identifizieren, daß seinen Zustand aus einem Datenstrom wiedereinlagern kann; es benutzt das StreamableFactory Interface um das Objekt zu erzeugen. Das Stream-Objekt ruft dann die internalize_from_stream - Methode des Streamable-Objektes auf. Selbstverständlich benutzt das Streamable-Objekt das StreamIO Interface um den Datenstrom zu lesen. Beispiel Das folgende Sequenzdiagramm stellt den prinzipiellen Ablauf der Externalization und Internalization über einen Stream dar: © GDV 1999 39 Die technische Architektur der VAA Client Das objektorientierte technische Referenzmodell StreamFactory 1 create Streamable StreamIO Stream 2 externalize 3 externalize_to_stream 4 write_<type> 4 write_object 4 write_graph 5 internalize Streamable 6 internalize_from_stream 7 read_<type> 7 read_object 7 read_graph Abbildung 20: Lesen und Schreiben von Objekten im Externalization Service Wertung Der Stream-Mechanismus des Externalization Services ist aufgrund seiner Einfachheit sehr robust und universell einsetzbar und hat sich aus diesem Grund in der Objektwelt generell eingesetzt, um Objekte in sequentiellen Dateien zu speichern oder von einer Anwendung zur anderen - auch über ein Netzwerk - zu transportieren. Streams werden außer in CORBA auch in Java und in Microsofts COMArchitektur zur Übertragung oder Speicherung von Objekten genutzt, die verwendeten Formate sind allerdings unterschiedlich. Zur einfachen Speicherung von Daten ist der CORBA Externalization Service insbesondere in heterogenen Systemumgebungen gut geeignet, in reinen Java- oder COM-Umgebungen empfiehlt sich der Einsatz der jeweiligen Technologie, da diese besser durch Frameworks unterstützt werden. Für die Übertragung von Objekten als Parameter in Methodenaufrufen ist der Externalization Service zwar ebenfalls geeignet, wird aber in CORBA 3.0 durch die einfacher zu handhabende „Pass-By-Value“ Option obsolet. 40 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA II.1.3.13. Event Service Definition Der Event Service bietet die Basis, auf der Dienste wie die asynchrone Verarbeitung von Ereignissen, Notification usw. beschrieben werden können. Der CORBA Event Service erfüllt dabei die folgenden Anforderungen: Die Schnittstellen des Event Service sind so flexibel gehalten, daß Event Services mit verschiedenen qualitativen Merkmalen mit diesen Schnittstellen implementiert werden können. Der Event Service enthält keine spezielle, fachliche Logik um seine Flexibilität in verschiedenen Einsatzfeldern nicht zu beeinträchtigen Sowohl Push- als auch Pull-Event-Verarbeitung werden unterstützt, d.h. entweder wird der Empfänger eines Events durch den Service informiert, oder der Client besorgt sich seine Informationen selbst vom Event Service. Das Objekt das einen Event auslöst (Supplier) braucht die Identität des Empfängers (Consumer) nicht zu kennen und umgekehrt braucht der Empfänger die Identität des Senders nicht zu kennen. Der Event Service bedient sich bei der Erledigung seiner Aufgaben eines Event Channels, durch den die Entkoppelung zwischen Consumer und Supplier erreicht wird. Jedem Consumer steht ein sogenanntes Supplier-Proxy zur Verfügung, das als Platzhalter für den Supplier des Events fungiert. Analog steht dem Supplier ein Consumer-Proxy zur Verfügung, das die Übermittlung des Events initiiert. Die Consumer-Supplier Interfaces sind symmetrisch. Der Event Service ist skalierbar und als verteilter Service realisiert, d.h. es gibt keine zentrale Stelle an der Event Channels verwaltet werden. Event Channels lassen sich zu einer Kette verbinden, d.h. Event Channel Server können durch die Verbindung von unabhängig implementierten Event Channels miteinander kommunizieren. Events sind in der einfachen Form des Event Services nicht typisiert, d.h. die Interpretation und Festlegung von Typ und Inhalt eines Events obliegt der jeweiligen Anwendung. Der Event Service unterstützt allerdings auch typisierte Events in Form von Subtypen des einfachen Event-Interfaces. In CORBA werden zwei Module definiert, die die Schnittstellen des Event Service beschreiben Das CosEventChannelAdmin - Modul Enthält Interfaces zum Aufbau eines Event Channels und zur Ermittlung eines bestehenden Event Channels Das CosEventComm - Modul Enthält Interfaces zum Austausch von Events über einen bestehenden Event Channel Beispiel Zur Illustration folgt ein Sequenzdiagramm, das den Aufbau eines Event Channels für ein Push-Event und die entsprechende Nutzung durch einen Client beschreibt. © GDV 1999 41 Die technische Architektur der VAA Consumer Das objektorientierte technische Referenzmodell EventChannnel Supplier for_suppliers SupplierAdmin Obtain_push_consumer ProxyPushConsumer for_consumers ConsumerAdmin Connect_push_supplier Obtain_push_supplier ProxyPushSupplierr Connect_push_consumer push 1. Ein Supplier fordert mit for_suppliers ein SupplierAdmin-Objekt an, mit dessen Hilfe der Event Channel aufgebaut wird 2. mit obtain_push_consumer erhält der Supplier ein Proxy-Objekt als Platzhalter für Consumer 3. Mit connect_push_supplier registriert sich der Supplier beim Event Channel 4. Analog verbindet sich ein Consumer mit einem Event Channel (der über seinen Namen mit Hilfe des Naming Service gefunden werden kann) durch Aufruf von for_consumers, obtain_push_supplier und connect_push_consumer 5. Sobald der Supplier ein Event auslöst durch Aufruf der push-Methode des ProyPushConsumer, wird dies über den Event Channel zu den ProyPushSupplier-Objekten weitergereicht, die ihrerseits das angebundene Consumer-Objekt informieren. Abbildung 21: Beispiel für den Event-Service Wertung Der Event Service von CORBA stellt grundlegende Funktionalität eines objektorientierten Messaging Systems zur Verfügung. Es fehlen allerdings in CORBA 2.0 weitere wichtige Eigenschaften wir die sichere Übertragung von Messages, die Priorisierung und die Filterung von Messages. Entsprechende Standardisierungen sind allerdings im Gange (siehe Kapitel II.1.4). Ebenfalls wünschenswert ist die Verbindung von Messages mit Properties, wie dies in JavaBeans realisiert ist und die Definition von generellen Event-Typen. Durch das angestrebte Zusammenwachsen von JavaBeans und CORBA sollen diese Mängel behoben werden. Umgekehrt werden dadurch JavaBeans-Events plattformunabhängig und können auch über ein Netzwerk übertragen werden. 42 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Vor allem bei Anwendungen, in denen eine große Zahl unterschiedlicher Systeme sporadisch über Zustandsänderungen benachrichtigt werden müssen, bietet sich die Verwendung des CORBA EventService an. Er ermöglicht eine lose Koppelung völlig unterschiedlicher Systeme. In Zusammenhang mit Beans bietet er darüber hinaus in Zukunft einfache, werkzeugunterstütze Verbindungsmöglichkeiten für Komponenten unterschiedlicher Hersteller. II.1.4. CORBA 3.0 und Java Übersicht Die in den vorangegangenen Abschnitten beschriebenen CORBA-Dienste und ORB-Funktionen beschränken sich auf die zur Zeit verfügbaren Spezifikationen CORBA 2.x. Die OMG kündigte für das erste Halbjahr 1999 die endgültige Version von CORBA 3.0 an. Im Fokus von CORBA 3.0 stehen insbesondere Spezifikationen bezüglich CORBA-Komponenten und verteilten Internet-Anwendungen: Das CORBA Component Model definiert ein Framework für die Realisierung und Konfiguration von Business Komponenten und ist sehr stark an die JavaBeans - Spezifikationen angelehnt. Durch CORBA Messaging (MOM) ist auch die asychrone, zeitverzögerte Kommunikation zwischen verteilten Objekten möglich. MOM bietet damit vergleichbare Dienste an wie IBM´s Messaging and Queueing. CORBA 3.0 unterstützt den Transfer von Objekten als Parameter von Methodenaufrufen durch die Object-by-Value - Spezifikationen. Neben dem Transfer des Objektzustandes (d.h. der Objektdaten) ist auch ein Protokoll für den Austausch des zum Objekt gehörenden Programmcodes definiert. Java-to-IDL - Mapping bildet das gebräuchliche und einfach zu verwendende RMI-Protokoll auf CORBA-IDL ab. Dadurch entfällt das explizite Erstellen der Interface-Beschreibungen. Die IDLDefinition eines Java-Objektes wird aus der Objektdefinition generiert. Durch die Verbindung von RMI mit CORBA können Java-Anwendungen über RMI nicht nur mit Java-Objekten kommunizieren, sondern es stehen ihnen alle Sprachplattformen zur Verfügung, für die ein CORBA-Language-Mapping existiert. Die Spezifikation eines Portable Object Adapters (POA) erlaubt den Einsatz von Komponenten auf unterschiedlichen ORB-Plattformen ohne Neugenerierung der Stubs und Skeletons. Bisher mußten Server-Komponenten für die ORBs unterschiedlicher Hersteller jeweils kompiliert und gebunden werden. POA legt in diesem Zusammenhang die Schnittstelle zwischen ORB, Adapter und den implementierten Objekten eindeutiger fest als dies in CORBA 2.0 der Fall war. Unter POA bleibt eine CORBA-Object Reference unabhängig davon gültig, ob das Server-Objekt aktiv ist oder nicht. Die Spezifikation von Schnittstellen für Internet-Firewalls ermöglicht die Überwachung und gegebenenfalls die Filterung der IIOP-Kommunikation in Netzwerken mit Zugang zum Internet. Das CORBA Component Modell und JavaBeans Die oben aufgeführten Erweiterungen des CORBA-Standadards (vgl. hierzu auch [xi]) führen CORBA sehr nahe an JavaBeans beziehungsweise EnterpriseJavaBeans heran. Insbesondere die Spezifikationen zu Java-to-IDL - Mapping, POA und Objects-by-Value sind Grundvoraussetzungen für eine weitgehende Kompatibilität beider Welten. © GDV 1999 43 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Die Integration von CORBA und JavaBeans liefert Spezifikationen für eine Reihe „weißer Flecken“ in den bisherigen Versionen beider Standards: CORBA verfügte bisher über keine Tool-Interfaces, die das werkzeugunterstützte Konfigurieren von beliebigen Komponenten ermöglichen. Tool-Interfaces dienen dazu, Entwicklungswerkzeugen Informationen über eine Komponente auf standardisierte Art und Weise zur Verfügung zu stellen. Durch die Adoption von entsprechenden Entwurfsmustern aus JavaBeans, können CORBAKomponenten zukünftig auf die gleiche Weise konfiguriert und integriert werden, wie dies heute mit Beans-orientierten Entwicklungsumgebungen möglich ist. CORBA-Komponenten können zukünftig als eigenständige Pakete ausgeliefert und installiert werden. Der Mechanismus entpricht dem JavaBeans-Packaging in JAR-Files. Durch die Definition von Events, die Komponenten untereinander austauschen können, ist die Interaktion von CORBA-Komponenten wie bei JavaBeans mit Hilfe von visuellen Entwicklungswerkzeugen definierbar. Der CORBA Event Service definiert bisher zwar den grundlegenden Übertragungsmechanismus, trifft aber keinerlei Festlegung über die Art der Events, die ausgetauscht werden. Durch automatische Verknüpfung von Properties mit Events, wie sie in JavaBeans definiert sind (sogenannte bount oder contraint properties) können zukünftig CORBA-Komponenten über Zustandsänderungen informiert werden, ohne daß die Verknüpfung zwischen Event und Zustandsänderung explizit programmiert werden muß. Durch die Integration von JavaBeans und CORBA ist die Integration von Komponenten in unterschiedlichen Sprach- und ORB-Umgebungen möglich. Komponenten sind nicht nur in Java-Umgebungen interoperabel, sondern auch in gemischten Umgebungen. Im CORBA 3.0 Component Model und in der POA-Spezifikation fehlen Spezifikationen für das Zusammenspiel zwischen Server-Komponenten und einem Transaktionsmanager (OTM). Diese Lücke wird durch das Container-Konzept von Enterprise JavaBeans geschlossen. Der Java Transaction Service (JTS) ist compatibel mit dem CORBA Object Transaction Service (OTS). Durch die Integration können JavaBeans die Dienstpalette und Netzwerkinfrastuktur von CORBA nutzen, einschließlich des verteilten Event Service, des Security Service und des IIOPProtokolls. Wertung Bereits vor dem Erfolg von Java wurde deutlich, daß wichtige Bereiche durch die bestehenden CORBA 2.0 Spezifikationen nicht abgedeckt wurden, insbesondere der Bereich InternetAnwendungen, Komponentenmodell, portable Adapter, OTM´s und komponentenbasierte Benutzeroberflächen. Die Entscheidung der OMG, anstelle einer eigenständigen Konzeption Entwurfsmuster und Techniken aus JavaBeans zu adoptieren, erleichtert die Akzeptanz der CORBAStandards erheblich. Aus der Sicht der Anwendungsentwicklung bedeutet die Konvergenz zwischen Java und CORBA vor allem größeren Entscheidungsspielraum: Dort wo heute Java aufgrund mangelnder Reife, Performance oder Verfügbarkeit noch nicht eingesetzt werden kann, ist die Entwicklung auf Basis anderer CORBA-Plattformen möglich, ohne daß auf zukünftige Interoperabilität mit Java-Komponenten verzichtet werden muß. Dies bedeutet nicht, daß eine spätere Migration oder Interoperabilität im Sinne eines „Plug-and-Play“ erreicht werden kann. Da derzeit noch keine CORBA 3.0 - Implementierungen verfügbar sind und gleichzeitig die Enterprise JavaBeans - Spezifikationen noch keinen stabilen Stand erreicht haben, ist 44 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA mit einigem Anpassungsaufwand beim Übergang oder der Integration zu rechnen. Die Konformität der Entwurfsmuster beider Spezifikationen macht allerdings Änderungen im größeren Stil (Redesign von Teilen einer Anwendung) voraussichtlich unnötig. II.2. Distributed Internet Architecture (DNA) II.2.1. Definition und Grundbegriffe Die Plattform für Microsoft Anwendungen besteht aus einem mehrschichtigen, verteilten Anwendungs-Modell und der darin enthaltenen Infrastruktur- und Anwendungsservices. Die Windows Distributed InterNet Applications Architecture (DNA) soll sowohl die besten Services von Clients, Anwendungsservern und Mainframes als auch die Internet-Technologie zu einer allgemeinen, Komponenten basierten Anwendungsarchitektur vereinen. Bei der Erstellung der DNA-Anwendungen sind folgende Grundprinzipien zu beachten: Internet Verfügbarkeit Anwendungen sollten die Vielfalt der Plattformen hinsichtlich ihrer globalen Kommunikationsmöglichkeiten nutzen. Schnellere Time to Market Anwendungen müssen schnell entwickelt werden ohne Paradigmenwechsel für die Entwickler. Viele Services und Funktionalitäten sollten durch Schichten bereitgestellt werden, auf denen die Anwendung basiert. Richtige Interoperabilität Interoperabilität in allen Schichten muß gewährleistet sein, so daß Funktionalität leicht ergänzt werden kann. Die Nutzung von offenen Protokollen und Standards gewährleistet die Integration anderer Systeme, auch von anderen Herstellern . Reduktion der Komplexität Schlüsselservices (z.B. Transaction, Message Queuing, Security) werden direkt im Betriebssystem verankert; sie lassen sich auf einfache Weise ohne Spezialistenwissen nutzen. Unabhängigkeit von Sprache, Tool- und Hardwareausstattung Entwickler arbeiten auf einem sprachneutralen Komponentenmodell. Sie setzen entsprechende Tools auf einer breiten Hardwarebasis ein. Verringerung der Total Cost of Ownership Anwendungen lassen sich einfach entwickeln, managen und ändern. II.2.2. Komponenten Die DNA-Strategie beruht auf kooperierenden Komponenten, die auf einem Binärstandard, dem Component Object Model (COM), basieren. Die nach COM erstellten Software-Komponenten sind kompatibel und können auf jeder Schicht innerhalb der DNA ablaufen. Beispielsweise lassen sich User Interfaces oder fachliche Kernfunktionen in einzelnen Komponenten kapseln. Anschließend können diese zu einer Gesamtanwendung zusammenfügt und auf unterschiedliche Plattformen verteilt werden. © GDV 1999 45 Die technische Architektur der VAA Das objektorientierte technische Referenzmodell Auf Komponenten basierende Anwendungen und DNA bedienen sich dabei einer allgemeinen Infrastruktur sowie der Netzwerkdienste, die durch das Betriebssystem Windows bereitgestellt werden.. II.2.2.1. Präsentation Der Anwender erwartet heutzutage Anwendungen mit funktional hochwertigen User Interfaces. Diese müssen performant, verteilbar und kompatibel auf Windows und Non-Windows Plattformen zur Verfügung stehen. Sie sollten vom Laptop bis zur High-End Workstation auf, wenn möglich allen, Browsern einsetzbar sein. Abbildung 22: Präsentation in der DNA DNA sieht vor, daß Windows Entwickler ihre Anwendung, nach Prüfung von fachlichen und Effizienz-Kriterien, mit einer Windows oder Internet-Technologie ihrer Wahl umsetzen. Hierbei stehen ihnen vier Ansätze zur Auswahl: Browser Neutral HTML als eine standardisierte und leicht erlernbare Beschreibungssprache verhält sich neutral auf allen Browsern. Der Funktionsumfang für einen Einsatz auf einem Thin Client ist teilweise eingeschränkt. Browser Enhanced Mehr Funktionalität bieten Browser Enhanced Anwendungen, die die speziellen Technologien (Add-Ons) der Browser ausnutzen. Mit Dynamic HTML (DHTML) und Scripting lassen sich die Objekte auf den Web-Seiten programmieren. Diese arbeiten unabhängig von der virtuellen Maschine und dem Betriebssystem. Falls keine DHTML-Unterstützung vorliegt, so führt der Browser die Seite in verminderter Qualität (HTML) aus. Internet Reliant Aufbauend auf dem Browser Enhanced Ansatz ist es Client-Anwendungen erlaubt, eine Mischung aus HTML, DHTML, Scripting und ActiveX-Controls zu nutzen, um den Browserkontext optimal zu unterstützen. Die zugrundeliegende Hardware mit dem Betriebssystem wird sinnvoll eingesetzt. Gleichzeitig ist auch die volle Integration in die Remote-Services des Internets garantiert. 46 © GDV 1999 Das objektorientierte technische Referenzmodell Die technische Architektur der VAA Internet Enhanced Mit WIN32 API entwickelte Anwendungen sind Internet Enhanced, wenn sie sich die SystemFeatures sichern und gleichzeitig mit dem Internet kommunizieren können. Beispielsweise sind im Entwicklungssystem Visual Studio 98 Hyperlinks zum Connect mit unterstützenden Web-Sites integriert. Die Präsentation erfolgt standardmäßig mit dem Browser, Produktupdates sind per Download aus dem Internet möglich. II.2.2.2. Anwendungsservice Die in Komponenten gepackte spezifische Businesslogik liegt als Kern der Gesamtanwendung zwischen der Client-Plattform und der Datenhaltungsumgebung. Diese Anwendungsplattform verfügt über Web Services, Messaging Services und Component Services. Web Services Als Bindeglied zwischen dem Browser-User Interface und den fachlichen Komponenten liegt der Internet Information Server IIS. Innerhalb des IIS können Anwendungen transaktionsgesichert ablaufen. Um vom IIS einzelne fachliche Komponenten zu nutzen, können Active Server Pages ASP eingesetzt werden. ASP’s sind sprachneutral, müssen nicht compiliert werden und verstehen unterschiedliche Script-Sprachen. Innerhalb der ASP-Anwendungen kann die Anwendung anwendungsglobale und Session-spezifische Daten nutzen. Component Services Eine Erweiterung des COM Modells stellt der Microsoft Transaction Server MTS dar. Er bietet Dienste für die Erstellung, die Verteilung und Administration von Komponentenbasierten Anwendungen an. Der nächste Entwicklungsschritt wird COM+ sein, das die Dienste von COM und MTS vereinigt und einige neue anbietet, wie z.B. Einbeziehung von Komponenten in andere Transaktions Manager, verbesserte Security, zentrale Administration oder Load Balancing Messaging Services Microsoft Message Queue Server MSMQ stellt eine Kommunikation im Netzwerk auf Basis des Message Queueing Modells bereit. Anwendungen lassen sich durch das Pushen von Nachrichten (Messages) miteinander koppeln, auch wenn das Netzwerk, das die Anwendungsserver verbindet aktuell nicht zur Verfügung steht. Messages können in den Transaktionskontext mit einbezogen werden. MSMQ bietet Interfaces zu anderen Messaging-Systemen und ermöglicht somit eine Integration z.B. in die Mainframe-Welt. © GDV 1999 47 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell III. Die Systemarchitektur der VAA Komponenten-basierte Softwarearchitekturen sollen die Wartbarkeit, Pfege, Überprüfbarkeit und Anpaßbarkeit von Software erleichtern sowie den Entwicklungsprozeß beherrschbarer machen. Die Systemarchitektur der VAA unterstützt eine komponenten-basierte Softwareentwicklung. Bevor jedoch auf die Definition einer Komponente eingegangen werden kann, muß zunächst die für Komponenten nötige Umgebung definiert werden. Als „äußere Grenze“ existiert das Softwaresystem. Ein Softwaresystem stellt ein ausführbares, integriertes System dar, das einen bestimmten Geschäftsbereich abbildet (vgl. hierzu auch den Begriff Business System Domain der Interoperability Specification, Kapitel IV.2.2.1). Es beinhaltet in der Regel ein oder mehrere Subsysteme. Ein Subsystem ist eine Unterteilung des Systems und beinhaltet eine oder mehrere Komponenten. Jedes Subsystem ist getrennt von einander entwickelbar und kommuniziert mit anderen Subsystemen über definierte Schnittstellen. Innerhalb eines Subsystems ist der Namensraum für Objekte eindeutig. Grundsätzlich kann der Begriff des Subsystems und der der Komponente schwer von einander getrennt werden. Der Unterschied liegt darin, daß Subsysteme in eine Kontext gesetzt sind, während Komponenten vom Kontext unabhängig sein sollten. Beispiele für Systeme und Subsysteme sind: ein KFZ-Bestandssystem mit den Subsystemen Inkasso, Partner, Provision, usw. SAP mit seinen Subsystemen Vermögensverwaltung, Finanzbuchhaltung, Data Warehouse. III.1. Komponente „Eine Komponente ist ein funktional in sich abgeschlossener Softwarebaustein, der über wohldefinierten Schnittstellen mit seiner Umgebung in Beziehung tritt und dabei in der Lage sein muß, in unterschiedliche nicht vorhersagbare Anwendungskontexte eingebettet zu werden.“ 1 Eine Komponente stellt also eine fachliche oder technische, funktional abgeschlossene Problemlösung mit „Black-Box“ -Wiederverwendung dar. Sie kann im allgemeinen unter Verwendung einer beliebigen Programmiersprache implementiert werden, objektorientiert oder prozedural. Die Interaktion mit anderen Komponenten wird durch die definierten Schnittstellen gewährleistet. Komponenten sind vermarktbare Software-Einheiten, deren Einsatzkontext zum Zeitpunkt der Entwicklung nicht unbedingt vorhersagbar ist. Sie lassen sich zu größeren Einheiten zusammenbauen, die wiederum Komponenten, Subsysteme oder Systeme sind (Baukastenprinzip). Komponenten sind Bauteile, die durch Konfiguration den unternehmensspezifischen Bedürfnissen angepaßt werden können und u.U. dadurch eigenständige Subsysteme oder Systeme werden können (z.B. kann die Komponente Partnerverwaltung ein eigenes System sein). 1 Aus „Des Knaben Wunderhorn“ von Michael Stal, ObjektSpektrum 01/99 48 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Die übergreifenden Aktivitäten der einzelnen Komponenten müssen aufeinander abgestimmt sein. Dies setzt Vereinbarungen zwischen Komponenten voraus, die vorgeben, wie übergreifende Funktionen (z.B. Transaktionsmanagement) realisiert werden. In der Nutzung von Komponenten sollten keine Überschneidungen von Funktionalitäten erfolgen. Das obliegt jedoch der Verantwortung des Komponentennutzers. Eine Redundanzfreiheit der Funktionalitäten mehrerer Komponenten kann nicht gewährleistet werden. III.2. Business Object Die in einer Komponente realisierte abgeschlossene Problemlösung besteht aus Einzelteilen, die fachliche Logik repräsentieren. Die kleinste Einheit fachlicher Logik im Rahmen der Systemarchitektur bildet das Business Object. Die Granularität einer Komponente ist in der Regel gröber als die eines Business Objects, muß es jedoch nicht sein. III.2.1. Definition Ein Business Object (BO) repräsentiert einen fachlichen Ablauf oder eine fachliche Entität. Ein fachlicher Ablauf ist dabei im Sinne eines Geschäftsvorfalls zu verstehen, wie er in VAA 2.0 definiert ist (Beispiel: „Erhöhung der Versicherungssumme eines Vertrages“). Eine fachliche Entität stellt eine fachlich orientierte Einheit von Daten und darauf operierender Funktionen dar, wie zum Beispiel Vertrag oder Partner. Ein Business Object ist innerhalb des Systems, in dem es definiert ist, eindeutig identifizierbar. Das heißt, es verfügt über einen Schlüssel, mit dem es jederzeit – unabhängig von anderen Objekten – ermittelt werden kann. Bei diesem Schlüssel handelt es sich entweder um einen durch ein Schlüsselsystem vergebenen technischen Schlüssel oder um einen fachlich motivierten Schlüssel in Form von kombinierten Attributen. Der Schlüssel bleibt für die Lebenszeit des Business Objects immer eindeutig. Der Schlüssel ist nicht identisch mit der Objektreferenz eines Business Objects. Die Objektreferenz dient dem Direktzugriff auf dessen Methoden und ist gültig, unabhängig davon, ob das Business Object sich im Speicher befindet oder nicht (Persistent ObjectID). Die Objektreferenz eines Business Objects ist über die gesamte Lebenszeit eines Business Objects eindeutig und wird auch nach dessen Löschen nicht wiederverwendet. Ein Business Object muß eine Methode bereitstellen, die den Test auf Gleichheit mit einem anderen Business Object (des gleichen Typs) erlaubt. Im einfachsten Fall verbirgt sich dahinter lediglich die Prüfung des Schlüssels, es sind aber auch komplexere Fälle denkbar, z.B. dann, wenn sich hinter einem Business Object mehrere Versionen verbergen. Ein Business Object nimmt an Transaktionen teil. Das heißt, Änderungen am Zustand eines Business Objects werden in einem Transaktionskontext durchgeführt. Ein Business Object ist in der Regel persistent. Das heißt, Änderungen am Zustand eines Business Objects werden nach erfolgreicher Beendigung der Transaktion gespeichert. © GDV 1999 49 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Ein Business Object kann Beziehungen zu anderen Business Objects enthalten. Da Business Objects unabhängig voneinander existieren, werden Beziehungen als Schlüssel oder Objektreferenzen im obigen Sinn innerhalb des Business Objects gespeichert. Präsentationskomponenten können Business Objects zugeordnet werden.. III.2.2. Struktur eines Business Objects Ein Business Object repräsentiert Fachlogik, die im allgemeinen durch mehr als ein Objekt dargestellt wird. Von außen betrachtet wird ein Business Object jedoch durch ein Objekt repräsentiert. Dieses Objekt trägt den Schlüssel und stellt die öffentlichen Methoden des Business Objects zur Verfügung. Es ist gewissermaßen eine Fassade des Modells nach außen. Ein Business Object kann Referenzen auf andere Business Objects sowie Objekte beinhalten, die im Gegensatz zum Business Object allein im System weder eindeutig identifizierbar noch speicherbar sind. Wir nennen diese Art von Objekten Dependent Objects. Dependent Objects können als Parameter zwischen Business Objects ausgetauscht werden. Beispielsweise enthält des Business Object Vertrag ein Dependent Objekt Ablaufdatum und hält eine Referenz zum Versicherungsnehmer, einem Business Object des Typs Partnerrolle. BO „Partnerrolle“ Business Object „Vertrag“ Attribute •Produkt •VN •VersNr •Ablaufdatum •... Funktionen •getVersNr •getAblaufDatum •... systemweite Objektreferenz/ Objekt-ID lokale Objektreferenz Dependent Object „Ablaufdatum“ Definition Dependent Object: i.a. Attribut eines BO nicht eindeutig identifizierbar Transaktionen nur in Zusammenhang mit BO hat i.a. Zustände und Attribute ist persistent nur als Attribut eines BO Im allgemeinen wird der Zustand eines Business Objects durch die Werte aller Attribute bestimmt. In den meisten Fällen ist es jedoch zweckmäßig, explizite Zustandsvariablen einzuführen, die den nach außen relevanten Zustand eines Business Objects bestimmen (z.B. Vertragszustände: „geprüft“, „ungeprüft“, „freigegeben“, “storniert“ usw.). Methoden können den Zustand sowie die Attribute eines Business Objects ändern und werden deshalb im allgemeinen innerhalb eines Transaktionskontextes ausgeführt. 50 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Im Rahmen der persistenten Speicherung eines Business Objects werden alle intern als persistent gekennzeichneten Objekte samt ihrer Attribute einschließlich der Schlüssel nach erfolgreicher Beendigung der Transaktion gespeichert. Welche Objekte innerhalb eines Business Objects persistent gespeichert werden, ist von außen nicht sichtbar. III.2.3. Typisierung Anwendungssysteme der Versicherungswirtschaft sind geprägt durch Geschäftsvorfälle, die einerseits sehr komplex und variantenreich sein können, andererseits aber meist auf den gleichen „Daten“ operieren. Um diesen Anforderungen gerecht zu werden, ist es sinnvoll, zwei Kategorien von Business Objects zu definieren: Entity Business Objects (EBO), die die zu logischen Einheiten zusammengefaßten Daten (Attribute) einschließlich der ihnen zugeordneten Funktionen (Methoden) repräsentieren. Process Business Objects (PBO), die Geschäftsvorfälle repräsentieren. Business Object Process BO Entity BO Abbildung 23: Kategorien von Business Objects Damit soll keine Trennung zwischen Funktionen und Daten eingeführt werden. Process Business Objects dienen vielmehr dazu, Abläufe, die mehrere Business Objects betreffen und die abhängig sind von äußeren Gegebenheiten, zu modellieren und zu implementieren. Process Business Objects erhöhen damit die Wiederverwendbarkeit von Entity Business Objects. III.2.3.1. Entity Business Object (EBO) Ein EBO repräsentiert eine fachlich orientierte Einheit von Daten und darauf operierender Funktionen, wie zum Beispiel Vertrag oder Partner. Ein EBO kann weitere Entity Business Objects aufrufen und benutzen. Im untern dargestellten, vereinfachten Beispiel ruft die Methode berechnePrämie des EBO Vertrag über sein Dependent Object Prämienrechner Methoden der Business Objects Versicherte Person und Produkt auf. Ein alternatives Vorgehen könnte sein, daß Vertrag über die Methode getPrämeinerechner das Dependent Object Präemenrechner zurückliefert (samt der Referenzen zu den assozierten Business Objects). Die Berechnung kann daraufhin durch den Aufrufer zu beliebigen Zeitpunkten geschehen. © GDV 1999 51 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell EntityBO „Partnerrolle = VP“ EntittyBO „Vertrag“ Attribute •VN •Produkt •VersNr •Ablaufdatum •Prämienrechner Funktionen •getVersNr •getAblaufDatum •berechnePrämie EntityBO „Produkt“ Dependent Object „Prämienrechner“ berechne Abbildung 24: Entity Business Object III.2.3.2. Process Business Object (PBO) Ein PBO repräsentiert einen fachlichen Ablauf im Sinne eines Vorgangs, Geschäftsvorfalls oder Geschäftsprozesses. Das bedeutet, daß es über Attribute verfügt, die den aktuellen Fortschritt innerhalb des Vorgangs repräsentieren sowie die Übergangsbedingungen von einem Schritt zum nächsten definieren. Ein PBO bildet einen Geschäftsgang ab, innerhalb dessen Entity Business Objects aktiviert werden. Ein PBO bildet den Transaktionskontext eines Prozesses. Process Business Objects können sehr komplexe Prozesse abbilden, aber auch elementare Teilprozesse darstellen. Ein PBO kann selbst andere Process Business Objects als „Teilvorgänge“ benutzen. Ab einer bestimmten Ebene von Geschäftsprozessen sollten PBOs bestimmte gemeinsame Dienste nutzen, z.B. Ablaufverfolgung, Prozeßsteuerungsdienst, Postkorb, Terminverwaltung. Die bis dahin fest „verdrahtete“ Struktur von PBO wird durch die Nutzung solcher Dienste dynamisiert. PBO steuern Abläufe und haben in der Gesamtheit ein komplexes Wissen der Ablauforganisation. 52 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Entitäts-BO „Vertrag“ Prozeß-BO „Versicherungssumme erhöhen“ Attribute •AktSchritt •EBOVertrag •PBORisikoPrüfung •Provision •... Funktionen •start •setTxContext •... Prozeß-BO „RisikoPrüfung“ Dependent Objekt „Provision ermitteln“ „(Teil-)Vorgang“ Andere Business Objects „Vorgang“ Abbildung 25: Process Business Object In vielen Fällen besteht die fachliche Anforderung, Funktionen zu modellieren, die auf Basis von Attributen vieler Business Objects Berechnungen oder Prüfungen vornehmen, aber keine eigenen Zustände kennen und ohne Unterbrechung ablaufen. Ihrer Natur nach handelt es sich um Objekte, die einem EBO zugeordnet (vgl. das Objekt Prämienrechner im vorangegangenen Abschnitt) oder als eigenständige PBO realisiert werden können, oder sogar als konstantes „Einmal“-Objekt („Singleton“, vgl. [xii]) systemweit zur Verfügung stehen. Abläufe innerhalb der Domäne eines EBO werden als Methoden innerhalb des betreffenden EBO modelliert. Die Funktionalität eines EBO ist also implizit unabhängig vom Kontext in dem es sich befindet. Der erforderliche fachliche Kontext wird über die benutzenden PBO hergestellt. Dies gilt auch dann, wenn mehrere EBO betroffen sind, der Ablauf aber unabhängig vom aktuellen Geschäftsvorfall immer gleich bleibt (Beispiel: die Zuordnung des Versicherungsnehmers zu einem Vertrag oder die Erzeugung einer neuen Vertragsversion bei Vertragsänderungen). Dabei sollte das rufende Objekt nicht Daten von beteiligten Objekten holen, um Aufgaben auszuführen, sondern die Aufgaben in Teile zerlegen und für jeden dieser Teile den richtigen Adressaten aufrufen (vgl. Entwurfsmuster „Vermittler“ in [xii]). III.2.4. Dienste Die in der technischen Architektur beschriebenen CORBA-Dienste sind die technische Basis für das Management und die Interaktion von Business Objects. Allerdings gibt es zu viele Freiheitsgrade bei der Gestaltung des Zusammenspiels zwischen den CORBA-Diensten und den Objekten, die diese Dienste nutzen. Beispielsweise ist in CORBA nicht definiert, welche Typen von Events zwischen Business Objects ausgetauscht werden können. Dadurch ist die einheitliche Gestaltung von Business Object - Komponenten unterschiedlicher Hersteller nicht ohne weiteres gegeben. Höherwertige Dienstspezifikationen dieser Art sind deshalb unverzichtbarer Bestandteil von Komponentenarchitekturen wie (Enterprise) JavaBeans, DCOM und (zukünftig) CORBA Beans. Da ein diesbezüglich einheitlicher Standard heute noch fehlt, beschränken wir uns an dieser Stelle auf die Beschreibung der Mindestfunktionalität von Diensten, wie sie Business Objects im oben definierten Sinne benötigen. Diese Mindestfunktionalität kann jederzeit auf die Funktionen eines ausgewählten Komponenten-Frameworks abgebildet werden. © GDV 1999 53 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Folgende Dienste sind für das Zusammenwirken und die Verwaltung von Business Objects in einem Anwendungssystem unerläßlich: Transparentes Speichern von Business Objects („Persistence Service“) Dienste zum Suchen, Erzeugen und Löschen von Business Objects („LifeCycle Services“) Verwaltung von Transaktionen („Transaction Service“) Benachrichtigungsdienst zwischen Business Objects („Event Service“) Verwaltung von BO-Beziehungen („Relationship Service“) Parametrisierung von Business Objects („Property Service“) Verwaltung von Mengen von Business Objects („Collection Service“) und Bereitstellung entsprechender Iteratoren III.2.4.1. BO-Manager - Framework und BO-Persistence Service Ein Business Object kann sich nicht selbst erzeugen oder suchen, genausowenig kann die Verwaltung von Transaktionen ausschließlich den Business Objects überlassen werden, da in der Regel mehrere Business Objects an einer Transaktion teilnehmen. Für die Realisierung dieser Dienste sind also nicht nur BO-spezifische, sondern auch BO-übergreifende Schnittstellen notwendig. Wir werden diese Schnittstellen und ihre Implementierungen unter dem Begriff BO-Manager Framework zusammenfassen. In den meisten Fällen existiert in derartigen Frameworks ein Objekt als zentrale Anlaufstelle für Management-Funktionen. Wir werden im folgenden dafür einheitlich den Begriff BO-Manager verwenden. Beispiele für BO-Manager sind: Container in Enterprise JavaBeans [xiii] BaseFactory/Container in SanFrancisco [xiv] TypeManager in der Interoperability Spezifikation [ix] Das BO-Manager - Framework ist für die folgenden Aufgaben zuständig: Transaction-Management und Resource-Management (im Sinne eines Object Transaction Monitors) Bereitstellung von Schnittstellen zum Suchen bzw. Erzeugen von Business Objects Unterstützung bei der Speicherung von Business Objects Beschaffung von Meta-Informationen zu einem Business Object, wie sie zum Beispiel zur Implementierung von Trader-Services benötigt werden Bereitstellung von Security- und Licensing- Mechanismen Das BO-Manager-Framework stellt also den Lebensraum von Business Objects zur Verfügung. Im allgemeinen setzt die Implementierung der oben angeführten Funktionen eine enge Kooperation zwischen Business Objects und BO-Manager-Framework voraus. Eine ebenfalls enge Kooperation besteht zwischen Business Objects bzw. BO-Manager - Framework und dem BO-Persistence Service. Der BO-Persistence Service bildet die Schnittstelle zwischen 54 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Datenbank und Business Object und ist für die folgenden Aufgaben zuständig (siehe Abschnitt III.2.4.3): Abbildung von Datenbankstrukturen in Objektstrukturen (Schema - Mapping) Kapselung des Zugriffs auf unterschiedliche Datenquellen Bereitstellung von Suchmechanismen Bereitstellung von Sperrverfahren bei konkurrierenden Zugriffen Als Datenquellen sollten grundsätzlich berücksichtigt werden: Relationale Datenbanken Hierarchische Datenbanken Objektorientierte Datenbanken CICS- oder IMS-Transaktionen Dateisysteme Die Kooperation zwischen Business Objects, BO-Manager - Framework und BO-Persistence Service wird durch Schnittstellenvereinbarungen geregelt, für die wir, in Anlehnung an Enterprise JavaBeans, im weiteren den Begriff Contracts verwenden (siehe Abbildung 26). Die Vereinbarungen, die über Contracts geregelt werden, sind abhängig von der jeweiligen Aufgabe. Elemente dieser Contracts werden deshalb bei der Darstellung der Dienste in den folgenden Abschnitten beschrieben. Business Object BOPersistenceService BO - Manager -Framework Abbildung 26: Contracts zwischen Business Objects, BO-Manager - Framework und BO-Persistence Service Kompatibilität mit CORBA Services Business Objects, die für unterschiedliche BO-Manager - Frameworks entwickelt wurden, können in der Regel nicht einfach ausgetauscht werden. Allerdings ist eine Kommunikation zwischen Business Objects unterschiedlicher Frameworks über CORBA-ORBs möglich, sofern die im BO-Manager Framework realisierten Dienste CORBA-kompatibel sind. Um Interoperabilität über Framework-Grenzen hinaus zu gewährleisten, ist mindestens die Kompatibilität folgender Dienste erforderlich: © GDV 1999 55 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Dienste des Frameworks CORBA Service Erzeugen und Löschen von Business Objects Life Cycle Service Transaktionsmanagement Transaction Service Benachrichtigungsdienst zwischen Business Event Service Objects Verwaltung von Business Objects Beziehungen zwischen Relationship Service Tabelle 7 : Kompatibilität der Dienste des BO-Frameworks und der CORBA Services Darüber hinaus sollten BO-Management - Frameworks die CORBA Naming und Trading Services zur Identifikation und Suche von Diensten und Business Objects, sowie den Licensing und Security Service unterstützen. III.2.4.2. Transparenter Zugriff auf Methoden eines Business Objects Für das Anwendungsprogramm ist ein Zugriff auf die Methoden eines Business Objects jederzeit über die Objektreferenz möglich, unabhängig davon, wo sich das Business Objekt befindet. Dies gilt auch dann, wenn das Business Object in einer Datenbank gespeichert ist und zuerst geladen werden muß. Während der Object Request Broker für die Ortstransparenz sorgt, ist das BO-Manager - Framework dafür zuständig, daß ein noch gespeichertes oder ausgelagertes Objekt in den aktiven Zustand versetzt wird, bevor ein Methodenaufruf ausgeführt werden kann. Im allgemeinen wird deshalb das BOManager - Framework ein Proxy-Objekt zur Verfügung stellen, das in seiner Schnittstelle alle Methoden des Business Objects repräsentiert. Das Proxy-Object veranlasst gegebenfalls das Laden des Business Objects, bevor die Ausführung einer Methode an das Business Object weitergeleitet wird. Für das Anwendungsprogramm ist das Proxy-Object völlig unsichtbar. Anwendung Business Object BOPersistenceService BO - Manager -Framework Proxy-Objekt Abbildung 27: Proxy-Objekte für Business Objects III.2.4.3. Transparentes Speichern von Business Objects Änderungen am Zustand eines Business Objects müssen bei Abschluß einer Transaktion gespeichert werden, ohne daß ein expliziter Aufruf durch das Anwendungsprogramm notwendig ist. Auch Art und Ort des Speichermediums sollten zumindest für den Anwender eines Business Objects transparent sein, im allgemeinen auch für das Business Object selbst. 56 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Zur Erfüllung dieser Anforderungen ist eine Kooperation zwischen BO-Manager - Framework, Business Objects und dem BO-Persistence Service notwendig. Da CORBA selbst noch keine durchgängige Spezifikation dieses Zusammenspiels bietet, sind dem Austausch von Business Objects derzeit enge Grenzen gesetzt. Folgende grundlegenden Anforderungen müssen die Contracts zwischen den beteiligten Komponenten erfüllen: Contract zwischen BO-Manager - Framework und Business Object Da Business Objects auch in Umgebungen mit eingesetzt werden müssen, die auf Basis unterschiedlicher BO- Manager - Frameworks arbeiten (z.B. Außendienst-Labtops und Bestandsführung), sollten Business Objects und BO-Manager - Frameworks zwei unterschiedliche Persistenzstrategien unterstützen: Das Business Object kommuniziert direkt mit dem Persistence Service. Der BO - Manager initiiert lediglich das Laden bzw. Speichern durch den Aufruf einer allgemeinen load/store - Methode. Das Business Object ist auch für die Generierung der Objektreferenz zuständig (ggf. unterstützt durch Hilfsfunktionen des BO-Manager - Frameworks). Das BO-Manager Framework übernimmt die Kommunikation mit dem Persistence Service. In diesem Fall muß das Business Object seinen Zustand in standardisierter Form dem BO-Manager zur Verfügung stellen, z.B. durch Implementierung einer serializeMethode. Der BO-Manager ist für die Generierung der Objektreferenz zuständig. Alternativ dazu ist auch die direkte Übergabe des Business Objects an den Persistence Service möglich, sofern dieser in der Lage ist, anhand von Metainformationen die Speicherung des Zustands selbst vorzunehmen (Persistence Framework). Das Business Object muß sich beim BO-Manager registrieren, damit es an Transaktionen teilnehmen kann. Das Business Object muß die Caching-Mechanismen des BO-Manager-Framework unterstützen. Für große Anwendungssysteme sind Mechanismen notwendig, aktive Business Objects temporär auszulagern und bei Bedarf wieder zu aktivieren. Das Business Object muß dafür vorgesehene Schnittstellen unterstützen. Contract mit dem BO-Persistence Service Je nach Persistenzstrategie muß das Business Object selbst oder der BO-Manager mit dem BOPersistence Service kooperieren. Der BO-Persistence Service muß auf Basis weniger und einfacher Schnittstellen die folgende Funktionalität bereitstellen: Abbildungsfunktionen (dynamisch oder generierbar) für die Abbildung der Objektzustände auf die Speicherstruktur Bereitstellung einer eindeutigen, persistenten Objekt-ID. Die persistente Objekt-ID wird zur Generierung der Objektreferenz eines Business Objects benötigt. Elementare Zugriffsfunktionen über Schlüssel und persistenter Objekt-ID. © GDV 1999 57 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Darüber hinaus muß der BO-Persistence Service CORBA bzw. X/Open - konforme Schnittstellen für das Transaktionsmanagement dem BO-Manager - Framework zur Verfügung stellen. Beispiel Das folgende Beispiel illustriert das Zusammenspiel zwischen Business Object, BO-Manager und BO-Persistence Service für den Fall, daß das Business Object selbst die Persistenz initiiert. 1. Die Anwedung ruft die Methode getAblaufdatum des EBO Vertrag auf. Vertrag wird repräsentiert durch ein Proxy-Object. 2. Da das EBO Vertrag nicht im Speicher vorhanden ist, erzeugt das Proxy-Objekt eine neue Instanz von Vertrag und übergibt dieser die Objektreferenz. 3. Das Proxy-Objekt ruft die load-Methode von Vertrag auf. 4. Vertrag beauftragt den BO-Persistence Service, die Daten zu laden 5. Das Proxy-Objekt ruft die Methode getAblaufdatum auf und liefert das Ergebnis an die Anwendung zurück. Anwendung Proxy-Objekt Vertrag BO-Persistence Service create EBO Vertrag getAblaufdatum load loadFromDB getAblaufdatum III.2.4.4. Suchen von Business Objects Aus Sicht der Anwendung ist das Suchen von Business Objects die Aufgabe des BO-ManagerFrameworks. Es muß für jeden Typ von Business Objects eine Finder - Schnittstelle zur Verfügung stellen. Die Finder - Schnittstelle sollte die folgenden Arten von Suchoperationen unterstützen: 58 Suchen anhand des Schlüssels Aufruf einer Finder-Methode der Art findByKey(IN Schlüssel). Diese Methode liefert eine Objektreferenz für das gesuchte Business Object. Suchen über Merkmale eines Business Objects Der Finder muß eine Schnittstelle für die Übergabe von Suchkriterien oder Such-Ausdrücken zur Verfügung stellen oder eine Liste vorgefertigter Anfragen, die durch Angabe der Werte für Suchvariablen präzisiert werden kann. Bei mehrdeutigen Ergebnissen liefert der Finder anstelle der Objektreferenz einen Iterator zurück, © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA mit dessen Hilfe über die Ergebnismenge navigiert werden kann. Auch die direkte Übergabe einer Liste von Objektreferenzen ist bei kleinen Mengen möglich. Hinweis: In der Versicherungswirtschaft steht man häufig vor dem Problem, daß der Schlüssel zwar grundsätzlich eindeutig ist, daß aber zu einem Business Object mehrere Versionen existieren. Möchte man nicht immer alle Versionen des Objects laden, so kann z.B. die o.a. Finder-Methode durch eine Methode findByKey(IN Schlüssel, Gültigkeitsdatum) ergänzt werden. Damit wird nur die Version des BO erzeugt, die zum angegebenen Datum gültig war. Contracts Die Contracts zwischen BO-Manager - Framework, BO-Persistence Service und Business Object sind stark abhängig von der Implementierung des BO-Manager - Frameworks und des BO-Persistence Service. Folgende Varianten sind möglich: Das Business Object stellt dem Finder entsprechende Suchfunktionen über ein Interface zur Verfügung. Dies ist möglich, wenn das Business Object selbst die Kommunikation mit dem Persistence Service übernimmt. Der BO-Persistence Service verfügt über eine objektorientierte Abfragesprache wie OQL oder stellt für jeden Objekttyp Standardabfragen zur Verfügung. Der Persistence Service liefert Objektreferenzen der gefundenen Business Objects. Diese Variante ist insbesondere beim Einsatz von objektorientierten Datenbanken oder Persistence - Frameworks geeignet. Business Object und BO-Persistence Service stellen dem Finder Metainformationen zur Verfügung, aus denen dieser Suchanfragen generieren kann, die der Persistence Service ausführt. Diese Variante eignet sich für den direkten Zugriff auf relationale Datenbanken oder HostTransaktionen. III.2.4.5. Erzeugen von Business Objects Aus Sicht der Anwendung ist das Erzeugen von Business Objects die Aufgabe des BO-ManagerFrameworks. Es muß für jeden Typ von Business Objects eine Factory - Schnittstelle zur Verfügung stellen (vgl. Factory-Entwurfsmuster [xii]). Die Factory erzeugt eine Instanz des Business Objects und liefert eine Objektreferenz an die Anwendung zurück. Der Grundmechanismus für die Erzeugung eines Business Objects ist der CORBA Life Cylce Service und, bei verbundenen Business Objects, der Compound Life Cycle Service. Das BO-Manager Framework kapselt die Schnittstelle zu diesen Services und ergänzt sie teilweise, z.B. durch die Übergabe von Kontextinformationen an das erzeugte Business Object oder durch die Zuordnung eines Schlüssels. Um die Kompatibilität mit dem CORBA LifeCycle Service zu gewährleisten, sollte das BO-Manager - Framework die Standard CORBA - Factory Interfaces weiterhin unterstützen. III.2.4.6. Löschen von Business Objects Jedes Business Object muß über eine standardisierte Delete - Schnittstelle verfügen, mit der es gelöscht werden kann. Das Löschen der zugehörigen Datenquelle kann alternativ durch das Business Object selbst oder durch das BO-Manager - Framework erfolgen (vgl. Abschnitt III.2.4.3). © GDV 1999 59 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Unabhängig davon obliegt dem BO-Manager - Framework die Transaktionssicherung der Löschoperation. Die Objektreferenz wird gelöscht und steht im folgenden nicht mehr zur Verfügung. Der BO-Manager ist für das Ressourcenmanagement und somit für die Freigabe der Objektressourcen zuständig. Sollten in anderen Business Objects Referenzen auf das gelöschte BO bestehen, so wird diese Referenz beim nächsten Zugriff auf das Business Object ungültig. Der Benachrichtigungsdienst (vgl. Abschnitt III.2.4.10) stellt einen Eventtyp zur Verfügung, der die automatische Benachrichtigung verbundener Business Objects bei Löschoperationen erlaubt. III.2.4.7. Transaktionsmanagement Business Objects nehmen in der Regel an Transaktionen teil, d.h. Änderungen ihres Zustandes müssen gemeinsam mit anderen Business Objects festgeschrieben bzw. rückgängig gemacht werden. Ein Business Object kann darüber hinaus gleichzeitig von mehreren Benutzern angefordert werden. Es ist Aufgabe des BO-Manager - Frameworks, die Konsistenz von Business Objects innerhalb einer Transaktion zu garantieren und parallele Anforderungen an ein Business Object zu verwalten. Transaktionsmanagement setzt eine enge Kooperation zwischen Framework, Business Object und BOPersistence Service voraus. Dieses enge Zusammenspiel geht über die CORBA-Spezifikationen zum Transaction und Concurrency Service hinaus und ist momentan noch nicht standardisiert. An dieser Stelle können deshalb nur die grundlegenden Mechanismen, die die Beteiligten zur Verfügung stellen müssen, dargestellt werden. In dem hier beschriebenen Transaktionsmodell gehen wir von flachen Transaktionen aus. Contract zwischen Business Object und BO-Manager - Framework Die folgenden Elemente sind Bestandteil des Contracts zwischen Business Object und BO-Manager Framework: Festlegung des Transaktionsverhaltens Generell sollten mindestens die folgenden Transaktionsmodi unterstützt werden: BO nimmt grundsätzlich nicht an Transaktionen teil BO muß immer transaktionsgesichert bearbeitet werden BO verwaltet seine eigene Transaktion (d.h. andere Business Objects sind nicht in der selben Transaktionsklammer enthalten) In diesem Fall muß der BO-Manager dem Business Object einen eigenen Transaktionskontext zur Verfügung stellen. Der BO-Manager muß ein BO, daß an einer Transaktion teilnimmt, vor dem Einleiten des Transaktionsendes und nach Abschluß der Transaktion informieren. Contract zwischen Business Object und BO-Manager - Framework 60 Der BO-Persistence Service bzw. die zugrundeliegenden Datenbanken müssen Commit/Rollback Protokolle (X/Open) unterstützen © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Sperrmechanismen des Persistence Service müssen sinnvoll mit dem Transaktionsmanagement zusammenarbeiten. Transparenz bezüglich paraller Zugriffe Die Tatsache, daß ein Business Object in einer Mehrbenutzerumgebung eingesetzt ist, muß sowohl für den Business Object - Entwickler, als auch für die Anwendung transparent sein. Das in Abschnitt III.2.4.2 beschriebene Proxy-Objekt des BO-Manager - Frameworks dient dazu, gleichzeitige Anforderungen an ein Business Object zu serialisieren oder gegebenenfalls. mehrere Instanzen eines Business Objects zu erzeugen. Damit kann ein Business Object als „Single User“ - Objekt realisiert werden. III.2.4.8. Verwalten von BO-Beziehungen Verbindungen zwischen Business Objects können auf verschiedene Weise gestaltet werden: Durch direkte Fremdschlüsselbeziehungen auf Basis der Objektreferenz Das verbundene Business Object speichert die Objektreferenz als Attribut Durch direkte Fremdschlüsselbeziehungen auf Basis des Schlüssels Das verbundene Business Object speichert den Schlüssel als Attribut Über den CORBA Relationship Service (vgl. Kapitel II.1.3.3) bzw. seine Abbildung im BOManagement Framework Direkte Fremdschlüsselbeziehungen über die Objektreferenzen sind einfach und performant zu realisieren, sind aber nicht in jedem Fall einsetzbar. Voraussetzung für ihren Einsatz ist die Kompatibilität der Objektreferenzen zwischen den beteiligten Business Objects. Diese ist im allgemeinen bei CORBA-basierten Systemen gegeben, nicht jedoch generell. Darüber hinaus kann es sinnvoll sein, auf eine direkte Koppelung zu verzichten, zum Beispiel dann, wenn eine möglichst große Unabhängigkeit zwischen Systemen gefordert ist. Fremdschlüsselbeziehungen auf Basis der Schlüssel sind flexibler, was die Wahl der technologischen Plattform der Verbindungspartner betrifft, erfordern aber einen größeren Aufwand bei der Navigation, da aus dem Schlüssel zunächst die Objektreferenz ermittelt werden muß. Beide Varianten können bei der Anbindung von Systemen gemischt werden: die Verbindungspartner halten eine Objektreferenz zu Adaptern, die ihrerseits automatisch die Umsetzung auf die Objektreferenzen des anderen Systems über Schlüssel besorgen (vgl. Abschnitt III.5). Beziehungen auf Basis des Relationship Service sind für die folgenden Fälle besonders geeignet: Bei mehr als zwei Beziehungspartnern (z.B. bei einer ternären Relation) Bei n:m - Relationen Bei Relationen, in denen die Verbindungspartner mehrere unterschiedliche Rollen einnehmen können Der Relationship Service erlaubt die Gestaltung komplexer Beziehungen, ohne daß diese durch die beteiligten Business Objects selbst verwaltet werden müssen. Gleichzeitig lassen sich wiederverwendbare Navigationsmechanismen aufbauen, die die Navigation durch ein Objektnetz erlauben, ohne Kenntnis der Funktion beteiligter Business Objects. © GDV 1999 61 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell III.2.4.9. Parametrisierung von Business Objects Business Objects sind in der Regel Bestandteil von Komponenten. Eine wichtiger Aspekt bei der Gestaltung von Komponenten ist die Unvorhersagbarkeit der tatsächlichen Einsatzumgebung. Komponenten (und die unterstützenden Frameworks) verfügen deshalb über Konfigurationskomponenten und Parametrisierungsmöglichkeiten, die eine Anpassung an die Einsatzumgebung ermöglichen (vgl. BeanDescriptor- und Customizer- Objekte in JavaBeans). Als Bestandteile von Komponenten müssen Business Objects mindestens über die folgenden grundlegenden Parametrisierungsmechanismen verfügen: „Properties“ mit Standardzugriffsmethoden Properties sind Attribute von Business Objects, die von außen über spezielle Zugriffsmethoden gelesen bzw. geändert werden können. Die Zugriffsmethoden sind dabei universell und nicht BOspezifisch. In JavaBeans wird dies durch name patterns erreicht: zu einer Property mit dem Namen XXX gehören die Zugriffsmethoden getXXX bzw. setXXX. Durch Properties können nicht nur aktuelle Zustände eine Business Objects verändert werden, sondern auch dessen generelle Funktionsweise. „Active Properties“ Sogenannte „Active Properties“ lösen bei einer Wertänderung ein Event aus, das über assozierte EventListener an andere Business Objects verteilt werden kann. Durch diesen Mechansimus können vorab nicht bekannte Abhängigkeiten zwischen Business Objects (in unterschiedlichen Komponenten) geschaffen werden, ohne daß in die Funktionalität eines Business Objects eingegriffen werden muß Die Einbettung von Business Objects in ein BO-Manager - Framework erfolgt im allgemeinen ebenfalls durch die Variation von Konfigurationsparametern mittels vordefnierter Methoden und Schnittstellen (vgl. DeploymentDescriptor in Enterprise JavaBeans). Diese Verfahren sind jedoch nicht standardisiert. Wichtige Konfigurationsparameter dieser Art sind z.B.: Festlegungen über die Art der Speicherung (Wahl der Datenbank, des Ortes usw.) Festlegungen über die Art des Transaktionsmanagments (ohne Transaktionskontext, BO-eigener Transaktionskontext usw.) Festlegung über Sicherheitsverfahren Festlegungen über die Suchstrategien, Namenskontext usw. III.2.4.10. Benachrichtigungsdienst zwischen Business Objects Basis des Benachrichtigungsdienstes ist der CORBA Event Service. Dieser stellt jedoch lediglich die Infrastruktur für die Übermittlung von Events zur Verfügung, definiert jedoch keine Event-Typen. Bestehende BO-Management - Frameworks wie San Francisco und (Enterprise) JavaBeans definieren entsprechende Eventtypen, es gibt allerdings noch keine übergreifenden Standards. Generell sollte jedes Framework die folgenden Eventtypen unterstützen: 62 „Property Changed Events“ Events, die gefeuert werden, wenn sich eine Eigenschaft („Property“) eines Business Objects ändert LifeCyle Events Events, die gefeuert werden, wenn ein Business Object erzeugt oder gelöscht wird. Dabei sollten © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Schnittstellen definiert sein, die im Zusammenhang mit dem CORBA Relationship Service automatisch Verbindungspartner benachrichtigen. Transaction Events Events, die zum Abschluß oder Abbruch einen Transaktion gefeuert werden. Insbesondere sogenannte Pre-Commit - Events erlauben es verbundenen Business Objects, ihre jeweiligen Stati vor dem Commit zu konsolidieren. Generell muß es möglich sein, Events vor oder nach Eintreten des auslösenden Ereignisses zu versenden. III.2.5. Business Objects und Komponenten III.2.5.1. Vom Business Object zur Komponente Im Rahmen der Dienstespezifikation und der Beschreibung des BO-Manager - Frameworks wurden bereits die Bedingungen an die „Umwelt“ eines Business Objects genannt, die unbedingt für eine Interoperabilität erforderlich sind: Interoperable Business Objects müssen die Schnittstellen für Events, Relationships usw. implementieren Zwischen Business Objects, BO-Manager - Framework und BO-Persistence Service müssen Contracts für gemeinsame Aufgaben wie Transaktionsmanagement und Datenspeicherung existieren Business Objects, die auf Basis unterschiedlicher Frameworks implementiert wurden, können miteinander kooperieren, wenn die wichtigsten CORBA-Services (vgl. Abschnitt III.2.4.1) wie Naming, Transactions, Events usw. unterstützt werden. Um ein Business Object oder eine Gruppe von Business Objects in eine auslieferbare SoftwareKomponente zu verwandeln, sind noch eine Reihe weiterer Hilfsmittel erforderlich: Werkzeuge, um BO-Komponenten an die Systemumgebung wie Datenbanken, Security-Systeme usw. anzupassen Werkzeuge, um Komponenten-Eigenschaften an die fachlichen Anforderungen des Zielsystems anzupassen und die Komponente mit anderen zu verbinden Im allgemeinen liefern die Hersteller von Komponenten - Frameworks die entsprechenden Werkzeuge bzw. die Hilfsmittel zu ihrer Erstellung mit (z.B. Enterprise JavaBeans, siehe Kapitel IV.4). Komponenten unterschiedlicher Frameworks erfordern jedoch auch unterschiedliche Werkzeuge. Trotz der in Aussicht gestellten Konvergenz von Architekturen wie Enterprise JavaBeans, SanFrancisco und CORBABeans sind dem freien Austausch von BO-Komponenten also noch Grenzen gesetzt. © GDV 1999 63 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Konfigurations Werkzeuge Business Object Business Object Business Object Komponente 2 Komponente 1 BO - Manager -Framework (Komponenten Framework) Abbildung 28: Business Objects als Komponenten Die folgende Abbildung zeigt ein heterogenes, komponentenorientiertes System. Ein Mindestmaß an gemeinsamen technischen Diensten ist für die Interoperabilität der Komponenten erforderlich: neben den CORBA Services unter Umständen auch Präsentationsumgebung und Datenbanksysteme. Konfigurationswerkzeuge für Framework 1 Konfigurationswerkzeuge für Framework 2 Business Object Business Object Business Object Business Object Komponente 1 Business Object Komponente 1 Komponente 2 Business Object Komponente 2 BO - Manager - Framework 1 BO - Manager - Framework 2 • CORBA Services • Präsentation • Datenbanken Technische Dienste Object Request Broker Abbildung 29: Heterogene komponentenorientierte Systeme III.2.5.2. Allgemeine Typen von Objekten Die zwischen Business Objects ausgetauschten Parameter sind Objekttypen die standardisiert sein müssen, damit BO-Komponenten unterschiedlicher Hersteller kooperieren können. Dabei gibt es verschiedene Qualitäten von Typen, die in Beziehung zur Mächtigkeit der Komponenten stehen: Technical Interface Types, die sich aus der Definition der CORBA-Dienste und der Dienste der Systemarchitektur ergeben, z.B. Key, Exceptions, State, Event. Common Business Domain Types, z.B. Datum, Uhrzeit, Währung, Organisationseinheit, Firma, Adresse, Konto. Insurance Domain Types, z.B. Partner, Termin, Ereignis, Schaden, Produkt, Vertrag. Diese Typen bauen aufeinander auf und stellen eine zunehmende Spezialisierung dar. Anhand dieser Typ-Hierarchie ist die Definition von Kompatibilitätsebenen unterschiedlicher Komponentenmodelle möglich: 64 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA 1. Die Kompatibilität der Technical Interface Types gewährleistet die prinzipielle Interoperabilität aus technischer Sicht. Auf dieser Ebene müssen alle fachlichen Informationen, die zwischen Business Objects ausgetauscht werden, durch eine Folge elementarer Datentypen ausgedrückt werden. Die Zufälligkeit, mit der diese Folgen definiert sind, macht die direkte Interoperabilität von Business Objects unwahrscheinlich. 2. Die Kompatibilität der Common Business Domain Types erlaubt bereits den Austausch einfacher fachlicher Objekte, komplexere Typen wie zum Beispiel Schadenmeldung müssen noch in elementarere Bestandteile zerlegt werden. 3. Die Kompatibilität der Insurance Domain Types ermöglicht den direkten Austausch von Komponenten ohne Anpassungen. Auf dieser Ebene können BO-Komponenten verschiedener Hersteller Informationen wie Schadenmeldung, Vertragsklausel usw. austauschen. Die folgende Abbildung zeigt die Kompatibilitätsebenen, sowie bestehende Ansätze verschiedener Hersteller und Gremien durch entsprechende Plattformen und Standards Interoperabilität zu erzielen. Insurance Domain Types •VAA Fachliches Referenzmodell Common Business Domain Types •OMG BODTF* und FDTF** •IBM SanFrancisco Technical Interface Types •Enterprise JavaBeans •CORBA Beans •IBM SanFrancisco •ActiveX/DNA * Business Objects Domain Task Force ** Financial Domain Task Force Abbildung 30: Kompatibilitätsebenen Das fachliche Referenzmodell der VAA gewährleistet die maximale Kompatibilität von Komponenten. Für „Plug & Play“ - Kompatibilität ist jedoch auch die gleiche Wahl der Plattform für die tiefer liegenden Ebenen erforderlich. III.3. Präsentationskomponente Model-View-Controller Zur Darstellung der Informationen von Business Objects werden Sichten (Views) benötigt. Im Sinne des MVC-Konzeptes (Model-View-Controller) ist eine View die Darstellung von Informationen eines Business Objects. Ein Business Object kann durch mehrere Views visualisiert werden, die unterschiedliche Sichtweisen auf das Business Object darstellen. Business Objects sind unabhängig von Präsentations- und Benutzerschnittstellen und wissen nichts über ihre Präsentationen. © GDV 1999 65 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Der Controller ist für die Interaktion zwischen Benutzer und Anwendung verantwortlich. Er stellt den Kontext dar, in dem verschiedene Views und Modelle zueinander stehen. Darüber hinaus veranlaßt er aufgrund von Benutzereingaben das Business Object zu Änderungen. Zu jedem Zeitpunkt ist genau ein Controller für die Interaktionsverarbeitung zuständig. Abbildung 31: Zusammenhänge im MVC-Konzept Durch die Entkopplung muß sich das Business Object nicht um seine Präsentation kümmern. Es können mehrere Views zu einem Business Object verwendet werden und die Views können verändert werden, ohne das Business Object zu beeinflussen. Ein Controller ist immer genau einer View zugeordnet. Hier herrscht eine enge Kopplung. View und Controller werden als Delegate (Delegierter des Business Objects) oder Benutzerschnittstelle bezeichnet. In Abbildung 31 werden die Zusammenhänge dargestellt. Benutzereingaben werden vom Controller entgegengenommen und Änderungen an das Business Object weitergeleitet. Aufgrund von Mitteilungen des Controllers oder anderer Objekte führt das Business Object die entsprechenden Änderungen durch und benachrichtigt die von ihm abhängigen Views über einen generellen Event Mechanismus. Die Views stellen nach Rückfrage beim Business Object die Informationen dar. Business Objects und Präsentationskomponente Im Sinne der VAA werden die Aufgaben des Views und des Controllers in der Präsentationskomponente zusammengefaßt. Diese Ebene übernimmt eigenständig alle Aufgaben, die zur Präsentation von Business Objects benötigt werden. Jedes Business Object kann sich in einer oder mehreren Präsentationskomponenten darstellen. Präsentationskomponenten sind eng an das zugehörige Business Object gekoppelt. In der Regel haben Business Objects eine Standard-Präsentationskomponente. Unter Umständen kann auch gänzlich auf eine Präsentation verzichtet werden. Dies trifft beispielsweise auf Process Business Objects zu, die Hintergrundprozesse darstellen (z.B. Jahreshauptfolge). 66 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Es muß grundsätzlich möglich sein, bei einem Business Object Präsentationskomponenten auszutauschen oder hinzuzufügen, bzw. die Präsentationskomponente zu konfigurieren. Wünschenswert ist ein Grundgerüst für ein Standardprotokoll zwischen Business Object und Präsentationskomponente sowie Präsentationskomponenten mit generischen Eigenschaften. So können beispielsweise durch die Konfigurierbarkeit bzw. Generik Präsentationskomponenten an unternehmesspezifische Standards (Kopf- und Fußzeilen, Titel, usw.) angepaßt werden. Darüber hinaus sollte es möglich sein, mit Hilfe eines Standardprotokolls unternehmensspezifische Präsentationskomponenten einem gekauften Business Object hinzuzufügen und diesem das unternehmensspezifische „Look & Feel“ zu verleihen. View View Controller Controller Business Object Business Object Business Object Komponente 2 Komponente 1 BO - Manager -Framework (Komponenten Framework) Abbildung 32: Business Objects und Präsentationskomponenten Baukastenprinzip Ein weiterer Aspekt der Präsentationskomponente ist das „Baukastenprinzip“ von Präsentationen. Einzelnen Präsentationskomponenten, die einem Business Object zugeordnet sind, sollten analog der Datennormalisierung redundanzfrei sein, d.h. eine Präsentationskomponente kann sich aus anderen zusammensetzten (siehe Abbildung 33). © GDV 1999 67 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Toolbar UserInfo Panel NameInfo Panel ButtonBar Abbildung 33: Konstruktionsprinzip von Präsentationen Die Präsentationen zerfallen also in kleinere Teile, wobei dies jedoch nicht impliziert, daß es zu jedem Attribut eines Business Objects eine Präsentation geben muß (vgl. Composite-Entwurfsmuster [x]). Die Granularität der Präsentation variiert je nach Modellierung (d.h. zwischen allen Attributen eines Business Objects bis hin zum Anzeigen einzelner Attribute). Ziel ist es, eine Wiederverwendbarkeit von Präsentationen und eine bessere Wartbarkeit zu erreichen. Präsentationen, die ein EBO zur Darstellung und Anbindung von Attributen und Methoden benötigen, können auch direkt dem EBO zugeordnet sein. Dabei wird ein EBO (sofern es überhaupt Präsentationen benötigt) typischerweise mehrere Präsentationen besitzen. Für den Versicherungsnehmer könnte es zum Beispiel eine Präsentation für die Pflege seiner Anschrift geben und gleichzeitig eine Präsentation um den Versicherungsnehmer im Rahmen eines Vertrages oder eines Schadenfalls auszuweisen. Wichtig ist dabei, daß der Zugriff und die Bearbeitung eines EBO nur über die ihm unmittelbar zugeordneten (elementaren) Präsentationen erfolgt. Komplexere und weitergehende Präsentationen, die auf spezielle Geschäftsvorgänge (PBO) zugeschnitten sind, verwenden für die Anbindung der beteiligten EBOs nur noch deren vorgefertigte Präsentationen. Vorteil dieser Vorgehensweise ist, daß Änderungen und Korrekturen einheitlich durchgeführt werden können und die Darstellung in allen Anwendungen konsistent ist. III.4. Verteilung von Präsentation und Business Object In einer verteilten Umgebung mit grafischer Oberfläche kommunizieren die auf dem Client befindlichen Präsentationskomponenten mit den Business Objects auf einem oder mehreren Applikationsservern, die Speicherung kann auf einem separaten Datenbankserver erfolgen (Three-Tier Architecture). Je nach Arbeitsumfeld der Anwendung sind unterschiedliche Clientkonfigurationen sinnvoll, die unterschiedlichen Kommunikationsaufwand bedeuten und damit verschiedene Datenübertragungsstrategien erforderlich machen. 68 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Fat Client Beim Fat Client befinden sich Präsentation und Business Objects komplett auf dem Client. Nur die Datenhaltung findet auf einem entfernten Server statt. Präsentations Präsentations Komponente Komponente Business Business Object Object Fat Client BO-Manager Framework BO-Persistence BO-PersistenceService Service Server Abbildung 34: Fat Client Thin Clients Thin Clients enthalten die Präsentationskomponente inklusive Controller und kommunizieren mit entfernten Business Objects auf den Applikationsservern. Präsentations Präsentations Komponente Komponente Business Business Object Object Thin Client Server BO-Manager Framework BO-Persistence BO-PersistenceService Service Abbildung 35: Thin Client Ultra Thin Clients Ultra Thin Clients übernehmen reine Darstellungsfunktionen. Controller befinden sich bereits auf einem Applikationsserver, der seinerseits mit anderen Servern kommunizieren kann. Bei Ultra Thin Client Architekturen muß eine Optimierung bezüglich der Kommunikationshäufigkeit vorgenommen werden. Andernfalls ist die Performance dieser Architektur nicht akzeptabel, da die Anzahl der Nachrichtenpakete zwischen View und Controller insbesondere bei zusammengesetzten Präsentationskomponenten stark ansteigt (siehe Abbildung). © GDV 1999 69 Die Systemarchitektur der VAA Server Das objektorientierte technische Referenzmodell View View View View Controller Controller Controller Controller BO BO BO BO UltraThin Client BO-Manager - Framework Abbildung 36: Ultra Thin Client Die Systemarchitektur der VAA ist flexibel und ermöglicht alle diese Szenarien. Damit eine Verteilung möglich wird, wird CORBA als Kommunikationskanal genutzt. Es macht jedoch Sinn, nicht direkt die Objekte mit Hilfe von CORBA IDL zu verteilen, sondern ihre Funktionalität vorher in Form von Wrappern oder Smart Proxies zu kapseln. III.5. Kopplung von Systemen Die bisher definierten Interaktionsmechanismen zwischen Business Objects beziehungsweise Komponenten betrachteten die Kopplung unter dem Gesichtspunkt einer einheitlichen Systemarchitektur für alle Komponenten und Business Objects. Im allgemeinen ist diese Voraussetzung aber nicht gegeben. Neben bereits bestehenden Legacy-Anwendungen, die eingebunden werden müssen, sind auch kommerzielle Systeme mit abweichender Systemarchitektur zu berücksichtigen. Selbst wenn eine vollständige Kompatibilität gegeben ist, kann es wünschenswert sein, Business Objects und Komponenten unterschiedlicher Systeme voneinander so weit wie möglich zu entkoppeln, um Anpassungen bei Änderungen oder bei Systemwechsel zu minimieren. In vielen Fällen stellt ein anzubindendes System Informationen oder Funktionalität nicht in der gewünschten Form zur Verfügung, die erforderlichen Anpassungen möchte man jedoch in keinem der beiden Systeme vornehmen, sondern in einer getrennten „Koppelungsschicht“. Über die Definition von Interaktionsmechanismen auf Komponenten- und Business Object - Ebene hinaus sind also Festlegungen für die Koppelung von Systemen notwendig. Dabei müssen zwei unterschiedliche Aspekte betrachtet werden: 70 Entkoppelung und Anpassung von Funktionalität Durch Entkopplung von Systemen sollen Anpassungskosten minimiert werden, die Anpassung der Funktionalitäten soll gleichzeitig so erfolgen, daß keine oder nur geringe Eingriffe in die Systeme selbst notwendig sind. © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA Anpassungen der Systemarchitektur bzw. technischen Architektur Systeme auf Basis einer anderen System- oder technischen Architektur müssen durch geeignete Adaptoren an die VAA-Architektur angepasst werden. III.5.1. Entkoppelung und Anpassung von Funktionalität In der objektorientierten Literatur [x, xv, xvi] finden sich eine Reihe von Entwurfsmustern und Verfahren zur Entkopplung von Teilmodellen bzw. Komponenten mit unterschiedlichen Schwerpunkten. Die für die Koppelung voneinander unabhängig entwickelter Systeme geeignetsten Muster sind: Objekt-Adapter Fassaden Objekt-Adapter stellen die Funktionalität eines Objekts des Fremdsystems in anderer oder erweiterter Form dar. Der Adapter ist in der Lage, Methodennamen und Parameter zu transformieren und enthält gegebenenfalls auch funktionale Erweiterungen, die das Objekt selbst nicht bietet. Der Objekt-Adapter hält eine Referenz des fremden Objektes, ist aber selbst im Fremdsystem nicht bekannt. Für Schnittstellen, die in einem Fremdsystem durch einfache Objekte repräsentiert werden, ist ein Objektadapter das geeignete Entwurfsmuster. Er erlaubt Anpassungen und Erweiterungen an der Schnittstelle ohne daß das Fremdsystem angepaßt werden muß. Gleichzeitig kapselt er alle schnittstellenspezifischen Besonderheiten. Fassaden sind Objekte, die die extern benötigte Funktionalität eines Objektnetzes in einem einzigen Schnittstellenobjekt zusammenfassen. Die Fassade sorgt für die Navigation durch das Objektnetz, faßt Methodenaufrufe zusammen und sorgt gegebenenfalls dafür, daß Konsistenzbedingungen innerhalb des Objektnetzes eingehalten werden. Fassaden sind im Vergleich zu Objekt-Adaptern in der Lage, auch komplexe Schnittstellen zu kapseln und funktionell anzupassen und können grundsätzlich auf beiden Seiten gekoppelter Systeme eingesetzt werden. III.5.2. Anpassungen der System- bzw. technischen Architektur Objekt-Adapter und Fassaden können nicht nur die fachliche Funktionalität eines Fremdsystems integrieren, sondern sind auch dazu geeignet, Systemarchitekturen bzw. die zugehörigen Frameworks aneinander anzupassen. So können durch Ableitung der Fassaden und Adapter von den Basisklassen des Frameworks „fremde“ Business Objects so behandelt werden, als gehören sie zum eigenen System. Dienste des Frameworks zum Erzeugen oder Suchen von Business-Objekten können ebenfalls durch entsprechende Adapter auf die Dienste des Fremdsystems angepasst werden (siehe Abbildung 37). Die Systemarchitektur der VAA bietet gerade für diese Aufgaben eine gute Ausgangsbasis: auf ihrer Grundlage ist der Entwurf eines frameworkunabhängigen Schnittstellenmodells zur Anpassung unterschiedlicher Systeme möglich. © GDV 1999 71 Die Systemarchitektur der VAA vaaBO Das objektorientierte technische Referenzmodell vaaBOManager xxBO xxBOFactory Annahme: das Partnersystem verfügt über eine Factory für alle BO vaaPartnerMgr (Objekt-Adapter) xxPartner vaaPartner (Fassade) xxPartnerRolle Abbildung 37: Beispiel einer Systemanbindung durch Fassaden und Adapter Der Aufwand für die Realisierung von Schnittstellen mittels Adaptern und Fassaden hängt deshalb hauptsächlich von der Kompatibilität der technischen Architektur ab. CORBA-basierte Systeme CORBA-basierte Fremdsysteme oder Systeme, die über CORBA-Schnittstellen verfügen, bieten die einfachsten Integrationsmöglichkeiten. Im wesentlichen müssen die höheren Dienste und Strukturen der Systemarchitektur auf Basis der jeweils verwendeten Frameworks durch Adapter angepaßt werden. Die für die nächsten Jahre erwartete Konvergenz zwischen Enterprise JavaBeans, CORBA Beans und auch SanFrancisco wird den dafür notwendigen Aufwand weiter reduzieren, sofern eine dieser Technologien Basis der Implementierung bildet (siehe Abbildung 38). Konvergenz der Architekturen SanFrancisco ? Enterprise JavaBeans CORBA Component Model 1998 1999 2000 Abbildung 38: Konvergenz der Architekturen Transaktionsmanagement 72 © GDV 1999 Das objektorientierte technische Referenzmodell Die Systemarchitektur der VAA In vielen Fällen stellt die Kooperation unterschiedlicher Transaktionsmanager bei der Integration von Systemen ein Problem dar, weil ein übergreifender Transaktionskontext und damit ein gemeinsames Commit/Rollback - Protokoll nicht definiert ist. Oft sind auch die Antwortzeiten bei synchroner Kopplung zwischen Systemen unbefriedigend oder es können Deadlock-Situationen nicht vermieden werden. In diesen Fällen bieten sich asychrone Kopplungsverfahren an, wie sie auf Basis von Messaging Protokollen realisiert werden können. Wichtige Aspekte bei der Konzeption entsprechender Adapter sind : Definition eines Sitzungskontexts Durch die Definition eines Sitzungskontext - Objekts können Sitzungsinformationen (Benutzer, Berechtigungsschlüssel usw.) zwischen Transkationsmanagern ausgetauscht werden. Deadlock Resolution Es muß ein Verfahren definiert werden, das Deadlocks zwischen unterschiedlichen Systemen auflöst. Dispatch - Mechanismus Der Zeitpunkt des Anstosses einer Transaktion im Fremdsystem sollte auf unterschiedliche Weise definierbar sein: Über einen definierten Event-Typ Unmittelbar nach einer Transaktion Zeitgesteuert zu einer bestimmten Uhrzeit oder mit einer bestimmten Verzögerung Rückmeldungen Rückmeldungen über den Erfolg oder Mißerfolg der angestossenen Transaktion erfolgen sinnvollerweise über einen Event, dessen Empfänger der Systemadapter ist. Beispiel: Anbindung eines Legacy - Buchhaltungssystems Um beispielsweise ein Buchhaltungssystem, das als klassische Hostanwendung vorhanden ist, in die Systemarchitektur der VAA zu integrieren, wird das Buchhaltungssystem durch die Komponente „Anbindung Buchhaltung“ im System repräsentiert. Die Komponente kennt u.a. die zwei Methoden setBuchung(KontoInformation) und getBuchung(KontoInformation). Die Komponente selbst stellt einen Adapter zur Legacy-Anwendung dar und kann, je nach den technischen Möglichkeiten in unterschiedlichen Transaktionsklammern ausgeführt werden: Eine Transaktionsklammer über beide Systeme Dies setzt eine entsprechende Zusammenarbeit der verwendeten Transaktionsmanager voraus. Eine gemeinsame Transaktionsklammer nur für die Komponenten Schaden und Buchhaltung. In diesem Fall wird eine asynchrone Nachricht (transaktionsgesichert) an das Buchhaltungssytem versandt, der Erfolg der Buchung selbst ist allerdings nicht gesichert. Das Buchhaltungssystem sendet nach Bearbeitung der Buchung eine „Quittungsnachricht“ an die Komponente Buchhaltung, die diese an die Schadenkomponente weiterreicht. Die Nachricht („Event“) initiiert zum Beispiel einen Statuswechsel im zugehörigen Business Object der Schadenkomponente oder veranlasst die Erzeugung eines Wiedervorlagetermins in einer Terminkomponente. © GDV 1999 73 Die Systemarchitektur der VAA Das objektorientierte technische Referenzmodell Präsentation Präsentation Schaden Schaden Business-Objects Business-Objects Schaden Schaden Komponente Komponente Buchhaltung Buchhaltung BuchhaltungsBuchhaltungssystem system (Legacy) (Legacy) Komponente Schaden Mögliche Transaktionsklammern Abbildung 39: Beispiel für die Anbindung eines Legacy - Systems 74 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick IV. Architekturmodelle im Überblick IV.1. Einordnung Die Arbeitsgruppe „Technisches Referenzmodell“ verfolgte das Ziel, ein Architekturmodell zu gestalten, das sich an vorhandenen Standards und Lösungsansätzen orientiert. Während bei der technischen Architektur herstellerneutrale Standards existieren, beginnen sich diese bezüglich der Systemarchitektur erst langsam zu formieren (vgl. CORBA-Beans). Die Nachfrage nach Architekturen und Frameworks für kommerzielle, verteilte Anwendungen stieg in den letzten Jahren allerdings stark an. Dies ist vor allem darauf zurückzuführen, daß der Bedarf an Internet/Intranet-Anwendungen mit Anbindung an die unternehmensweite DV stark gestiegen ist. Aus diesem Grund entstanden eine Reihe konkurrierender Frameworks und Architekturen, die alle das Ziel verfolgen, die Realisierung unternehmensweiter, verteilter Geschäftsanwendungen zu vereinfachen. Die Arbeitsgruppe wählte für die Analyse vorhandener Systemarchitekturen drei ihrer Ansicht nach typische Vertreter aus: Die OMG - Vorschläge zur Business Object Architecture (BOCA) IBM´s San Francisco Framework Sun´s Enterprise Java Beans (EJB) Für die Gestaltung der VAA-Systemarchitektur wurden Definitionen, Konzepte und Entwurfsmuster dieser Architekturen analysiert und miteinander verglichen. Dabei zeigte sich, daß auf Ebene der grundlegenden Definitionen von Business Objects oder Komponenten eine weitgehende Übereinstimmung besteht. Abweichungen gibt es natürlich bei der konkreten Gestaltung der Interfaces, Dienste und Frameworks, aber auch beim Umfang an bereitgestellter Funktionalität. Während die OMG-Vorschläge ein allgemeines Metamodell für Business Objects und BusinessKomponenten definieren (aufbauend auf der technischen Architektur von CORBA), geht SanFrancisco einen Schritt weiter: das Framework enthält bereits eine Reihe Business Objects, die fachliche Funktionalität abbilden (z.B. Account Management). Da San Francisco derzeit die CORBAServices nicht nutzt, sind alternative Dienste und Kommunikationsmechanismen implementiert. Enterprise JavaBeans (EJB) dagegen beschränkt sich auf die Implementierung eines Frameworks für Business-Objects und Komponenten („Beans“) und ist „nach unten“ weitgehend kompatibel mit CORBA-Standards. Allerdings führt die EJB-Spezifikation eine Reihe neuer technischer Dienste ein, bzw. nutzt in manchen Fällen nur eine Untermenge der entsprechenden CORBA-Dienste. Alle drei Modelle lassen sich wie folgt in das Schema des technischen Referenzmodells der VAA einordnen: Business Object Architecture © GDV 1999 San Francisco Enterprise Java Beans 75 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Business Object Architecture San Francisco Fachliches Referenzmodell V ersionierbar (from LibraryP ackage) IcisB asis (from LibraryP ackage) V ersionierbarerA kteur Fachliche Komponentenmodelle Rolle 0..* S tandard P erson S tandard 0..1 * Rufnummer S tandard 0..1 anzuwendendeA nschrift 0..1 A nschrift 0..1 * anzuwendende P artner * B ankverbindung B ankverbindung0..1 0..1 V ersionierbar (from LibraryP ackage) IcisB asis (from LibraryP ackage) A ctor-Role -P attern V ersionierbarerA kteur Fachliche Komponentenmodelle Rolle 0..* S tandard P erson S tandard 0..1 * Rufnummer S tandard 0..1 JurP erson anzuwendendeA nschrift 0..1 A nschrift 0..1 * anzuwendende P artner * B ankverbindung B ankverbindung0..1 0..1 V ersionierbarerA kteur S tandard V ertragsabhaengigerP artner NatP erson Technisches Referenzmodell V ertragsabhaengigerP artner V ermittler V ermittler V ersicherungsnehmer P roduktpartner V ersicherte P erson V ersicherte P erson S onstigeP artnerrolle partn erart V ersicherungsnehmer P ostempfaenger V ersicherungsnehmer P ostempfaenger B eitragszahler B eitragszahler Business Objects und Komponenten SystemArchitektur Dienste Technische Architektur Leistungsempfaenger Leistungsempfaenger SystemArchitektur IBM San Francisco Business Objects und Komponenten Dienste Technische Dienste Technische Dienste (CORBA Services) Object Request Broker SystemArchitektur Enterprise JavaBeans Business Objects und Komponenten Dienste Technische Dienste Technisches Referenzmodell ObjektP artner S onstigeP artnerrolle partn erart Leistungsempfaenger BOCA (OMG) (CORBA Services) P roduktpartner ObjektP artner P ostempfaenger B eitragszahler anzuwendendeA nschrift 0..1 A nschrift 0..1 * anzuwendende P artner * B ankverbindung B ankverbindung0..1 0..1 NatP erson Technisches Referenzmodell ObjektP artner S onstigeP artnerrolle partn erart Fachliche Komponentenmodelle Rolle 0..* S tandard P erson S tandard 0..1 * Rufnummer JurP erson JurP erson V ertragsabhaengigerP artner P roduktpartner V ersicherte P erson IcisB asis (from LibraryP ackage) A ctor-Role -P attern 0..1 NatP erson V ermittler Fachliches Referenzmodell Fachliches Referenzmodell V ersionierbar (from LibraryP ackage) A ctor-Role -P attern Enterprise Java Beans Technische Architektur (CORBA Services) Technische Architektur Object Request Broker Object Request Broker Abbildung 40: Einordnung der betrachteten Architektur-Frameworks IV.2. OMG Vorschläge zur Business Object Architecture Innerhalb der Business Object Domain Task Force (BODTF) der OMG werden derzeit zwei Standardisierungsvorschläge zu einer Business Object Architecture bearbeitet: Die Interoperability Specification (InterOp), ein gemeinsamer Vorschlag von IBM, EDS, Iona u.a. Die Business Object Component Architecture (BOCA), ein gemeinsamer Vorschlag der gleichen Firmen, jedoch ohne IBM IV.2.1. Architekturziele und Kontext Beide Vorschläge verfolgen das Ziel, ein Metamodell für Business-Objekte zu spezifizieren. Analog zum technischen Referenzmodell der VAA geht es darum, Kategorien von Objekten, ihr grundlegendes Verhalten und Strukturvorgaben zu definieren („Systemarchitektur“) und die benötigten technischen Funktionen wie Datenspeicherung und Transaktionsmanagement auf die CORBA - Dienste und Interface-Spezifikationen abzubilden („Technische Architektur“). Mit den BODTF-Spezifikationen soll vor allem die Standardisierung von Business-Komponenten ermöglicht und der Einsatz der CORBA-Dienste für den Anwendungsentwickler vereinfacht werden. Die bisherigen Spezifikationen der OMG erlauben zu viele Freiheitsgrade in der Gestaltung von Business-Komponenten, so daß Interoperabilität auf Komponentenebene meist nur auf Basis einer einzigen Systemumgebung gewährleistet ist. Die o.a. Standardisierungsvorschläge sind nicht konkurrierend, sondern setzen unterschiedliche Schwerpunkte. BOCA konzentriert sich auf die Beschreibung von Kategorien und Verhalten von Business-Objekten mittels eines abstrakten Metamodells. Dieses Metamodell ist eine Erweiterung des CORBA-Metamodells, das CORBA-IDL und dem CORBA-Interface-Repository zugrunde liegt. Das Metamodell von BOCA ist dadurch stark orientiert am Analyse- und Design-Prozeß von Geschäftsanwendungen und spielt den Vermittler zwischen dem „anwendungsneutralen“ OOADModell von UML und dem implementierungsorientierten CORBA-Metamodell. BOCA definiert eine Component Definition Language (CDL), mit deren Hilfe Komponenten für Geschäftsanwendungen mit den Konstrukten des BOCA-Metamodells präzise beschrieben werden können. Die Interoperabilität von Komponenten, die mit CDL beschrieben sind, kann dadurch relativ zuverlässig gewährleistet werden. BOCA setzt zwar die Existenz von technischen Diensten für Datenmanagement und Transaktionsverwaltung voraus, liefert allerdings keine Beschreibungen, wie diese Dienste in das Metamodell integriert werden sollen. 76 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick Die Integration der Corba-Services in eine Systemarchitektur für Geschäftsanwendungen und das Zusammenspiel zwischen ORB-Funktionen und Business-Objekten ist der Schwerpunkt der Interoperability-Specification. InterOp vereinfacht die Verwendung bestehender CORBA-Services durch Kapselung der Implementierungsdetails in Steuerobjekten und Basisklassen. Manche Dienste wurden erweitert und es kommen neue hinzu, um den besonderen Anforderungen von Geschäftsanwendungen Rechnung zu tragen. InterOp ist weniger abstrakt wie BOCA und stärker technisch orientiert, insbesondere verfügt es nicht über eine formale Spezifikation eines Metamodells für Geschäftsobjekte. Die in InterOp definierten Kategorien von Objekten werden in Form von CORBA-Interfaces beschrieben. Sie lassen sich allerdings zumindest grundsätzlich entsprechenden Meta-Types2 in BOCA zuordnen. So entspricht das InterOp - Object BocaObject dem BOCA MetaType BocaType. InterOp und BOCA können aufgrund dieser losen Zuordnung unabhängig voneinander verwendet werden. Eine vollständige Durchgängigkeit des Entwicklungsprozesses und die Interoperabilität entsprechender Komponenten könnte durch die Umsetzung beider Standards möglich werden, wenngleich die intellektuellen Anforderungen an Systementwickler sehr hoch sind. Voraussetzung dafür ist allerdings eine breite Unterstützung der Hersteller von Entwicklungsumgebungen für diese Standards. BOCA konnte im Rahmen des Arbeitsauftrages der Projektgruppe „Technisches Referenzmodell“ aufgrund seines umfassenden Anspruchs nicht in die Analyse einbezogen werden, da fachliches und technisches Referenzmodell gleichzeitig betrachtet werden müßten. Aufgrund des vorläufigen Charakters der BOCA-Spezifikation erscheint dies zum heutigen Zeitpunkt auch nicht sinnvoll. Die folgende Übersicht befaßt sich deshalb ausschließlich mit den Inhalten der Interoperability Specification. IV.2.2. Grundmuster der Architektur IV.2.2.1. Definitionen Business System Domain (BSD) Die Interoperability Specification definiert sogenannte Business System Domains (BSD) als Lebensraum von verteilten Objekten. Eine BSD repräsentiert ein in sich konsistentes und sicheres (im Sinne von recoverable) verteiltes Objektsystem für eine bestimmte business domain (Geschäftsfeld). Ein Business-Object, das in mehreren Domains gebraucht wird, ist immer einer primären Domain zugeordnet (und ist nur dort gespeichert). Der Anschluß an andere Domains geschieht durch sog. Adaptoren, die die Interfaces innerhalb der anderen Domains darstellen. 2 Ein Meta-Type ist die formale Beschreibung der Eigenschaften aller Objekte eines bestimmten Types. © GDV 1999 77 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Personnel Adaptors Business Objects Production Scheduling Supplier Customer Abbildung 41: Interaktion von Business System Domains Im Rahmen des BSD-Konzeptes existieren für einzelne CORBA-Services Einschränkungen und neue, in CORBA bisher nicht vorhandene Konzepte bzw. Kontrollobjekte werden definiert: Name Scope Definierter Namensbereich innerhalb einer Domaine Relations Beziehungen zwischen BOs können nur innerhalb einer BSD erstellt werden. Adaptoren können allerdings Beziehungen zu BOs ihrer Domäne haben Recoverabiltiy Recoverabilty im strengen CORBA-Sinne (Tranaktions) ist nur innerhalb einer BSD definiert. Allerdings bietet die Erweiterung des Transaction-Service (s.u.) in InterOp Möglichkeiten, eine BSD-übergreifende Transaktionsverwaltung zu gewährleisten. Role Die Ausprägung eines BO je nach dem Prozeß, an dem es teilnimmt wird Role genannt Extent Der Extent ist die Menge aller Objekte eines Typs innerhalb einer BSD. Er definiert damit den Rahmen aller möglichen Queries bezüglich eines Typs. Der Extent wird durch ein einziges BO-Framework innerhalb jedes BSD verwaltet. Domain Manager Object Jedem BSD ist ein Domain Manager Object zugeordnet, das alle zentralen Aktivitäten kontrolliert Type Manager und Businesskomponenten Business-Objekten eines Typs ist ein Type Manager zugeordnet, der für Operationen wie Suchen, Erzeugen, Relationenaufbau usw. für den betroffenen Typ zuständig ist. Der Type Manager benutzt – wo möglich – die CORBA-Services, vereinfacht aber ihre Verwendung im Kontext mit BOs. Type Manager und zugehöriges BO bilden eine Businesskomponente. Business-Object und Dependent Type 78 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick InterOp unterscheidet zwischen Business-Objects und Dependent Types. Business-Objects sind charakterisiert durch die folgenden Eigenschaften: Ein BO ist identifizierbar über einen (fachlichen) Schlüssel Ein BO nimmt an Transaktionen teil Ein BO kann persistent sein Ein BO besitzt Attribute und Zustände3 Ein BO kann Beziehungen zu anderen BOs haben Ein BO verfügt über Methoden Ein BO kann Events auslösen und das Ziel von Events sein Ein BO kann Properties besitzen, die ohne Änderungen des BO-Interfaces dynamisch ergänzt werden können Ein BO kann Exceptions auslösen. Diese Exceptions werden in einer Stack-Liste verwaltet, so daß die gesamte Fehlerkette an einer definierten Stelle bearbeitet werden kann. Dependent Objects sind üblicherweise Attribute eines BO und sind nur zusammen mit dem BO persistent und transaktionsfähig. Sie werden in der Regel by value und nicht by reference in Aufrufparametern übertragen (im Gegensatz zu Business-Objects). InterOp definiert die folgenden Typen von Dependent Objects: Primitive - einfache Datentypen wie Interger, String usw. Elementary objects - Objekte, die als Instanzvariable einen Primitive Type besitzen, dessen Bedeutung durch das Elementary-Object und seine Methoden erst charakterisiert wird (z.B. Maßeinheiten) Foreign object identifier objects - Enthalten Fremdschlüssel auf andere Business- Objects Composite objects - aus einfachen Dependent Objects zusammengesetzte Dependent Objects Immutable objects - Objekte, die nicht by value, sondern by reference übertragen werden, obwohl es sich nicht um BOs handelt. Beispiele: Graphiken, Bild- und Audiodaten. Interface-Hierarchie für Business-Objekts und Type Managers 3 InterOp unterscheidet zwischen Attributen und Zuständen: Zustände sind spezielle numerische Attribute, deren Werte bestimmte Zustände des BOs charakterisieren © GDV 1999 79 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell BocaGenericDataType::BocaObject BocaTransactions::TransactionalObject BocaNotif ication::Consumer BocaNotif ication::Supplier BocaObjects::StateAccess BocaGenericDataTypes::DependentObject BocaObjects::Lif eCycleObject BocaObjects::IndependentObject BocaObjects::BusinessObject BocaObjects::TypeManager Abbildung 42: Interface Hierarchie für Business Objects und Type Managers User-Interface- und Thin Client-Support InterOp selbst liefert keine Spezifikationen für das User Interface. Es beschäftigt sich ausschließlich mit präsentationslosen Business-Objekten und ihrer Interaktion untereinander. Allerdings definiert InterOp zwei grundlegende Interaktionsmodelle für eine Thin-Client-Architektur und gibt dazu eine Grundstruktur der Interfaces an: Das Application Control Interface Das Application Control Interface ist ein client-basiertes Business-Object, das den Vermittler zwischen Präsentation und anderen Bos darstellt. Es verfügt über zwei grundsätzliche Methoden: - getValidOps, zur Ermittlung der aktuell gültigen Methoden der zugeordneten Bos – setCheckpoint, zum Setzen eines Transaktions-Checkpoints Das Command Object Das Command Object enthält die Ablauflogik und Methoden zur Aufnahme von Daten vom User Interface und zum Editieren von Daten via UI. Es wird zu Beginn der Eingaben vom Server zum Client kopiert und nach Abschluß der Eingaben per „execute“ zum Server kopiert und die Ablauflogik dort ausgeführt. IV.2.2.2. Services Eines der Hauptziele der Interoperability Specification ist die Kompatibilität von Komponenten, auch wenn diese nicht mit Hilfe des gleichen Entwicklungs-Frameworks erstellt wurden. Wie bereits im ersten Abschnitt erwähnt, reicht CORBA-Konformität allein nicht aus, da CORBA viele Konzepte, die 80 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick für die Erstellung von Business-Komponenten benötigt werden, nicht definiert. InterOp geht deshalb davon aus, das im extremsten Fall jedes Business-Object mit einem anderen Framework erstellt wurde. Lediglich der für das BO zuständige Type Manager muß zusammen mit diesem im gleichen Framework implementiert sein. BO und Type Manager bilden zusammen eine Business-Komponente. Services werden gemäß dieser Konzeption in InterOp auf zweierlei Weise definiert: Als CORBA-Interfaces für Business-Objects und Type Manager, über die Komponenten (bestehenden aus BO und Type Manager) direkt miteinander kommunizieren Als Shared Services für jene Funktionen, die nur komponentenübergreifend gestaltet werden können, wie zum Beispiel die Transaktionsverwaltung. Implementation A Customer Type Manager Customer Business Object Transactional Persistent Identity Life cycle Attributes States Relationships Implementation B Operations Notification Events Queries Introspection Exceptions Order Business Object Order Type Manager Transactional Persistent Shared Services Transaction Service Name Service Security Service Event Service Collection Service Abbildung 43: InterOp Services über verschiedene Komponenten IV.2.2.3. BO- und Type-Manager Interfaces Identity InterOp spezifiziert unterschiedliche Formen, die Identität eines Business-Objects zu definieren. Sie können alle nebeneinander in einem Anwendungssystem genutzt werden. CORBA Reference Die Standard-CORBA-Reference wird (wie in allen CORBASystemen) zum Zugriff auf die Methoden eines aktiven BOs verwendet und vom Type Manager bei der Erzeugung eines BOs zurückgegeben. Persistent ID Die Persistent ID ist der Schlüssel, der das BO innerhalb einer © GDV 1999 81 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Datenbank eindeutig identifiziert („Primärschlüssel“). Mit Hilfe der Persistent ID kann der Type Manager das BO über den zugeordneten Persistence Manager aus der Datenbank laden. Die Form der Persistence ID ist implementierungsabhängig. Um eine vollständige Transparenz des Objektzugriffs zu erreichen, empfiehlt InterOp die Erweiterung der CORBA-Reference um die Persistent ID des BOs (s.u.) BocaObjectKey Der BocaObjectKey ist die Menge der BO-Attribute, die das BO eindeutig identifizieren („Sekundärschlüssel“). Der BocaObjectKey ermöglicht es dem Type Manager über die identifizierenden Attribute ein BO zu finden. External ID Die External ID ist ein sprechender Schlüssel des Objekts, der über den Naming Service von CORBA an ein BO gebunden werden kann (siehe Abschnitt „Naming Service“, unten). Die External ID kann verwendet werden, um einen Objektschlüssel für den Anwender darzustellen. Qualified Name Der Qualified Name eines BO besteht aus einem Naming Context und dem BocaObjectKey oder der External ID. Durch den Naming Context können gleichlautende Schlüssel in unterschiedlichen Domänen genutzt werden (Beispiel: identische Vertragsnummern in allen Sparten, die Spartenzugehörigkeit wird über unterschiedliche Naming Contexts definiert - „LV/1234567“ und „KFZ/1234567“). Um Qualified Names darzustellen, erweitert InterOp den CORBA Naming Service (s.u.) Foreign Object ID Die Foreign Object ID stellt den Schlüssel eines BOs in einer anderen BSD dar. Die Umsetzung zwischen Foreign Object ID und tatsächlichem Schlüssel erfolgt durch den Adaptor (s.o.) Tabelle 8: Identity eines Business Objects (Interoperability Specification) Persistence InterOp spezifiziert keinen eigenen Persistence Service, sondern verfolgt das Prinzip der transparenten Speicherung, das heißt: Der Zugriff auf Methoden eines BOs muß unabhängig davon sein, ob sich das BO gerade im Speicher befindet oder nicht. Das Speichern eines BOs wird nicht explizit angestoßen, sondern erfolgt automatisch nach Abschluß einer Transaktion (vgl. Transaction Service, s.u.) Der transparente Zugriff auf ein BO setzt voraus, daß eine Persistent ID existiert, die einem Persistence Manager ermöglicht, ein BO bei Bedarf aus der Datenbank zu laden. InterOp spezifiziert eine Persistent ID für BOs, über die der Type Manager bei Bedarf das Objekt anfordern kann. Eine vollständige Orts-Transparenz, wie sie die CORBA-Reference von Objekten darstellt, ist damit noch nicht erreicht, sie wäre erst möglich, wenn die CORBA Reference selbst eine Persistent ID beinhalten würde. InterOp erkennt dieses Problem und schlägt eine entsprechende Erweiterung der CORBAReference vor. 82 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick Mit Ausnahme der Persistent ID - Problematik ist der Persistence Service nicht Bestandteil der InterOp - Interfaces und Spezifikationen. InterOp ist allerdings kompatibel mit dem CORBA Persistence Service und allen anderen Persistence Services, die das Transaction Service Protokoll von CORBA unterstützen. LifeCycle InterOp vereinfacht den LifeCycle - Service von CORBA und fügt neue, im BO - Kontext benötigte Funktionen hinzu. Der InterOp Life Cycle Service ist aber nach wie vor konsistent mit den CORBA Spezifikationen, da die InterOp - Funktionen innerhalb des Type Managers beziehungsweise des BOs auf die CORBA Life Cycle - Interfaces abgebildet werden können. Generell bestehen die folgenden Unterschiede zwischen den CORBA- und InterOp - Spezifikationen InterOp definiert wie CORBA create, copy, move und delete - Operationen für BOs, die Interfaces sind jedoch nicht von den CORBA Interfaces abgeleitet (im Sinne der Interface-Vererbung) Die Funktionen copy und move haben einfachere Ortsangaben (Factory selection anstatt Factory finding) Die Erzeugung von BOs erfolgt über den Type Manager, die komplexen CORBA-Factory Interfaces sind auf InterOp-Ebene unsichtbar Im wesentlichen entsprechen die Life Cycle Operationen von InterOp der CORBA-Funktionalität, wenngleich sich die Interfaces voneinander unterscheiden: Delete Die Delete-Operation wird durch das BO selbst implementiert, sie ist im BO-Interface definiert. Nach erfolgreichem Delete ist kein Zugriff auf das Objekt mehr möglich, das explizite Löschen aus dem Speicher und der Datenbank erfolgt allerdings erst beim Transaktionsende (vgl. Transaction Service). Empfänger von Events, die das gelöschte Objekt erzeugt, werden vor dem Löschen informiert (siehe „Events“: intrinsic events). Copy Die Copy-Operation wird durch das BO selbst implementiert. Copy erzeugt ein Replikat des Objektes im selben BSD (welcher allerdings aus unterschiedlichen Adressräumen bestehen kann!). Relationships werden traversiert, wobei der grundsätzliche Ablauf in InterOp definiert ist, nicht jedoch die Details der Auflösung von Beziehungen. Bei Beziehungen, deren Knoten nicht mit kopiert werden sollen, wird ein COPY-Event an alle verbundenen Objekte gesendet (siehe „Events“: intrinsic events). Event-Verbindungen zu anderen Objekten © GDV 1999 83 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell werden nicht kopiert. Move Analog Copy mit anschließendem Delete Create Das Erzeugen neuer BOs eines bestimmten Typs erfolgt durch die Create-Operation des zugehörigen Type Managers. Das Create-Interface von InterOp ist erheblich einfacher als das entsprechende CORBAInterface, da der Weg über FactoryFinder und Factory durch den Type Manager übernommen wird. Als Parameter des CreateInterfaces müssen lediglich Erzeugungsort (ein spezieller Objekttyp) und die Initialwerte der BO-Attribute (sofern notwendig) übergeben werden. Das Interface ist generisch, da für die Übergabe der Initialwerte die gleiche Struktur wie beim State Access verwendet wird (s.u.) Das copy_from_object-Interface erzeugt ein neues BOs, bei dem Initialwerte vom angegebenen Objekt übernommen werden Tabelle 9: Life Cycle Operationen der Interoperability Specification State Access Das State Access Interface dient dazu, beliebige Attribute (einschließlich Relationship-Attributen, die eine Fremdschlüsselbeziehung darstellen) eines Business-Objects zu lesen oder zu setzen. Dieses Interface muß von allen Business-Objects, kann aber auch von anderen Objekten implementiert werden. Durch die Verwendung des State Access Interfaces wird die Anzahl der Methoden eines BOs verringert, da nicht für jedes Attribut eine Zugriffsmethode definiert werden muß. Das State Access Interface beinhaltet die folgenden Methoden: Get Liefert eine Liste von Attributwerten samt ihren Namen. Eingangsparameter ist die Liste der angeforderten Attributnamen. Falls ein Attribut aus mehreren Elementen besteht, wird ein Iterator zurückgeliefert, der dazu dient, nacheinander jedes Element auszulesen. Set Setzt eine Liste von Attributen auf die übergebenen Werte. Eingangsparameter ist eine Liste von Attributen, bestehend aus dem jeweiligen Namen und Wert. Falls ein Attribut aus mehreren Elementen besteht, wird ein Iterator übergeben, der dazu dient, nacheinander jedes Element zu setzen. Tabelle 10: State Access Operationen der Interoperability Specification Events 84 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick InterOp spezifiziert eigene Interfaces zur Kommunikation zwischen Business-Objects. Das „Supplier“-Interface (für die Sender-Seite) ist nicht vom entsprechenden CORBA-Interface abgeleitet, sondern neu definiert. Für die Empfänger („Consumer“) eines Events verwendet InterOp das Consumer-Interface des CORBA Event Services. Generell ist der InterOp Event Service nicht auf CORBA eingeschränkt, sondern läßt sich auch mit anderen Event Services integrieren. Im Gegensatz zum CORBA Event Service liegt InterOp weniger Wert auf den Verteilungsmechanismus, sondern auf die Spezifikation unterschiedlicher Eventtypen und den Bedingungen für das Auftreten eines Events. InterOp unterscheidet zwischen folgenden Event-Typen: Intrinsic events werden von allen BOs ausgelöst und sind vordefiniert (siehe Tabelle). Implicit events werden ausgelöst, wenn sich Attribute oder Beziehungen von BOs ändern Programmed events sind BO-Typ-spezifische Ereignisse, die abhängig sind von fachlichen Bedingungen innerhalb der BO-Logik. Event Name Description Moved Occurs on commit of a move operation. Delivery is only on precommit or post commit (not immediate). Created Provided only by type managers when an instance of the type is created. The notice will only be issued for occurrence after and delivery pre-commit or post-commit (not immediate). Deleted* Occurs when an object is logically deleted from the business system domain. This notifies a dependent consumer that the object it is dependent upon no longer exists. This event does not apply to typebased notification requests. Polling* This is an event an implementation may choose to use. It might be issued to determine if the consumer still exists. The consumer should simply return from a Polling notice; the supplier will receive an exception if the consumer is no longer available. Committed Occurs when an object is committed by a transaction. Delivery is only on pre-commit or post commit (not immediate). RolledBack Occurs when an object is restored to its last committed state by a transaction. This event is only available for immediate delivery. Tabelle 11: Intrinsic events (Interoperability Specification) Intrinsic und implicit Events übermitteln eine standardisierte EventNotice, die ohne Kenntnis des Objekttyps des Senders verarbeitet werden kann. Bei der Registrierung von Events können vordefinierte Bedingungen unter denen ein Event auftreten bzw. wann es übermittelt werden soll, angegeben werden (siehe Tabellen unten). InterOp sieht persistente Events vor, die auch nach Ausfall des Systems erhalten bleiben. Es geht dabei in Richtung eines sicheren Message-Service, ohne jedoch näher auf die damit zusammenhängenden Fragen (wie z.B. das Löschen irrelevanter Nachrichten) einzugehen. © GDV 1999 85 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Occurrence Description Before An immediate, synchronous message is sent before an action is performed. This does not apply to intrinsic or programmed events, but only to implicit events, and it does not apply to pre-commit or post-commit delivery.. After A message is sent after the event has occurred. The notification may be immediate, pre-commit or post_commit. For operations, an after notice is issued when a normal return occurs. Failed A notice is issued if the action failed to complete, i.e., raised an exception. Tabelle 12: Bedingungen für das Auslösen von Events (Interoperability Specification) Delivery Description Immediate An immediate registration of interest produces synchronous notices. An immediate registration of interest will be discarded if the supplier or the consumer becomes unavailable, i.e., either one is deleted. Pre-commit For a pre-commit registration of interest, events of interest which have occurred to an object during a transaction are communicated during the Propagation phase. The occurrence specification is restricted to after. The messages will be delivered within the context of the transaction about to commit so their effects can be similarly committed or rolled back. Only those events that occurred within the context of a transaction and after interest was registered will be communicated. Post-commit For a post-commit registration of interest, events of interest which have occurred to an object during a transaction are communicated after the transaction commits. The occurrence specification is restricted to after. The messages will be delivered within the context of a new, top-level transaction. Only those events that occurred within the context of a transaction and after interest was registered will be communicated. Tabelle 13: Bedingungen für die Übermittlung von Events (Interoperability Specification) Relationship InterOp übernimmt nicht die komplexen Spezifikationen des CORBA-Relationship-Service (s.o), sondern beschränkt sich auf zweiwertige 1:1 – und 1:n – Beziehungen. Damit entfällt das in CORBA definierte Rollen-Objekt für die Verwaltung von Beziehungen mit n:m – Kardinalität (das in InterOp spezifizierte Role-Object hat eine andere Funktion). Sofern n:m – Beziehungen notwendig sind, können sie auf 1:n – Beziehungen abgebildet werden, indem ein explizites Rollenobjekt eingeführt wird. Dieses Vorgehen trägt der Tatsache Rechnung, daß höherwertige Beziehungen einen komplexen fachlichen Hintergrund besitzen, der ohnehin zur Einführung fachlich motivierter Rollenobjekte führt (Beispiel: die Rollen in Partner – Beziehungen), wogegen bei einfachen 1:n – Beziehungen ein zusätzliches Rollenobjekt lediglich Implementierungs-Oberhead bedeutet. In InterOp ist jeder Beziehung ein Relationshipname zugeordnet. In den Business-Object – Methoden für die Verwaltung von Beziehungen wird dieser Name an definierten Stellen in den Methodennamen eingefügt (analog der Property-„Reflection“ – Technik bei JavaBeans). Beispiele: get_Vertrag_sequence liefert die Menge aller Vertrag-Objekte des aktuellen Business-Objects add_to_Vertrag fügt einen neuen Vertrag in die Beziehung ein remove_from_Vertrag entfernt den angegebenen Vertrag aus der Beziehung. Beziehungen werden dargestellt durch die PersistentID des Beziehungspartners und einem Tuple von Attributen, die zu diesem Partner gehören. Die wichtigsten Attribute eines Beziehungspartners können 86 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick damit direkt in der Beziehung angegeben werden, das heißt ein Zugriff auf das Objekt selbst ist nicht notwendig. Nicht spezifiziert ist allerdings, was bei der Änderung von Attributen geschieht, InterOp geht offenbar davon aus, daß nur identifizierende Schlüssel (die sich während der Lebenszeit eines Objektes nicht ändern) als Attribute in die Beziehung eingehen. Sollte dies nicht gewährleistet sein, so muß das Partner-Objekt bei Attribut-Änderungen benachrichtigt werden (siehe Events: implicitevents). Der Type Manager eines Business-Objekts enthält die Methode get_related_objects, die alle Partner der angegebenen Beziehung zurückliefert. Dabei kann eine Sortierreihenfolge auf Basis der in der Beziehung definierten Attribute angegeben werden. Query Der Type Manager stellt Interfaces für Queries von Business-Objekten seines Typs oder abgeleiteten Typen zur Verfügung. query Liefert einen Iterator zurück, mit dessen Hilfe über die Ergebnismenge iteriert werden kann (ein Iterator entspricht in etwa einem Datenbank-Cursor in relationalen Datenbanken). Neben den Objektreferenzen enthält die Ergebnismenge auch Attribute der gefundenen Objekte, sofern diese in der Query angegeben wurden. Die Methode query akzeptiert einen Query-String in einer in InterOp definierten Syntax. Für den zurückgelieferten Iterator ist ein analoges query-Interface definiert, damit die Ergebnismenge weiter eingeschränkt werden kann. extent_iterator Liefert einen Iterator über die Menge aller Business-Objekte dieses Typs und seiner abgeleiteten Typen zurück. Tabelle 14: Interfaces des Query Service der Interoperability Specification InterOp spezifiziert nicht, auf welche Weise ein Type Manager Queries ausführt, dies liegt in der Verantwortung des Implementierungs-Frameworks. Da Queries immer auf einen Type beschränkt sind, ist eine solche Spezifikation auch nicht notwendig: Type Manager und zugehörige BusinessObjekte müssen immer auf Basis des gleichen Frameworks implementiert werden. Introspection Das Introspection Interface wird vom Type Manager eines Business-Objects implementiert. Es dient dazu, allgemeine Informationen über die BOs dieses Types zu erhalten. InterOp definiert die folgenden Methoden im Introspection Interface: get_class © GDV 1999 Liefert eine Referenz auf das „Meta-Object“ des Business-Objects. Die Struktur und Methoden dieses Meta-Objects wird von InterOp nicht näher spezifiziert. InterOp gibt lediglich Mindestanforderungen 87 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell an. Danach muß das Meta-Object zumindest Informationen über Attribute, Relationships und Events des zugehörigen BO-Typs liefern. get_key_class Liefert eine Referenz auf das „Meta-Object“ des Schlüssels eines BOs des zugehörigen Typs (vgl. BocaObjectKey) get_key_elements Liefert eine Liste der Attributnamen, die im Schlüssel eines BOs des zugehörigen Typs auftreten (vgl. BocaObjectKey). Tabelle 15: Introspection Interface (Interoperability Specification) Exception InterOp spezifiziert eine von CORBA-Exceptions abweichende Fehlerbehandlung. Die wesentlichen Unterschiede sind: InterOp-Exceptions sind nicht einzelne Fehlernachrichten, sondern können aus einer Liste von „Error-Objects“ bestehen. Damit kann die gesamte Historie einer Fehlersituation protokolliert werden (Stack von Fehlermeldungen) Im „Error-Object“ können weitere Informationen mitgeliefert werden: das Objekt, das den Fehler auslöste, die „Exception Category“, sowie eine Erläuterung des Fehlers InterOp definiert die folgenden „Exception Categories“: Category Description Environment These exceptions are raised by the language. Normal Exceptions which have not been explicitly specified otherwise. Data Entry Exceptions detected in data entry. Rule Violation Exceptions raised by invariants. Integrity Exception raised when the integrity of the model has been compromised. Service Exception raised when a CORBA service fails or is unavailable. Tabelle 16: Exception Categories (Interoperability Specification) IV.2.2.4. Shared Services Transaction Service (und Dispatch Service) Der InterOp Transaction Service erweitert den CORBA-Transactions Service vor allem in Richtung der Transaktionssicherheit über BSD-Grenzen hinweg. InterOp geht nämlich davon aus, daß pro BSD ein in der Regel unterschiedlicher Transaktionsservice implementiert ist, der auch nicht in jeder Hinsicht CORBA-konform sein muß. Deshalb favorisiert InterOp eine eher lose Koppelung zwischen 88 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick BSDs und definiert lediglich Minimalanforderungen bezüglich verteilter Transaktionen zwischen BSDs. Darüber hinaus definiert InterOp eine Reihe von Mechanismen, die für das Zusammenspiel von BOs innerhalb einer BSD und einer Transaktion notwendig sind. Deshalb ist der Transaction Service als Shared Service konzipiert, d.h. BOs teilen sich einen Transaktionskontext. Analog zum CORBAService, muß der „Benutzer“ eines BO nur Anfang und Ende einer Transaktion spezifizieren, den Rest erledigt die Logik innerhalb des BO (die eigentliche Speicherung) bzw. der CORBA-Service. Natürlich sind auch verschachtelte Transaktionen möglich. Folgende zusätzliche Eigenschaften des CORBA Transaction Service werden in InterOp spezifiziert: Session InterOp spezifiziert ein Session Object mit frei wählbaren Attributen (named values), das dazu dienen soll, Transaktionsinformationen zwischen BSDs (und unterschiedlichen Implementierungen eines Transaktionsframeworks) auszutauschen. Deadlock detection and Definiert einen Mechanismus, um dead locks zwischen gekoppelten Tx (in verschiedenen BSDs bzw. Tx-Frameworks) resolution aufzulösen BOCA-Exceptions BOCA – Fehlermeldungen als Erweiterung der CORBAExceptions Weitere Phasen Neben Prepare und Commit spezifiziert InterOp noch die Phasen Propagate, Validate und Synchronize, um die Möglichkeiten der automatischen Konsolidierung von Informationen zwischen Bos zu erweitern (siehe Bild unten) Dispatch Service Der Dispatch Service dient zum Anstoß von Folgetransaktionen nach Abschluß der aktuellen Transaktion. Damit ist zum Beispiel die asychnrone Koppelung unterschiedlicher BSDs möglich. Der Anstoß der Folgetransaktion kann auf unterschiedliche Weise erfolgen: Unmittelbar nach dem Commit (post_commit_request) Nach einer definierten Zeitspanne (time_delay_request) Durch ein CORBA-Event (event_delivery_request) Während die ersten beiden Möglichkeiten voraussetzen, daß das Zielobjekt des Folgetransaktionsaufrufs das DispatchTarget Interface von InterOp implementiert, kann mit der dritten Möglichkeit jedes beliebige CORBA-Objekt benachrichtigt werden. Tabelle 17: Eigenschaften des Transaction Service (Interoperability Specification) © GDV 1999 89 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell 1: commit() Steuerlogik der Anwendung (Prozeß) ideEffects () ag 2: 3a: checkS ate Transaction Manager (CORBA) p pro ate( alid 4: v () ) 5: validateInternalStateBeforeUpdate() BO 3b: BO (im Tx-Context registriert) c he c kI nte niz r na lRu les e () ro ch yn s 6: () 7: storeState() Storage Manager Abbildung 44: Phasen des Commits im Transaction-Service (Interoperability Specification) Naming Service Der InterOp Naming Service ist eine Erweiterung des CORBA Naming Service. Zusätzliche Methoden im CosNaming - Interface von CORBA erlauben die Zuordnung von sogenannten BocaQualifiedNames zu Business-Objekten. Ein BocaQualifiedName ist ein String bestehend aus einem NamingContext- und einem Key-Teil. Der NamingContext ist eine vereinfachte Form des CORBA-NamingContexts. Der Key-Teil identifiziert das BO innerhalb des Naming Contexts eindeutig. InterOp erlaubt zwei unterschiedliche Ausprägungen dieses Keys: Als BocaObjectKey Als External Identifier Der BocaObjectKey ist ein Dependent Object jedes BO und repräsentiert den eindeutigen Schlüssel des Business Objekts. Der BocaObjectKey ist vergleichbar mit den Schlüsselfeldern in einer relationalen Datenbank, die ein bestimmtes Tupel eindeutig identifizieren. Diese Schlüsselfelder werden in Form eines zusammengesetzten Strings als BocaObjectKey vom jeweiligen BO geliefert. Ein external identifier ist ein über den CORBA-Name Service frei definierbarer Schlüssel des BO, der innerhalb eines bestimmten Kontextes gültig ist und auch nur dort verwendet werden darf. Beispiel: eine virtuelle Vertragsnummer, die mittels eines Nummerngenerators erzeugt wird, die aber nicht identisch ist mit dem identifizierenden Schlüssel des Vertrages im Vertragsbestand. 90 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick Security Service InterOp spezifiziert keine über CORBA hinausgehenden Security - Eigenschaften und Funktionen von Business-Objekten. Event Service InterOp spezifiziert keinen vollständigen Event Service, sondern lediglich die Event-Interfaces, die Business Objects implementieren müssen, sowie Typen von Events (s.o.). Für die Verteilung der Events zwischen Sender und Empfänger bestehen keine expliziten Vorgaben, für diesen Zweck ist aber der Event Channel Mechanismus von CORBA einsetzbar. Collection Service InterOp spezifiziert keinen Collection Service, erwähnt aber, daß unter Umständen die Verwaltung von Collections von BOs zu einem späteren Zeitpunkt standardisiert werden müßte. IV.2.3. Wertung Die Interoperability Specification enthält eine Reihe von Definitionen und Entwurfsmustern, die für die Entwicklung eines Referenzmodells nützlich sind. Insbesondere werden Struktur und Eigenschaften von Business Objekten und übergreifenden Diensten zum ersten Mal konsistent und übergreifenden beschrieben. Dennoch wird die Interoperability Specification aufgrund des Erfolg des JavaBeans - Komponentenmodells in dieser Form nicht als Standard verabschiedet werden. Die in 1999 erwarteten CORBA Component Modell - Spezifikationen werden sich an JavaBeans bzw. Enterprise JavaBeans orientieren. Das CORBA Component Modell macht die meisten der oben angeführten Spezifikationen überflüssig. Allerdings fehlen im Component Modell eine Reihe von Spezifikationen, die in der Interoperability Specification berücksichtigt wurden, namentlich die Adaption von Fremdsystemen, die standardisierte Behandlung von Vor- und Nachbedingungen bei Methodenaufrufen, sowie die Detaillierung von Phasen beim Abschluß einer Transaktion. Sofern diese Aspekte eines verteilten, objektorientierten Systems beim Entwurf einer Anwendungsarchitektur eine Rolle spielen, bietet die Interoperability Specification so etwas wie ein Nachschlagewerk für Lösungsmuster. In diesem Sinne wurde sie auch bei der Definition der VAA-Anwendungsarchitektur benutzt. IV.3. IBM San Francisco IV.3.1. Architekturziele und Kontext IBM verfolgt mit San Francisco das strategische Ziel, Softwarehäusern eine Basis zur Entwicklung von Geschäftsanwendungen zu geben. Die erstellten Softwarekomponenten bilden sogenannte Tower, die sich auf Basisfunktionalität von San Francisco (Foundation Layer mit Persistenz, Transaktionen usw.) und auf von IBM entwickelten Kernkomponenten (Common Business Objects, z.B. BusinessPartner) und Kernprozessen (Core Business Processes, z.B. Buchhaltung, Einkauf, Verkauf, Lagerverwaltung) abstützen. © GDV 1999 91 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Abbildung 45: Ausblick auf die "Multi Layer Architecture" von San Francisco Durch die vorgefertigten Komponenten sollen sich bis zu 40% des Aufwands zur Erstellung eines Anwendungstowers einsparen lassen. San Francisco ist bis auf die Datenbankschicht in Java implementiert und definiert keine Schnittstellen zu anderen Systemen, die über den Umfang von Java RMI hinausgehen. Der Foundation Layer stellt zusätzliche Basisklassen wie Country, Currency, Company, Date, Time zur Verfügung und definiert ein Framework zur Erstellung eigener persistenter Komponenten in den Towern. San Francisco definiert zusätzlich eine detaillierte Vorgehensweise bei der Erstellung von Anwendungskomponenten. Diese Vorgehensweise erstreckt sich von der Modellierung in Rational Rose bis zur Nutzung von vorgefertigten Komponenten und Design Patterns in Verbindung mit einem detaillierten Programmiermodell. IV.3.2. Grundmuster der Architektur 92 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick Abbildung 46: Die San Francisco Architektur Die San Francisco – Architektur besteht aus drei Schichten wiederverwendbarer Systemkomponenten: Die unterste Schicht (Foundation Layer) enthält alle Superklassen von Objekten, Interfaces und Protokolle, die das grundlegende technische Verhalten aller Objekte definieren. Der Foundation Layer stellt Infrastruktur und Dienste zur Kapselung der technischen Details des Transaktionsmanagements, der Verteilung, Persistenz und anderer Konzepte zur Verfügung. Damit kann Komplexität einer auf mehreren Plattformen im Netzwerk verteilten Anwendung für den Anwendungsentwickler reduziert werden. Common Business Objects (CBO) stehen als Basisklassen für die höherliegenden Schichten zur Verfügung und stellen Kernfunktionalität wie Business Partner zur Verfügung. Die CBOs stehen in jeder San Francisco - Anwendung in gleicher Weise zur Verfügung. Sie können für die Kommunikation zwischen Anwendungen dienen, bei denen komplexe Informationen ausgetauscht werden müssen. Die Objekte sind im allgemeinen recht abstrakt und zur Laufzeit parametrisierbar. Dabei kommen Designpatterns wie Property Container und Chain of Responsibility zur Anwendung. Die Core Business Processes bilden Kerngeschäftsprozesse ab, die in unterschiedlichen Unternehmen einsetzbar sind. Business Partner Applications sind Anwendungen auf Basis der Core Business Processes, die von Softwarehäusern erstellt werden. Dies könnten im Rahmen von VAA zum Beispiel Partnersystem, Vertragssystem oder Schadensystem sein. San Francisco ist durchweg in Java implementiert und damit prinzipiell portabel auf eine Vielzahl von Plattformen (momentan wird Windows NT, AIX, AS/400, HP-UX und Solaris unterstützt). Damit können die Anwendungsentwickler zusätzlich zu den Funktionen des San Francisco - Frameworks auch den gesamten Vorrat an Java-Bibliotheken und Werkzeugen nutzen (z.B. visuelle GUI-Builder). IV.3.2.1. Foundation Layer Der Foundation Layer stellt die Infrastruktur für die Common Business Objects und Core Business Processes bereit und definiert eine konsistente Programmierschnittstelle und Struktur für die Anwendung. Die Infrastruktur besteht dabei aus Foundation Object Model Classes und Utilities. Zusätzlich steht eine Vielzahl von Kernfunktionen (Kernel Services) zur Realisierung von mission critical verteilten Anwendungen. Diese Kernel Services werden in der Regel vor dem Anwendungsentwickler verborgen und werden nur indirekt von den Object Model Interfaces benutzt. Die Kernel Services umfassen Transaktionsdienste, Collections, Kommunikation zwischen verteilten Objekten und Persistenzverwaltung und basieren konzeptionell auf den Servicedefinitionen der OMG. San Francisco enthält allerdings keinen CORBA kompatiblen Object Request Broker und kombiniert die von der OMG definierten Funktionen mit den in Java bereitgestellten Funktionen. Die OMG Definitionen werden vereinfacht und wenn nötig ergänzt. Z.B. wird nur optimistisches Locking unterstützt. Neue Entwicklungen im Bereich der Industriestandards wie die Konvergenzbemühungen im Bereich CORBA, Java, IIOP und RMI sollen in San Francisco einfließen. Basis der Kommunikationsinfrastruktur ist Javas Remote Method Invocation (RMI), das im Bereich des Serverprocess-Management erweitert wurde. Für Kernel Services wie Lizensierung und Verschlüsselung will man sich auf Produkte von Drittanbietern stützen. Foundation Object Model Classes © GDV 1999 93 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Die Foundation Object Model Classes stellen die Basisstruktur für alle San Francisco Objekte und Frameworks dar und definieren das gesamte Applikationsmodell. Diese Klassen enthalten sowohl konkrete Implementationen kompletter Methoden als auch abstrakte Schnittstellendefinitionen, die vom Anwendungsentwickler noch gefüllt werden müssen. Diese abstrakten Schnittstellendefinitionen erzwingen die Einhaltung bestimmter Nachrichtenprotokolle zwischen Objekten und Diensten, auf denen das San Francisco Framework aufbaut.. Das konsistente Object Model dieser Klassen soll für eine großen Bereich verteilter Anwendungen geeignet sein und eigene Architekturüberlegungen auf dieser technischen Ebene überflüssig machen. Die wichtigsten Konzepte sind dabei: Command – Eine Gruppe von Operationen auf einem Objekt oder einer Menge von Objekten. Commands kapseln Anwendungslogik, die nicht direkt einem Business Object zugeordnet werden kann. Commands können dabei zwischen Clients und Servern transparent verteilt werden. Entity – Entities sind unabhängige Objekte (Personen, Dinge) die im Verlauf eines Geschäftsprozesses benutzt werden. Entitäten enthalten oft die Kerndaten einer Applikation und können persistent sein, d.h. sie sind mit einem Speichermechanismus auf einem Server verbunden, oder auch transient. Entitäten können auch temporär auf den Client geladen werden. Die Methoden einer Entität beschäftigen sich generell mit dem Lesen und Schreiben von Attributen oder Geschäftslogik, die sich nur auf dieses eine Objekt bezieht. Die Unterklasse DynamicEntity der Klasse Entity ermöglicht die dynamische Zuordnung von Attributen und ihren Werten zu einer Entity zur Laufzeit und ermöglicht so große Flexibilität bei der Parametrisierung von Entitäten für spezielle Anforderungen. Dependent – Sogenannte Dependents sind abhängige Objekte mit erheblich weniger Systemoverhead als Entitäten. Sie können nicht außerhalb von Entitäten existieren und nicht ohne sie an Transaktionen teilnehmen. Dependents enthalten zusätzliche Detailinformationen über die sie umfassenden Entitäten. Collection/Iterator – gruppieren Mengen von Objekten und stellen Methoden zur Aufzählung der Objekte einer Menge zur Verfügung. Collections können auch so strukturiert sein, daß die einzelnen Elemente über einen Schlüssel identifiziert werden. Zugriff auf die Elemente wird durch Iteratoren realisiert, die Methoden bereitstellen um durch die Menge zu navigieren. Factory – Factories verwalten die Objektinstanzen während der Ausführungszeit innerhalb des Frameworks. Die Factory stellt die zur Verwaltung von Business Objects nötigen Funktionen zur Verfügung. Dies umfaßt insbesondere das Erzeugen und Löschen von Entitäten, Commands und Collections und definiert eine Abstraktionsstufe für den Persistence Layer. Utilities Die vom Foundation Layer bereitgestellten Utilities stellen Dienste zur Verfügung, die von den meisten Anwendungen benötigt werden. Im Unterschied zu den Foundation Object Model Classes sind sie vollständig ausprogrammiert und sollten direkt eingesetzt und nicht erweitert oder modifiziert werden. Unterstützt wird die Definition und Verwaltung von Anwendungssicherheit und Informationen über die Systemkonfiguration. Mittels Conflict Control kann der Systemadministrator verhindern, daß Commands zur Ausführung gelangen, die nicht gleichzeitig mit anderen ablaufen dürfen. Weiterhin können Audit Trails eine Historie der Zugriffe der Anwender auf Objekte protokollieren. 94 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick Viele dieser Funktionen sind relative dünne Schichten oberhalb bestehender Betriebssystemfunktionalität, die aber von San Francisco in integrierter Form und mit einheitlicher Schnittstelle angeboten werden. IV.3.2.2. Common Business Objects Layer (CBOs) Auch der nächste San Francisco Layer zerfällt in mehrere unabhängige Frameworks von Applikationsdiensten und daneben einer Sammlung von Common Business Objects, die auf dieser Ebene noch unabhängig vor der speziellen Anwendungsdomäne sind. Business Objects sind dabei die Entitäten, die von den Fachleuten einer Anwendungsdomäne bei der Beschreibung eines fachlichen Geschäftsvorfalls benutzt werden. Die Applikationsdienste dienen eher als Ansatz zur Automatisierung von Prozessen. Abbildung 47: Kategorien von Common Business Objects (CBO-Layer) Als Beispiel für ein solches übergreifendes Business Object kann der Business Partner dienen. Er kapselt die Charakteristika eines Kunden oder Lieferanten wie z.B. Währung, Beschreibung, Sprachen. Das Business Object Address definiert eine generische Adresse zur Beschreibung eines Orts inklusive postalischer Information. Vom Typ Appliaktionsdienst dagegen ist z.B. die Definition der Klasse Decimal, die Funktionen für Rundung und Ausgabeformatierung enthält. Viele dieser Common Business Objects enthalten einen allgemeinen Teil, dessen Grundstruktur und Verhalten allen Applikationsdomänen gemeinsam ist und einen speziell Teil, der spezifische Funktionalität für eine ganz konkrete Anwendung umfaßt. Während zum Beispiel die Teile eines Business Partners in Verbindung mit Währungen, Ländern, Sprachen und Adressen allgemein sind, sind Rollen wie „Beitragszahler“ oder „Geschädigter“ spezifisch für die Versicherungsbranche. IV.3.2.3. Core Business Processes Layer Der oberste Layer umfaßt die zentralen Kernprozesse einer Geschäftanwendung. Hierbei handelt es sich aber nicht um fertige Realisierungen, sondern mehr um die Definition von Basisschnittstellen, die im konkreten Fall mit Leben versehen werden müssen. Die mitgelieferten Implementationen tun zwar irgendetwas, können aber nur als Referenz dienen. Die Erweiterungspunkte sind allerdings klar definiert und so können unterschiedliche Implementationen eines Kernprozesses ohne Änderung der eigentlichen Anwendung verwendet werden. © GDV 1999 95 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Abbildung 48: Kern-Geschäftsprozesse in San Francisco Die folgenden Applikationsdomänen sind in den anfänglichen Designphasen von San Francisco identifiziert worden und stehen momentan in unterschiedlichem Detaillierungsgrad zur Verfügung: Business financials (Eingangs-, Ausgangskonten und allgemeine Buchhaltung) Order Management (Sales Orders und Purchase Orders) Warehouse Management. Die obige Abbildung gibt einen groben Überblick der Frameworkstruktur auf dieser Ebene. Die Eingangs/Ausgangskontenverwaltung enthält die Strukturen und das Standardverhalten für das Führen von Eingangs-/Ausgangskonten. Unterstützt werden Geschäftsfunktionen wie Einzahlungen und Auszahlungen, sowie Überweisungen zwischen internen Konten oder zu Konten von Geschäftspartnern. Allgemeine Buchhaltung (General Ledger) umfaßt die Struktur und das allgemeine Verhalten für die Konten einer allgemeinen Buchhaltung ein Firma oder einer ganzen Hierarchie von Firmen (Company, Enterprise). Beispiele für Geschäftsprozesse wären die Unterstützung von Journalen und Abschlüssen. Verkauf (Sales Order Management) umfaßt die Struktur und das allgemeine Verhalten im Zusammenhang mit der Anlage und Verwaltung von Angeboten und Bestellungen. Unterstützt werden Geschäftsprozesse wie die Preis- und Rabattermittlung und die Erstellung von Verträgen und ihre Zuordnung zu Kunden. Einkauf (Purchase Order Management) umfaßt die Struktur und das allgemeine Verhalten für im Zusammenhang mit der Anlage und Verwaltung von Bestellungen und den zugrundeliegenden Verträgen in ihrem gesamten Lebenszyklus. Bestellwesen (Order Management) umfaßt die Struktur und das gemeinsame Verhalten der obigen Frameworks für Einkauf und Verkauf. Hierzu gehören z.B. Definitionen für den Austausch von Daten mit anderen Unternehmen oder Anwendungen. Daten können vor der Verarbeitung in einem Fremdsystem selektiert und normalisiert werden. Lagerverwaltung (Warehouse Management) umfaßt die Struktur und das allgemeine Verhalten für die logistischen Aufgaben eines Lagers. Beispiele für seine Funktionen wären z.B. das Verschieben von Lagerteilen zwischen einzelnen Lagern und Unterstützung für die Stücklistenverwaltung. Die Lagerverwaltung definiert auch das Business Object Product. 96 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick IV.3.3. Wertung Der Einsatz von San Francisco impliziert momentan eine starke Bindung an IBM und das Framework im speziellen. Grund dafür ist die durchgehende Konzeption von San Francisco von Modellierung bis zum Laufzeitsystem inklusive unterstützten Betriebssystemen und Datenbanken. Für viele Dinge mußten in San Francisco ad hoc - Lösungen gefunden werden, die jetzt mit neuen Standards aus dem Java Bereich kollidieren. IBM bietet selbst mit dem Component Broker ein Produkt an, das sich zumindest in Teilen vom Funktionsumfang her mit San Francisco überschneidet. Component Broker löst z.B. das Persistenzproblem und unterstützt durch seine CORBA-Architektur auch Fremdsysteme. IBM will sich aber mit San Francisco in Richtung Enterprise JavaBeans entwickeln. Problematisch ist momentan die Überschneidung mit neuen Entwicklungen im Java-Bereich. JDBC wird noch nicht unterstützt und das neue Komponentenmodell Enterprise Java Beans konnte bei der Konzeption von San Francisco noch keine Berücksichtigung finden. San Francisco enthält z.B. eine umfangreichen und komplexen Persistence Service zur Abbildung persistenter Klassen auf relationale Datenbanktabellen in DB2 oder Oracle, der sich mit dem Einsatz von EJB-Containern kaum vereinbaren läßt. Die grundsätzliche Unterscheidung von Entitäten und Dependents findet sich analog zu den Vorschlägen der OMG. Hier scheint es sich um ein generell akzeptiertes Konzept zu handeln. Enterprise JavaBeans definieren ebenfalls Entity Beans. IBM San Francisco definiert eine Komponentenarchitektur nur im Rahmen des Frameworks und kann deshalb momentan nicht Basis eines VAA-Referenzmodells sein. Die Kategorisierung der Klassen einer Anwendung in unterschiedliche Schichten (Foundation, Common, Core, Tower) ist allerdings ein höherliegendes Konzept, das auch in der VAA-Referenzarchitektur berücksichtigt wird. IV.4. Enterprise JavaBeans IV.4.1. Architekturziele und Kontext Die Enterprise JavaBeans (EJB) Technologie definiert ein Modell für die Entwicklung und Benutzung von wiederverwendbaren Java Serverkomponenten. Unter einer Komponente versteht man Softwareeinheiten, die realisiert wurden und zu einem Anwendungssystem zusammengefügt werden können. Das Komponentenmodell der Java Technologie heißt JavaBeans. JavaBeans stellt wiederverwendbare Softwarekomponenten zur Verfügung. Die Enterprise JavaBeans (EJB) Architektur erweitert das JavaBeans Komponentenmodell um die Unterstützung von Serverkomponenten. Serverkomponenten werden ausschließlich auf dem Anwendungsserver bereitgestellt. EJB unterstützt die Entwicklung von verteilten Anwendungen, die auf unterschiedlichen Plattformen lauffähig sind. Die Funktionalität liegt überwiegend auf der Serverseite. Die Anwendungslogik wird auf mehrere Objekte aufgeteilt, die auf dem Anwendungsserver zur Verfügung stehen. In der Java Philosophie ist der Satz “Write once, run anywhere” einer der grundlegenden Prinzipien. Existiert eine Java Virtuelle Maschine (VM) auf einem beliebigen Betriebssystem, so kann dort eine Java Anwendung ausgeführt werden. Die Übertragung dieses Prinzips auf die Serverkomponenten ist nicht ohne weiteres möglich, da diese zusätzliche Dienste benötigen, die von der VM nicht bereitgestellt werden. Diese Dienste werden entweder vom Anwendungsserver oder von einer Infrastruktur für verteilte Objekte, wie CORBA oder DCOM, bereitgestellt. © GDV 1999 97 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Das EJB Modell für Serverkomponenten definiert eine Sammlung herstellerunabhängiger Schnittstellen für alle Java Anwendungsserver. Dadurch ist gewährleistet, daß Serverkomponenten auf allen Java-fähigen Anwendungsservern laufen. IV.4.2. Grundmuster der Architektur IV.4.2.1. Komponente Eine Komponente ist eine wiederverwendbare Softwareeinheit. Sie besteht aus gekapseltem Anwendungscode, der mit weiteren Komponenten oder mit individuellem Code erweitert werden kann. IV.4.2.2. Container Komponenten werden innerhalb eines Containers ausgeführt. Er stellt einen Anwendungskontext für eine oder mehrere Komponenten bereit und übernimmt deren Verwaltung und Kontrolle. Mit anderen Worten, der Container stellt die Umgebung (i.a. mehrere Ausführungsfäden (Threads) bereit, in dem die Komponenten ausgeführt werden. Die Komponenten auf dem Client werden in der Regel im Rahmen eines visuellen Containers wie Form, Compound Document oder Web Site eingesetzt. Die Serverkomponenten dagegen sind in der Regel nicht visualisierbar und werden in einem Container ausgeführt, der vom Anwendungsserver (z.B. TP-Monitor, Web-Server oder Datenbanksystem) bereitgestellt wurde. IV.4.2.3. Das Komponentenmodell Das Komponentenmodell definiert die Basisarchitektur der Komponenten. Es beschreibt ihre Schnittstellen und den Mechanismus, wie eine einzelne Komponente mit dem Container oder mit anderen Komponenten zusammenarbeitet. Außerdem enthält es Richtlinien, wie die Komponenten zu entwickeln sind. Es ermöglicht den Komponenten, zu einer größeren Anwendung zusammengestellt zu werden. Dabei ist es nicht erforderlich, daß die Komponenten von einem Herstellern realisiert wurden. IV.4.2.4. Granularität der Komponenten Die Komponenten können unterschiedlich hinsichtlich ihrer Komplexität und Größe sein. Bezüglich der Granularität werden im Komponentenmodell keine Einschränkungen getroffen. IV.4.2.5. Standardisierte Schnittstellen Eine Komponente muß ihre Schnittstellen in standardisierter Form bereitstellen, damit ihre Methoden von anderen Teilen der Anwendung aufgerufen, und ihre Daten bearbeitet werden können. Die Struktur der einzelnen Schnittstellen wird im Komponentenmodell beschrieben. IV.4.2.6. Anpassung ohne Änderung im Source Code Komponenten werden durch eine Anzahl von externen Parametern an die speziellen Anforderungen der Anwendung angepaßt. Es muß dafür keine Änderung im Source Code vorgenommen werden. 98 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick IV.4.3. Enterprise JavaBeans Komponentenmodell Das Enterprise JavaBeans Komponentenmodell ist die logische Erweiterung des JavaBeans Komponentenmodells. Das JavaBeans Komponentenmodell definiert standardisierte Mechanismen für die Entwicklung von wiederverwendbaren, portierbaren Java Softwareeinheiten wie z.B. Buttons oder Controls. Die JavaBeans Technologie wird in der Regel in einer integrierten Entwicklungsumgebung (Integrated development environment, IDE) für visuelle Java Technologie, wie z.B. IBM Visual Age oder Symantec Visual Cafe, benutzt. Java Entwickler benutzen ein visuelles Java IDE, um Java Klassen, Java Applets, Java Anwendungen oder Java Komponenten zu erzeugen. Eine JavaBeans Komponente (Bean) ist eine spezielle Java Klasse, die zu einem Entwicklungsprojekt hinzugefügt und dann von einer IDE bearbeitet werden kann. Eine Bean stellt spezielle Einstiegspunkte (Hooks) bereit, um Inhalte und Verhalten der Bean zu prüfen und anzupassen, ohne den Sourcecode zu modifizieren. Es können mehrere Beans kombiniert werden, um ein Java Applet / Anwendung zu erstellen oder eine JavaBeans Verfeinerung vorzunehmen. Das EJB Komponentenmodell ist die Erweiterung des JavaBeans Komponentenmodells um die Unterstützung der Serverkomponenten. Sie sind ähnlich den Entwicklungskomponenten, aber in der Regel größer und komplexer und können mit anderen Serverkomponenten kombiniert werden. Die Enterprise JavaBeans Komponenten (Enterprise Beans) konnten bisher nicht durch eine visuelle Java IDE bearbeitet werden (Tools diesbezüglich sind in der Entwicklung). Statt dessen wurden sie während ihrer Installation (deployment time) durch Tools bearbeitet, die ein EJB kompatibler Anwendungsserver zur Verfügung stellt. IV.4.3.1. Implizite Services Die Enterprise JavaBeans Architektur stellt ein integriertes Anwendungsframework zur Verfügung, das die Entwicklung von Enterprise Klassen wesentlich vereinfacht. Der EJB Server verwaltet automatisch zahlreiche Middleware Services, die von den Anwendungskomponenten angestoßen werden. Die Designer der Komponenten können sich somit mehr auf die Implementierung der Fachlogik konzentrieren. Die unterstützten Middleware Services sind insbesondere Life Cycle, Transaction, Distribution, Persistence, und Security. Diese Services werden implizit ausgeführt, der Container führt sie automatisch für die Enterprise Beans aus. IV.4.3.2. Portabilitätsschicht Das EJB Modell legt die Beziehung zwischen der Enterprise Bean Komponente und dem Container fest. EJB Komponenten sind nicht verpflichtet, ein spezielles Containersystem zu benutzen. Ein Hersteller kann den Anwendungsserver an die EJB Technologie anpassen, indem er den Support für die in der Spezifikation beschriebenen Services zusätzlich implementiert. Die Sevices definieren einen Kontrakt zwischen der Enterprise Bean und dem Container, der als Portabilitätsschicht (portability layer) implementiert wird. Jede Enterprise Bean kann auf jedem Anwendungsserver laufen, der EJB Kontrakte unterstützt. © GDV 1999 99 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell IV.4.3.3. Ausführung der Services Ein EJB kompatibler Anwendungsserver (EJB Server) muß eine Standardmenge von Services zur Verfügung stellen, um die EJB Komponenten zu unterstützen. EJB Komponenten sind transaktionsorientiert: d.h., daß ein EJB Server einen Zugriff auf einen Service für verteilte Transaktionen bereitstellen muß. Zusätzlich muß der EJB Server einen Container für die Enterprise Beans liefern: den EJB Container. Der EJB Container implementiert die Services für Verwaltung und Kontrolle von einer oder mehreren Klassen der EJB Objekte. Außerdem muß der EJB Container Dienste für die Verwaltung der impliziten Dienste bereitstellen. IV.4.4. Detaillierte Beschreibung der EJB Architektur Der EJB Server stellt EJB Container zur Verfügung, die die Ausführung von EJB Anwendungen unterstützten. Er verwaltet und koordiniert die Belegung der Ressourcen für die Anwendung. Das folgende Bild zeigt den Aufbau des EJB Containers. Enterprise JavaBeans Container Deployment Descriptor Client EJB Objekt (Client view) Enterprise bean EJB Home (bean identifier) Environment Abbildung 49 : Enterprise JavaBeans Container Enterprise Beans werden in einem EJB Container genutzt, der auf dem EJB Server zur Verfügung steht. Der Container dient als Verbindung zwischen dem Client und der Enterprise Bean. Während der Installation der Enterprise Bean (deployment time) erzeugt der Container einmalig und automatisch die EJB Home Schnittstelle und die EJB Objekt Schnittstelle für jede Enterprise Bean Instanz. Die EJB Home Schnittstelle identifiziert die Enterprise Bean Klasse und wird verwendet, um eine Enterprise Bean Instanz zu finden, erzeugen oder löschen. Die EJB Objekt Schnittstelle gewährt Zugriff auf die Methoden der Enterprise Bean. Alle Anforderungen des Clients, die an die beiden Schnittstellen gerichtet werden, werden durch den EJB Container abgefangen. Sie werden durch die impliziten Dienste ergänzt. Der EJB Server stellt einen oder mehrere Container zur Verfügung, die Enterprise Bean Objekte verwalten. Der Container ist verantwortlich für: 100 © GDV 1999 Das objektorientierte technische Referenzmodell die Registrierung der Objekte die Erzeugung und Löschung der Objektinstanzen Sicherheitsprüfungen für Objekte Verwaltung der aktiven Zustände im Objekt Koordinierung verteilter Transaktionen. Architekturmodelle im Überblick Optional kann der Container die persistenten Daten im Objekt verwalten. Bezüglich der Anzahl der installierten EJB Klassen in einem EJB Container gibt es keine Einschränkung. Es ist ebenfalls nicht festgelegt, wie der Container implementiert werden muß. Er kann als eine physikalische Einheit integriert werden, wie z.B. ein multithreaded Prozeß auf dem EJB Server, oder auch als logische Einheit, die unter mehreren Systemen und Prozessen aufgeteilt wird. IV.4.4.1. Transiente und persistente Objekte Die EJB Technologie unterstützt sowohl transiente (nicht dauerhafte) als auch persistente (dauerhafte) Objekte. Transiente Objekte werden als Session Bean, und persistente Objekte als Entity Bean bezeichnet. Die Session Beans werden in der Regel vom Client erzeugt und existieren in den meisten Fällen nur für die Dauer einer einzelnen Client-Server Sitzung. Eine Session Bean führt Operationen wie z.B. Datenbankzugriff oder Rechenschritte aus, die vom Client initiiert werden. Eine Session Bean kann nach einem Systemausfall nicht wiederhergestellt werden. Eine Session Bean hat in der Regel keinen definierten Zustand, kann aber Zustände über Methoden und Transaktionen haben, die sich aus der Kommunikation zwischen Client und Server ergeben (conversational state). Falls die Session Bean solche Kommunikationszustände hat und dann gelöscht wird, dann geht die Verwaltung der Zustände auf den Container über. Eine Session Bean muß ihre eigenen persistenten Daten selbst verwalten. Eine Entity Bean ist die Objektrepräsentation von persistenten Daten, die z.B. in einer Datenbank hinterlegt wurden. Ein Primärschlüssel identifiziert jede Instanz einer Entity Bean. Sie werden entweder durch Einfügen von Daten in die Datenbank, oder durch eine Object Factory Methode erzeugt. Die Entity Beans sind transaktionsgesichert und lassen sich nach einem Systemausfall wiederhergestellt werden. Entity Beans verwalten ihre Persistenz selbst oder deligieren die Verwaltung an den Persistenzdienst ihrer Container. In diesem Fall führt der Container automatisch alle Operationen für das Auffinden und Speichern der Entity Bean aus. In der Version 1.0 ist die Unterstützung der Session Beans obligatorisch, die Unterstützung der Entity Beans und der vom Container verwalteten Persistenz ist optional. In den künftigen Versionen werden diese Features fester Bestandteil der EJB Spezifikation sein. IV.4.4.2. Naming und Registry Für jede im Container angelegte Klasse registriert der Container automatisch die EJB Home Schnittstellen in einem Verzeichnisdienst mittels JNDI API (Java Naming and Directory Interface). Durch JNDI kann der Client die EJB Home Schnittstelle finden, die es ihm dann ermöglicht eine bestehende Bean Instanz zu finden oder eine neue zu erzeugen. Wenn der Client eine Bean erzeugt oder findet, liefert der Container eine EJB Objektschnittstelle zurück. © GDV 1999 101 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell IV.4.4.3. EJB Objektschnittstelle Die EJB Objektschnittstelle ermöglicht dem Client den Zugriff auf die Businessmethoden der Enterprise Bean. Das EJB Objekt repräsentiert die Client View der Enterprise Bean. Es veröffentlicht alle anwendungsrelevanten Schnittstellen des Objekts, mit Ausnahme derer, die dem EJB Container die Verwaltung und Kontrolle über das Objekt erlauben. Mittels eines EJB Object Wrapper fängt der Container alle Operationen auf, die an die Enterprise Bean gerichtet werden. Nachdem der Client eine Methode auf dem EJB Objekt aufgerufen hat, geht zuvor die Anforderung über den EJB Container, um sie anschließend an die Enterprise Bean weiterzuleiten. Der EJB Container implementiert die Dienste State Management, Transaction, Security und Persistence sowohl für den Client als auch für die Enterprise Bean. IV.4.4.4. Deklarierte Attribute Die mit der Enterprise Bean gemeinsam verwalteten Regeln zu Lifecycle, Transaction, Security und Persistence werden in einem getrennten Deployment Descriptor definiert. Diese Regeln werden größtenteils deklarativ zur Installationszeit und weniger programmtechnisch während der Entwicklung definiert. Während der Laufzeit führt der EJB Container automatisch die Dienste mit den Parametern aus, die im Deployment Descriptor für die Enterprise Bean hinterlegt wurden. IV.4.4.5. Kontext Objekt und Environment Objekt Für jede aktive Enterprise Bean Instanz erstellt der EJB Container ein Kontext Objekt, in dem die Informationen über die Verwaltungsregeln und den aktuellen Zustand der Instanz gehalten werden. Eine Session Bean benutzt einen SessionContext, eine Entity Bean benutzt einen EntityContext. Das Kontext Objekt wird von der Enterprise Bean und dem EJB Container benutzt, um Transaktionen und Dienste zu koordinieren. Zudem werden die Eigenschaften der Enterprise Bean in einer Tabelle - dem Environment Objekt - hinterlegt: Dieses Objekt sichert die Zusände des Zusammenstellungsprozeß (assembly process) oder des Installationsprozeß (deployment process) der Enterprise Bean. IV.4.5. Beschreibung der Services IV.4.5.1. Distribution Services Die EJB Technologie benutzt die Java Remote Method Invocation (RMI) API, um auf die Enterprise Beans zuzugreifen. Der Designer muß für jede Enterprise Bean eine RMI Remote Schnittstelle definieren, woraus der Container die EJB Objektschnittstelle generiert. RMI ist eine Programmschnittstelle, die den Ort des Servers für den Client transparent macht. Der RMI Compiler generiert ein Stub Objekt für jede entfernte Schnittstelle (Remote Interface). Das Stub Objekt ist auf dem Client installiert (oder wird zur Laufzeit heruntergeladen), und stellt einen lokalen Stellvertreter (Proxy) für den Client dar. Das Stub Objekt implementiert alle entfernten Schnittstellen und delegiert alle Methodenaufrufe zum fernen Objekt durch das Netz. Die EJB Spezifikation stellt keine Anforderungen an das Protokoll für verteilte Objekte. RMI unterstützt mehrere Protokolle. Das Java Remote Method Protokoll basiert auf dem RMI Protokoll. Die nächste Version von RMI unterstützen zusätzlich die Kommunikation mittels CORBA Protokoll und Internet InterORB Protokoll (IIOP). IIOP unterstützt fast alle Funktionen von RMI. Enterprise Beans, die sich nur auf die Untermenge RMI/IIOP von RMI stützen, sind für beide Protokolle geeignet. 102 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick IIOP ermöglicht eine einfache Integration von CORBA und EJB Systemen. Enterprise Beans können damit auf CORBA Server zugreifen und CORBA Clients können auf Enterprise Beans zugreifen. Mittels COM/CORBA Internetworking Service können ActiveX Clients auf Enterprise Beans zugreifen, und Enterprise Beans können auch umgekehrt auf die Dienste eines DCOM Servers zugreifen. Die Kommunikation zwischen ActiveX Komponenten und Enterprise Java Beans ist möglich. Enterprise Java Beans können aber nicht ohne weiteres in einem DCOM Server installiert werden. IV.4.5.2. State Management Individuelle EJB Serversysteme implementieren verschiedene Vorgehensweisen. Unabhängig davon muß jeder EJB Server einen Statusmanager (state manager) für die Verwaltung der Zustände der EJB Objekte bereitstellen. Eine Session Bean stellt einen Arbeitsschritt dar, der von einem Client ausgeführt wird. In manchen Fällen kann dieser Schritt in einem einzigen Methodenaufruf erledigt werden. In anderen Fällen sind mehrere Methodenaufrufe nötig. Bei solchen Fällen muß der Zustand (state) des Objektes zwischen den Methodenaufrufen gespeichert werden. Die Optionen für die Zustandsverwaltung für eine Session Bean werden im Attribut StateManagementType im Deployment Descriptor Objekt definiert. Die Entity Beans behalten ihren Zustand. Behält ein Objekt seinen Zustand nicht, setzt der Container den Zustand der Objektinstanz automatisch nach jedem Methodenaufruf neu. Wenn ein Session Objekt seinen Zustand behält, hält der Container diesen Zustand automatisch, sobald das Session Objekt zerstört oder temporär aus dem Speicher enfernt wird. Das EJB Modell kapselt diese Funktionen in die Methoden ejbLoad, ejbStore, ejbActivate und ejbPassivate in jeder Enterprise Bean Klasse. IV.4.5.3. Persistence Management Eine Entity Bean stellt persistente Daten dar. Ein Entitätsobjekt existiert generell über eine längere Zeit hinaus und kann von vielen Clients benutzt werden. Die EJB Technologie stellt ein einfaches Programmiermodell dar, um die Persistenz von Objekten zu verwalten. Persistenzfunktionen müssen ausgeführt werden, wenn Objekte erstellt, gelöscht, geladen oder aus dem Hauptspeicher entfernt werden. Das EJB Modell kapselt diese Funktionen in die Methoden ejbCreate, ejbPostCreate, ejbRemove, ejbLoad, ejbStore, ejbActivate und ejbPassivate in jeder Enterprise Bean Klasse. Ein Entitätsobjekt kann seine Persistenz selbst verwalten oder die Verwaltung an seinen Container delegieren. Die Optionen für die Persistenz einer Entity Bean sind im Attribut ContainermanagedFields im Deployment Descriptor Objekt definiert. Wenn das Entitätsobjekt seine Persistenz selbst verwaltet, muß der Enterprise Bean Designer Persistenzoperationen (JDBC oder embedded SQL Aufrufe) in die Klassenmethoden der Enterprise Bean aufnehmen. Wenn das Entitätsobjekt die Persistenz an den Container delegiert, verwaltet der EJB Container implizit und transparent die Persistenz. Der Designer der Enterprise Bean muß selbst keine Zugriffsmethoden in die Enterprise Bean Klassenmethoden aufnehmen. Die erste Version EJB Spezifikation legt nicht fest, wie der EJB Container die Persistenz der Objekte verwalten soll. Es wird dem Hersteller überlassen, ob er eine einfache Serialisierung der Zustände in den Container © GDV 1999 103 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell implementiert oder einen optimaleren Service nimmt, wie z.B. die Hinterlegung der persistenten Daten des Objekts in die Spalten einer relationalen Datenbank. Die Session Objekte sind nach Definition nicht persistent. Sie können jedoch Informationen enthalten, die persistent gemacht werden müssen. Ähnlich wie bei den Entitätsobjekten können die Session Objekte persistente Operationen direkt in der Enterprise Bean implementieren. Die Session Objekte halten häufig gecachte Datenbankinformationen bereit, die mit der Datenbank synchronisiert werden müssen, z.B. wenn eine Transaktion gestartet, abgebrochen oder beendet wird. Der Entwickler der Enterprise Bean kann die Methoden für das Synchronisieren der Transaktionen mittels der Schnittstelle SessionSynchronisation direkt in die Enterprise Bean Klasse aufnehmen. Die afterBeginn, beforeCompletion und afterCompletion Aufrufe bezeichnen Markierungspunkte, die dem Objekt erlauben, gegebenenfalls aus der Datenbank zu lesen oder in die Datenbank zu schreiben. IV.4.5.4. Transaction Management Obwohl die EJB Technologie durchaus für die Implementierung nicht transaktionsgesicherter Systeme verwendet werden kann, wurde sie für die Unterstützung von verteilten Transaktionen entworfen. Die EJB Technologie benötigt einen verteilten Transaktionsmonitor, der ein Two Phase Commit Protokoll für nicht geschachtelte Transaktionen unterstützt. Die EJB Spezifikation legt die Verwendung von Transaktionen aus der Java Transaction Service (JTS) API nahe, schreibt sie aber nicht dringend vor. JTS ist eine Implementierung des CORBA Object Transaction Service (OTS) in Java. JTS unterstützt verteilte Transaktionen, die mehrere Datenbanken auf verschiedenen Systemen umfassen können, die wiederum von mehreren Transaktionsmanagern verwaltet werden. Mittels JTS stellt ein EJB Server sicher, daß seine Transaktionen mehrere EJB Server umfassen können. Die EJB Anwendungen kommunizieren mit dem Transaktionsservice mittels Java Transaktion API (JTA). JTA stellt eine Programmierschnittstelle für Start, Wechseln, Commit und Rollback einer Transaktion bereit. Die EJB Technologie vereinfacht die Entwicklung von Anwendungen mit verteilten Transaktionen. Alle Transaktionsfunktionen können implizit vom EJB Container und dem EJB Server ausgeführt werden. Einzelne Enterprise Beans brauchen keine Java-Statements für Transaktionsmarkierungen in ihren Code aufzunehmen. Da kein Transaktionscode in der Anwendungslogik erscheint, sind die Enterprise Beans einfacher zu implementieren und zu portieren. Die Transaktionsregeln für eine Enterprise Bean werden eher deklariert als programmiert. Zur Laufzeit implementiert der EJB Container automatisch die Transaktionsservices, wie sie im Attribut TransactionAttribute im Deployment Descriptor Objekt festgelegt wurde. Das EJB Modell unterstützt sechs verschiedene Transaktionsregeln: TX_BEAN_MANAGED. Mit TX_BEAN_MANAGED verwaltet die Enterprise Bean ihre Transaktionskontrolle manuell. Die Abgrenzung der Transaktion erfolgt mittels Java Transaction API. TX_NOT_SUPPORTED. Mit TX_NOT_SUPPORTED wird die Enterprise Bean im Kontext der Transaktion nicht ausgeführt. Falls der Client bereits eine Transaktion beim Start der Enterprise Bean mitbringt, setzt der Container die Transaktion für die Dauer des Methodenaufrufs aus. TX_SUPPORTS. TX_SUPPORTS bedeutet, daß die Enterprise Bean mit oder ohne Transaktionskontext ausgeführt werden kann. Falls der Client bereits eine Transaktion beim Start 104 © GDV 1999 Das objektorientierte technische Referenzmodell Architekturmodelle im Überblick der Enterprise Bean mitbringt, wechselt die Methode in den Transaktionskontext des Clients, anderenfalls läuft der Methodenaufruf ohne Transaktion ab. TX_REQUIRED. TX_REQUIRED fordert die Ausführung einer Enterprise Bean in einem Transaktionskontext. Falls der Client bereits eine Transaktion beim Start der Enterprise Bean mitbringt, wechselt die Methode in den Transaktionskontext des Clients, ansonsten wird eine neue Transaktion gestartet. TX_REQUIRES_NEW. TX_REQUIRES_NEW fordert die Ausführung einer Enterprise Bean in einem neuen Transaktionskontext. Falls der Client bereits eine Transaktion beim Start der Enterprise Bean mitbringt, setzt der Container diese Transaktion für die Dauer des Methodenaufrufs aus und startet eine neue Transaktion. TX_MANDATORY. TX_MANDATORY fordert die Ausführung der Enterprise Bean im Kontext der Transaktion des Clients. Falls der Client bereits eine Transaktion beim Start der Enterprise Bean mitbringt, gibt der Container die Fehlermeldung TransactionRequired aus und die Anforderung wird abgewiesen. IV.4.5.5. Security Das EJB Modell verwendet die Java Sicherheitsdienste, die vom Java Development Kit (JDK) 1.1.x unterstützt werden. Die Java Plattformsicherheit unterstützt Berechtigungs- und Autorisierungsdienste, um Zugriff auf geschützte Objekte zu unterbinden. Die EJB Technologie automatisiert die Benutzung der Java Plattformsicherheit, so daß die Enterprise Bean nicht mit Sicherheitsroutinen ausgestattet werden muß. Die Sicherheitsregeln für jede Enterprise Bean werden in mehreren AccessControlEntry Objekten im Deployment Descriptor Objekt hinterlegt. Ein AccessControlEntry Objekt ordnet einer Methode die Liste der Benutzer zu, die berechtigt sind, diese Methode anzuwenden. Der EJB Container benutzt AccessControlEntry, um Sicherheitsprüfungen für die Enterprise Bean auszuführen. IV.4.6. Enterprise JavaBean Deployment Die Komponenten der EJB können als einzelne oder als Kollektion von Enterprise Beans, sowie als ein komplettes Anwendungssystem verpackt werden. EJB Komponeten werden im Java Archive (JAR) File Format (ejb-jar file) ausgeliefert. Diese Datei enthält ein Verzeichnis über den Inhalt der Datei, die Enterprise Bean Klassen, die Deployment Descriptor Objekte und optional die EnvironmentProperties Objekte. Die Deployment Descriptor Objekte werden verwendet, um die Laufzeiteinstellungen einer Enterprise Bean festzulegen. Diese Einstellungen teilen dem EJB Container mit, wie die Enterprise Bean zu verwalten ist. Gesetzt werden diese Werte beim Konfigurieren (Application Assembly Time) oder während der Installation (Application Deployment Time) der Anwendung. Deployment Descriptor Objekte definieren unter anderem den Klassennamen der Enterprise Bean, den JNDI Namen, der den Container repräsentiert, den Namen des Home Interface, des Remote Interface und des Environment Properties Objekts. Das Deployment Descriptor Objekt enthält ein Array von ControlDescriptor Objekten, das die Transaktionsregeln festlegt. Für die Hinterlegung der Sicherheitsregeln enthält es außerdem das Array von AccessControlEntry Objekten. Session Beans und Entity Beans haben verschiedene Typen von Deployment Descriptor Objekte. Das SessionDescriptor Objekt erweitert das Deployment Descriptor Objekt um die Attribute, in denen gespeichert wird, ob die Session Bean ihren Zustand behalten soll oder nicht. © GDV 1999 105 Architekturmodelle im Überblick Das objektorientierte technische Referenzmodell Das EntityDescriptor Objekt erweitert das Deployment Descriptor Objekt um die Attribute, in denen gespeichert wird, welches Feld automatsch vom Container persistent gemacht wird. IV.4.7. Wertung Die Spezifikation der Enterprise JavaBeans ist in sich stimmig und empfiehlt sich zur Konzeption von Serveranwendungen. Es handelt sich aber nicht um ein fertiges Produkt und somit hängt der Erfolg der Spezifikation von der Qualität der einzelnen Herstellerimplementationen ab. Die aktuelle Version 1.0 enthält noch nicht alle Dienste, die zur Erstellung von Applikationen erforderlich sind. Für diese Version gibt es inzwischen schon einige Implementation, z.B. innerhalb von Oracle 8i, Oracle Application Server, IBM WebSphere Advanced Edition, BEA WebLogic Tengah und den von SUN aufgekauften Server von NetDynamics. Anwendungssoftwarehersteller, die EJB Komponenten implementieren, sind z.B. IBM San Francisco Frameworks, Athena Design Integer und Oracle Applications (ERP). Gerade die geplante Unterstützung von EJB im Rahmen des San Francisco Projektes erscheint vielversprechend, denn bei einem Auseinanderlaufen dieser beiden Architekturen wäre fraglich, ob der Markt sowohl den Foundation Layer der San Francisco Frameworks als auch die konkurrierende EJB Architektur akzeptieren würde. Durch die an sich zu begrüßende Offenheit der Spezifikation sind Entscheidungen bezüglich Realisierung der einzelnen Komponenten langwierig. Das verzögert die Produktion einzelner Teile der Spezifikation, wie man an der aktuellen Roadmap für die Version 2.0 sieht. Gelegentlich werden Teile der Spezifikation gar nicht erst realisiert, da sich die Anforderungen des Marktes inzwischen geändert haben. 106 © GDV 1999 Das objektorientierte technische Referenzmodell Ausblick V. Ausblick Technisches und fachliches Referenzmodell bilden die Grundlage für die Definition und Realisierung versicherungsfachlicher Softwarekomponenten. Der Grad der Detaillierung wurde im technischen Referenzmodell so gewählt, daß unterschiedliche Implementierungsplattformen auf Basis der CORBA-Services möglich sind. Noch läßt der Stand des Standardisierungsprozesses eine genauere Spezifikation nicht zu, es zeichnet sich jedoch eine Konvergenz unterschiedlicher KomponentenArchitekturen ab. Dadurch scheint die Schaffung austauschbarer Softwarekomponenten für die Versicherungswirtschaft erstmals realisierbar zu werden. Konvergenz der Architekturen SanFrancisco ? Enterprise JavaBeans CORBA Component Model 1998 1999 2000 Abbildung 50: Konvergenz der Komponenten-Architekturen Neben der Kompatibilität von Komponenten auf technischer Ebene sind einheitliche Schnittstellen auf fachlicher Ebene notwendig. Die Basis hierfür schafft das fachliche Referenzmodell. Derzeit ist dessen Detaillierungsgrad nicht ausreichend für eine präzise Schnittstellendefinition versicherungsfachlicher Komponenten, eine Verfeinerung in diese Richtung ist für 1999 bereits vorgesehen. An der Schnittstelle zwischen technischen und fachlichen Modellen stehen eine Anzahl von Diensten und Verfahren, deren Gestaltung eines der Themen für die Weiterentwicklung des technischen Referenzmodells in 1999 sein wird: - Hilfedienst - Ordnungsbegriffe - Protokollierung/Journal - Print/Dokumentation - Terminverwaltung - Benutzerverwaltung und Kompetenzregelungen - Fehlerbehandlung - Objektversionierung und Historisierung - Prozeßsteuerung und Ablaufverfolgung © GDV 1999 107 Ausblick Das objektorientierte technische Referenzmodell - Archivierung - Postkorbverwaltung Auch die Gestaltung dieser Dienste und Verfahren wird sich an allgemeinen Standards oder Standards der Versicherungswirtschaft orientieren. 108 © GDV 1999 Das objektorientierte technische Referenzmodell Glossar VI. Glossar Folgende Begriffe wurden in das Glossar aufgenommen: Allgemeine Begriffe aus der objektorientierten Welt Begriffe aus der objektorientierten Entwicklung neue Definitionen der objektorientierten VAA-Referenzarchitektur Active X Micosofts Bezeichnung für seine strategischen objektorientierten Technologien und Werkzeuge. Zentrale Technologie ist das Component Object Model (COM). Aus COM wird im Netzwerk mit Verzeichnisdiensten und weiterer Unterstützung das Distributed Component Object Model (DCOM). ActiveX - Komponenten heißen ActiveX - Controls oder ActiveX - Documents und sind grob vergleichbar mit Suns Java Applets. Sie sind die Weiterführung der mit Object Linking and Embedding (OLE) entwickelten Compound Document Architecture von Microsoft. Basic Objekt Adapter (BOA) Ein von CORBA definierter Objektadapter, den alle ORB’s unterstützen müssen. Dieser hat die Aufgabe, ein Implememtierungsverzeichnis bereitzustellen, das es ermöglicht, alle Objektimplementierungen zu installieren und zu registrieren. Zusätzlich stellt er Mechanismen bereit, Objektreferenzen zu generieren und zu interpretieren um Objektimplementierungen zu aktivieren oder zu deaktivieren. Business Object (BO) Ein Business Object (BO) repräsentiert einen fachlichen Ablauf oder eine fachliche Entität. Ein fachlicher Ablauf ist dabei im Sinne eines Geschäftsvorfalls zu verstehen, wie er in VAA 2.0 definiert ist (Beispiel: „Erhöhung der Versicherungssumme eines Vertrages„). Eine fachliche Entität stellt eine fachlich orientierte Einheit von Daten und darauf operierender Funktionen dar, wie zum Beispiel Vertrag oder Partner. Business Object Component Architecture (BOCA) Von der BODTF definiertes Metamodell für Business Objects. Dieses Metamodell ist eine Erweiterung des CORBA-Metamodells, das CORBA-IDL und dem CORBA-Interface-Repository zugrunde liegt Business Object - Manager (BO-Manager) Er stellt den Lebensraum eines Business Objects zur Verfügung, weiß aber nichts über den internen Aufbau eines Business Objects. Component Object Model (COM) COM ist Microsofts Framework zur Entwicklung von Komponenten. Die Zielrichtung ist vergleichbar mit der von JavaBeans. COM stellt Services wie Life Cycle Management, Licensing, Event für Microsofts Compound Document Architecture OLE zu Verfügung. © GDV 1999 109 Glossar Das objektorientierte technische Referenzmodell CORBA CORBA ist eine Spezifikation der Object Management Group (OMG), die die Interoperabilität von verteilten Objekten beschreibt. Bestandteile sind der Objekt Request Broker (ORB), der als transparenter Kommunikationsbus zwischen den Objekten fungiert und die CORBA-Services, die definierte Dienste zur Verfügung stellen, die auf der Systemebene des ORB´s agieren. Zusätzlich beinhaltet CORBA die CORBA-Facilities, die Services auf der Anwendungsebene bereitstellen sowie die CORBA-Business Objects (Geschäftsobjekte). Distributed Component Object Model (DCOM) DCOM ist Microsofts Framework zur Entwicklung von verteilten Komponenten und die direkte Weiterentwicklung von COM mit einem mit CORBA vergleichbaren Funktionsumfang. Distributed Internet Architecture (DNA) Anwendungs-Architektur von Microsoft, die in einem Framework von verteilten Einzellösungen das Internet mit einer Client-/Server-Architektur integriert. Sie ist ein Multi-Tier Anwendungsmodell und Bestandteil der Microsoft Applikations-Plattform. DNA vereint die besten Services von Clients, Anwendungsservern und Mainframes zu einer allgemeinen, komponentenbasierten Anwendungsarchitektur. Dynamic Invocation Interface (DII) DII ist ein Bestandteil von CORBA, der es dem Client erlaubt, sich zur Laufzeit ein Zielobjekt auszuwählen und seine Methoden dynamisch aufzurufen. Dynamic Skeleton Interface (DSI) DSI ist das Gegenstück zu DII auf dem Server. Es ermöglicht die dynamische Verknüpfung von Servern zur Laufzeit, die eingehende Methodenaufrufe der Komponenten bearbeiten müssen, die keine IDL-basierten Schnittstellen haben. Enterprise JavaBeans Die Enterprise JavaBeans (EJB) Technologie definiert ein Modell für die Entwicklung und Benutzung von wiederverwendbaren Java-Serverkomponenten. Es definiert eine Sammlung herstellerunabhängiger Schnittstellen für alle Java-Anwendungsserver. Dadurch ist gewährleistet, daß Serverkomponenten auf allen Java-fähigen Anwendungsservern laufen. Entity Business Objekt (EBO) Faßt Daten (Attribute) und die ihnen zugeordneten Funktionen (Methoden) zu logischen Einheiten zusammen. Factory Eine Factory ist ein Entwurfsmuster für die Erzeugung von Objekten. Es ermöglicht die dynamische Wahl eines Objekttyps abhängig von Parametern oder Konfigurationseinstellungen. Framework 110 © GDV 1999 Das objektorientierte technische Referenzmodell Glossar Ein Framework ist eine Anzahl kooperierender Klassen, die einen wiederverwendbaren Entwurf für eine besondere Art von Software darstellen. Es legt die Architektur einer Anwendung fest. Ein Framework ist jedoch mehr als eine Klassenbibliothek, es ist vielmehr eine Miniaturanwendung mit sowohl vollständiger dynamischer als auch statischer Struktur. IBM San Francisco Von IBM entwickeltes Komponentenmodell, das einen Satz von in wechselseitiger Beziehung stehenden Geschäftsobjekten und Anwendungsdiensten bereitstellt. Das Komponentenmodell dient Softwarehäusern als Basis zur Entwicklung von Geschäftsanwendungen. Es enthält allgemeingültige Geschäftsanwendungen (z.B. Buchhaltung, Einkauf, Verkauf, Lagerverwaltung), Basisfunktionen (z.B. Persistenz, Transaktionen usw.) und von IBM entwickelte Kernkomponenten (z.B. Partner). Interface Definition Language (IDL) Sprach- und systemunabhängige Beschreibungssprache für Interfaces. Sie erlaubt es, alle CORBAObjekte gleich zu beschreiben. Internet Inter-ORB Protocol (IIOP) Es legt fest, wie GIOP- (General Inter-ORB Protocol) Nachrichten über ein TCP-IP-Netzwerk ausgetauscht werden können. GIOP definiert eine Menge von Nachrichtenformaten und Datendarstellungen für die Kommunikation zwischen den ORB’s. Interoperability Specification Definition von Kategorien von Objekten inklusive ihres grundlegende Verhaltens und Strukturvorgaben.(„Systemarchitektur„) und die benötigten technischen Funktionen wie Datenspeicherung und Transaktionsmanagement auf die CORBA - Dienste und InterfaceSpezifikationen abzubilden („Technische Architektur„). Ziel ist die Integration der Corba-Services in eine Systemarchitektur für Geschäftsanwendungen und das Zusammenspiel zwischen ORB-Funktionen und Business-Objekten. InterOp vereinfacht die Verwendung bestehender CORBA-Services durch Kapselung der Implementierungsdetails in Steuerobjekten und Basisklassen. Iterator Iteratoren sind Zähler, die es ermöglichen, durch eine Anzahl von Objekten zu navigieren und auf Elemente darin zuzugreifen. Zusätzlich können Zähler dazu benutzt werden, gezielt Elemente zu lesen, zu ersetzen, zu löschen oder hinzuzufügen. Komponente Eine Komponente ist ein gekapselter Teil eines Software-Systems, die eine Schnittstelle hat, die den Zugang zu ihren Methoden ermöglicht. Komponenten sind die Bausteine für die Struktur eines Systems. Language Binding Spezifikation Für die Implementierung von IDL-Schnittstellen benutzte Beschreibung, die festlegt, auf welche Datentypen und Strukturen der jeweiligen Programmiersprache die IDL-Spezifikationen abgebildet werden. © GDV 1999 111 Glossar Das objektorientierte technische Referenzmodell Look & Feel Look & Feel einer graphischen Oberfläche legt fest, wie die Masken aufgebaut sind, welche Fenstertechnik verwendet wird und welche Elemente (Push-Buttons, List-Boxes, etc.) diese enthalten. Modell Das Modell enthält den funktionalen Kern der Anwendung. Es kapselt die entsprechenden Daten und bietet Operationen an, welche die für die Anwendung spezifische Verarbeitungen vornimmt. MVC - Model View Controller Das Model-View-Controller-Konzept (MVC) unterteilt eine interaktive Anwendung in drei Komponenten. Das Modell enthält die Kernfunktionalität und die Daten. Die Ansichten (Views) präsentieren dem Anwender Informationen. Kontrollkomponenten sind für Bedienereingaben verantwortlich. Ansichten und Kontrollkomponenten zusammen umfassen die Bedienerschnittstelle. Ein Mechanismus zur Benachrichtigung über Änderungen sichert die Konsistenz zwischen der Bedienerschnittstelle und dem Modell. Namenskontext Ein Namenskontext ist ein Lebensraum von Objekten, in dem der Name eines Objekts eindeutig festgelegt ist. Der Namenskontext ist vergleichbar mit einer Verzeichnisstruktur. Innerhalb des gleichen Verzeichnisses können keine zwei Dateien mit dem selben Namen existieren. Objektreferenz Die Objektreferenz stellt Informationen zur Verfügung, die benötigt werden, um ein Objekt in einem verteilten System eindeutig zu identifizieren. OMG Die Object Management Group (OMG) ist ein Konsortium verschiedener Unternehmen der ComputerIndustrie, die mit der CORBA-Spezifikation eine Beschreibung für eine Middleware- und Komponentenarchitektur vorgelegt hat. Object Request Broker (ORB) Der Object Request Broker (ORB) ist der Kommunikationsbus, auf dem Client-Objekte mit verteilten Server-Objekten plattformunabhängig kommunizieren können. Er ist unter anderem zuständig für die Übertragung der Aufrufparameter, der plattformabhängigen Formatierung der Werte und der Erzeugung einer systemübergreifenden Objektreferenz Präsentationsebene Die Präsentationsebene bündelt die Aufgaben des Views und des Controllers gemäß des MVCEntwurfsmusters. Sie übernimmt eigenständig alle Aufgaben, die zur Präsentation von Business Objects benötigt werden. Jedes Business Object kann eine oder mehrere Präsentationen haben. Process Business Objekt (PBO) Ein PBO repräsentiert einen fachlichen Ablauf im Sinne eines Vorgangs/Geschäftsvorfalls/Geschäftsprozesses. Es verfügt auch über Attribute, die den aktuellen 112 © GDV 1999 Das objektorientierte technische Referenzmodell Glossar Schritt innerhalb des Vorganges repräsentieren, sowie über Übergangsbedingungen von einem Schritt zum nächsten. Remote Method Invocation (RMI) Die RMI ermöglicht dem Anwendungsentwickler die Erstellung von verteilten JAVA-Anwendungen. Dabei können JAVA-Objekte von anderen virtuellen Maschinen oder auch von entfernten Rechnern aufgerufen werden. RMI dient als Kommunikationsverbindung von verteilen JAVA-Objekten. Unified Modelling Language (UML) Die UML ist eine Modellierungssprache für objektorientierte Paradigmen. Sie besteht aus Modellierungsdiagrammen und dem UML-Metamodell. Virtual Machine (VM) Von Sun für die Java Programmierumgebung neu belebter Begriff. Eine Virtual Machine agiert als Schnittstelle zwischen kompilierten Java Binärkode und dem Prozessor oder der Hardwareplattform, auf der die Programminstruktionen direkt ablaufen. Sobald für eine Plattform eine Java Virtual Machine zur Verfügung steht, können alle Javaprogramme (Bytecodes) auf dieser Plattform ausgeführt werden. Wrapper Durch die Verwendung von Wrappern für Softwarekomponenten, werden diese mit einer Objektschnittstelle entsprechend der CORBA-Interface Definition Language (IDL) versehen und vom ORB wie „echte“ Objekte angesehen. X/Open DTP (Distributed Transaction Processing) Transaktionsmodell, das aus einer Haupttransaktion ohne Child-Transaktionen besteht © GDV 1999 113 Literatur Das objektorientierte technische Referenzmodell VII. Literatur i „Das objektorientierte fachliche Referenzmodell“, Version 1.0, März 1999, GDV ii „CORBAservices: Common Object Services Specification“, Updated Edition, Dezember 1998, Object Management Group iii „The Common Object Request Broker - Architecture and Specification“, Revision 2.2, Februar 98, Object Management Group iv „Common Facilities Architecture“, Revision 4.0, November 1995, Object Management Group v „Die Anwendungsarchitektur der Versicherungswirtschaft - Grundlagen und Prinzipien“, GDV, 1999 vi „CORBA vs. DCOM“, Meta Group Consulting, March 20, 1998 vii „Client/Server Programming with Java and CORBA“, 2nd Edition, R.Orfali u.a., 1998 viii „Business Object Component Architecture (BOCA)“, Revision 1.1, OMG Business Domain Task Force, BODTF-RFP 1 Submission, OMG document bom/98-01-07, Object Management Group ix „Interoperability Specification“, OMG Business Domain Task Force, BODTF-RFP 1 Submission, Feb. 5, 1998, Object Management Group x „Entwurfsmuster“, E. Gamma u.a., 1996 xi OMG document orbos/97-11-24, Object Management Group xii „Entwurfsmuster“, E. Gamma u.a., 1996 xiii Enterprise JavaBeans Specification, Version 1.0, www.javasoft.com/products/ejb/docs.html „IBM SanFrancisco Project Technical Summary“, www.ibm.com/java/Sanfrancisco/technical.html, xiv IBM xv „Pattern-orientierte Software-Architektur“, F. Buschmann u.a., 1998 xvi „Wiederverwendung von Softwarekomponenten durch entkoppelte Schnittstellen“, G. Wanner & K.-D. Jäger in OBJEKTspektrum 1/99 114 © GDV 1999