VAA Final Edition Das Objektorientierte Technische Referenzmodell Version 2.0 Autoren: Das Projektteam "OO technische Referenzmodell" Administration, Koordination: Gesamtverband der Deutschen Versicherungswirtschaft e.V., Berlin http://www.gdv.de/vaa © GDV 2001 Das Objektorientierte Technische Referenzmodell Willkommen bei VAA Final Edition! Liebe Leserin, lieber Leser, haben Sie bereits eine der Broschüren der VAA Final Edition gelesen? Dann können Sie gleich weiter blättern, denn dieses Kapitel steht gleichlautend am Anfang jedes Dokuments dieser VAA-Edition. Wir freuen uns über Ihr Interesse an der Versicherungs-Anwendungs-Architektur und gratulieren Ihnen zu Ihrer Entscheidung, sich mit diesem Thema zu beschäftigen. Daran haben wir seit Jahren mit Engagement und Spaß gearbeitet, was in der Qualität der Ergebnisse seinen Niederschlag findet, wie wir glauben. 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 auf der VAA-CD und im Internet (Adresse http://www.gdv.de/vaa) nachlesen. Nun zur Sache: Wir können die erfreuliche Mitteilung machen, daß die VAA-Initiative erfolgreich zum Abschluß gekommen ist. Nachdem wir in einer ersten Arbeitsphase von ca. 1994 bis 1997 die sog. prozedurale Architektur (pVAA) konzipiert und beschrieben haben, entwickelten wir im Anschluß daran im Zeitraum von 1997 bis 2000 die objektorientierte Architektur (oVAA) als fachliches und technisches Referenzmodell und darauf aufbauend das VAA-Komponentenmodell. Alle Arbeitsergebnisse wurden abschließend dokumentiert. Dabei entstand eine Reihe von zum Teil sehr umfangreichen Dokumenten, die auf drei Wegen veröffentlicht werden: CD-ROM, Internet und zum Teil als gebundene Broschüren in Papierform. Um Ihnen die Orientierung zu erleichtern, haben wir als Übersicht über die verfügbaren Dokumentationen der VAA Final Edition einen grafischen Wegweiser erstellt, den Sie auf der nächsten Seite finden können. Möglicherweise kann er Ihnen dabei behilflich sein, Ihre Sie interessierenden Schwerpunktthemen schnell zu finden. Viel Spaß beim Studium der VAA-Unterlagen. © GDV 2001 http://www.gdv.de/vaa Das Objektorientierte Technische Referenzmodell Dokumentenstruktur der VAA Final Edition Management Summary neu Anforderungen und Prinzipien überarbeitet Glossar VAA prozedural (pVAA) Version 2.1 Prozeduraler Rahmen überarbeitet Technische Beschreibung Datenmanager Datenmanager Historienführung und Anhang Dialogmanager Parametersystem Workflow-/Vorgangsmanager Fachliche Beschreibung Inkasso/Kontokorrent Partner Partner/Anhang Produkt Provision Schaden/Leistung Vertrag VAA objektorientiert (oVAA) Version 2.0 Das Objektorientierte Technische Referenzmodell überarbeitet Das Objektorientierte Fachliche Referenzmodell überarbeitet Fachliche Modelle in MID-Innovator-Format neu Fachliche Modelle in HTML-Format neu Fachliches Referenzmodell aus Edition 1999 Generischer Produktansatz Das Fachliche Komponentenmodell http://www.gdv.de/vaa neu neu © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Inhaltsverzeichnis 1. Einführung und Überblick ...................................................................................... 7 1.1. Kontext ................................................................................................................................ 7 1.2. Elemente des technischen Referenzmodells ..................................................................... 8 1.2.1. Die technische Architektur ........................................................................................... 9 1.2.2. Die Systemarchitektur ................................................................................................ 10 1.2.3. Fachliche Komponenten und technisches Referenzmodell ....................................... 10 2. Die technische Architektur der VAA .................................................................... 13 2.1. Die Object Management Architecture (OMA) ................................................................... 14 2.1.1. Definitionen und Grundbegriffe .................................................................................. 14 2.1.2. Der Object Request Broker (ORB)............................................................................. 16 2.1.3. CORBA 3.0 und Java ................................................................................................. 16 2.1.4. CORBA Components ................................................................................................. 18 2.2. Distributed Internet Architecture (DNA) .......................................................................... 22 2.2.1. Definition und Grundbegriffe ...................................................................................... 22 2.2.2. Komponenten ............................................................................................................. 22 2.2.2.1. Präsentation ........................................................................................................ 23 2.2.2.2. Anwendungsservice ............................................................................................ 24 3. Die Systemarchitektur der VAA ........................................................................... 25 3.1. Komponente...................................................................................................................... 25 3.2. Business Object ................................................................................................................ 27 3.2.1. Definition .................................................................................................................... 27 3.2.2. Struktur eines Business Objects ................................................................................ 28 3.2.3. Typisierung ................................................................................................................. 29 3.2.3.1. Entity Business Object (EBO) ............................................................................. 29 3.2.3.2. Process Business Object (PBO) ......................................................................... 30 3.2.4. Interfaces von Business Objects................................................................................ 31 3.2.5. Dienste ....................................................................................................................... 33 3.2.5.1. BO-Manager - Framework und BO-Persistence Service .................................... 33 3.2.5.2. Transparenter Zugriff auf Methoden eines Business Objects ............................. 35 3.2.5.3. Transparentes Speichern von Business Objects ................................................ 36 3.2.5.4. Suchen von Business Objects ............................................................................. 38 3.2.5.5. Erzeugen von Business Objects ......................................................................... 38 3.2.5.6. Löschen von Business Objects ........................................................................... 39 3.2.5.7. Transaktionsmanagement ................................................................................... 39 3.2.5.8. Verwalten von BO-Beziehungen ......................................................................... 41 3.2.5.9. Parametrisierung von Business Objects ............................................................. 41 3.2.5.10. Benachrichtigungsdienst zwischen Business Objects ...................................... 42 3.2.6. VAA Business Object Metamodell ............................................................................. 43 3.3. Fachlich motivierte Dienste............................................................................................... 43 3.3.1. Prozeßsteuerung ........................................................................................................ 43 3.3.1.1. Problemstellung ................................................................................................... 43 3.3.1.2. Standards der WfMC und OMG .......................................................................... 44 3.3.1.3. Abbildung auf das VAA - Referenzmodell ........................................................... 47 3.3.1.4. Prozesszustände ................................................................................................. 48 3.3.1.5. Administration und Überwachung ....................................................................... 49 3.3.1.6. Zuordnung von Ressourcen ................................................................................ 50 3.3.1.7. Informationstransport im Prozess: die Vorgangsakte ......................................... 52 3.3.1.8. Implementierung einer Prozesssteuerung .......................................................... 54 3.3.1.9. Vom Prozessdesign zum PBO ............................................................................ 57 3.3.2. Dokumentenerstellung ............................................................................................... 60 3.3.2.1. Technischer Dienst „Print“ ................................................................................... 61 3.3.2.2. Fachlicher Dienst „Dokumentenerstellung“ ......................................................... 62 3.3.3. Benutzer / Kompetenzdienst ...................................................................................... 64 3.3.3.1. Berechtigung / Authentifikation ............................................................................ 64 © GDV 2001 i Inhalt Das Objektorientierte Technische Referenzmodell 3.3.3.2. Vollmachten ......................................................................................................... 67 3.3.3.3. Systeme mit eigener Berechtigungsprüfung........................................................ 67 3.3.3.4. Berechtigungsklassen .......................................................................................... 68 3.3.3.5. Interfaces ............................................................................................................. 68 3.3.4. Ausnahme und Fehlerbehandlung ............................................................................. 69 3.3.4.1. Definition: ............................................................................................................. 69 3.3.4.2. Beschreibung ....................................................................................................... 69 3.3.5. Postkorb ..................................................................................................................... 73 3.3.5.1. Beschreibung des Postkorbs ............................................................................... 73 3.3.5.2. Funktionalität des Postkorbs ............................................................................... 74 3.3.5.3. Termin und Wiedervorlage .................................................................................. 75 3.3.5.4. Schnittstellen ....................................................................................................... 75 3.3.5.5. Beispielablauf ...................................................................................................... 75 3.3.6. Historisierung.............................................................................................................. 76 3.3.6.1. Fachlicher Aspekt ................................................................................................ 76 3.3.6.2. Ein möglicher konkretes Lösungsansatz ............................................................. 79 3.3.7. Suchdienst .................................................................................................................. 81 3.3.8. Event-Manager ........................................................................................................... 81 3.3.9. Business Objects und Komponenten ......................................................................... 81 3.3.9.1. Vom Business Object zur Komponente ............................................................... 81 3.3.9.2. Allgemeine Typen von Objekten .......................................................................... 83 3.4. Präsentation und Business Objects .................................................................................. 84 3.4.1. Anbindung von Presentations an Business Objects .................................................. 85 3.4.2. Verteilung von Präsentation und Business Object ..................................................... 91 3.5. Kopplung von Systemen ................................................................................................... 93 3.5.1. Entkopplung und Anpassung von Funktionalität ........................................................ 94 3.5.2. Anpassungen der System- bzw. technischen Architektur .......................................... 94 4. Architekturmodelle im Überblick ......................................................................... 98 4.1. Einordnung ........................................................................................................................ 98 4.2. OMG Vorschläge zur Business Object Architecture ......................................................... 99 4.2.1. Architekturziele und Kontext....................................................................................... 99 4.2.2. Grundmuster der Architektur .................................................................................... 100 4.2.2.1. Definitionen ........................................................................................................ 100 4.2.2.2. Services ............................................................................................................. 103 4.2.2.3. BO- und Type-Manager Interfaces .................................................................... 104 4.2.2.4. Shared Services ................................................................................................ 111 4.2.3. Wertung .................................................................................................................... 114 4.3. IBM San Francisco .......................................................................................................... 114 4.3.1. Architekturziele und Kontext..................................................................................... 114 4.3.2. Grundmuster der Architektur .................................................................................... 115 4.3.2.1. Foundation Layer ............................................................................................... 116 4.3.2.2. Common Business Objects Layer (CBOs) ........................................................ 118 4.3.2.3. Core Business Processes Layer ....................................................................... 118 4.3.3. Wertung .................................................................................................................... 120 4.4. Enterprise JavaBeans ..................................................................................................... 120 4.4.1. Architekturziele und Kontext..................................................................................... 120 4.4.2. Grundmuster der Architektur .................................................................................... 121 4.4.2.1. Komponente ...................................................................................................... 121 4.4.2.2. Container ........................................................................................................... 121 4.4.2.3. Das Komponentenmodell .................................................................................. 121 4.4.2.4. Granularität der Komponenten .......................................................................... 121 4.4.2.5. Standardisierte Schnittstellen ............................................................................ 121 4.4.2.6. Anpassung ohne Änderung im Source Code .................................................... 122 4.4.3. Enterprise JavaBeans Komponentenmodell ............................................................ 122 4.4.3.1. Implizite Services ............................................................................................... 122 4.4.3.2. Portabilitätsschicht ............................................................................................. 122 4.4.3.3. Ausführung der Services ................................................................................... 123 4.4.4. Detaillierte Beschreibung der EJB Architektur ......................................................... 123 ii © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 4.4.4.1. Transiente und persistente Objekte .................................................................. 124 4.4.4.2. Naming und Registry ......................................................................................... 124 4.4.4.3. EJB Objektschnittstelle ...................................................................................... 125 4.4.4.4. Deklarierte Attribute ........................................................................................... 125 4.4.4.5. Kontext Objekt und Environment Objekt ........................................................... 125 4.4.5. Beschreibung der Services ...................................................................................... 125 4.4.5.1. Distribution Services .......................................................................................... 125 4.4.5.2. State Management ............................................................................................ 126 4.4.5.3. Persistence Management .................................................................................. 126 4.4.5.4. Transaction Management .................................................................................. 127 4.4.5.5. Security .............................................................................................................. 128 4.4.6. Enterprise JavaBean Deployment ........................................................................... 128 4.4.7. Wertung .................................................................................................................... 129 5. Ausblick ............................................................................................................... 130 6. Glossar ................................................................................................................ 131 7. Anhang ................................................................................................................ 137 7.1. Charakterisierung der einzelnen CORBA-Services ........................................................ 137 7.1.1.1. Life Cycle Service .............................................................................................. 137 7.1.1.2. Naming Service ................................................................................................. 138 7.1.1.3. Relationship Service .......................................................................................... 140 7.1.1.4. Persistence Service ........................................................................................... 143 7.1.1.5. Transaction Service ........................................................................................... 145 7.1.1.6. Concurrency Service ......................................................................................... 148 7.1.1.7. Trader Service ................................................................................................... 149 7.1.1.8. Collection Service .............................................................................................. 154 7.1.1.9. Property Service ................................................................................................ 156 7.1.1.10. Query Service .................................................................................................. 157 7.1.1.11. Security Service............................................................................................... 160 7.1.1.12. Externalization Service .................................................................................... 161 7.1.1.13. Event Service .................................................................................................. 164 7.2. Verfügbare CORBA Implementierungen und Services .................................................. 166 7.2.1. Cetus – Übersicht über verfügbare CORBA – ORBs .............................................. 166 7.2.2. CORBA Service Implementierungen ....................................................................... 171 7.3. Beispiele für Oberflächenanbindungen .......................................................................... 174 7.3.1. Das archid - Framework als Beispiel einer flexiblen Verteilung von Oberfläche und Anwendungslogik ............................................................................................................... 174 7.3.1.1. Kontext .............................................................................................................. 174 7.3.1.2. Probleme ........................................................................................................... 175 7.3.1.3. Kräfte ................................................................................................................. 175 7.3.1.4. Lösung ............................................................................................................... 177 7.3.1.5. Implementierungsumgebung ............................................................................. 179 7.3.2. Beispiel Präsentation ORACLE: Oracle Business Components for Java ................ 180 7.3.2.1. Konzepte ........................................................................................................... 180 7.3.2.2. Beispiel Kopplung ORACLE: Oracle Integration Server ................................... 182 8. Literatur ............................................................................................................... 187 Abbildungsverzeichnis Abbildung 1: Weg zu SW-Komponenten ..................................................................................... 8 Abbildung 2: Das technische Referenzmodell der VAA .............................................................. 9 Abbildung 3: Zusammenhang der Modelle und Architekturen ................................................... 11 Abbildung 4: Gegenüberstellung der Schichten des fachlichen und technischen Referenzmodells12 Abbildung 5: OMG-Architektur verteilter Systeme .................................................................... 14 © GDV 2001 iii Inhalt Das Objektorientierte Technische Referenzmodell Abbildung 6: Kommunikation zwischen Client- und Serverobjekten mit Hilfe des ORBs ........ 16 Abbildung 7: Die CC-Schnittstellen: Die Ports ........................................................................... 20 Abbildung 8: Präsentation in der DNA ...................................................................................... 23 Abbildung 9: Konfiguration von Komponenten .......................................................................... 26 Abbildung 10: Beispiel für ein Dependent Object ...................................................................... 28 Abbildung 11: Kategorien von Business Objects ........................................................................ 29 Abbildung 12: Entity Business Object ........................................................................................ 30 Abbildung 13: Process Business Object ...................................................................................... 31 Abbildung 14: : Interfaces von Business Objects ........................................................................ 32 Abbildung 15: Contracts zwischen Business Objects, BO-Manager - Framework und BO-Persistence Service .................................................................................................................................. 35 Abbildung 16: Proxy-Objekte für Business Objects ................................................................... 36 Abbildung 17: Das VAA Business Object Metamodell .............................................................. 43 Abbildung 18: Elemente der Prozeßsteuerung ............................................................................ 45 Abbildung 19: Das Objektmodell der Workflow Management Facility der OMG, by OMG 46 Abbildung 20: Abbildung auf das VAA-Referenzmodell ........................................................... 47 Abbildung 21: Integration von Activity-Objekten ...................................................................... 48 Abbildung 22: Prozesszustände ................................................................................................... 49 Abbildung 23: Zuordnung von Ressourcen zu PBO ................................................................... 51 Abbildung 24: Zuordnung von Ressourcen zu Dialogen ............................................................ 52 Abbildung 25: Austausch von Prozessinformation ..................................................................... 53 Abbildung 26: Beispielprozess "Angebotserstellung " ................................................................ 54 Abbildung 27: Kombination von Steuerungsvarianten ............................................................... 56 Abbildung 28: Beispiel für Prozesskomponenten ....................................................................... 57 Abbildung 29: Beispielprozeß LV-Angebot, oberste Ebene ....................................................... 58 Abbildung 30: Teilprozess Angebot erstellen ............................................................................. 59 Abbildung 31: State Diagram "Angebot erstellen" ..................................................................... 60 Abbildung 32: Beispiel für den Aufbau des Berechtigungsobjekts ............................................. 66 Abbildung 33: Beispiel für die Berechtigungsprüfung auf dem Server ...................................... 66 Abbildung 34: Klassenmodell für den Fehlerdienst .................................................................... 71 Abbildung 35: Sequenzdiagramm: Beispiel Fehlerfall................................................................ 73 Abbildung 36: Überblick über die Schnittstellen eines Postkorbsystems ................................... 75 Abbildung 37: Beispiel Temporal Property................................................................................. 78 Abbildung 38: Beispiel zu Snapshot ........................................................................................... 79 Abbildung 39: interne Struktur für die Historisierung ................................................................ 80 Abbildung 40: Business Objects als Komponenten..................................................................... 82 Abbildung 41: Heterogene komponentenorientierte Systeme ..................................................... 83 Abbildung 42: Kompatibilitätsebenen ......................................................................................... 84 Abbildung 43: Business Objects und Presentation Components ................................................. 85 Abbildung 44: Schichtenmodell für die Präsentationsanbindung................................................ 86 Abbildung 45: Beispiel einer Java-Presentation .......................................................................... 88 Abbildung 46: Beispiel einer HTML-Anbindung ....................................................................... 89 Abbildung 47: Konstruktionsprinzip von Präsentationen............................................................ 90 iv © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Abbildung 48: Fat Client ............................................................................................................. 91 Abbildung 49: Thin Client .......................................................................................................... 92 Abbildung 50: Ultra Thin Client ................................................................................................. 93 Abbildung 51: Beispiel einer Systemanbindung durch Fassaden und Adapter .......................... 95 Abbildung 52: Konvergenz der Architekturen ............................................................................ 95 Abbildung 53: Beispiel für die Anbindung eines Legacy – Systems .......................................... 97 Abbildung 54: Einordnung der betrachteten Architektur-Frameworks....................................... 99 Abbildung 55: Interaktion von Business System Domains ....................................................... 101 Abbildung 56: Interface Hierarchie für Business Objects und Type Managers ........................ 103 Abbildung 57: InterOp Services über verschiedene Komponenten .......................................... 104 Abbildung 58: Phasen des Commits im Transaction-Service (Interoperability Specification). 113 Abbildung 59: Ausblick auf die "Multi Layer Architecture" von San Francisco ..................... 115 Abbildung 60: Die San Francisco Architektur ......................................................................... 115 Abbildung 61: Kategorien von Common Business Objects (CBO-Layer) ............................... 118 Abbildung 62: Kern-Geschäftsprozesse in San Francisco ........................................................ 119 Abbildung 63 : Enterprise JavaBeans Container ....................................................................... 123 Abbildung 64: Konvergenz der Komponentenarchitekturen .................................................... 130 Abbildung 65: Beispiel für CORBA Naming Context .............................................................. 139 Abbildung 66: Beispiel für die Verwendung des Relationship Services .................................. 142 Abbildung 67: Beispiele für die Verwendung von "graphs-of-related-objects" ....................... 143 Abbildung 68: Komponenten des Persistence Service .............................................................. 144 Abbildung 69: Komponenten des Transaction Service ............................................................. 146 Abbildung 70: Beispiel CORBA Transaction Service .............................................................. 147 Abbildung 71: Locking Modes des Concurrency Services ....................................................... 149 Abbildung 72: Kommunikation zwischen Trader, Server und Client im Trader Service ......... 150 Abbildung 73: Beispiel Trader Service ..................................................................................... 153 Abbildung 74: Typen von Collections im Collection Service .................................................. 155 Abbildung 75: Beispiel für den Property Service ..................................................................... 157 Abbildung 76: Der CORBA Query Service .............................................................................. 158 Abbildung 77: Beispiel für eine Query mit dem QueryManager .............................................. 160 Abbildung 78: Prinzipieller Ablauf einer Berechtigungsprüfung in CORBA .......................... 161 Abbildung 79: Lesen und Schreiben von Objekten im Externalization Service ....................... 164 Abbildung 80: Beispiel für den Event-Service.......................................................................... 166 Abbildung 81: Beispiel Auftragserfassung .............................................................................. 181 Abbildung 82: Flexible Benutzeroberflächen ........................................................................... 182 Abbildung 83: Hub-and-Spoke Architektur .............................................................................. 183 Abbildung 84: Integrationsmechanismen .................................................................................. 183 Abbildung 85: Integrationsstack ............................................................................................... 184 Abbildung 86: Architekturelemente für die Integration ............................................................ 186 Tabellenverzeichnis Tabelle 1: Kategorien von CORBA-Components ....................................................................... 21 © GDV 2001 v Inhalt Das Objektorientierte Technische Referenzmodell Tabelle 2 : Kompatibilität der Dienste des BO-Frameworks und der CORBA Services ............ 35 Tabelle 3 : Ressourcenzuordnung................................................................................................ 51 Tabelle 4 : Beispiel für Stati einer Vorgangsakte ........................................................................ 54 Tabelle 5: Identity eines Business Objects (Interoperability Specification) .............................. 105 Tabelle 6: Life Cycle Operationen der Interoperability Specification ...................................... 107 Tabelle 7: State Access Operationen der Interoperability Specification ................................... 107 Tabelle 8: Intrinsic events (Interoperability Specification) ....................................................... 108 Tabelle 9: Bedingungen für das Auslösen von Events (Interoperability Specification) ............ 109 Tabelle 10: Bedingungen für die Übermittlung von Events (Interoperability Specification) ... 109 Tabelle 11: Interfaces des Query Service der Interoperability Specification ............................ 110 Tabelle 12: Introspection Interface (Interoperability Specification) ......................................... 111 Tabelle 13: Exception Categories (Interoperability Specification) ........................................... 111 Tabelle 14: Eigenschaften des Transaction Service (Interoperability Specification) ................ 112 Tabelle 15: Operationen des CORBA Naming Service ............................................................ 139 Tabelle 16: Eigenschaften von Diensten beim CORBA-Trader Service ................................... 150 Tabelle 17: Functional Interfaces des CORBA Trader Service ................................................. 152 Tabelle 18: Administration Interfaces des CORBA Trader Service.......................................... 153 Tabelle 19: Merkmale von CORBA Collections ....................................................................... 155 Tabelle 20: Interfaces des CORBA Property Service................................................................ 157 vi © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 1. Einführung und Überblick 1.1. Kontext Das technische und fachliche Referenzmodell [oFRM01] 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. Es definiert auch, an welcher Stelle im System sich welche Systemteile einklinken können und wie diese interagieren. 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ß. © GDV 2001 7 Inhalt Das Objektorientierte Technische Referenzmodell 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 1.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. In dem Dokument „Die Anwendungsarchitektur der Versicherungswirtschaft - Grundlagen und Prinzipien“ findet man 8 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt ähnliche Begriffe. Die Systemarchitektur wird synonym verwendet, während die technische Architektur der Komponentenarchitektur entspricht. Technisches Referenzmodell Dienste BusinessObjects und Komponenten • BO-Transaktionen • Suchen • BO-Persistenz • Erzeugen • BO-Beziehungen • Löschen Technische Dienste • Parametrisierung • Events • ... SystemArchitektur • CORBA Services • • Präsentation • Datenbanken Technische Architektur Object Request Broker Abbildung 2: Das technische Referenzmodell der VAA 1.2.1. Die technische Architektur Basis der technischen Architektur des Referenzmodells ist die Object Management Architecture der OMG (OMA), die Spezifikationen der CORBA-Services [OMG98a] und des Object Request Brokers [OMG98a]. 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. Über die IDL ist es möglich, Komponenten zu entkoppeln und über CORBA-Mechanismen miteinander interagieren zu lassen. 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. © GDV 2001 9 Inhalt Das Objektorientierte Technische Referenzmodell 1.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 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 der Common Facilities Architecture (CORBAFacilities) [OMG95]. 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. 1.2.3. Fachliche Komponenten und technisches Referenzmodell Die folgende Abbildung zeigt den Zusammenhang Systemarchitektur und technischer Architektur: 10 zwischen fachlichen Komponenten, © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Fachliches Referenzmodell Versionierbar (from LibraryPackage) IcisBasis (from LibraryPackage) Actor-Role -Pattern VersionierbarerAkteur Fachliche Komponentenmodelle Rolle 0..* Standard anzuwendendeAnschrift 0..1 Anschrift Person Standard 0..1 * Rufnummer 0..1 * 0..1 JurPerson anzuwendende Bankverbindung * Standard Bankverbindung Partner 0..1 NatPerson Technisches Referenzmodell VertragsabhaengigerPartner Vermittler Dienste Produktpartner Versicherte Person ObjektPartner SonstigePartnerrolle Versicherungsnehmer Postempfaenger partn erart Beitragszahler Leistungsempfaenger Business Objects und Komponenten • BO-Transaktionen • Parametrisierung • Suchen • BO- Persistenz • Events • Erzeugen • BO-Beziehungen • ... • Löschen Technische Dienste • CORBA Services • Präsentation • Datenbanken SystemArchitektur Technische Architektur Object Request Broker Abbildung 3: Zusammenhang der Modelle und Architekturen 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. Folgende Übersicht verdeutlicht das Zusammenspiel der einzelnen Ebenen am besten: © GDV 2001 11 Inhalt Das Objektorientierte Technische Referenzmodell Fachliches Referenzmodell Technisches Referenzmodell Fachliches Komponenten-Metamodell VAA Business Object Metamodell Geschäftsprozesse (Use-Case-Modell) Fachliches Komponentenmodell (AWKs und PKs) Technisches Komponenten-Metamodell Fachliche Dienste (Requirements) Fachliche Dienste (Implementierung) Fachmodell (EBOs und PBOs) Technische Architektur (OMA) Technische Dienste (Corba) Abbildung 4: Gegenüberstellung der Schichten des fachlichen und technischen Referenzmodells Das fachliche Komponenten-Metamodell benutzt die Definitionen des VAA Business Object Metamodells. Die fachlichen Komponenten (vgl. [oFRM01]) bestehen aus Business Objects und verwenden die im VAA Business Object Metamodell spezifizierten Schnittstellen. Die fachlichen Komponenten, die Prozesskomponenten (PKs) und Anwendungskomponenten (AWKs) sind eine fachliche Klassifizierung des technischen Komponentenbegriffs. Die im fachlichen Referenzmodell benutzten und benötigten fachlichen Dienste werden im technischen Referenzmodell spezifiziert und in die technische Infrastruktur eingebettet (Anmerkung: Es wurden nicht alle fachlichen Dienste spezifiziert). Die untersten Schichten (Fachmodell und technische Architektur) bilden bei beiden Referenzmodellen jeweils das Fundament, auf dem die anderen Schichten aufbauen. 12 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 2. 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 [GDV99]: 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. Darüber hinaus stellt CORBA Messaging Mechanismen 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 Anwendungssysteme spielt, insbesondere in desktop-orientierten Systemen. Entwicklung verteilter 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. [Meta98] und [Orfali98]). Weitere Elemente der technischen Architektur Die CORBA Standards enthalten keine Spezifikationen zur Benutzerschnittstelle. Angaben dazu in den CORBA Facilities [OMG95] haben lediglich Definitionscharakter. Wichtig aus Sicht des VAAReferenzmodells ist vor allem das Zusammenspiel zwischen Fachlogik, Steuerung und Präsentation unter Verteilungsaspekten (siehe hierzu Kapitel 3.3.6 und 3.4), die Präsentationstechnik selbst ist nicht Gegenstand des Referenzmodells. © GDV 2001 13 Inhalt Das Objektorientierte Technische Referenzmodell 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 3.2.5.1). 2.1. Die Object Management Architecture (OMA) 2.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). Application Interfaces Domain Interfaces Common Facilities Object Request Broker Object Services Abbildung 5: 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.ä. 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 14 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 Inter-ORB Protocol (IIOP) Für die Kommunikation verwenden Object Request Broker heutzutage vor allem das ebenfalls von der OMG spezifizierte Internet Inter-ORB 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 4.2): Interoperability Specification [OMG98c] Business Object Component Architecture (BOCA) [BOCA98]1 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 2001 OMG-Spezifikationen vorliegen werden, die sich stark an JavaBeans und Enterprise-JavaBeans orientieren (siehe Kapitel 2.1.3). Aus diesem Grund wurden bei der Definition des technischen Referenzmodells die JavaBeans- und Enterprise-JavaBeans Spezifikationen besonders berücksichtigt (siehe Kapitel 4.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.x Spezifikation läßt zuviel Raum für ORB-Hersteller bei der Gestaltung der Objekt- und Transaktionsverwaltung auf der Serverseite, wodurch Implementierungen mit unterschiedlichen ORBs nicht kompatibel sind. Diese Mängel sollen durch CORBA 3.0 (siehe Kapitel 2.1.3) und vor allem durch das Zusammenwachsen von CORBA und Enterprise-JavaBeans behoben werden. 1 Die Business Object Component Architecture (BOCA) wurde Mitte 1998 von der OMG aufgegeben. Nachfolger wurde in der BODTF die Business Object Initiative (BOI). Im Referenzmodell wird jedoch weiterhin Bezug auf BOCA genommen, da die Grundlagen speziell der InterOp bei der Erstellung der des technischen Referenzmodells der VAA größeren Einfluß hatten. © GDV 2001 15 Inhalt Das Objektorientierte Technische Referenzmodell 2.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 Implementierung der Klasse von "aObj" Stub von "aObj" 1. Objekt erzeugen mit Angabe der Referenz 2. Aufruf method() method() Client ORB Skeleton Server-ORB Anwendungsobjekt dynamic invocation (DII) Anwendungsobjekt Request - Objekt 1. aObj, Parameter, method() dem reqObjekt mitteilen; 2. Aufruf req.invoke() invoke() Client ORB aObj method() IIOP IIOP Abbildung 6: Kommunikation zwischen Client- und Serverobjekten mit Hilfe des ORBs 2.1.3. CORBA 3.0 und Java Übersicht Die in den vorangegangenen Abschnitten beschriebenen CORBA-Dienste und ORB-Funktionen beschränken sich auf die zur Zeit (oVAA 1.0) verfügbaren Spezifikationen von CORBA 2.x.. Im Fokus von CORBA 3.0 (aktuell 02/2001 ist die Spezifikation von CORBA 2.4.2) stehen insbesondere Spezifikationen bezüglich CORBA-Komponenten und verteilten Internet-Anwendungen: 16 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 (siehe auch 2.1.4). 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 [OMG97]) 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. Die Integration von CORBA und Enterprise JavaBeans zeigt eine Reihe „weißer Flecken“ in den bisherigen Versionen beider Standards auf: 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 © GDV 2001 17 Inhalt Das Objektorientierte Technische Referenzmodell 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, 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 Internet, 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 CORBA-Standards 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 CORBAPlattformen 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 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. 2.1.4. CORBA Components Überblick Mit der Spezifikation der CORBA-Components (CC) [OMG99] im Rahmen der CORBA 3.0Spezifikation [iX2000] hat die OMG ein Komponentenmodell für server-seitige Komponenten vorgelegt. Sie ist einerseits und erklärtermaßen stark an Sun Microsystems EnterpriseJavaBeansArchitektur angelehnt, andererseits, gemäß der OMG-Grundsätze, hersteller- und plattformunabhängig. Sie ist eine Obermenge der EJB-Spezifikation. CORBA-Components liefern im wesentlichen eine 18 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt ● Erweiterung des Metamodells um einen Komponententyp ● Definition der Schnittstellen(-architektur) von CORBA-Components ● Einführung der Component-IDL, einer Erweiterung der Interface Definition Language (IDL) um Elemente zur Beschreibung von Komponenten. ● Definition der Laufzeitumgebung (Container) für CC und deren Schnittstellen. ● Erweiterung um ein Auslieferungs(deployment)-Modell innerhalb der OMA. ● Beschreibung des Mappings von CC auf EnterpriseJavaBeans ● Anpassungen der bestehenden CORBA-Services an CC CORBA-Components (CC) sind eine Erweiterung und Spezialisierung des Object-Metatyps, die eine Reihe von Schnittstellen unterstützen. CC-Instanzen haben eine eindeutige Referenz, die eine Spezialisierung der object-Referenz ist. Die IDL wurde um Möglichkeiten zur Beschreibung der CC und deren Schnittstellen erweitert. CC benutzen die Systemdienste. Die Schnittstellen Wesentliches Merkmal einer CC ist ihre „Oberfläche“, das heißt die Menge ihrer Schnittstellen. Als Oberbegriff für alle Arten von CC-Schnittstellen wurde der Begriff „port“ eingeführt. Die Definition kennt vier Arten von ports: 1. Facetten (facets): Facets sind bestimmte, mit einem Namen versehene, Schnittstellen, die die Komponenten für die Interaktion mit dem Client zur Verfügung stellen. 2. Receptacle (receptacles): Ein Receptacle ist eine Schnittstelle, die eine CC nicht selbst implementiert, sondern importieren möchte. 3. Ereignis-Quellen (event sources) : Event sources sind, mit einem Namen versehene, Verbindungsstellen, an denen die Komponente Ereignisse aussendet. Als Empfänger der Ereignisse können ein oder mehrere Empfänger oder ein Ereigniskanal (event channel) auftreten. 4. Ereignis-Senken (event sinks): Event sink sind, mit einem Namen versehene, Eingangsstellen für Ereignisse. Es gibt eine herausragende Schnittstelle, die so genannte Äquivalenzschnittstelle (equivalence interface). Diese ist die zentrale Schnittstelle der Komponente, in der die Sicht des Clients auf die Komponente beschrieben ist. Über sie erhalten Clients Referenzen auf alle Ports einer CC-Instanz. Diese ermöglichen es Clients, zwischen den verschiedenen Ports zu navigieren und sich mit diesen zu verbinden. © GDV 2001 19 Inhalt Das Objektorientierte Technische Referenzmodell equivalent interface CORBA-Component Receptacle facets Implementierung Implementierung event source event sink Abbildung 7: Die CC-Schnittstellen: Die Ports Die Implementierungen der Facets sind innerhalb der Komponente gekapselt. Die Referenzen auf Facets sind eindeutig, so dass Clients immer die Möglichkeit haben zu erkennen, ob zwei Referenzen zur gleichen Instanz gehören oder nicht. Die Lebensdauer der Referenzen ist gleich der Lebensdauer der Komponente. CORBA-Components können Primärschlüssel zugeordnet werden. Wie auch EnterpriseJavaBeans sind CORBA-Components genau einem Home-Interface des Containers zugeordnet. Dieses Interface enthält alle Methoden, die zur Instanziierung der jeweiligen Komponenten-Klasse benötigt werden. Insbesondere kann hier die Zuordnung von PrimärschlüsselAttributen zu bestimmten Komponenten-Instanzen vorgenommen werden. Die Spezifikation beschreibt die Finder-Methoden, die Clients nutzen können, um bestimmte CC-Instanzen zu finden. CORBA-Components-Container Die CC-Spezifikation kennt zwei verschiedene Kategorien von Containern für CC. Die Unterschiede liegen im Lebenszyklus der von ihnen unterstützten Komponenten. Persistente Container unterstützen persistente Referenzen auf Komponenten. Transiente Container unterstützen dies nicht. Die Rahmenbedingungen für die Interaktion, genannt Implementierungstypen (container implementation types) zwischen Container und Komponente werden weiter spezifiziert. Transiente Container werden in zwei Implementierungstypen spezifiziert. ● Zustandslos (stateless): Bei statuslosen Containern findet die Interaktion zwischen Komponente und Container über einen POA (portable object adapter) statt, der alle Instanzen eines Komponententyps präsentiert. ● Dialogorientiert (conversational): Bei ‘conversational’ Containern ist für jede KomponentenInstanz ein eigener, dedizerter POA zuständig, über den die Interaktion läuft. Für persistente Container gibt es nur einen Implemetierungstyp: ● Dauerhaft (durable): Bei dauerhaften Komponenten ist jede Instanz mit einer dauerhaften und Referenz versehen. Die Interaktion läuft über einen dedizierten POA. Nur bei persistenten Containern und dem Implementierungstyp „dauerhaft“ ist die Zuordnung von Primärschlüsseln zu CC-Instanzen möglich. Mit diesen Begriffen, lassen sich folgende vier Kategorien von CORBA-Components ableiten: 20 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Kategorie Containertyp Implementierungstyp Primärschlüssel EJB-Pendant Service transient stateless nein - Session transient conversational nein session Process persistent durable nein - Entity persistent durable ja entity Tabelle 1: Kategorien von CORBA-Components Service-Komponenten sind zustandslos und hängen so nicht von einem bestimmten Client ab. SessionKomponenten sind fest an einen Client gebunden und hängen in ihrem Zustand von diesem ab. Process-Komponenten sind ebenfalls mit einem Client fest verbunden. Auf Entity-Komponenten ist über ihren Primärschlüssel ein Zugriff von beliebigen Clients möglich. Zwischen Komponente und Container gibt es eine Reihe weiterer in der Spezifikation beschriebener Schnittstellen, die bei Bedarf verwendet werden können: ● Methoden, mit denen die Komponente die eigene Referenz und die ihrer Home-Schnittstelle erfragen kann. ● Transaktionsschnittstelle ● Die Transaktionsschnittstelle enthält die Methoden, die für die Teilnahme einer Komponente in einem Transaktionskontext benötigt werden. ● Sicherheitsschnittstelle ● Die Sicherheitsschnittstelle dient der Authentifizierung und Authorisierung des Aufrufers. ● Ereignissschnittstelle ● Die Ereignisschnittstelle enthält die Methoden, die zur Verarbeitung von Ereignissen benötigt werden. Wertung Mit CORBA-Components füllt die OMG die Lücke der serverseitigen Komponenten in ihren bisherigen Spezifikationen. Sie bildet dabei bewusst eine Obermenge der EnterpriseJavaBeansSpezifikation. Derzeit fehlen noch umfangreichere Implementierungen von CORBA-Components basierten Anwendungssystemen, so dass noch nicht viele Erfahrungen aus der Projektpraxis vorliegen.. Die Nähe zu EnterpriseJavaBeans macht es für EJB-Entwickler jedoch verhältnismässig einfach, CC-basierte Systeme zu entwickeln. Auch ist zu erwarten, dass die Entwickler von EJBEntwicklungsumgebungen und EJB-Containern diese um die Möglichkeiten zur Entwicklung und Nutzung von CC erweitern werden. In der Vergangenheit hat sich in verschiedenen Projekten gezeigt, dass CORBA-basierte Systeme sehr „verwaltungslastig“ wurden und dadurch Performance-Probleme auftraten. Es ist nicht zu erwarten, dass die Spezifikation der CC daran etwas ändert – weder im positiven, noch im negativen. Sie stellen eine reine konzeptionelle Ergänzung um bisher fehlendes dar. © GDV 2001 21 Inhalt Das Objektorientierte Technische Referenzmodell Zum Zeitpunkt der Erstellung des Dokumentes lag noch keine entgültige CCM-Spezifikation der OMG vor. Aktuelle Informationen über den Stand der Spezifikation sowie über Produkte zum CCM findet man unter www.omg.org . 2.2. Distributed Internet Architecture (DNA) Im Rahmen der Produktentwicklung von Windows 2000 wurde die DNA von Microsoft überarbeitet. Diese Änderungen sind nicht in den DNA-Überblick eingeflossen. Aktuelle Informationen bezüglich DNA und Biztalk findet man unter www.microsoft.com und www.biztalk.org. 2.2.1. Definition und Grundbegriffe Die Plattform für Microsoft Anwendungen besteht aus einem mehrschichtigen, verteilten Anwendungs-Modell und den 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. 2.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 22 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt können diese zu einer Gesamtanwendung zusammenfügt und auf unterschiedliche Plattformen verteilt werden. Auf Komponenten basierende Anwendungen und DNA bedienen sich dabei einer allgemeinen Infrastruktur sowie der Netzwerkdienste, die durch das Betriebssystem Windows bereitgestellt werden.. 2.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 8: 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 © GDV 2001 23 Inhalt Das Objektorientierte Technische Referenzmodell 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. 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. 2.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 Komponenten-basierten 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. 24 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3. Die Systemarchitektur der VAA Komponenten-basierte Softwarearchitekturen sollen die Wartbarkeit, Pflege, Ü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 4.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 Komponente schwer von einander getrennt werden. Der Unterschied liegt darin, daß Subsysteme in einen 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. 3.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.“ 2 [Stal99] 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). 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. 2 Aus „Des Knaben Wunderhorn“ von Michael Stal, ObjektSpektrum 01/99 © GDV 2001 25 Inhalt Das Objektorientierte Technische Referenzmodell Bei der Nutzung von Komponenten sollten keine Überschneidungen von Funktionalitäten erfolgen. Dies obliegt jedoch der Verantwortung des Komponentennutzers. Eine Redundanzfreiheit der Funktionalitäten mehrerer Komponenten kann nicht gewährleistet werden. Entsprechend wird eine technische Komponente im Referenzmodell der VAA definiert. Eine technische VAA-Komponente enthält beliebig viele Business Objects (Im Vergleich dazu wird eine fachliche VAA-Komponente differenzierter definiert. Siehe dazu „Das fachliche Referenzmodell der VAA“ [oFRM01]). Sie erfüllt folgende Kriterien: ● Sie enthält beliebig viele Entity Business Objects (EBO) und Process Business Objects (PBO) (vgl. Definition und Kategorisierung von Business Objects in 3.2) ● Es handelt sich um eine verkaufbare Software-Einheit ● Die technische VAA-Komponente ist in beliebigen Kontexten einsetzbar und in sich funktional abgeschlossen ● Sie besitzt wohldefinierte Schnittstellen, über die die einzelnen Funktionalitäten der Komponente abgerufen werden können und ● Sie ist mit Hilfe von Konfigurations-Werkzeugen konfigurierbar. Die Konfiguration von Komponenten kann nur an deren Schnittstellen durchgeführt werden. Komponenten müssen, wie zuvor definiert, bestimmte Schnittstellen zur Verfügung stellen. Letztlich werden diese Schnittstellen von den in der Komponente vorhandenen BOs zur Verfügung gestellt und im Kontext der Komponente veröffentlicht. Diese Schnittstellen sind zweigeteilt. Es existieren fachlich notwendige Schnittstellen, die Funktionalität und Services zur Verfügung stellen und sogenannte Framework-abhängige Schnittstellen, die benötigt werden, damit sich die Komponente in das benutzte Framework, welches die Infrastruktur (z.B. BO-Manager und Persistence-Service) bereitstellt, einfügen kann. Abbildung 9: Konfiguration von Komponenten 26 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Konfigurationswerkzeuge müssen Framework-spezifisch erstellt werden. Sie sind in der Lage, die von der Komponente zur Verfügung gestellten Schnittstellen zu konfigurieren (siehe auch Abbildung 9). Komponenten müssen dazu beispielsweise über einen Introspection-Mechanismus ihre Funktionalität „nach außen“ bekannt geben können. Weiterführende Literatur zu Software Komponenten findet sich u.a. in [Szyp98]. 3.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 (vgl. [Eeles98]), muß es jedoch nicht sein. 3.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. 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äsentationen können Business Objects zugeordnet werden.. © GDV 2001 27 Inhalt Das Objektorientierte Technische Referenzmodell 3.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 das 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 Abbildung 10: Beispiel für ein Dependent Object 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. 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. 28 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3.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 zu logischen Einheiten zusammengefaßte 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 11: 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. 3.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 unten 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ämienrechner das Dependent Object Prämienrechner zurückliefert (samt der Referenzen zu den assozierten Business Objects). Die Berechnung kann daraufhin durch den Aufrufer zu beliebigen Zeitpunkten geschehen. © GDV 2001 29 Inhalt 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 12: Entity Business Object 3.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 fachlichen 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. Ein PBO identifiziert einen bestimmten fachlichen Vorgang eindeutig (z.B. „Antrag Maier, Hugo vom 14.07.2000“). In einfachen Fällen kann ein PBO auch den technischen Transaktionskontext darstellen (im Sinne des ACID-Prinzips). Bei Prozessen, die aus hierarchisch gegliederten PBOs bestehen, werden im allgemeinen jedoch mehrere technische Transaktionen beteiligt sein (z.B. Partnerdatenänderung und Vertragsdatenänderung). 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. 30 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 13: 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ändiges PBO realisiert werden können, oder sogar als konstantes „Einmal“-Objekt („Singleton“, vgl.) 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 PBOs hergestellt. Dies gilt auch dann, wenn mehrere EBOs 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 jede Teilaufgabe den richtigen Adressaten aufrufen (vgl. Entwurfsmuster „Vermittler“ in [Gamma96]). 3.2.4. Interfaces von Business Objects Die verschiedenen Kategorien von Business Objects stellen definierte Interfaces (IFCs) für die Benutzung zur Verfügung. Dabei gibt es notwendige (muß) und optionale Interfaces, d.h. gewisse Grundfunktionalität muß bei einem Business Object implementiert werden und gewisse Funktionalitäten müssen nicht von jedem, sondern nur von bestimmten Business Objects bereit gestellt werden. Eine Übersicht gibt Abbildung 14. © GDV 2001 31 Inhalt Das Objektorientierte Technische Referenzmodell BO implementiert EBO implementiert PBO implementiert implementiert implementiert Histo IFC Simple IFC WF IFC GUI IFC Simple IFC optional muß optional optional muß Abbildung 14: : Interfaces von Business Objects Das EBO stellt zunächst zwei Interfaces zur Verfügung. Das „Simple Interface“ des EBO stellt die Basisfunktionalität eines EBO am Interface bereit. Darüber hinaus kann das „Historisierung Interface“ implementiert werden. Mit Hilfe dieses Interfaces kann ein EBO historisiert werden (vgl. Dienst Historisierung in 3.3.6). Auch das PBO implementiert bestimmte Interfaces. Zunächst muß jedes PBO das Interface „Simple Interface“ implementieren, d.h. die entsprechende Basisfunktionalität zur Verfügung stellen (vgl. 3.2.3.2 und 3.2.5). D.h. die geforderten Eigenschaften der PBOs (transaktional, etc.) müssen an diesem Interface zur Verfügung stehen. Da grundsätzlich Präsentationen innerhalb eines PBO-Kontextes definiert werden, jedoch nicht jedes PBO unbedingt eine Präsentation haben muß (z.B. Batch-Abläufe ohne expliziten Output), besteht die Notwendigkeit, einem PBO eine Präsentation zuzuordnen. Um die Konfiguration durchzuführen und die Präsentation anzusprechen, muß ein PBO, welches eine Darstellung „hat“, das „Presentation Interface“ (GUI-IFC) implementieren. Die Entkopplung des PBO von der Präsentation bleibt weiterhin durch die Verwendung von Presentation-Controllern (siehe 3.4) gewahrt. Prozessobjekte, die innerhalb eines Geschäftsprozesses von der Workflow-Engine direkt gesteuert werden (vgl. Dienst Prozesssteuerung in 3.3.1) besitzen drüber hinaus das „Workflow-Interface“(WFIFC), damit die benötigte Funktionalität an dieser Schnittstelle bereitgestellt werden kann. Mit Hilfe der vorher kurz beschriebenen Interfaces lässt sich somit eine weitere Kategorisierung der Business Objects vornehmen. Dieses Konzept lässt beispielsweise dem Modellierer bzw. Implementierer eines konkreten VU-Systems die Freiheit, die Granularität einer Historisierung oder einer Macrosteuerung per Workflow-Engine selbst zu bestimmen. Das technische Referenzmodell kann an dieser Stelle nur die Mechanismen hierfür bereitstellen. 32 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3.2.5. 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 Components. 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 einer ausgewählten Komponentenarchitektur abgebildet werden. 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 3.2.5.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 [SUN00] BaseFactory/Container in SanFrancisco [IBM] TypeManager in der Interoperability Spezifikation [OMG98c] Das BO-Manager - Framework ist für die folgenden Aufgaben zuständig: © GDV 2001 33 Inhalt Das Objektorientierte Technische Referenzmodell 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 Datenbank und Business Object und ist für die folgenden Aufgaben zuständig (siehe Abschnitt 3.2.5.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 15). 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. 34 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Business Object BOPersistenceService BO - Manager -Framework Abbildung 15: 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: 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 2 : 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. 3.2.5.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 Object 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 gegebenenfalls das Laden © GDV 2001 35 Inhalt Das Objektorientierte Technische Referenzmodell 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 16: Proxy-Objekte für Business Objects 3.2.5.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. 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-Laptops 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 Meta-Informationen die Speicherung des Zustands selbst vorzunehmen (Persistence Framework). 36 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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. 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 Anwendung 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 © GDV 2001 37 Inhalt Das Objektorientierte Technische Referenzmodell 3.2.5.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: 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, 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 Persistenz Frameworks geeignet. Business Object und BO-Persistence Service stellen dem Finder Meta-Informationen 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. 3.2.5.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 38 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt stellen (vgl. Factory-Entwurfsmuster [Gamma96]). 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. 3.2.5.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 3.2.5.3). 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 3.2.5.10) stellt einen Eventtyp zur Verfügung, der die automatische Benachrichtigung verbundener Business Objects bei Löschoperationen erlaubt. 3.2.5.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. „Lange“ und ACID-Transaktionen Innerhalb eines durch ein PBO implementierten Vorganges können verschiedene Typen von Transaktionen vorkommen. ACID – Transaktionen dienen vor allem dazu, die Konsistenz eines Netzes aus Business Objects zu gewährleisten. Lange Transaktionen bezeichnen Geschäftsprozesse oder Vorgänge, die aus einer Reihe eigenständiger ACID-Transaktionen bestehen. Für diese Vorgänge besteht meist weder die technische Möglichkeit noch die Notwendigkeit einer Einhaltung der ACID – Prinzipien. In vielen Fällen sind sie sogar unerwünscht: eine Aktualisierung der Partnerdaten im Rahmen eines Angebotsprozesses wird man auch dann nicht zurücknehmen, wenn kein Vertrag zustande kommt. Lange Transaktionen wird man deshalb bei der Modellierung der Prozesse oder Anwendungssysteme explizit berücksichtigen, z. B. durch geeignete Status-, Historisierungs- bzw. Schwebekonzepte. Bei den an dieser Stelle behandelten Transaktionen handelt es sich deshalb um ACID-Transaktionen. Die Abgrenzung zu langen Transaktionen erfolgt auf der Ebene der PBOs: Ein PBO kann eine ACID Transaktion klammern, d.h. alle beteiligten EBOs und untergeordneten PBO nehmen an ihr teil, sofern sie dazu in der Lage sind (siehe Festlegung des Transaktionsverhaltens unten). © GDV 2001 39 Inhalt Das Objektorientierte Technische Referenzmodell Klammert ein PBO eine lange Transaktion, ist zwar sein eigener Zustand transaktionsgesichert, es stellt jedoch keinen Transaktionskontext für untergeordnete PBO oder EBOs zur Verfügung. Die Klammer der langen Transaktion wird hergestellt durch (anwendungsspezifische) Schlüsselinformationen (z.B. Status, Version, Datum), mit deren Hilfe die zu dieser Transaktion gehörenden Daten identifiziert werden können. ACID – Transaktionen und BO-Manager - Framework 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-Persistence Service Der BO-Persistence Service bzw. die zugrundeliegenden Datenbanken müssen Commit/Rollback Protokolle (X/Open) unterstützen Sperrmechanismen des Persistence Service müssen sinnvoll mit dem Transaktionsmanagement zusammenarbeiten. Transparenz bezüglich paralleler 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 3.2.5.2 beschriebene Proxy-Objekt des BO-Manager - Frameworks dient dazu, gleichzeitige Anforderungen an ein Business Object zu serialisieren oder gegebenenfalls. mehrere Instanzen eines 40 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Business Objects zu erzeugen. Damit kann ein Business Object als „Single User“ - Objekt realisiert werden. 3.2.5.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 7.1.1.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 3.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. 3.2.5.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: © GDV 2001 41 Inhalt Das Objektorientierte Technische Referenzmodell „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 assoziierte 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 vordefinierter 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. 3.2.5.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: „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 Schnittstellen definiert sein, die im Zusammenhang mit dem CORBA Relationship Service automatisch Verbindungspartner benachrichtigen. Transaction Events Events, die zum Abschluß oder Abbruch einer 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. 42 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3.2.6. VAA Business Object Metamodell Aus den vorher beschriebenen Eigenschaften von Business Objects läßt sich das VAA Business Object Metamodell ableiten. Die Abbildung gibt eine Übersicht über das Zusammenspiel der verschiedenen Objekte. Abbildung 17: Das VAA Business Object Metamodell Der Lebensraum eines Business Objects wird also durch den BO-Manager bzw. das BO-ManagerFramework beschrieben und verwaltet. Das BO selbst kann entweder fachliche Entitäten in Form von EBO oder aber fachliche Abläufe in Form von PBO darstellen. 3.3. Fachlich motivierte Dienste 3.3.1. Prozeßsteuerung 3.3.1.1. Problemstellung Im VAA technischen Referenzmodell werden Geschäftsabläufe generell durch Process Business Objects (PBO) abgebildet. Von außen betrachtet stellt ein PBO die gesamte Logik eines Geschäftsablaufs dar. Die bisherigen Ausführungen zu PBO (vgl. Kapitel 3.2.3.2) definieren dazu die grundlegenden Eigenschaften von Process Business Objects. Um Process Business Objects im Rahmen einer Architektur zu implementieren, sind eine Reihe weiterer Konzepte und Rahmenbedingungen zu definieren, die über die grundlegenden Eigenschaften hinausgehen. Dazu gehören insbesondere: ● Standardisierung der Schnittstellen zwischen PBOs untereinander, zu EBOs und zu kommerziellen Workflowsystemen. ● Verknüpfung fachlicher Teilprozesse mit Hilfe von PBOs auch über System- und Unternehmensgrenzen hinweg. © GDV 2001 43 Inhalt Das Objektorientierte Technische Referenzmodell ● Spezifikationen von Anwenderdiensten wie Postkorb, Terminverwaltung usw. ● Schnittstellen zur Überwachung und Administration von Prozessen, einschließlich der Schnittstellen für die Zuordnung von Ressourcen. ● Möglichkeiten der Erzeugung oder Steuerung von PBOs mit Hilfe formaler Prozessdefinitionen. Eine detaillierte Behandlung der Themen ist im Rahmen einer allgemeinen Systemarchitektur nicht möglich. Dieses Dokument beschränkt sich deshalb auf grundlegende Konzepte und ihre Anwendbarkeit innerhalb der VAA Referenzarchitektur. Ziel ist ein allgemeiner Leitfaden für das Design von prozessorientierten Anwendungen, der eine Realisierung auf unterschiedlichen Plattformen ermöglicht. Um eine möglichst breite Anwendbarkeit zu gewährleisten, basieren die vorgestellten Konzepte auf den Architekturmodellen und Schnittstellenspezifikationen der Workflow Management Coalition (WfMC) beziehungsweise deren objektorientierter Version, die von der OMG aufgenommen wurde. 3.3.1.2. Standards der WfMC und OMG Die Workflow Management Coalition (WfMC) adressierte eine Reihe der oben angeführten Fragestellungen im Rahmen ihres Workflow-Referenzmodells [WfMC94] und definierte Schnittstellen zwischen Komponenten workflowbasierter Systeme [WfMC96a],[WfMC96b],[WfMCc]. Der Versuch, diese Spezifikationen als OMG-Standard festzulegen, scheiterte zunächst [Sch+98]. Das WfMC - Modell ging von einer monolithischen Workflowmaschine aus und berücksichtigte nicht das offene Business Object Model der OMG [Sch98]. Nachdem die OMG im Mai 1997 einen RFP (request for proposal) für die Workflow Management Facility veröffentlichte, kam es letztlich zu einer Joint Submission mehrerer Hersteller [OMG98b], die die Vorgaben der OMG stärker berücksichtigt und gleichzeitig konform ist zu den WfMC- Schnittstellenbeschreibungen. Die OMG - Submission basiert auf dem Business Object Model der OMG, das auch in wesentlichen Teilen die Grundlage des technischen Referenzmodells von VAA bildet (vgl. Kapitel 2). Insbesondere verwenden die OMG Spezifikationen eine zu VAA konforme Definition von BO, PBO und EBO. Aufgrund des Bezugs zum OMG - Business Object Metamodell sind diese Spezifikationen nicht nur auf der Workflowebene anwendbar, sondern auf allen Ebenen der Prozeßsteuerung. Ihre Anwendung hat den Vorteil, daß dadurch ein über alle Steuerungsebenen einheitliches Verhalten realisiert werden kann. Der Verzicht auf eine formale Trennung zwischen unterschiedlichen Steuerungsebenen ist unseres Erachtens auch deshalb sinnvoll, da die DV-technische Unterstützung von Geschäftsprozessen sehr unterschiedlich sein kann. So können in Zukunft manche Geschäftsprozesse von Anfang bis Ende durch automatisch ablaufende DV-Vorgänge realisiert sein (z.B. Internet-Geschäftsprozesse), während andere Prozesse durch eine Workflow-Anwendung unterstützt sind. Trotzdem ist es oft wünschenswert, in beiden Prozessen die gleichen Prozessbausteine - allerdings auf unterschiedlichen Ebenen - zu verwenden. Ein Worklflow Management System muß interne alsauch externe Geschäftsvorfälle unterstützen Die in diesem Kapitel vorgestellten Schnittstellen und Konzepte zur Prozeßsteuerung basieren deshalb auf den OMG-Spezifikationen. Im Sinne einer breiteren Verwendbarkeit haben wir auf die CORBASpezifika verzichtet, ohne jedoch die grundsätzliche Struktur der Schnittstellen und der beteiligten Objekte zu verändern. Eine Kurzbeschreibung der OMG-Spezifikation findet sich zum Beispiel in [OOPS97] . 44 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Die folgende Abbildung stellt das Referenzmodell der WfMC in einer für unsere Belange passenden Form dar: Prozessdefinitionen Prozeßsteuerung Administration Überwachung PBO AnwenderDienste (Postkorb, Termin usw.) „externe“ Steuerungen PBO ausführende Komponenten Abbildung 18: Elemente der Prozeßsteuerung Unter den einzelnen Komponenten des Referenzmodells ist folgendes zu verstehen: Prozessdefinitionen Formale Spezifikation von Prozessen und die Verwendung der Spezifikationsdaten in der Steuerung. Prozeßsteuerung „Run Time“ der Prozeßsteuerung. Sie besteht aus den PBOs selbst sowie allen weiteren Hilfsfunktionen bzw. -objekten, die für ihre Ausführung erforderlich sind (entspricht dem „Workflow Enactment System“ im Referenzmodell der WfMC) „externe“ Steuerungen Im WfMC - Referenzmodell werden Schnittstellen zwischen Workflowsteuerungen unterschiedlicher Hersteller definiert. Diese Spezifikationen können auch für die Schnittstellen zwischen PBOs verallgemeinert werden. ausführende Komponenten Im WfMC - Referenzmodell sind ausführende Komponenten Anwendungen, die in den einzelnen Prozeßschritten ausgeführt werden. Die Spezifikationen der Schnittstellen zu diesen Anwendungen kann auch für die Schnittstellen zwischen PBO und EBO verwendet werden. Anwender - Dienste Client-Anwendungen des Workflowsystems zur Steuerung der Prozesse und Verwaltung der Arbeitsaufträge. Das WfMC Modell definiert Schnittstellen zu dieser Art von Anwendungen. Administration / Überwachung Das WfMC – Modell definiert Schnittstellen zur Steuerung und Überwachung des Workflowsystems. Die folgende Abbildung zeigt das Objektmodell der Workflow Management Facility der OMG. Es dient als Ausgangspunkt der VAA-Spezifikationen. © GDV 2001 45 Inhalt Das Objektorientierte Technische Referenzmodell Abbildung 19: Das Objektmodell der Workflow Management Facility der OMG, by OMG Gemäß dieser Abbildung definiert das OMG – Modell die folgenden Kern-Schnittstellen eines Workflowsystems: WfRequester Schnittstelle für den „Aufrufer“ eines Geschäftsprozesses. Über diese Schnittstelle informiert ein Geschäftsprozess seinen „Aufrufer“ über Statusänderungen. WfProcessMgr „Factory“ – Schnittstelle zur Erzeugung und Suche von Prozessobjekten (analog dem BO-Manager Interface) eines bestimmten Typs. WfProcess Schnittstelle eines jeden Prozessobjekts. Über diese Schnittstelle wird der Prozeß von seinem „Requester“ gesteuert. WfActivity Schnittstelle eines Prozessschrittes. WfActivity ist abgeleitet aus WfRequester, d.h. ein Prozessschritt kann selbst als „Requester“ eines Teilprozesses dienen. WfExecutionObject Abstrakte Basisklasse aus der WfProcess und WfActivity abgeleitet wird. Sie definiert die grundlegenden Eigenschaften, die Prozessen und Prozessschritten gemeinsam sind. Dazu gehören u.a. Name, eine ID und eine Beschreibung des aktuellen Prozesses und Angaben über die Priorität. 46 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt WfAssignment Definiert die Verbindung zwischen Aktivitäten (Prozessschritten) und Ressourcen. WfResource Schnittstelle zur Repräsentation der Person oder des Systems, das eine Aktivität ausführt oder zulässt (Schnittstelle zu Berechtigungssystemen!) WfEventAudit Allgemeine Schnittstelle für die Registrierung von WorkflowEreignissen. Für diese Schnittstelle existieren verschiedene Spezialisierungen, abhängig vom Typ des Ereignisses. Die Dualität von Aktivitäten, die sowohl als Aufrufer von Prozessen als auch als Prozessschritte erscheinen können, erleichtert die hierarchische Strukturierung von Prozessen durch Teilprozesse. Die Differenzierung zwischen WfProcess, WfRequester und WfActivity ermöglicht zudem die Anbindung von Anwendungskomponenten, die nicht über Workflowschnittstellen verfügen bzw. die Koppelung verschiedener Workflowsysteme (in unterschiedlichen Umgebungen). WfActivity fungiert dabei als Adapterschnittstelle zwischen Aufrufer und Prozess. Da einem WfRequester mehr als ein WfProcess zugeordnet werden kann, ist auch auf dieser Ebene eine Zusammenfassung von Teilprozessen möglich. WfProcess, WfRequester und WfProcessMgr verfügen über Methoden, mit denen durch den Prozessbaum navigiert werden kann. 3.3.1.3. Abbildung auf das VAA - Referenzmodell Die im vorherigen Abschnitt beschriebene OMG-Spezifikation kann auf relativ einfache Weise auf das VAA-Referenzmodell abgebildet werden (siehe 3.2.3). Das Interface WfProcessMgr kann durch eine Spezialisierung des BO-Managers oder durch diesen selbst implementiert werden. In einer EJBImplementierung kann dieses Interface durch das Home – Interface des zugeordneten Prozessobjektes realisiert werden, da dieses als BO-Manager fungiert. Auf analoge Weise realisieren PBOs die Interfaces WfRequester, WfProcess und WfActivity. Dadurch können PBOs direkt als Teilprozesse in andere PBOs integriert werden. <<In terface >> Exe cutionObject BOManager <<In terface >> Req uester PBOManager <<In terface >> P rocess <<In terface >> Activity <<In terface >> ProcessManager P BO Abbildung 20: Abbildung auf das VAA-Referenzmodell Diese einfache Abbildung muss für komplexere Anwendungssysteme erweitert werden. In dialogorientierten Systemen besteht ein Prozess im allgemeinen aus dialogorientierten Teilen und automatisierten Schritten („Dunkelverarbeitung“). Dialogsequenzen werden dann sinnvollerweise © GDV 2001 47 Inhalt Das Objektorientierte Technische Referenzmodell durch spezielle Activity-Objekte repräsentiert (siehe Abbildung 21). Erst wenn diese sich im Status Completed (siehe nächsten Abschnitt) befinden, schreitet der Prozess fort. Aktivitäten wie Prämienberechnung, Druckausgabe oder Deckungsprüfung können auf die gleiche Weise über Activity-Objekte eingebunden werden. Der Vorteil gegenüber einer direkten Einbindung in das PBO liegt in der Universalität der WfActivity-Schnittstelle. Auf diese Weise eingebundene Komponenten sind in jeder Umgebung, die diese Spezifikation erfüllt, einsetzbar. Einbindung von EBOs Die Bearbeitung, Speicherung und Transaktionssicherung von Entity Business Objects ist gemäß der OMG-Spezifikation nicht durch das Workflow-Management zu leisten. Die OMG – Spezifikation konzentriert sich auf die Prozesssicht eines Anwendungssystems. Diese Abgrenzung ist deshalb sinnvoll, weil sie die Anwendbarkeit der Spezifikation auf allen Prozessebenen erlaubt. Im VAAReferenzmodell sind EBOs PBOs zugeordnet, die Transaktionsgrenzen werden von den PBOs bestimmt. Das Transaktionsverhalten kann unabhängig von den benannten Prozessschittstellen gestaltet werden. << Inte rf ac e> > ExecutionObject <<Interface>> Requester <<Interface>> Process <<Interface>> Activity PBO Dialogsteuerung SystemA da pt er De ck ungsP ru ef er DruckOutput PrämienServer Abbildung 21: Integration von Activity-Objekten 3.3.1.4. Prozesszustände Das OMG-Modell definiert einen hierarchischen Satz von Systemzuständen, der nach unten beliebig erweitert werden kann: 48 © GDV 2001 Das Objektorientierte Technische Referenzmodell open Inhalt closed not_running completed not_started running terminated suspended aborted Abbildung 22: Prozesszustände Für eine detaillierte Beschreibung dieser Systemzustände sei auf die OMG-Dokumentation verwiesen[OMG98b]. Die benannten Zustände sind als IDL-Datentypen spezifiziert, der aktuelle Zustand eines Prozessobjektes kann durch Aufruf entsprechender Methoden, die in WfExecutionObject spezifiziert sind, ermittelt werden. Diese Methoden und Zustände müssen von allen Prozess- und Activity-Objekten unterstützt werden. Eine hierarchische Erweiterung dieser Zustände ist möglich, sie werden durch eine Punktnotation dargestellt: MyState = open.running.my_spezial_running_substate Die in der OMG – Spezifikation definierten Zustände und auch die möglichen Erweiterungen sind wenig geeignet, fachliche Zustände von Prozessen abzubilden. Fachliche Zustände sollten deshalb als Elemente des ProcessData Datentyps definiert werden. Dieses Verfahren ist in Abschnitt 3.3.1.7 beschrieben. 3.3.1.5. Administration und Überwachung Für die Überwachung von Systemzuständen definiert das OMG-Modell eine Reihe von Ereignistypen: WfEventAudit Allgemeine Schnittstelle für die Workflowereignissen. Die folgenden Spezialisierungen von WfEventAudit. WfStateEventAudit Schnittstelle für ein Ereignis, das Zustandsänderungen eines Prozess markiert. WfCreateProcessEventAudit Schnittstelle für ein Ereignis, das die Erzeugung eines Prozesses markiert WfDataEventAudit Schnittstelle für ein Ereignis, das die Änderung von Prozessdaten markiert. WfAssignmentEventAudit Schnittstelle für ein Ereignis, Ressourcenzuordnungen markiert. das Registrierung Ereignistypen die Änderung von sind von WfEventAudit – Events und seine Spezialisierungen werden über einen Notification Service (z.B. als StructuredEvents der OMG) von Prozessen, Aktivitäten und Ressourcen an Überwacher („Listener“) verschickt. Die Überwachung selbst wird von der OMG als interne Funktion eines WorkflowManagement-Systems angesehen und ist deshalb nicht Bestandteil der Spezifikation. © GDV 2001 49 Inhalt Das Objektorientierte Technische Referenzmodell Die WfEventAudit – Schnittstelle definiert Methoden, die eine Navigation über eine zusammengehörende Kette von Ereignissen erlauben. Ereignisse sind darüber hinaus persistent und ihr Lebenszyklus ist von dem des auslösenden Prozesses unabhängig. Das Ereignismodell der OMG kann direkt auf das VAA-Referenzmodell übertragen werden. PBOs fungieren dabei als Ereignisquellen. Für die Überwachung fachlicher Vorgänge oder Geschäftsprozesse sind die im OMG – Modell definierten Ereignistypen nicht ausreichend. Für die Verfolgung eines Vorganges aus fachlicher Sicht („Vorgangshistorie“) sind WfDataEventAudits geeignet. Fachliche Vorgangsbeschreibungen sind dabei als Prozessdaten (Typ ProcessData) hinterlegt. Gegebenenfalls ist auch eine Spezialisierung des Typs WfDataEventAudit möglich. Auch die Fehlerbehandlung (siehe Kapitel 3.3.4) kann über diese Ereignisschnittstelle abgewickelt werden. Schnittstellen zur Administration der Prozesssteuerung sind derzeit von der OMG noch nicht definiert. Die Administration selbst ist aus Sicht der OMG (und WfMC) eine interne Funktion des Workflowsystems. 3.3.1.6. Zuordnung von Ressourcen Die Zuordnung von Ressourcen, die für die Bearbeitung einer Activity benötigt werden, ist im OMGModell nur rudimentär durch die Schnittstellen WfAssignment und WfResource definiert. Vorgangssteuerungs- und Workflowsysteme müssen diese Schnittstellen spezialisieren. Ein entsprechendes RFP (Request for Proposal) für die Ressourcenzuordnung wurde in 2000 von der OMG veröffentlicht [OMG2000]. Abbildung 23 stellt das prinzipielle Schema der Zuordnung von Ressourcen zu PBOs dar. Abhängig vom Typ der Ressource wird die WfAssignment und WfResource – Schnittstelle durch unterschiedliche Klassen implementiert. Die Abbildung stellt in vereinfachter Form drei Szenarien dar: Die Zuordnung eines Postkorbs Die Zuordnung Bearbeiterrolle Die Zuordnung eines Users 50 Da die WfResource – Schnittstelle über Methoden verfügt um alle der Ressource zugeordneten Aktivitäten zu ermitteln und zu ändern, kann durch dieses Verfahren eine Postkorbanwendung implementiert werden einer Über eine Schnittstelle zu einem Berechtigungssystem kann ein PBO alle zulässigen Rollen ermitteln und entsprechende RollenAssignment – Objekte erzeugen (lassen). Den RollenAssigment – Objekten sind die entsprechenden Rollen – Objekte zugeordnet. Durch die Verwendung der OMG-Schnittstellen ist dieses Verfahren auch in heterogenen Systemumgebungen einsetzbar. Gegebenenfalls müssen entsprechende WfAssignment und WfResource-Adapter für Rollenobjekte implementiert werden. Die Zuordnung eines Users zu einem PBO geschieht in analoger Weise wie die Zuordnung einer Bearbeiterrolle. Eine Berechtigungsprüfung gegenüber der zugeordneten Rolle kann ebenfalls erfolgen (siehe unten). © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Tabelle 3 : Ressourcenzuordnung <<Interf ace>> ExecutionObject <<Interf ace>> Requester <<Interf ace>> Process <<Interf ace>> Activ ity PBO PostkorbAssignment <<Interf ace>> Assignment RollenAsignment Postkorb UserAssignment Rolle User <<Interf ace>> Resource Abbildung 23: Zuordnung von Ressourcen zu PBO Das gleiche Verfahren kann angewandt werden, wenn die Activity – Schnittstelle nicht durch ein PBO, sondern durch andere Komponenten (Dialogsteuerung, Fremdsystem-Adapter usw.) implementiert wird (siehe Abbildung 24). So wird z.B. die Zugriffsberechtigung für einen Dialog von einer dem Dialog zugeordneten Rolle (z.B. Angebotsersteller.Aussendienst) und vom aktuellen Anwender (z.B. Hugo Maier) abhängig sein. User und Rolle implementieren beide die WfResource – Schnittstelle, die Zuordnung zum Dialog geschieht über die Relationen UserAssignment und RollenAssignment, beide implementieren die WfAssignment – Schnittstelle. Durch die (dem Dialog nicht transparente) UserRollen – Zuordnung im Berechtigungssystem kann das UserAssignment gegebenenfalls abgewiesen werden (durch eine in WfAssignment definierte InvalidResource – Exception, die beim Zuordnungsversuch ausgelöst wird). © GDV 2001 51 Inhalt Das Objektorientierte Technische Referenzmodell <<Interf ace>> Assignment <<Interf ace>> Activ ity Dialogsteuerung RollenAssignment UserAssignment User Rolle <<Interf ace>> Resource Abbildung 24: Zuordnung von Ressourcen zu Dialogen 3.3.1.7. Informationstransport im Prozess: die Vorgangsakte Analog ihrem Vorbild aus der „realen“ Welt dient die Vorgangsakte der „Speicherung“ und Übermittlung aller Informationen, die für Aktivitäten bzw. Teilprozesse notwendig sind. Sie repräsentiert gleichzeitig den aktuellen fachlichen Bearbeitungsstand des Vorganges. Dieser fachliche Status fungiert als Schaltbedingung für den Zustandswechsel innerhalb eines Vorgangs. Davon unabhängig fungiert der oben beschriebene Status eines Prozesses als Trigger für den Zustandswechsel. Er teilt mit, dass ein Prozess begonnen, beendet oder abgebrochen wurde. Daraufhin ermittelt der übergeordnete Prozess anhand des fachlichen Status den nächsten Prozessschritt. Im OMG-Modell wird die Vorgangsakte als ProcessData – Objekt zwischen Requester, Process und Activity ausgetauscht. Die Strukturbeschreibung des ProcessData – Objektes ist als ProcessDataInfo – Objekt vom WfProcessMgr zu ermitteln. ProcessData – Objekte sind Sequenzen von Name-Value – Paaren. Der zulässige Typ eines Values wird dessen Namen zugeordnet. Diese Zuordnung erfolgt in der ProcessDataInfo – Struktur. Bei der Initialisierung eines Prozessobjektes werden Vorgangsinformationen mit set_context() dem Prozess übermittelt. Das Ergebnis nach Beenden des Prozesses erhält man durch Aufruf von result(), siehe Abbildung 25. 52 © GDV 2001 Das Objektorientierte Technische Referenzmodell aRequester : Requester aProcessMgr : Process Manager Inhalt aProcess : Process anActivity : Activity get_context_signature( ) set_context( ) start( ) set_context( ) result( ) result( ) Abbildung 25: Austausch von Prozessinformation Es ist unmittelbar einsichtig, dass die Sammlung aller Informationen zu einem Vorgang in einem einzigen globalen „Datentopf“ weder praktikabel noch wünschenswert ist. Zum einen werden in Geschäftsprozessen Anwendungen mit völlig unterschiedlichen Datenstrukturen (auf unterschiedlichen Systemen) zum Einsatz kommen, zum anderen erzeugt ein globaler Datentopf unzulässige Abhängigkeiten zwischen Aktivitäten und Teilprozessen, die die Wiederverwendung bzw. Änderung von Prozessen erschweren. Der Kontext eines Prozesses sollte deshalb lediglich die ihm zugeordneten Informationen beinhalten, d.h. den eigenen fachlichen Status und alle Schlüsselinformationen, die zur Identifikation seiner Daten und zur Initialisierung untergeordneter Prozesse notwendig sind. Die gesamte Vorgangsakte kann durch Navigation durch den Prozessbaum ermittelt werden. Der gesamte fachliche Status ist also hierarchisch gegliedert und bestimmt zusammen mit dem hierarchischen Prozessstatus (im Sinne des OMG-Modells) den Gesamtzustand des Prozesses, wie Abbildung 26 beispielhaft zeigt. In diesem Beispiel wird angenommen, dass der Prozess Angebotserstellung aus den Teilprozessen Angebotsdaten erfassen, Partnerdaten erfassen, Risiko prüfen und Tarifieren besteht. Partnerdaten erfassen besteht seinerseits aus den Teilprozessen Partner suchen und alternativ Partner ergänzen bzw. Partner anlegen. Der fachliche Status des Teilprozesses Partner suchen (nach dessen Beendigung) legt fest, ob ein Partner ergänzt oder neu angelegt werden muss. © GDV 2001 53 Inhalt Das Objektorientierte Technische Referenzmodell Angebotsdaten erfassen Angebotserstellung Partner suchen Completed Completed Running Neukunde OK In Bearbeitung Partner ergänzen Partnerdaten erfassen Not_started Running - In Bearbeitung Partner anlegen Suspended PLZ falsch Risiko prüfen Tarifieren Not_started Not_started - - Legende: OMG-Status Fachlicher Status Abbildung 26: Beispielprozess "Angebotserstellung " Eine Darstellung des Status eines Vorgangs auf dem Bildschirm des Sachbearbeiters könnte dann so aussehen: Vorgang Status Angebot „Hugo Maier vom 19.12.2000“ In Bearbeitung Angebotsdaten erfassen Partnerdaten erfassen Partner suchen Partner anlegen Risiko prüfen Tarifierung OK In Bearbeitung Neukunde Wartend (PLZ falsch) Offen Offen Tabelle 4 : Beispiel für Stati einer Vorgangsakte 3.3.1.8. Implementierung einer Prozesssteuerung Die vorangegangenen Abschnitte beschreiben, wie das OMG-Modell auf das VAA-Referenzmodell abgebildet werden kann. Damit ist allerdings nur das Zusammenspiel einzelner Komponenten wie PBOs, Dialogsteuerung und Berechtigungssystem beschrieben und dies auch nur soweit, wie es die OMG-Spezifikationen bereits vorsehen. Für die Implementierung einer Prozesssteuerung sind neben den PBOs selbst auch alle benötigten Dienstkomponenten zu realisieren: ● Administrations und Überwachungssystem ● Anwendungsdienste wie Postkorb, Berechtigungssystem, Termin/Wiedervorlage-System usw. 54 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt ● Prozeßdefinitions-System und die Bereitstellung eines Prozessmodells für die Laufzeitumgebung der Prozesssteuerung ● Eine Laufzeit-Umgebung, die Basisdienste für PBOs zur Verfügung stellt wie z.B. Funktionen zum Suchen von Prozessobjekten, Notification Service für Prozessereignisse, Weiterleitung von Vorgangsakten usw. Anwendungsdienste sind in anderen Kapiteln dieses Dokuments beschrieben, die Administrationsund Überwachungsfunktionen können im Rahmen dieses Referenzmodells nicht weiter ausgeführt werden. Derzeit liegen keine OMG-Spezifikationen über die Schnittstellen zwischen Prozessdefinitionssystem und Laufzeitsystem (Workflow Enactment Service) vor. Dementsprechend fehlt auch ein Metamodell für Prozessbeschreibungen. Die Definition eines VAA-Prozess-Metamodells würde den Rahmen dieses Dokuments sprengen und ist auch wenig sinnvoll, da eine Konformität mit zukünftigen Standards nicht gegeben wäre. Zudem ist nicht in allen Anwendungsfällen und auf allen Steuerungsebenen der Einsatz eines universellen Prozessdefinitionssystems sinnvoll, zu unterschiedlich sind die Anforderungen und Plattformen. Wo angemessen wird deshalb der Einsatz kommerzieller Workflowsysteme empfohlen. In anderen Fällen, insbesondere bei Vorgangssteuerungen innerhalb von Anwendungssystemen (d.h. unterhalb der klassischen Workflowebene), muss die Prozesslogik auf andere Weise implementiert werden. Liegt ein Modell eines Teilprozesses in Form eines State Diagrams vor, so lässt sich das zugehörige PBO prinzipiell auf die folgende Weise implementieren (siehe auch Abschnitt 3.3.1.9): ● durch Programmierung des PBO „von Hand“. ● durch Code-Generierung aus dem Modell (auf Basis entsprechender Templates). ● durch Schaffung generischer Prozessobjekte mit einem parametrisierbaren (z.B. tabellengesteuerten) Zustandsautomaten. Grundsätzlich ist keine dieser Vorgehensweisen „effizienter“ oder empfehlenswerter als die anderen. Eine Programmierung „von Hand“ kann mit entsprechenden Sprachen und Frameworks sehr effizient erfolgen. Man vermeidet damit die Entwicklung bzw. Implementierung komplexer Generatoren oder Regelsysteme und ist nicht von deren Funktionalität und Weiterentwicklung abhängig. Der Einsatz von Generatoren bietet eine bessere Dokumentation der Anwendung und reproduzierbare Qualität. Gleichzeitig lässt sich die erforderliche PBO-Laufzeit-Umgebung mit generieren. Parametrisierbare Zustandsautomaten ermöglichen es Fachbereichen, Prozesse in gewissem Rahmen selbst zu gestalten. So können beispielsweise produktabhängige Vorgänge wie die Angebotserstellung durch einen produktabhängigen Zustandautomaten gesteuert werden. Die Wahl der Implementierungsmethode beeinflusst also die Wartbarkeit der Prozessobjekte und ist gleichzeitig abhängig von den Einsatzbereichen und gewählten Plattformen. Das technische Referenzmodell der VAA schreibt keine bestimmte Implementierungsmethode vor. Meistens werden innerhalb einer Anwendungslandschaft alle Varianten parallel auftreten, da eine Vereinheitlichung aufgrund unterschiedlicher Plattformen, Entwicklungsumgebungen und eingebundener kommerzieller Lösungen kaum mit vertretbarem Aufwand möglich ist. © GDV 2001 55 Inhalt Das Objektorientierte Technische Referenzmodell Das oben beschriebene Schnittstellen-Modell erlaubt jedoch die Koexistenz unterschiedlicher Varianten wie Abbildung 27 zeigt. PBOs können als Aktivitäten in ein Workflowsystem eingebunden werden (zum Beispiel als WorkPerformer in Filenet), sofern dieses die WfActivity- oder eine vergleichbare Schnittstelle unterstützt. Der Prozessablauf, d.h. die Folge von Aktivitäten wird dabei durch das im Workflowsystem abgelegte Prozeß-, Rollen,- und Organisationsmodell gesteuert. Das aufgerufene PBO übermittelt lediglich den Status und das Ergebnis (als ProcessData – Variable) an den Workflow zurück. Der Workflow steuert auch die Ressourcenzuordnung an den Prozess über die Activity – Schnittstelle. Bei PBOs, die an ein Workflowsystem angebunden werden, ist deshalb vorab festzulegen, welche Ressourcen über den Workflow vermittelt und welche intern zugeordnet werden. Unabhängig davon kann ein PBO über eine interne, dem Workflow nicht transparente Steuerung verfügen. PBOs mit interner Steuerung (generiert oder programmiert) können beliebige andere PBOs über die gleiche Schnittstelle aufrufen. PBOs können auch externe Regelsysteme (z.B. einen Produktserver) nutzen, um regelabhängige Zustandswechsel durchzuführen. PBOs mit externer Steuerung verfügen über keine interne Repräsentation ihres Zustandes, können diesen aber vom Zustandsautomaten ermitteln. Der Zustandsautomat übernimmt in diesem Fall auch die Aktivierung weiterer Teilprozesse, ordnet diese aber auch dem PBO zu, um eine Navigation über die WfActivity – Schnittstelle zu ermöglichen. Das PBO selbst fungiert in diesem Szenario lediglich als Container für Teilprozesse oder assoziierte EBOs. Die Schnittstelle zwischen Zustandsautomat und PBO ist bidirektional. Ihre jeweilige Ausprägung ist systemabhängig. Workflow-System WfActivity WfActivity PBO PBO Externe Strg. (generiert/progammiert) (Zustandautomat) PBO PBO PBO erz eu gt Interne Strg. Externer Zustandsautomat Regelsystem PBO Abbildung 27: Kombination von Steuerungsvarianten Die Allgemeingültigkeit der Activity- und Process-Schnittstelle erleichtert die Gestaltung kontextunabhängiger Komponenten. In der folgenden Abbildung besteht ein PBO „Angebotserstellung“ aus einer Vielzahl von Teilprozessen, die als Komponenten integriert werden können. Anstelle der generischen Prozessstati des OMG-Modells setzt eine solche Integration im allgemeinen fachlich motivierte Stati voraus, wie in der Abbildung angedeutet. Diese fachlichen Stati werden über ProcessData – Elemente zwischen den Komponenten vermittelt. In einer KomponentenArchitektur wie JavaBeans können diese Elemente als Bean-Properties definiert werden. 56 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Aus Prozesssicht fungieren die generischen Stati des OMG – Modells daher als Trigger für Zustandswechsel. Die fachlichen Stati entsprechen den Schaltbedingungen eines Übergangs, die festlegen, welcher Folgezustand einzunehmen ist. Angebot wird erstellt Partner-Komponente Angebots-Komponente Ermittelt Partner Erfaßt A.Daten Do: PBO11 aufrufen Exit: Ergebnis analys. [OK] Do: PBO12 aufrufen Exit: Ergebnis analys. Erfaßt Partner [n. vorh.] Do: PBO13 aufrufen Exit: Ergebnis analys. [OK] [vorh.] Prüft Risiko Ergänzt Partner [OK] Do: PBO14 aufrufen Exit: Ergebnis analys. Tarif-Komponente Do: PBO15 aufrufen Exit: Ergebnis analys. Tarifiert [OK] Do: PBO16 aufrufen Exit: Ergebnis analys. [OK] Fehler: Daten unvollständig Angebot ist erstellt Abbildung 28: Beispiel für Prozesskomponenten 3.3.1.9. Vom Prozessdesign zum PBO Es existieren eine Vielzahl unterschiedlicher Methoden für die Darstellung von Geschäftsprozessen. Die gebräuchlichsten Darstellungen verwenden Varianten des Petri-Netz-Modells [Bal96]. Im Rahmen der UML-Spezifikation sind Activity Diagrams [Fow+97] dafür vorgesehen Prozesse zu modellieren. Sie sind derzeit jedoch noch nicht geeignet, alle Aspekte der Prozessmodellierung abzudecken, entsprechende Erweiterungen sind jedoch geplant [OMG98]. Wir verwenden für die hier angeführten Beispiele eine Petri-Netz-Notation. Die folgende Abbildung zeigt das (vereinfachte) Modell eines Geschäftsprozesses „LV-Angebot“ auf hoher Ebene mit Hilfe eines Petri-Netzes (genauer: Prädikat-Transitionsnetz, Pr/T-Netz, [Bal96]). Pr/T-Netze erlauben es, die für die Modellierung von PBOs wichtigsten Eigenschaften eines Prozesses in übersichtlicher Form darzustellen: ● Kreise repräsentieren Zustände innerhalb des Prozesses (Schaltstellen) ● Rechtecke repräsentieren Aktivitäten der beteiligten Systeme oder Personen. Aktivitäten führen zu Zustandsübergängen (Transitionen) innerhalb des Prozesses. ● Ein schwarzer Punkt (Token) innerhalb eines Zustandes stellt in einem Geschäftsprozess den aktuellen Ort einer (oder mehrerer) durchlaufenden Vorgangsakten dar. Aktivitäten können Attribute der Vorgangsakte ändern (und sogar neue Akten erzeugen). Im OMG-Modell werden Vorgangsakten als ProcessData – Objekte abgebildet (siehe Abschnitt 3.3.1.7). ● Eine Aktivität kann nur ausgeführt werden, wenn in dem davor liegenden Zustand eine Vorgangsakte vorliegt. In Pr/T-Netzen können darüber hinaus noch Schaltbedingungen angegeben werden, die zusätzlich erfüllt sein müssen. Diese Schaltbedingungen können mit Hilfe von Attributen (Prädikaten) der Vorgangsakte formuliert werden. In Fällen mit einer endlichen, © GDV 2001 57 Inhalt Das Objektorientierte Technische Referenzmodell nicht zu großen Menge von Ausprägungen der Schaltbedingungen genügt die Einführung eines fachlichen Status zur Unterscheidung unterschiedlicher Schaltbedingungen. Im unteren Beispiel wird die Transition „Angebot erstellen“ nur dann ausgeführt, wenn es sich bei der Vorgangsakte um ein Angebot handelt, gekennzeichnet durch die Schaltbedingung „[Angebot]“. Andernfalls muss eine andere (hier nicht dargestellte) Aktivität die Akte „abholen“. [Sonstiges] PostEingang [Fehler] Archivierung Manuelle Vorerfassung (autom.) Weiterleitung Angebot erstellen Drucken/ Versenden ArchivAnwendung BestandsKompon. WorkflowKompon. BestandsKompon. TextSystem PBO1 InternetAnfrage Autom. Vorprüfung [Angebot] BestandsKompon. Wiedervorl. setzen TerminSystem Modellierung als Prädikat-Transitions-Netz (Pr/T - Netz) Token stellt durchlaufende „Akte“ dar In den Transitionen angegebene Anwendungen sind als Beispiele zu verstehen Abbildung 29: Beispielprozeß LV-Angebot, oberste Ebene Ein Geschäftsprozeß kann also charakterisiert werden durch: ● Eine Menge von Zuständen, die von Vorgangsakten durchlaufen werden ● Aktivitäten, die zu einem Zustandswechsel führen ● (Schalt-)Bedingungen, die gegebenenfalls die Auswahl von Aktivitäten bestimmen. Diese Bedingungen nutzen Attribute der Vorgangsakte. Soll ein Geschäftsprozeß durch ein PBO abgebildet werden, so bedeutet dies: ● Ein PBO realisiert intern einen Zustandsautomaten, der abhängig vom aktuellen Zustand und definierten Schaltbedingungen Aktivitäten ausführt ● Der Prozeß innerhalb des PBO wird mittels einer Vorgangsakte angestossen ● Das PBO kann Attribute der Vorgangsakte für die Auswertung von Schaltbedingungen nutzen. ● Aktivitäten können die Attribute der Vorgangsakte ändern. Die folgende Abbildung zeigt die Dekomposition der Aktivität „Angebot erstellen“ als Teilprozess von „LV-Angebot“. „Angebot erstellen“ wird durch ein PBO realisiert (PBO1): 58 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Angebot erstellen BestandsKompon. [Fehler] [Fehler] [Fehler] [nicht vorhanden] PBO11 PBO12 PBO13 PBO15 PBO16 BestandsKompon. Partner Kompon. PartnerKompon. PrüfKompon. TarifKompon. Angebotsdaten erfassen Partner ermitteln Neue Partner erfassen (Risiko-) Prüfung Tarifierung PBO14 [vorhanden] PartnerKompon. Partnerdaten abgleichen/ergänzen PBO1 Abbildung 30: Teilprozess Angebot erstellen PBO1 ruft abhängig vom eigenen Zustand und den Attributen der durchlaufenden Vorgangsakte andere PBOs auf, die Teilprozesse darstellen (z.B. das PBO13 für die Partnererfassung). Die Vorgangsakte wird diesen PBOs übergeben. Analog dazu ist der Anstoß von PBO1 das Bereitstellen einer Vorgangsakte „Geschäftsereignis von außen“. Durch die Dekomposition des Geschäftsprozesses entstehen zusätzliche Zustände: Auf der höchsten Ebene um die Aktivität „Angebot erstellen“ herum sind lediglich die Zustände „Weitergeleitet [Angebot, Sonstiges]“ und „Angebotserstellung fertig [Angebot erstellt, Fehler]“ definiert, im Teilprozess selbst gibt es dazwischen noch die Zustände3: ● Angebotsdaten erfaßt [OK, Fehler] ● Partner ermittelt [vorhanden, nicht vorhanden] ● Partner erfaßt [OK, Fehler] ● Risikoprüfung durchgeführt [OK, Fehler] ● Tarifierung durchgeführt [OK, Fehler] Es ist im allgemeinen nicht sinnvoll, diese Unterzustände bereits in den oberen Ebenen zu definieren, da hierdurch die Wiederverwendbarkeit von Teilprozessen (s.u.) stark eingeschränkt wird und Änderungen auf unterster Ebene sich auf allen Ebenen auswirken. Auf oberer Ebenen genügt es den Zustand „Angebot wird erstellt“ zu definieren. Er drückt die Tatsache aus, daß die Aktivität 3 Aus Gründen der Übersichtlichkeit wird hier nicht unterschieden zwischen verschiedenen Arten von „Fehlern“, z.B. „Daten unvollständig“ oder „zu hohes Risiko“ usw. © GDV 2001 59 Inhalt Das Objektorientierte Technische Referenzmodell (Transition) zwischen den Zuständen „Weitergeleitet“ und „Angebotserstellung fertig“ gerade durchgeführt wird4. Auf der Ebene des Teilprozesses spricht man von einem „Superstate“. State Diagrams für die Detailspezifikation von PBOs Für die detaillierte, objektorientierte Modellierung von PBOs ist die Darstellung des Teilprozesses als UML-State-Diagram [Fow+97] sinnvoller. State Diagrams sind eine OO-Variante der Statecharts [Har87] mit deren Hilfe sich Zustandsautomaten beschreiben lassen. State Diagrams ermöglichen eine konsistente Dokumentation mit anderen UML-Darstellungsformen wie Collaboration und Class Diagrams. Angebot wird erstellt Ermittelt Partner Erfaßt A.Daten Do: PBO11 aufrufen Exit: Ergebnis analys. [OK] Do: PBO12 aufrufen Exit: Ergebnis analys. Erfaßt Partner [n. vorh.] Do: PBO13 aufrufen Exit: Ergebnis analys. [OK] [vorh.] Prüft Risiko Ergänzt Partner [OK] Do: PBO14 aufrufen Exit: Ergebnis analys. Do: PBO15 aufrufen Exit: Ergebnis analys. Tarifiert [OK] Do: PBO16 aufrufen Exit: Ergebnis analys. [OK] Angebotserstellung fertig [Fehler] Angebotserstellung fertig [OK] Abbildung 31: State Diagram "Angebot erstellen" Durch den Übergang zu State Diagrams ändert sich die Betrachtungsweise: Zustände können nicht nur Endzustände von Zustandsübergängen sein, sondern selbst Aktivitäten. Zustände, in denen der Prozeß nichts „tut“ werden durch einfache, gerundete Rechtecke beschrieben, Zustände, in denen der Prozeß etwas „tut“ enthalten als Zustandsbeschreibung eine Tätigkeit (z.B. „Prüft Risiko“) und zusätzlich noch Beschreibungen, was genau getan wird („Do: PBO15 aufrufen“) und ggf. noch Definitionen, was zu Beginn und vor dem Verlassen des Zustandes getan werden muß (z.B. Exit: Ergebnis analysieren“). Diese Betrachtungsweise ist für die Realisierung von PBOs von Vorteil, da sie die Darstellung von Zuständen ermöglicht, die nicht ununterbrechbar ablaufen, sondern die zum Beispiel von Benutzereingaben abhängig sind. So kann zum Beispiel dem Zustand „Ermittelt Partner“ direkt ein Dialogobjekt zugeordnet werden, das eine Partner-Suchmaske steuert. 3.3.2. Dokumentenerstellung Gerade im Versicherungswesen nimmt das Thema „Dokumentenerstellung“ eine zentrale Rolle ein. Verträge, Anschreiben, Werbeaktionen, Angebote sind nur Beispiele für die Vielfalt der Dokumente, die erstellt werden müssen. Da diese Dokumente beispielsweise Produkt-, Tarif- und Partnerabhängig erstellt werden, muß der Kontext, in dem sich gerade ein Vertrag oder ein Angebot mit der 4 Dieser Zustand könnte auch im Petri-Netz modelliert werden, dies ist allerdings im allgemeinen nicht notwendig. 60 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt versicherten Person bzw. dem Versicherungsnehmer befindet, in die Auswahl der Darstellung und die Wahl des Textes einbezogen werden. In bestimmten Situationen müssen aufgrund rechtlicher Belange bestimmte Textpassagen angedruckt werden, wie beispielsweise das Sonderkündigungsrecht bei Tarifänderungen. Trotzdem muß durch die ganze Dokumentenvielfalt auch das unternehmensweite „Look & Feel“ sowie eine produktspezifische Einheitlichkeit gewährleistet sein, auch wegen der Übersichtlichkeit für den Kunden. Neben der Notwendigkeit, Ergebnisse von Geschäftsprozessen zu dokumentieren, beispielsweise das Ausstellen eines Versicherungs- oder Änderungsscheins, müssen diese Dokumente in verschiedensten Organisationsstrukturen erstellbar bzw. auch erzeugbar sein. Ein Sachbearbeiter in einer zentralen Bestandsabteilung sollte also ebenso wie ein Vermittler, der sich vor Ort beim Kunden befindet, ein schriftliches Angebot erstellen und ausdrucken können. Darüber hinaus könnte dieser Dokumentendienst genutzt werden, um für Internet-Interessenten oder –Kunden den Output diverser Druckstücke für den heimischen Drucker zur Verfügung zu stellen (etwa solche , die online verfügbar sein sollten, wie beispielsweise ein Angebot über eine Kfz-Versicherung oder eine „Grüne Karte“). Das bedeutet, daß Dokumente auf den verschiedensten Druckplattformen zur Ausgabe gebracht werden müssen. Aufgrund der verschiedenen Anforderungen ergibt sich eine Aufteilung der Dienstes „Dokumentenerstellung“ in einen technischen (siehe 3.3.2.1) und einen fachlichen Teil (siehe 3.3.2.2). Der technische Teil beschreibt, wie konzeptionell verschiedene technische Voraussetzungen behandelt werden können. Der „Print“ Dienst wird jedoch nur kurz konzeptionell erläutert. Fachliche Aspekte bei der Dokumentenerstellung werden im fachlichen Druck-Dienst behandelt. 3.3.2.1. Technischer Dienst „Print“ Der technische Dienst ist grundsätzlich für die Ansteuerung verschiedener Druckarten zuständig. Dies muß völlig vor dem Benutzer verborgen werden. Lediglich eine Output-Klasse und evtl. noch ein Standort muß für den technischen Dienst ausreichend sein, um das entsprechende Dokument zu drucken. Der Print-Dienst muß auch technische Besonderheiten, wie beispielsweise die Zuführung von Beilagen berücksichtigen. Die zu druckenden Dokumente müssen dem technischen Druckdienst in einer einheitlichen plattformübergreifenden Informationsstruktur übergeben werden. Als plattformübergreifende Repräsentation mit Metadaten eignet sich beispielsweise XML sehr gut. Das übergebene Dokument wird dann entsprechend dem angegebenen Endgerät in einen Druckoutput (Präsentationsformat) umgewandelt, beispielsweise Postscript 2 oder PCL 5 und dann an das jeweilige Endgerät direkt geschickt. Druckarten ● ● Zentral: Druckstraße Endlosdruck Faxversand u.v.m. Dezentral © GDV 2001 61 Inhalt Das Objektorientierte Technische Referenzmodell Verschiedene Arbeitsplatzdrucker (Laser, Tinte, Außendienst, ...) Fax Email u.v.m.. Dieser technische Dienst wird vom fachlichen Print-Dienst implizit genutzt. Die Angabe der OutputKlasse wird vom technischen Dienst interpretiert. Eine Umsetzung auf die verschiedenen Drucksprachen und –treiber findet direkt durch den technischen Dienst statt. 3.3.2.2. Fachlicher Dienst „Dokumentenerstellung“ Motivation In Versicherungsunternehmen besteht die Notwendigkeit, formalisierte Druckstücke aufgrund von Vertrags- und sonstigen Daten automatisch zu erstellen. Diese Druckstücke sollen einem einmal definierten Standard / Rahmen genügen und mit Hilfe der gespeicherten Daten angereichert werden. Abhängig von diesen Daten kann sich der Inhalt eines Druckstückes individuell verändern, ohne dabei den Rahmen zu ändern. Beispiel für solchen Dokumente sind: Verträge / Policen, Angebote aller Sparten, Standard-Schreiben, Werbeanschreiben, Kontostände, Abrechnungen, Kündigungen, Anforderungen von zusätzlichen oder fehlenden Unterlagen, Schadensmeldungen / -abrechnungen, spartenübergreifende Anschreiben, .... Beispiel / Szenario Druck eines Lebensversicherungsvertrages: Abhängig vom Vertrag müssen die verschiedenen Produktkomponenten wie BUZ, Dynamik, Zu- und Abschläge, Risikoausschlüsse, Versicherungsart (Risiko / ...) individuell angedruckt werden. Ebenso ändert sich aufgrund dieser Produktkomponenten der Druck der Tarife und evtl. sogar die Darstellung. Bei bestimmten Risikogruppen muß ein Haftungsausschluß angedruckt werden. Beschreibung Der fachliche Print / Dokumentationsdienst stellt mehrere Interfaces zur Verfügung: Interface 1: Drucke Parameter: Objekte, die zu drucken sind (z.B. Partner, Vertrag, Konto) Dokumentenklasse (Vertrag, Angebot, ...) Output-Klasse (evtl. mit Druckeradresse oder –standort) Liste der Adressaten Zuzuführende Beilagen 62 Aufgrund der definierten Dokumentenklasse ist dem Dokumentenerstellungs-Dienst bekannt, was zu drucken ist. Mit der Dokumentenklasse wird das Dokument in Form eines Meta-Dokumentes (beispielsweise als XML-Dokument) aufbereitet (evtl. Textbausteine sind der Dokumentenklasse bekannt) und dann zusammen mit der Output-Klasse dem technischen Print-Dienst übergeben. © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Zusätzlich kann das Dokument noch dem Archivierungsdienst zur Speicherung übergeben werden. Dies ist abhängig von der Dokumentenklasse. Die Liste der Adressaten beschreibt die Empfänger der oder des Dokumentes. Dabei wird neben der Adresse des Adressaten auch die Versandart (Protokoll) ermittelt, die von der Dokumentenklasse ebenso abhängig ist, wie vom Empfänger. Der letzte Parameter beschreibt, ob dem Dokument Beilagen zuzuführen sind und um welche Beilagen es sich handelt. Output: Das fertige Dokument, beispielsweise als XML-Dokument Das fertige Dokument wird an das technische „Print“-Interface übergeben. Interface 2: Zusammenführen von Dokumenten Parameter: Liste von Adressaten, dessen Dokumente zusammengeführt werden sollen Zeitraum, über den verschiedene Dokumente eines Adressaten zusammengeführt werden. Werden für einen Adressaten mehrere Dokumente erstellt, besteht die Möglichkeit, über diesen Dienst die verschiedenen Dokumente zusammenzuführen und als ein Schriftstück zu versenden. Dabei wird geprüft, ob ein angegebener Adressat im spezifizierten Zeitraum mehrere Dokumente erhalten würde. Bevor diese Dokumente zusammengeführt werden können, muß geprüft werden, ob die technischen und organisatorischen Voraussetzungen für eine Zusammenführung erfüllt sind. Dabei werden auch Kosten- Nutzen Betrachtungen angestellt (soweit implementiert). Beispielsweise macht die Zusammenführung von zwei an verschiedenen Orten dezentral gedruckten Dokumenten, die auch noch über räumlich verschiedene Versandsysteme verschickt werden, keinen Sinn. Bei mehreren beispielsweise zentral gedruckten Rechnungen (z.B. Jahresinkasso im Januar) ist es evtl. kostengünstiger, nur ein Dokument zu versenden. Bei der Prüfung, ob Dokumente überhaupt zusammengefaßt werden dürfen, sind auch rechtliche Belange zu betrachten, beispielsweise beim Versand von Dokumenten verschiedener Gesellschaften, z.B. einer Lebensversicherungsgesellschaft und der Krankenversicherungsgesellschaft. All diese Parameter müssen dem Dienst bekannt sein, damit eine effektive Prüfung sowie Zusammenführung erfolgen kann. Interface 3: Individuelle Schreiben / Text Parameter Objekte, die beim Druck zu berücksichtigen sind (z.B. Partner, Vertrag, Konto) Output-Klasse (evtl. mit Druckeradresse oder –standort) Liste der Adressaten Zuzuführende Beilagen © GDV 2001 63 Inhalt Das Objektorientierte Technische Referenzmodell Hier kann ein Objekt zur individuellen Textverarbeitung angefordert werden (Teilprozeß wird gestartet). Evtl. sind in dieser Textverarbeitung ebenfalls Textbausteine vorhanden. Das fertige Dokument wird an das technische „Print“-Interface übergeben. Denkbar an dieser Stelle wäre das Einbinden von ganzen Textsystemen, z.B. Papyrus oder auch nur Textverarbeitungen wie beispielsweise Microsoft Word oder Lotus WordPro. Interface 4: Preview-Funktionen für die Interfaces 1 und 3 Parameter Interface IFC1 / IFC 3 Output-Klasse (standardmäßig: Bildschirm) Es besteht die Möglichkeit, die über Interface 1 und Interface 3 erstellten Dokumente vor dem Versenden zu betrachten, um beispielsweise Korrekturen vorzunehmen. Dabei wird der Preview standardmäßig auf dem Bildschirm dargestellt. Es besteht jedoch auch die Möglichkeit, das Dokument beispielsweise auf einen lokalen Drucker auszugeben. Interface 5: Administration Dokumentenklasse Parameter Dokumentenklasse Das Anlegen und Bearbeiten von Dokumentenklassen wird über dieses Interface zur Verfügung gestellt. Dabei wird im Rahmen der Ordnungsmäßigkeit eine Versionierung der bearbeiteten Dokumentenklassen durchgeführt, um zeitliche Änderungen an diesen Klassen zu dokumentieren. Hierbei wird die Historisierungs- und Versionierungs-Eigenschaft von Business Objects genutzt. Interface 6: Administration Textbausteine Parameter Liste von Textbausteinen Textbausteine können über dieses Interface angelegt, gepflegt und gelöscht werden. Dabei wird im Rahmen der Ordnungsmäßigkeit eine Versionierung der bearbeiteten Textbausteine durchgeführt, um zeitliche Änderungen an Texten zu dokumentieren. Hierbei wird die Historisierungs- und Versionierungs-Eigenschaft der Business Objects genutzt. 3.3.3. Benutzer / Kompetenzdienst Der Kompetenzmanager hat als Ausgangspunkt die zwei Hauptkomponenten Berechtigung und Vollmacht. Die Berechtigung, oder Benutzerverwaltung stellt fest, welche Benutzer lokal auf dem Server arbeiten dürfen und welche remote einen physischen Zugang erhalten. Vollmachten legen fest, welcher Benutzer auf welche Server-Ressource zugreifen darf. Zusätzlich regeln Vollmachten die Art und Weise, wie der Benutzer zugreifen darf. 3.3.3.1. Berechtigung / Authentifikation Anmeldung 64 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Der Benutzer meldet sich mit seiner Benutzeridentifikation und seinem Passwort am System an. Die Anmeldung des Benutzers wird im System gehalten, bis eine Abmeldung erfolgt. Durch die Anmeldung am System erhält der Server die Identität des Clients. Der Benutzer erhält ein Berechtigungsobjekt, daß die dem Benutzer zugeteilten Berechtigungen enthalten. Dem Anwendungsprogramm obliegt es nun, den jeweiligen Kontext zu setzen, indem die Berechtigungen gültig sind. Somit ist durch die Anmeldung sowohl die Identifizierung am Server als auch die Definition der entsprechenden Berechtigungen am Client bekannt. Zugang zu Programmen Die Prüfung des Zugangs zu den Anwendungsprogrammen findet an der Benutzerschnittstelle statt. In den meisten Anwendungen wird über die entsprechende View geregelt, welche Programme ein Benutzer ausführen darf. Über das Berechtigungsobjekt wird festgelegt, welche Programme ein Benutzer ausführen darf. Dabei gibt es folgende Stufen: ● keine Berechtigung ● Berechtigung für Anzeige ● Berechtigung für Bearbeiten. Die Darstellung an der Benutzeroberfläche erfolgt so, daß der Benutzer die zugelassenen Wahlmöglichkeiten an der Benutzeroberfläche aktiviert bzw. die nicht zugelassenen Möglichkeiten deaktiviert angeboten bekommt. Die Umschaltung des Modus auf Bearbeiten bzw. Anzeigen erfolgt je nach Berechtigungsstufe im jeweiligen View. Zugang zu Daten Optional kann zusätzlich zum Zugang zu den Anwendungsprogrammen der Zugang zu Anwendungsdaten geschützt werden. Dieser Schutz ist individuell einzurichten. Als Prüfmerkmal können Attribute der Anwendungsdatenbank verwendet werden. Bei Eingabe eines Ordnungsbegriffes wird während des Zugriffs auf die Datenbank geprüft, welche Berechtigung ein Benutzer hat, um auf Anwendungsdaten zuzugreifen. Diese sind: ● keine Berechtigung ● Berechtigung zum Anzeigen ● Berechtigung zum Bearbeiten Diese Berechtigung „überschreibt“ den Zugang zu Programmen, da ein Zugriff auf Anwendungsdaten höher zu bewerten ist. Beispiel: Der für einen Versicherungsvertrag zuständige Betreuer im Außendienst darf nur von ihm betreute Verträge bearbeiten. © GDV 2001 65 Inhalt Das Objektorientierte Technische Referenzmodell Abbildung 32: Beispiel für den Aufbau des Berechtigungsobjekts Um die Berechtigungsprüfung zu vervollständigen, setzt der Client nun den Berechtigungskontext in dem die Berechtigung gültig ist und referenziert dabei auf das Berechtigungsobjekt. Der Server prüft die Anfragen des Clients in dem er auf den Kontext und das Berechtigungsobjekt Bezug nimmt. Abbildung 33: Beispiel für die Berechtigungsprüfung auf dem Server 66 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3.3.3.2. Vollmachten Im Gegensatz zu Berechtigungen gehen Vollmachten einen Schritt weiter. Vollmachten regeln, welche fachlichen Operationen ein Benutzer durchführen darf. Diese Prüfungen finden auf dem Server statt. Solche Vollmachten werden in Form von Zugriffslisten abgelegt, die hauptsächlich die folgenden drei Attribute enthalten: ● Benutzer oder Benutzergruppen. ● Rollen der Benutzer. Dies können eine oder mehrere Rollen sein, die typisch sind für die Aufgabenfunktion des Anwenders (z.B. Sachbearbeiter für Haftpflicht-Vertrag oder für Haftpflicht-Leistung) ● Vollmacht. Jeder Rolle wird eine entsprechende Vollmacht zugeteilt. Das Hauptaugenmerk ist hierbei auf die Rolle gelegt, die ein Sachbearbeiter im Unternehmen hat. Über eine Rolle wird festgelegt, welche Prozesse ein Sachbearbeiter ausführen darf und welche Vollmachten ihm innerhalb des Prozesses zugeordnet werden. Die Zugriffslisten sind in der Lage festzulegen, welcher Kategorie von Benutzer Zugriff auf welche Kategorie von Objekten gewährt wird. Es wird geprüft, ob der Benutzer eine Methode ausführen darf. Im Unterschied zum Programmzugang erhält er dazu im voraus keine Information. Die Informationen, welche die Vollmachtprüfung auslösen, sind während einer Operation anhand der entsprechend definierten Datenobjekte zu ermitteln. Beispiel: Für den Sachbearbeiter in der Krankenversicherung gibt es die Vollmacht, Leistungen bis 2000 Euro auszuzahlen. Diese Vollmacht wird als Grundvollmacht beschrieben. Optional zur Grundvollmacht können Zusatzvollmachten je nach Versicherungsart, –zweig bzw. Anwendungsgebiet eingerichtet werden. Im obigen Beispiel ist eine Staffelung der Auszahlungsgrenze bis 10 000 Euro bzw. ab 10 0000 Euro denkbar. Die Zusatzvollmacht wird im Sonderfall neben der standardmäßigen Vollmachtenprüfung wirksam und realisiert die Einhaltung des festgelegten Vollmachtumfangs. Prinzipiell ist jedes Datenattribut für die Sondervollmachten geeignet. 3.3.3.3. Systeme mit eigener Berechtigungsprüfung Als Systeme mit eigener Berechtigungsprüfung sind in diesem Zusammenhang z.B. CICS Transaction Server, DB2 und Oracle8i als Datenbankserver oder andere Anwendungssysteme wie etwa ein Text/Drucksystem zu sehen. Diese Aufzählung ist nicht unbedingt vollständig. Es wird davon ausgegangen, daß diese Systeme eine Einrichtung zur Berechtigungsprüfung aufweisen, die den genannten Anforderungen genügen. Der Zugang zu Systemen wird je System pauschal für die Benutzer einer oder mehrerer Anwendungen definiert. Dies erfolgt mit einer Benutzeridentifikation für die ganze Benutzergruppe einer Anwendung bzw. mehrerer Anwendungen. Die Benutzeridentifikation, die der Benutzergruppe für die Berechtigungsprüfung zugeordnet wurde, wird in allen Systemen verwendet. Diese Berechtigung wird im Berechtigungsobjekt gehalten und steht jedem System zur Verfügung. © GDV 2001 67 Inhalt Das Objektorientierte Technische Referenzmodell 3.3.3.4. Berechtigungsklassen Eine Berechtigungsklasse mit den erforderlichen Methoden ist sowohl für den Client als auch für den Server zu identifizieren. Bei der Erzeugung der Berechtigungsobjekte, in denen die Berechtigungsprofile vorgehalten werden, muß auf die extern gespeicherten Daten zu den entsprechenden Profilen zugegriffen werden. Der variable Umfang der Profile muß abgedeckt werden können. Zusätzlich müssen jederzeit neu zu schützende Ressourcentypen in das Berechtigungsprofil aufgenommen werden können. Es ist letztendlich festzulegen, welche Prüfungen auf Client- bzw. Serverseite ablaufen werden. Dabei wird folgende Verteilung vorgesehen: ● Berechtigung auf Client ● Vollmachten auf Server ● Subsysteme auf Server Berechtigungsobjekte werden bei der Anmeldung des Benutzers erzeugt. Ihnen wird eine Lebensdauer und die entsprechenden Entstehungs- und Endezeitpunkte zugeordnet. Attributabhängige Berechtigungen, die über fachliche Kombinationsprüfungen geprüft werden, müssen über die jeweiligen EBOs abgebildet werden, da ein Berechtigungsdienst kein Wissen über die fachliche Struktur des BOs hat. Beispielsweise wird in einem EBO erkannt, daß für einen bestimmten Prozeß eine Berechtigung der Rolle Gruppenleiter benötigt wird. Das EBO erkennt die dazu notwendigen Attributkombinationen und ermittelt daraus die entsprechende Rolle. Mit der Rolle prüft das EBO gegen das Berechtigungsobjekt, ob dem angemeldeten Sachbearbeiter die entsprechende Rolle zugewiesen wird. 3.3.3.5. Interfaces Folgende Interfaces sind denkbar: ● Berechtigungsobjekt für einen User Für einen Sachbearbeiter wird ein komplettes Berechtigungsobjekt instanziiert, gegen daß sich prüfen läßt, welche Berechtigungen und Vollmachten ein einzelner Sachbearbeiter hat. ● Prüfung auf Berechtigung Es wird gegen das Berechtigungsobjekt geprüft, ob ein Sachbearbeiter Zugänge zu bestimmten EBOs und PBOs hat. ● Prüfung einer Rolle Die aus einer fachlichen Prüfung hervorgehende Rolle wird gegen das Berechtigungsobjekt geprüft, der Rückgabewert ist entweder ja oder nein. Weitere Schnittstellen sind denkbar, wenn ein VU über das Rollenkonzept die gesamte Aufbauorganisation des Unternehmens abbilden will. Dann sind Interfaces denkbar, die z.B. die Bearbeitung eines Prozesses an eine höherwertige Rolle delegieren. 68 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3.3.4. Ausnahme und Fehlerbehandlung 3.3.4.1. Definition: Die Ausnahme- und Fehlerbehandlung stellt ein Verfahren dar, das teilweise auf der Ebene der Business Objects (BO) und teilweise auf der Ebene der Prozeßsteuerung abgehandelt wird. Zu diesem Zweck steht den BOs ein eigener Fehlerdienst zur Verfügung, der weitgehend unabhängig von den BOs konfiguriert werden kann. 3.3.4.2. Beschreibung Jedes BO, das innerhalb eines Systems angelegt wird, stellt bestimmte Anforderungen an seine Umgebung, damit es existieren und seine Methoden ausführen kann. Sind diese Bedingungen nicht erfüllt, werden diese entweder nachträglich hergestellt oder das entsprechende Objekt wird aus dem System entfernt. Ferner kann die Situation auftreten, daß ein BO bedingt durch einen internen Fehler seine Verarbeitung abbricht bzw. von Seiten des Systems eliminiert wird. In allen beschriebenen Situationen ist es erforderlich, den Fehler selbst zu dokumentieren und – soweit möglich – die Information an eine zuständige Stelle weiterzuleiten. Zusätzliche Vorkehrungen sind zu treffen, wenn die Verarbeitung nicht ab- sondern nur unterbrochen wird. Hier muß das BO, das in die Fehlersituation gelaufen ist, mit Unterstützung eines Dienstes zur Fehlerbehandlung die Situation soweit klären, daß die normale Verarbeitung fortgesetzt werden kann. Beispiel In einem Versicherungsunternehmen ist eine Zahlung über eine Bankverbindung eingegangen, die einem Partner zugeordnet werden kann. Da zur Zeit keine Forderungen gegenüber diesem Partner bestehen, und da der Zahlungsbeleg keine weiteren Hinweise enthält, führt die Zahlungsverarbeitung zu einem fachlichen Fehler. Das Process Business Object, das für die Zahlungsverarbeitung verantwortlich ist, ermittelt einen Fehlerdienst, der für die Verarbeitung solcher Vorgänge verantwortlich ist. Im Rahmen dieser Fehlerbehandlung wird über ein maschinelles Zuordnungsverfahren ein Sachbearbeiter eingeschaltet, der die näheren Umstände analysiert und dabei feststellt, dass in den nächsten Tagen eine Sollstellung aufgebaut wird, die dem überwiesenen Betrag entspricht. Er legt einen Termin fest zu dem die Zahlung verarbeitet werden kann. Zum vorgegebenen Termin wird das Process Business Object zur Zahlungsverarbeitung wieder aktiviert und arbeitet die vorliegende Zahlung entsprechend seiner normalen Verarbeitungslogik ab. Zur Abhandlung des umrissenen Verfahrens, wird eine Struktur aufgebaut, die im wesentlichen folgende Komponenten enthält. ● Eine Fehler_Kontext Klasse, die es einem BO ermöglicht, einen Fehler in standardisierter Form darzustellen. ● Einen Dienst zur Ausnahme und Fehlerbehandlung, der es ermöglicht einen Ausnahmefall ggf. auch über mehrere Zwischenschritte an eine Instanz weiter zu leiten, welche die nötigen Kompetenzen zur Fehlerbehandlung besitzt ● Ein Rollenkonzept, das es ermöglicht, die Ausgabe und Annahme von Aufträgen zur Fehlerbehandlung zu steuern. © GDV 2001 69 Inhalt Das Objektorientierte Technische Referenzmodell Fehler_Kontext Klasse Die Kontext Klasse erhält eine Struktur, die es erlaubt den Fehler und die Aufruf-Hierarchie in der der Fehler entstanden ist, darzustellen. Der Fehlerkontext wird beim Aufruf des Fehlerdienstes und bei der Ausgabe von Exceptions mit übergeben. ○ Timestamp ○ Fehler_Art ○ Fehler_Object: ○ Fehler_Text ○ Fehler_Daten TypBezeichnung, ObjectId ( des Objektes das den Fehler ausgibt ) Liste von Objekten mit TypBezeichnung und ObjectId (weitere Objekte die den Kontext beschreiben ) ○ Fehler_Sequenz Liste von Fehlerkontexten ( d.h. Fehlerkontexte von tieferen Ebenen in der Aufruf-Hierarchie ) Wenn z.B. auf einer unteren Ebene eine Exception geworfen und diese Exception auf einer höheren Ebene abgefangen wird, legt das BO der höheren Ebene ein eigenes Fehlerkontext Objekt an. Dabei werden die Attribute 1 – 5 mit den eigenen Daten versorgt, während die Fehler_Sequenz mit den Werten aus der abgefangenen Exception gefüllt wird. Dabei wird der Kontext der abgefangenen Exception selbst an den Anfang dieser Liste gestellt. Durch diese Vorgehensweise kann die gesamte Aufruf-Hierarchie dokumentiert werden, sofern die entsprechenden Exceptions auf jeder Ebene abgefangen und mit den relevanten Informationen angereichert werden. Ein Fehlerkontext kann von allen BOs angelegt werden. Der Dienst zur Ausnahmen- und Fehlerbehandlung Wenn ein BO eine kritische Situation nicht auflösen kann, besteht die Möglichkeit, daß dieses eine Exception wirft und dabei den Fehler_Kontext an das aufrufende Object weitergibt, ( -> Adressat unbestimmt da ein BO normalerweise nicht weiß von wem es aufgerufen wurde, Übergabe der Kontrolle an aufrufendes Objekt ) oder daß es sich mit dem bereits beschriebenen Fehler_Kontext an ein spezielles Interface seiner Prozeßsteuerung wendet. Die Prozeßsteuerung überprüft an Hand der Rolle des aufrufenden BOs ( s.u. ) , ob letzteres dafür zuständig ist, eine Fehlerbehandlung zu veranlassen. Diese Aufgabe wird in Zusammenarbeit mit dem Berechtigungssystem gelöst. In Abhängigkeit vom Ergebnis wird eine der beiden folgenden Vorgehensweisen durchgeführt. 1. Das aufrufende BO ist in seiner Umgebung dafür zuständig, eine Fehlerbearbeitung zu veranlassen. Dann wird der entsprechende Fehler_Kontext direkt an einen Fehlerdienst übergeben. 2. Das aufrufende BO hat keine eigene Zuständigkeit zur Fehlerbehandlung. Die Prozeßsteuerung weist die Fehlerbehandlung ab. Das BO erhält eine entsprechende Rückmeldung und wirft eine Exception. Auf der Ebene des aufrufenden Objektes läuft dann die gleiche Logik ab wie bei dem gerade betrachteten BO. Der Dienst zur Fehlerbehandlung wird entsprechend dem Pattern Chain of Responsibility und Composite organisiert ( Vgl.[Gamma96]). Dies bedeutet, daß sich ein BO mit dem Fehler_Kontext an 70 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt einen spezialisierten Fehlerdienst wenden kann, der das Problem unter Umständen ohne Hilfe eines Sachbearbeiters löst. Falls dieser Versuch fehlschlägt wird der Fehler solange an andere, allgemeinere Dienste weitergereicht bis das Problem gelöst ist. Es muß sichergestellt sein, daß ein derartiger Fehler nach einer endlichen Zahl von Schritten bei einer zuständigen Instanz („Mensch als letzte Instanz“) ankommt, die eine wie auch immer geartete Lösung findet. Prozeßobjekt Nacnfolger Fehler_Behandlung BehandelnFehler() Fehler_Behandlung_1 Fehler_Behandlung_2 BehandelnFehler() BehandelnFehler() Abbildung 34: Klassenmodell für den Fehlerdienst Verarbeitung nach der Ausnahme und Fehlerbehandlung Nach Durchführung der Fehlerbehandlung muß die normale Verarbeitung wieder aufgenommen werden. Dabei sind unterschiedliche Vorgehensweisen denkbar: 1. Ein Prozeßobjekt fragt bei der Prozeßsteuerung den Stand der Fehlerbearbeitung ab und setzt nach erfolgreichem Abschluß dieser Verarbeitung die normale Verarbeitung fort. 2. Der unterbrochene Prozeß bleibt so lange inaktiv, bis er von der Prozeßsteuerung wieder angestoßen wird. Falls eine eindeutige Entscheidung zwischen diesen Alternativen nicht möglich ist, muß auch an dieser Stelle über ein entsprechendes Rollenobjekt festgelegt werden, welche Funktionen ein Business Object bei der Wiederaufnahme der Verarbeitung zu übernehmen hat. Rollenkonzept Bei der Ausgabe von Fehlern stellt sich die Frage an welcher Stelle ein Aufruf des Fehlerdienstes erfolgen soll und wer für die Bearbeitung eines Fehlers zuständig ist. Weil ein BO nicht weiß, aus welchem Kontext heraus es aufgerufen wird, kann es auch nicht wissen, ob es über die nötigen Informationen verfügt, eine Fehlerbehandlung auszuführen. Es kann sein, daß eine Lösungsstrategie, die mit den Daten des Objektes arbeitet, von dem es aufgerufen wurde, viel erfolgversprechender ist. © GDV 2001 71 Inhalt Das Objektorientierte Technische Referenzmodell Es ist in diesem Falle also sinnvoller wenn das BO eine kritische Situation per Exception an das aufrufende Objekt meldet und diesem die Fehlerbehandlung überläßt. Nach Klärung dieser ersten Frage ist wiederum über das Berechtigungs- und Zuständigkeitssystem ein Zuständiger für die Bearbeitung zu ermitteln. Dazu muß die Prozeßsteuerung eine Zuordnung von Fehler_Art ( ggf. mit weiteren Parametern ) und den vorhandenen Fehlerdiensten vornehmen. Der aufgerufene Fehlerdienst steht selbst auch wieder vor der Aufgabe den Fehler an eine zuständige Instanz, z.B. einen Sachbearbeiter, weiterzuleiten. Die beschriebenen Probleme können über ein Rollenkonzept gelöst werden. Nach diesem Konzept werden Klassen, einzelnen Business Objects oder bestimmten Sachbearbeitern spezielle Zuständigkeiten übertragen. Die Zuordnung dieser Rollen kann die Prozeßsteuerung und anschließend der Fehlerdienst in Zusammenarbeit mit dem Berechtigungs- und Zuständigskeits-Dienst vornehmen. Das Business Object selbst erfährt nichts über diese Zuordnung. Durch die Vergabe entsprechender Rollen kann gesteuert werden, welches Business Objects welche Fehlerbearbeitung anstoßen, ausführen und weiterleiten dürfen. Letztendlich werden auch entsprechende Zuständigkeiten von Sachbearbeitern auf diesem Wege geregelt. Da die Rollenvergabe zur Fehlerbehandlung über das Berechtigungs- und Zuständigkeitssystem geregelt wird, ohne daß die BOs direkt einbezogen werden, stellt dies ein flexibles Verfahren dar, um BOs aus Kaufkomponenten in die (VAA-) Infrastruktur des IT-Systems eines VUs zu integrieren. Spezifikation von Ausnahme- und Fehlersituationen Vor dem Hintergrund des oben beschriebenen Verfahrens zur Fehlerbehandlung kann nun auch beschrieben werden, was beim fachlichen Entwurf eines Business Objects im Hinblick auf die Fehlerbehandlung zu unternehmen ist. Im wesentlichen muß nur beschrieben werden wie das Fehler_Kontext Objekt zu füllen ist. Die weitere Handhabung des Fehlerkontextes wird durch den Fehlerdienst geregelt. Bei der Anlage des Fehlerkontextes ist ein Teil der anzugebenden Daten per Definition vorgegeben: ○ Timestamp ○ Fehler_Object: TypBezeichnung, ObjectId ( des Objektes das den Fehler ausgibt ) Dagegen müssen die folgende Attribute beim Design gesondert festgelegt werden 72 ○ Fehler_Art ○ Fehler_Text ○ Fehler_Daten © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Ablauf bei einem Fehlerfall Prozess_ Steuerung Zahlung_Bearbeitung (PBO) Zahlung (EBO) Beitrags_Konto (EBO) Fehler_Kontext (EBO) Ausnahme_ FehlerBehandlung (PBO) Zahlung_Bearbeitung() Ermitteln_Bankverbindung() Buchen( Zahlung ) Zuordnen_Sollst ( Zahlung ) Fehler_Kontext() Exception(Fehler_Kontext ) Fehler_Kontext_Ergänzen() Exception(Fehler_Kontext) Ausnahme_Fehler_Behandlung ( Fehler_Kontext) = 2. Alternative Ausnahme_Fehler_Behandlung ( Fehler_Kontext) = 1. Alternative Abbildung 35: Sequenzdiagramm: Beispiel Fehlerfall 3.3.5. Postkorb Der Postkorb erlaubt die Verwaltung und Visualisierung der Arbeitsaufträge der Sachbearbeiter. Ein Sachbearbeiter sieht sofort, welche Arbeitsaufträge für ihn zur Abarbeitung bereit stehen, er kann sie sich nach definierbaren Kriterien auflisten lassen. Aus dem Postkorb heraus können die zur Bearbeitung eines Auftrags notwendigen Bestandssysteme direkt aufgerufen werden. Die in dem Auftrag gespeicherten, verarbeitungsrelevanten Daten werden dem Bestandssystem dabei direkt übergeben. Mit Aufruf eines Bestandssystems geht die Kontrolle des Geschäftsvorgangs an dieses über. 3.3.5.1. Beschreibung des Postkorbs Ein Postkorb ist ein Sammelordner für Aufträge, welche einem bestimmten Bearbeiter, einer Gruppe von Bearbeitern oder einem System zugeordnet sind. Es gibt folgende Arten von Postkörben: Benutzerpostkörbe oder Userpostkörbe: Die Postkörbe eines einzelnen Benutzers. Gruppenpostkörbe: Die Sammelpostkörbe von Gruppen Abteilungspostkörbe: Die Sammelpostkörbe von Abteilungen Systempostkörbe: In diesen speziellen Postkörben werden die Aufträge für Systeme gesammelt; sie können nur von Systemen eingesehen werden. Systempostkörbe sind an der Oberfläche nicht sichtbar © GDV 2001 73 Inhalt Das Objektorientierte Technische Referenzmodell Im Postkorbsystem (PKS) ist der gesamte Arbeitsvorrat für Sachbearbeiter und Bestandsführungssysteme in Form von Aufträgen hinterlegt. Aufträge im Postkorb sind noch nicht beendet. Im Postkorb wird dem Sachbearbeiter in unterschiedlichen Sichten der Arbeitsvorrat aufgelistet. Diese Aufträge setzen sich aus beschreibenden Attributen und Verknüpfungen zu Eingangsdokumenten (digitalisierte Post) zusammen und können in unterschiedliche Zustände (Status) kategorisiert werden. Aus diesem aufgelisteten Arbeitsvorrat wird durch Auswahl eines Auftrags in die entsprechende Anwendung (z.B. Bestand) verzweigt. Im Postkorb ist immer der aktuelle Bearbeitungsstand eines Auftrags erkennbar vgl. 3.3.1.7 – aktueller Status der Vorgangsakte). Neben den reinen Auftragsdaten können in einer detaillierten Ansicht auch alle zum Auftrag zugehörigen Dokumente und weiterführende Verweise angesehen werden. Ein Auftrag im PK verweist auf beliebig viele Dokumente im Archiv. Diese sind zur Bearbeitung des Auftrags relevant. Eng verwandt zum Postkorbsystem ist das Geschichtsbuch (Vorgangsakte im Endstadium). Im Geschichtsbuchsystem (GB) werden alle beendeten Aufträge aus dem PKS abgelegt. Ein GB-Auftrag verweist ebenfalls auf die für ihn relevanten Dokumente im Archiv. Das Geschichtsbuch listet alle Informationen zu abgeschlossenen Aufträgen auf. Beim Abschluß eines Auftrags durch eine Anwendung werden entsprechend alle Daten zu dem Auftrag aus dem Postkorb in das Geschichtsbuch übertragen. Über eine Suchfunktion können die Daten im Geschichtsbuch jederzeit nach den Ordnungsbegriffen recherchiert werden. Weiterhin können von den Bestandssystemen direkt Eintragungen im Geschichtsbuch vorgenommen werden, um durchgeführte und beendete Arbeitsaufträge zu dokumentieren. 3.3.5.2. Funktionalität des Postkorbs Ein Postkorb enthält Aufträge als Arbeitsaufträge für Sachbearbeiter, die im Postkorb- / Geschichtsbuchsystem verschiedene Zustände einnehmen können. Aufträge werden meist durch ein Ereignis ausgelöst (Anschreiben, Ergebnis eines Batchlaufes, etc.). Denkbar ist ein Dokumentenmanagementsystem, daß eingehende Post scannt und als „Images“ ins Archiv einstellt. Daraus wird dann ein Auftrag erzeugt, der im Postkorb visualisiert wird. Die so im Postkorbsystem erzeugten Aufträge werden der Bearbeitung durch den Sachbearbeiter zugeführt. Beim Anlegen der Aufträge im Postkorb erhalten sie ihre Auftragsnummer. Die Versicherungsscheinnummer des Auftrags oder ein artverwandter Ordnungsbegriff (z.B. Partner-Nr. oder Schaden-Nr), sofern bekannt, wird bei Anlage des Auftrags im Postkorb an das zuständige Bestandssystem übergeben. Durch diese Information können, vor dem eigentlichen Beginn der Bearbeitung, im Bestandssystem Funktionalitäten wie z.B. Inkassostop aktiv werden. Die Reihenfolge der Abarbeitung dieser Aufträge durch Sachbearbeiter kann nicht beeinflusst werden. Aufträge können anhand der zu ihrer Abarbeitung notwendigen Tätigkeiten zu Auftragsarten gruppiert werden, z.B. ”Neuantrag” oder ”Adressänderung”. Jedes Bestandssystem definiert im Prinzip seine Auftragsarten. Eine Standardisierung von Auftragsarten sollte jedoch angestrebt werden. Letzteres erhöht die Handhabbarkeit bei den Sachbearbeitern. Darüber hinaus sollte es möglich sein, nicht nur Aufträge im Postkorb zu visualisieren, sondern auch eingehende Post oder Emails. Denkbar wäre zusätzlich, im Postkorb Informationen zu hinterlegen, die sich der entsprechende Sachbearbeiter abholen kann. Dies könnten neue Tarifregeln, gesetzliche Änderungen oder Änderungen in der System- oder Produktdokumentation sein. 74 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3.3.5.3. Termin und Wiedervorlage Über den Postkorb muss es möglich sein, bestimmten Aufträgen bestimmte Terminen zuzuordnen. So muss es möglich sein, einen Auftrag auf Wiedervorlage zu setzen. Innerhalb des Postkorbs wird das Zustelldatum eines bestimmten Auftrags zeitlich nach hinten gesetzt um auf noch fehlende Informationen zur Bearbeitung eines Auftrags zu warten. Zum Beispiel setzt ein Sachbearbeiter eines Kranken-Neuantrags den Auftrag auf Wiedervorlage um auf bestimmte Risikodaten zu warten. Dieser Auftrag sollte aus dem Postkorb verschwinden um die Übersichtlichkeit der tatsächlich zu bearbeitenden Aufträge zu gewährleisten. Er wird mit einem entsprechenden (Bearbeitungs-) Statusattribut versehen werden. Zum gesetzten Wiedervorlagedatum erscheint dieser dann wieder im Postkorb. Denkbar wäre hier, den Sachbearbeiter direkt auf die Wiedervorlage hinzuweisen. Dieser hat u.U. hunderte von Aufträgen in seinem Postkorb und kann über akustische oder visuelle Informationen auf die Wiedervorlage hingewiesen werden. Eine weitere Einsatzmöglichkeit des Postkorbs könnte die Terminverwaltung des einzelnen Sachbearbeiters sein. So ist es denkbar wichtige Termine des Betriebs (Jahresabschluß, Stichtage, Altersumstufungen) im Postkorb bekanntzugeben. Desweiteren können persönliche Termine des Sachbearbeiters (Gruppen-, Abteilungsbesprechungen, Schulungen, Urlaub) über den Postkorb verwaltet werden. 3.3.5.4. Schnittstellen Einen kurzen Überblick über die Schnittstellen eines Postkorbsystems und die Einbindung in einen Gesamtkontext gibt die folgende Darstellung: Postkorb Komm. Fachl. Komponente Komm. Geschichtsbuch verweist auf verweist auf erzeugt Dokumenten- stellt ein Management Archiv Abbildung 36: Überblick über die Schnittstellen eines Postkorbsystems 3.3.5.5. Beispielablauf Dieser Abschnitt beschreibt den grundlegenden, typischen Arbeitsablauf bei der Arbeit mit einem Postkorbsystem aus der Sicht eines Sachbearbeiters: © GDV 2001 75 Inhalt Das Objektorientierte Technische Referenzmodell Ein eingehendes Kundenschreiben wird in der Poststelle geöffnet und eingescannt. Die entstehenden „Images“ werden in das Archiv eingestellt, und es wird im Postkorb des zuständigen Sachbearbeiters ein Auftrag zur Bearbeitung angelegt, welcher auf dieses Dokument verweist. Der Sachbearbeiter öffnet das Postkorbsystem und schaut in seinen Postkorb; dort kann er sich die von ihm zu erledigenden Aufträge nach gewissen Kriterien anzeigen lassen. Er wählt einen Auftrag aus und kann die relevanten Daten des Auftrags lesen und die dem Auftrag zugeordneten Dokumente anzeigen lassen. Ein Doppelklick auf den Auftrag öffnet die Fachkomponente, in welchem dieser Auftrag abgearbeitet wird. Das Bestandssystem kann während der Arbeit Daten im Geschichtsbuch (Vorgangsspeicher) einstellen oder Schriftstücke an den Kunden erzeugen (siehe 3.3.2), welche auch im Archiv abgelegt werden. Es besteht die Möglichkeit, dass der Auftrag nicht komplett von dem Sachbearbeiter abgearbeitet werden kann; er kann ihn entweder für eine spätere Bearbeitung auf Wiedervorlage legen oder ihn – falls seine Vollmacht zum Abschluss des Vorgangs nicht ausreicht – in den Postkorb eines Sachbearbeiters mit höherer Vollmachtsstufe weiterleiten (siehe 3.3.3). Wenn ein Sachbearbeiter einen Auftrag erfolgreich abarbeiten konnte, dann wird der Auftrag beendet und ins Geschichtsbuch übertragen. Dort ist er jederzeit über die Suche nach Ordnungsbegriffen wieder anzeigbar; er wurde während seiner Bearbeitungen um Informationen aus dem bearbeitenden Bestandssystem und um Verweise auf etwaige bei der Bearbeitung entstandene Druckstücke ergänzt. 3.3.6. Historisierung Die „Historisierung“ stellt ein Verfahren bereit, um auf den Zustand eines Bos zu einem bestimmten Zeitpunkt zugreifen zu können. 3.3.6.1. Fachlicher Aspekt Wenn man von Historisierung spricht meint man im Sinne des technischen Referenzmodells die Historisierung von EBOs, da die PBO nach ihrer Durchführung nicht mehr modifiziert werden, sondern lediglich in Form eines Journal auf einem anderem Medium dokumentiert werden Im Zusammenhang mit Historisierung unterscheiden versicherungstechnische Anwendungen grundsätzlich zwischen zwei Typen von EBOs: ○ solche, die einmal erstellt werden und den Zustand aktuell oder storniert haben, d.h. diese EBOs haben den Charakter eines Buchungssatzes. Beispiel aus der LV hierfür ist das Technikkonto ○ solche, die sich über die Zeitachse verändern, d.h. aufgrund einzelner Geschäftsvorfälle ändern sich einzelne Werte von Attributen. Im folgenden wird der Typ 2 (historisierbares EBO) näher betrachtet. Bei diesem Typ ist zu berücksichtigen, daß Historisierung ein zweidimensionales Gebilde ist. Man unterscheidet die Bearbeitungsterminhistorie (BAT), d.h. welchen Zustand hatte das BO zu dem Termin, als dem der Prozess (Geschäftsvorfall) das BO persistent abgelegt hat. Die zweite Dimension ist die Wirksamkeitshistorie (WIT), d.h. unabhängig davon, wann der Vorgang durchgeführt wurde, kann der zum Betrachtungszeitraum korrekte Zustand des BOs bereitgestellt werden. 76 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Beispiel BAT V4 1.6. V3 1.5. 1.4. V2 1.3. V1 1.2. WIT 1.3. 1.4. 1.5. 1.6. 1.7. 1.8. 1.9. Das obige Beispiel stellt die Historie für ein BO (z.B. Vertrag) dar. Es ist folgendermaßen zu interpretieren: ● Am 1.3. erzeugt der Sachbearbeiter (SB) das BO mit dem Wirksamkeitsbeginn ab 1.3. (Version 1) ● Ab dem 1.6. soll eine Änderung am BO wirksam werden, die der SB am 1.4. durchführt (Version 2) ● Am 1.5. äußert der Kunde den Wunsch, zum ersten 1.4. seinen Vertrag zu ändern, d.h. es handelt sich um eine rückwirkende Änderung (Version 3) (was geschieht mit den Änderungen der Version 2) ● Am 1.6. läuft ein Dynamik-Batch ( Version 4) Betrachte man das BO zum Zeitpunkt 1.7. bezügl. seiner Wirksamkeit, so sieht man die Versionen 1,3 und 4; d.h. die Version 2 existiert nicht. Betrachte man das BO zum Zeitpunkt 1.7. bezügl. seiner Bearbeitungshistorie, so sieht man die Versionen 1, 2 ,3 und 4. Im Zusammenhang mit der Wirksamkeit ist zusätzlich noch zu überlegen, ob es im „Leben“ des BOs auch Lücken geben kann. Beispiel: ein Tarif war vom 1.1. – 1.8. eingeschlossen und vom 1.10.-31.12. In diesem Fall benötigt man zusätzlich ein Wirksamkeitsende. Aus diesen Überlegungen folgt, dass zum Auffinden eines BOs neben dem fachlichen Schlüssel auch der Betrachtungszeitpunkt angegeben werden muss, um den korrekten Zustand des BOs zu konstruieren Zu nutzende Patterns: “Temporal Property” und “Temporal Association” [Fowl97], [PLoP2000] Im ersten Pattern geht es darum, Attribute eines BO – sofern die Inhalte der Attribute von der Zeit abhängen – durch einen Set von Ausprägungen dieses Attributes zu ersetzen. Jeder Ausprägung wird ein Gültigkeitszeitraum zugeordnet © GDV 2001 77 Inhalt Das Objektorientierte Technische Referenzmodell Beispiel: EBO Vertrag Vertrag Der Beitrag ist Abhängig von der gesamten Vertragskonstellation, daher werden alle jemals gültigen Zustände des Attributes BEITRAG mit einem „Zeitstempel“ versehen und in einem separaten Set gespeichert Beginn :: Date Beitrag :: Euro Vertrag Beginn :: Date 1 0 .. n Beitrag 1 1 Gültigkeit Anfang Ende Euro Abbildung 37: Beispiel Temporal Property Pattern: Snapshot [Fowl97], [PLoP2000] Das zweite Pattern ist dem ersten sehr ähnlich. Allerdings geht es in diesem Pattern um die Gültigkeit von (m:n)-Beziehungen zwischen unterschiedlichen BOs. Auch hier wird die Beziehung mit einem Gültigkeitszeitraum versehen. 78 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Beispiel: Kunde 1 0 .. n Rolle 0 .. n 1 Vertrag Rolle 0 .. n 1 Vertrag Erweitert um den Gültigkeitszeitraum Kunde 1 0 .. n 1 1 Gültigkeit Anfang Ende Abbildung 38: Beispiel zu Snapshot Die obigen Pattern lösen zwar das Problem sowohl Attribute als auch Beziehung eindimensional zeitraumbezogen zu speichern, allerdings wird der „Zugriff“ auf die Informationen aus Sicht eines Clients, der das BO nutzen will, komplexer, d.h. um den Zustand des BOs zu einem bestimmten Zeitpunkt herzustellen, muss der Client durch das Geflecht navigieren. Idee des Snapshot-Patterns ist es, dem Client ein Interface bereitzustellen, das in der Lage ist für einen bestimmten Zeitpunkt die zugehörigen Attributwerte und Beziehungen bereitzustellen. Die Information wird durch eine Navigation hinter der Schnittstelle dynamisch bereitgestellt. 3.3.6.2. Ein möglicher konkretes Lösungsansatz Betrachtet man EBOs im Versicherungsumfeld, so ist die Beziehung innerhalb des EBOs in der Regel hierarchisch, d.h. der fachliche Schlüssel eines Dependent Object in der Hierarchie setzt sich immer aus den Schlüsseln der Parents und dem eigentlichen Schlüssel des Objektes zusammen (z.B. ein KVVertrag enthält 1:n versicherte Personen, die wiederum 1:n Tarife haben). Die Beziehungen zwischen den Objekten ändert sich über den gesamten Lebenszyklus des Vertrages nicht. Beispiel: © GDV 2001 79 Inhalt Das Objektorientierte Technische Referenzmodell Innerhalb des KV-Vertrages ist ein bestimmter Tarif abgeschlossen worden. Es gibt lediglich Zeitpunkte, zu denen der Tarif noch nicht aktiv war (er wurde es nachträglich abgeschlossen) bzw. Zeitpunkte, in denen der Tarif nicht mehr aktiv war (er wurde storniert). Idee des Lösungsansatzes Alle Attribute, die über den gesamten Lebenszyklus des EBOs unverändert bleiben, werden zusammen mit dem fachlichen Schlüssel in einer gemeinsamen Klasse gespeichert. (KEY-Object) Alle Attribute, die lediglich vom Bearbeitungszeitpunkt abhängen, werden zusammengefasst, um den Bearbeitungstermin ergänzt und als BAT-Object gespeichert . Attribute, die sowohl vom Bearbeitungstermin als auch vom Wirksamkeitstermin abhängen, werden im WIT-Object gespeichert. Das KEY-Object besitzt einen Set, in dem alle BAT-Objects zu dem KEY-Object enthalten sind und ein Set mit allen WIT-Objects. Dies entspricht von der Grundidee dem Pattern 1; allerdings sind in dem Set nicht nur die Werte eines einzelnen Attributes enthalten, sondern es werden aus Effizienzgründen alle Attributwerte zu einem Bezugspunkt in einem gemeinsamen Objekt zusammengefasst. Darüber hinaus müssen die Methoden im WIT-Set beide Zeitdimensionen berücksichtigen. Weiterhin gibt es zu jeder Ausprägung des obersten KEY-Objects z.B. KV-Vertrag ein Logbuch, in dem jegliche Änderungen an dem BO festgehalten werden, d.h. wer war Auslöser der Änderung (Prozess), damit unter Umständen bei rückwirkenden Änderungen der Prozess automatisch wieder durchgeführt werden kann, wann wurde der Prozess durchgeführt und welche neuen WIT- und BATObjects wurden bei der Verarbeitung des Prozesses in die Sets eingefügt. (Idee des ChangeLog). Den Nutzern des EBOs werden Interfaces bereitgestellt, die von der internen Navigation frei sind und lediglich zusätzlich zum fachlichen Schlüssel den Bezugspunkt in Form von Wirksamkeits- und Bearbeitungsdatum als Input benötigen. (vgl. Pattern 2). Unter dem Gesichtspunkt der Komponentenbildung müssen die Schnittstellen der Komponenten frei von jeglicher Navigationslogik in der Historie sein, um von den – von Komponente zu Komponente unterschiedlichen Verfahren – unabhängig zu sein. LOGBUCH VertragKey VertragBAT KEY VertragWIT TarifTarifKEY KEY TarifTarifBAT BAT TarifWIT TarifWIT Abbildung 39: interne Struktur für die Historisierung 80 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3.3.7. Suchdienst Der Suchdienst bedient sich des Objektgeflechts, auch komponenten-übergreifend. Das Ergebnis des Suchdienstes ist das „Bekannt sein“ des gesuchten Objektes einschließlich der referenzierten Objekte („Objektgeflecht“). Es können also im nächsten Schritt Attributinhalte aus referenzierten Objekten mittels „...bereitstellen“ angezeigt werden. Der Suchdienst erhält als Input Attributinhalte des gesuchten Objektes (bzw. referenzierter Objekte). Er liefert als Output das gesuchte Objekt (bzw. die gesuchten Objekte), d. h. eine eindeutige Referenz auf das Objekt. Der Suchdienst muß so parametrisierbar sein, daß er nicht nur auf Gleichheit, sondern auch auf hinreichende Ähnlichkeit suchen kann (Lautähnlichkeit, x-prozentige Übereinstimmung in n von m Attributen). Ihm ist also eine Anforderungsart (oder „Suchart“) mitzugeben. Speziell im Bereich Partner ersetzt der Suchdienst die Dublettenprüfung, indem man auf hinreichende Ähnlichkeit sucht. Um eine Suchart „mit Dublettenkandidaten“ verwenden zu können, muß der Begriff des Dublettenkandidaten (ggf. unternehmensspezifisch) definiert sein. Allgemeine Definition des Begriffs „Dublettenkandidat“: Ein Objekt ist Dublettenkandidat zu einem anderen Objekt, wenn für eine festzulegende Anzahl bestimmter Attributinhalte (und/oder Referenzen auf andere Objekte) eine festzulegende Vergleichbarkeit vorliegt. Vergleichbarkeit bedeutet die Erfüllung ein oder mehrerer der folgenden Kriterien: - Lautähnlichkeit Beispiel: Meier und Mayer - Gleichheit - x-prozentige Übereinstimmung Beispiel: Engelen-Kefer und Engelen-Kiefer: Übereinstimmung > 90% - beschränkte Abweichung Beispiel: 01.10.1964 und 19.10.1964: Abweichung < 1 Monat 3.3.8. Event-Manager Der Event-Manager muß in der Lage sein, aus dem Ergebnis eines Service (z.B. bei Partner: Änderung des Familienstandes) den Auslöser einer notwendigen Folgeaktivität zu generieren (z. B. die Prüfung auf Versicherungsfähigkeit, nachdem der Familienstand des Versicherten geändert wurde). In Phase 1 wurde (in Anhang D der Dokumentation „Das objektorientierte fachliche Referenzmodell) diese Anforderung unter der Bezeichnung Termin/Ereignisverwaltung beschrieben. 3.3.9. Business Objects und Komponenten 3.3.9.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 © GDV 2001 81 Inhalt Das Objektorientierte Technische Referenzmodell 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 3.2.5.1) wie Naming, Transaction, Event usw. unterstützt werden. Um ein Business Object oder eine Gruppe von Business Objects in eine auslieferbare Softwarekomponente (BO-Komponente) zu verwandeln, sind noch eine Reihe weiterer Hilfsmittel erforderlich: Werkzeuge, um BO-Komponenten an die Systemumgebung wie Datenbanken, Security-Systeme usw. anzupassen Werkzeuge, um Komponenteneigenschaften 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. bei Enterprise JavaBeans, siehe Kapitel 4.4). Komponenten unterschiedlicher Frameworks erfordern jedoch auch unterschiedliche Werkzeuge. Trotz der in Aussicht gestellten Konvergenz von Architekturen wie Enterprise JavaBeans, SanFrancisco und CORBA Components sind dem freien Austausch von BO-Komponenten also noch Grenzen gesetzt. Konfigurations Werkzeuge Business Object Business Object Business Object Komponente 2 Komponente 1 BO - Manager -Framework (Komponenten Framework) Abbildung 40: 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. 82 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 41: Heterogene komponentenorientierte Systeme 3.3.9.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: 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 ist, 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 Schadensmeldung, 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. © GDV 2001 83 Inhalt Das Objektorientierte Technische Referenzmodell Insurance Domain Types Common Business Domain Types •VAA Fachliches Referenzmodell •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 42: 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. 3.4. Präsentation und Business Objects Die bisher besprochenen Konzepte für Business Objects behandelten nur Ablaufsteuerung, Transaktionskonzepte, Dienstkonzepte sowie Datenspeicherung. Das VAA Business Object Metamodell geht ebenfalls nicht näher auf die Präsentation von Business Objects ein. In diesem Kapitel wird nun die Präsentation von Informationen eines Business Objects definiert und erläutert. Grundsätzlich gehört eine Präsentation nicht zum Business Object dazu. Präsentationen sind jedoch sehr eng an das zugehörige Business Object gekoppelt und sind in aller Regel austausch- bzw. konfigurierbar. Business Objects stellen sich also durch Präsentationen dar. Jedes Business Object kann sich also in einer oder mehreren Präsentationen darstellen. In der Regel haben Business Objects eine Standardpräsentation. 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). Abbildung 43 zeigt den Zusammenhang zwischen Business Object und der Präsentation, die im folgenden Presentation Component genannt wird. Beide Begriffe (Presentation und Presentation Component) sind synonym verwendbar. Der Begriff Presentation Component jedoch drückt die spezifischen Eigenschaften der VAA Präsentation besser aus. Diese Eigenschaften werden in 3.4.1 spezifiziert. 84 © GDV 2001 Das Objektorientierte Technische Referenzmodell Presentation Component Business Object Business Object t Komponente 1 Inhalt Presentation Component Business Object Komponente 2 BO - Manager -Framework (Komponenten Framework) Abbildung 43: Business Objects und Presentation Components Präsentationen bzw. Presentation Components sind zunächst keine bestimmte Art der Darstellung, wie beispielsweise GUI, 3270, Java, HTML, Text. Das Konzept der Präsentation von Business Objects sollte grundsätzlich von der verwendeten Technik bzw. Programmiersprache oder Verteilungsstrategie frei sein. Grundsätzlich muss es möglich sein, bei einem Business Object Präsentationen auszutauschen oder hinzuzufügen, bzw. die Präsentation zu konfigurieren. Wünschenswert ist ein Grundgerüst für ein Standardprotokoll zwischen Business Object und Präsentationskomponente sowie eine Präsentation mit generischen Eigenschaften. So können beispielsweise durch die Konfigurierbarkeit bzw. Generik Präsentationen an unternehmensspezifische Standards (Kopf- und Fußzeilen, Titel, usw.) angepaßt werden. Darüber hinaus sollte es möglich sein, mit Hilfe eines Standardprotokolls unternehmensspezifische Präsentationen einem gekauften Business Object hinzuzufügen und diesem dadurch das unternehmensspezifische „Look & Feel“ zu verleihen. 3.4.1. Anbindung von Presentations an Business Objects Grundsätzlich werden Informationen im Rahmen von Prozessen und Abläufen dargestellt. D.h., dass der Präsentationskontext immer bei einem PBO liegt. EBOs haben in der Regel nur Standardpräsentationen für die einzelnen Daten oder Aspekte, die sie im Rahmen von Abläufen zur Ansicht bzw. Bearbeitung bereitstellen. Das bedeutet, dass die eigentliche Zuordnung einer Präsentation zu dem steuernden PBO gehört. Ebenso muß die Steuerung der Präsentation mit dem PBO gekoppelt werden, Informationen, die die Gesamtheit der Präsentation betreffen, wie beispielsweise das Schließen eines Fensters, muß somit dem steuernden PBO mitgeteilt werden. Änderungen an dargestellten Informationen, z.B. die Eingabe eines Namens, muß wiederum an das betroffene BO, zumeist ein EBO, weitergeleitet werden. Daraus ergibt sich folgende Anbindung von Präsentationen an Business Objects: © GDV 2001 85 Inhalt Das Objektorientierte Technische Referenzmodell Abbildung 44: Schichtenmodell für die Präsentationsanbindung Die Aufgaben der einzelnen Schichten sind wie folgt: ● Presentation : Die Presentation ist die eigentliche, sichtbare Darstellung. Hierbei kann es sich um die verschiedensten Arten der Darstellung handeln, beispielsweise HTML, Java-Application, Java-Applet, XML [Mart2000], 3270-Stream, ASCII-Text, etc. Durch die Entkopplung der Presentation vom Business Object mit der Presentation-Controller Schicht können die verschiedensten Oberflächen mit ihren Verteilstrategien (stateless, stateful) realisiert werden. ● Presentation-Controller : Dient der Entkopplung der eigentlichen Darstellung vom BO. Einerseits werden fachliche Events zwischen dem Presentation-Controller und dem PBO ausgetauscht. Andererseits ist der Presentation-Controller für den Aufbau der Verbindung zu den einzelnen Datenfeldern / Bildschirmfeldern zuständig. Jede Presentation hat genau einen Presentation-Controller. ● Presentation Component: Zusammenfassung der Presentation und des PresentationControllers. Diese Komponente stellt logisch die Präsentation eines Business Objects dar, denn jeder Presentation ist genau ein Presentation-Controller zugeordnet. Die Zusammenfassung von Presentation und Presentation Controller sagt jedoch noch nichts über die Verteilung bzw. Lokalität der einzelnen Komponenten aus. Mit diesem Konzept sind sowohl stateful als auch stateless Clients realisierbar. Diese Ebene übernimmt eigenständig alle Aufgaben, die zur Präsentation von Business Objects benötigt werden. ● PBO : Gesamtkontext der Präsentation. Das PBO ist für den Start des Presentation Controllers verantwortlich. Das PBO und der Presentation Controller tauschen fachliche Events aus. Beispielsweise wird das PBO informiert, wenn innerhalb einer Präsentation der „OK“-Button gedrückt wird. Dies impliziert die Aktion: „Accept“ bzw. „Commit“ und muß anschließend das Schließen der Presentation über den Presentation Controller veranlassen. ● EBO : enthält die einzelnen Informationen, die dargestellt werden sollen. Das EBO wird vom Process Business Object innerhalb dessen Kontext benutzt. 86 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Die Anbindung von anzuzeigenden Aspekten, beispielsweise der Nachname eines Partners wird, wie beschrieben, durch den Presentation-Controller angestoßen. Die Anbindung von Aspekten an die Oberfläche kann unterschiedlich erfolgen. Eine Lösung wäre z.B. die Verwendung des „Aspect-Adaptor Patterns“ [PLoP95]. Hierfür wird der zu beobachtende Aspekt, beispielsweise das Attribut eines Business Objects über ein Aspekt-Adaptor Object mit dem Anzeigeobjekt der Presentation verknüpft. Je nach Ausprägung des Aspekt-Adaptors (beobachtbar, nicht beobachtbar) zeigen sich Änderungen im Modell, also am Attribut des Business Objects an der Presentation. Eingaben an der Oberfläche werden an das Business Object ebenfalls weiter propagiert. © GDV 2001 87 Inhalt Das Objektorientierte Technische Referenzmodell Beispiel Java Swing JFrame Presentation Nachname Vorname AspektAdaptor Vorname AspektAdaptor Nachname EBO Partner String Nachname String Vorname ...... Die Presentation ist ein JFrame, der Presentation-Controller befindet sich mit dem JFrame auf dem Client. Die Business Objects alufen auf dem Application Server ab. Es sollen der Nachname und der Vorname des EBOs Partner angezeigt werden. Die Verknüpfung wird vom Presentation-Controller nach dem Starten der Presentation aufgebaut. Nachdem die Aspekt-Adaptoren vorhanden und verknüpft sind (Zustand in der Skizze), werden Änderungen am beobachteten Aspekt (Nachname bzw. Vorname im EBO Partner) an die Oberfläche weitergereicht. Ebenso werden Änderungen oder Eingaben von der Presentation an den Aspekt im EBO Partner weitergereicht. Abbildung 45: Beispiel einer Java-Presentation Wann diese Propagierung durchgeführt wird, ist von der Presentation-Component abhängig. Beispielsweise können Änderungen bei einer Java-basierten Presentation direkt über Events weitergereicht werden („Propagation on lost focus“). Bei HTML-Oberflächen (stateless client) können diese Änderungen erst bei Abschicken der gesamten Maske vom Webserver empfangen und nach Auswertung weitergeleitet werden. 88 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Beispiel Presentation HTML Frame im Browser auf dem Client Nachname Vorname Fasadenobjekt Oberfläche AspektAdaptor Vorname AspektAdaptor Nachname EBO Partner String Nachname String Vorname ...... In diesem Beispiel ist die Presentation ein HTML Dokument. Da es sich um einen stateless Client handelt, ist in diesem Fall der Presentation-Controller, der in Form einer Java Server Page implementiert ist, auf dem Web- oder Application Server vorhanden. Ebenso auf dem Web- oder Application Server existiert ein Fasadenobjekt, welches alle Attribute der Oberfläche enthält. Diese Attribute sind die Aspekte, die von den Aspect-Adaptoren nun beobachtet werden. Wird ein HTML-Dokument zum Client-Browser geschickt, so werden die entsprechenden Anzeigefelder vor dem Verschicken aus dem Fasadenobjekt gefüllt. Anschließend wird das Dokument auf dem Client angezeigt. Eingaben vom Client können erst weitergereicht werden, wenn das HTML-Dokument zum Server geschickt wurde. Hier wird das Fasadenobjekt mit den Inhalten des HTML-Dokumentes gefüllt, die Aspekt-Adaptoren erkennen eine Änderung und propagieren diese an das EBO weiter. Änderungen am Aspekt eines EBO können jedoch nicht sofort an den HTML-Client weitergereicht werden. Hierfür muß bei Änderungen am Modell und an der Oberfläche eine Strategie zur Fehlerbehebung implementiert werden. Abbildung 46: Beispiel einer HTML-Anbindung Baukastenprinzip Ein weiterer Aspekt der Präsentationskomponente ist das „Baukastenprinzip“ von Präsentationen. Einzelnen Presentation-Components, die einem Business Object zugeordnet sind, sollten analog der © GDV 2001 89 Inhalt Das Objektorientierte Technische Referenzmodell Datennormalisierung redundanzfrei sein, d.h. eine Präsentationskomponente kann sich aus anderen zusammensetzten. Daten vom PBO „Beschwerdelaufzettel bearbeiten“ Daten vom EBO „Partner“ Daten vom EBO „Partner-Adresse“ Standard-Buttonleiste für ein „Bearbeiten“ - PBO Abbildung 47: 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 [Gamma96]). 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. 90 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 3.4.2. Verteilung von Präsentation und Business Object In einer verteilten Umgebung mit grafischer Oberfläche kommunizieren die auf dem Client befindlichen Presentation-Components 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 Client-Konfigurationen sinnvoll, die unterschiedlichen Kommunikationsaufwand bedeuten und damit verschiedene Datenübertragungsstrategien erforderlich machen. 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. Presentation Presentation Component Component Business Business Object Object Fat Client BO-Manager Framework BO-Persistence BO-Persistence Service Service Server Abbildung 48: Fat Client Vorteil dieser Verteilungsstrategie besteht in der lokalen Kommunikation der Business Objects und der Presentation Component, da sich Geschäftslogik und Oberflächen auf einem Client befinden. Nachteil besteht in der Notwendigkeit der Verteilung der Anwendung (beispielsweise ist bei Versionswechsel von Anwendungen eine Verteilung der Anwendung auf alle Clients notwendig). Zudem sind zumeist höhere Hardwareanforderungen an den Client notwendig. Diese Verteilungsstrategie ist eigentlich nur für Intranets geeignet. Thin Clients Thin Clients enthalten die Presentation Component und kommunizieren mit entfernten Business Objects auf den Applikationsservern. © GDV 2001 91 Inhalt Das Objektorientierte Technische Referenzmodell Presentation Presentation Componente Componente Business Business Object Object Thin Client Server BO-Manager Framework BO-Persistence BO-Persistence Service Service Abbildung 49: Thin Client Der Server beinhaltet die gesamte Geschäftslogik, Clients haben „nur“ eine Oberflächenfunktion. Vorteil dieser Lösung ist, daß nicht die komplette Anwendung an den Client verteilt werden muß. Mit Verteilmechanismen, wie sie beispielsweise Java zur Verfügung stellt, können die Presentation Components bei Bedarf über das Netzwerk geladen und am Client ausgeführt werden. Diese Lösung ist grundsätzlich Intranet-geeignet. Für die Verwendung als Internet-Plattform stellen sich hier vornehmlich zwei Probleme: Zum einen kommuniziert die Presentation Component recht häufig mit dem BO (je nach Anbindung kann sogar bei jedem „Lost-Focus“ ein Event gefeuert werden). Diese Kommunikation ist für eine Internet-Plattform unbrauchbar. Es müssen hierfür Optimierungen bezüglich der Kommunikation Präsentation – BO durchgeführt werden. Darüber hinaus muß die Oberfläche komplett geladen werden. Dies kann u.U. bei „großen“ Oberflächen längere Ladezeiten mit sich ziehen. Im firmeninternen Intranet kann dies aufgrund der zumeist verfügbaren Bandbreite akzeptiert werden. Für einen Internet-Kunden sind diese Ladezeiten jedoch nicht immer akzeptabel. Unter Umständen wird auch bestimmte oberflächennahe Prüflogik auf dem Client durchgeführt, da es sich um einen stateful Client handelt. Dies kann dazu führen, daß firmeninternes Know-how auf beliebiege Clients verteilt werden müßte. 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 Presentation und Presentation-Controller insbesondere bei zusammengesetzten Presentation-Components stark ansteigt (siehe Abbildung). 92 © GDV 2001 Das Objektorientierte Technische Referenzmodell Server Inhalt Presentation Presentation UltraThin Presentation Presentation Client P-Controller P-Controller P-Controller P-Controller BO BO BO BO BO-Manager - Framework Abbildung 50: Ultra Thin Client Diese Verteilung entspricht zumeist der einer Internet-Anbindung. An den Clients werden beispielsweise von einem Web Server HTML-Dokumente gesendet, die komplett ausgefüllt an den Web Server zurückgeschickt werden. Die Anbindung der Oberfläche an die Geschäftslogik erfolgt dann wie in 3.4.1 beschrieben. Vorteil dieser Lösung ist die Größe des zu verteilenden Clients. HTML-Dokumente beispielsweise sind sehr schnell verfügbar, die gesamt Geschäftslogik einschließlich Prüfungen kann am Server stattfinden. Es muß keinerlei versicherungstechnisches Know-how (Tarifmodule etc.) am Client vorhanden sein. Darüber hinaus ist die Anforderung an einen solchen Client relativ gering, was u.a. einer hohen Verfügbarkeit in privaten Haushalten entspricht. 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. 3.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“. © GDV 2001 93 Inhalt Das Objektorientierte Technische Referenzmodell Ü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: Entkopplung 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. 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. 3.5.1. Entkopplung und Anpassung von Funktionalität In der objektorientierten Literatur [Busch98], [Wann99] 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: Objektadapter Fassaden Objektadapter 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 Objektadapter 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 Objektadaptern in der Lage, auch komplexe Schnittstellen zu kapseln und funktionell anzupassen und können grundsätzlich auf beiden Seiten gekoppelter Systeme eingesetzt werden. 3.5.2. Anpassungen der System- bzw. technischen Architektur Objektadapter 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 Objects können ebenfalls durch entsprechende Adapter auf die Dienste des Fremdsystems angepasst werden (siehe Abbildung 51). Die Systemarchitektur der VAA bietet gerade für diese Aufgaben eine gute Ausgangsbasis: Auf 94 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt ihrer Grundlage ist der Entwurf eines frameworkunabhängigen Schnittstellenmodells zur Anpassung unterschiedlicher Systeme möglich. vaaBO vaaBOManager xxBO xxBOFactory Annahme: das Partnersystem verfügt über eine Factory für alle BO vaaPartnerMgr (Objekt-Adapter) xxPartner vaaPartner (Fassade) xxPartnerRolle Abbildung 51: Beispiel einer Systemanbindung durch Fassaden und Adapter Der Aufwand für die Realisierung von Schnittstellen mittels Adaptern und Fassaden hängt 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 Components und auch SanFrancisco wird den dafür notwendigen Aufwand weiter reduzieren, sofern eine dieser Technologien Basis der Implementierung bildet (siehe Abbildung 52). Konvergenz der Architekturen SanFrancisco ? Enterprise JavaBeans CORBA Component Model 1998 2000 2002 Abbildung 52: Konvergenz der Architekturen © GDV 2001 95 Inhalt Das Objektorientierte Technische Referenzmodell Transaktionsmanagement 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 Sitzungskontextes 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 Eventtyp 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: 96 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 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 53: Beispiel für die Anbindung eines Legacy – Systems © GDV 2001 97 Inhalt Das Objektorientierte Technische Referenzmodell 4. Architekturmodelle im Überblick 4.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: 98 © GDV 2001 Das Objektorientierte Technische Referenzmodell Business Object Architecture Inhalt San Francisco Fachliches Referenzmodell V ersionierbar (from LibraryP ackage) IcisB asis (from LibraryP ackage) 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 JurP erson V ertragsabhaengigerP artner 0..* S tandard S tandard V ertragsabhaengigerP artner 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 Business Objects und Komponenten P ostempfaenger B eitragszahler BOCA (OMG) SystemArchitektur Dienste Technische Architektur SystemArchitektur IBM San Francisco Business Objects und Komponenten Object Request Broker SystemArchitektur Enterprise JavaBeans Business Objects und Komponenten Dienste Technische Dienste Technische Dienste (CORBA Services) Leistungsempfaenger Leistungsempfaenger Dienste Technische Dienste Technisches Referenzmodell ObjektP artner S onstigeP artnerrolle partn erart Leistungsempfaenger B eitragszahler (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 NatP erson Technisches Referenzmodell ObjektP artner S onstigeP artnerrolle partn erart Fachliche Komponentenmodelle Rolle P erson S tandard 0..1 * Rufnummer JurP erson P roduktpartner V ersicherte P erson IcisB asis (from LibraryP ackage) A ctor-Role -P attern V ersionierbarerA kteur 0..1 NatP erson V ermittler Fachliches Referenzmodell Fachliches Referenzmodell V ersionierbar (from LibraryP ackage) A ctor-Role -P attern V ersionierbarerA kteur Enterprise Java Beans Technische Architektur (CORBA Services) Technische Architektur Object Request Broker Object Request Broker Abbildung 54: Einordnung der betrachteten Architektur-Frameworks 4.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 4.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. © GDV 2001 99 Inhalt Das Objektorientierte Technische Referenzmodell 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-Types5 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. 4.2.2. Grundmuster der Architektur 4.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. 5 Ein Meta-Type ist die formale Beschreibung der Eigenschaften aller Objekte eines bestimmten Types. 100 © GDV 2001 Das Objektorientierte Technische Referenzmodell Personnel Inhalt Adaptors Business Objects Production Scheduling Supplier Customer Abbildung 55: 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 © GDV 2001 101 Inhalt Das Objektorientierte Technische Referenzmodell 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ände6 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 6 InterOp unterscheidet zwischen Attributen und Zuständen: Zustände sind spezielle numerische Attribute, deren Werte bestimmte Zustände des BOs charakterisieren 102 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt BocaGenericDataType::BocaObject BocaTransactions::TransactionalObject BocaNotif ication::Consumer BocaNotif ication::Supplier BocaObjects::StateAccess BocaGenericDataTypes::DependentObject BocaObjects::Lif eCycleObject BocaObjects::IndependentObject BocaObjects::BusinessObject BocaObjects::TypeManager Abbildung 56: 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. 4.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 für die Erstellung von Business-Komponenten benötigt werden, nicht definiert. InterOp geht deshalb © GDV 2001 103 Inhalt Das Objektorientierte Technische Referenzmodell 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 57: InterOp Services über verschiedene Komponenten 4.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 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 104 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 5: 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. © GDV 2001 105 Inhalt Das Objektorientierte Technische Referenzmodell 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). 106 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Event-Verbindungen zu anderen Objekten 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 6: 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 7: State Access Operationen der Interoperability Specification Events © GDV 2001 107 Inhalt Das Objektorientierte Technische Referenzmodell 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 8: 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. 108 © GDV 2001 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. Inhalt Tabelle 9: 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 10: 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 damit direkt in der Beziehung angegeben werden, das heißt ein Zugriff auf das Objekt selbst ist nicht © GDV 2001 109 Inhalt Das Objektorientierte Technische Referenzmodell 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 11: 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 110 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 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 12: 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 13: Exception Categories (Interoperability Specification) 4.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 BSDs und definiert lediglich Minimalanforderungen bezüglich verteilter Transaktionen zwischen BSDs. © GDV 2001 111 Inhalt Das Objektorientierte Technische Referenzmodell 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 14: Eigenschaften des Transaction Service (Interoperability Specification) 112 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 1: commit() Steuerlogik der Anwendung (Prozeß) ideEffects () ag 2: 3a: checkS ate Transaction Manager (CORBA) p pro 4: v () alid ate( ) 5: validateInternalStateBeforeUpdate() BO 3b: BO (im Tx-Context registriert) che ckI nte niz rna lRu les e () ro ch yn s 6: () 7: storeState() Storage Manager Abbildung 58: 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. Security Service © GDV 2001 113 Inhalt Das Objektorientierte Technische Referenzmodell 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. 4.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 übergreifend beschrieben. Dennoch wird die Interoperability Specification aufgrund des Erfolg des JavaBeans - Komponentenmodells in dieser Form nicht als Standard verabschiedet werden. Die in 2001 erwarteten CORBA Components Model - Spezifikationen werden sich an JavaBeans bzw. Enterprise JavaBeans orientieren. Das CORBA Components Model macht die meisten der oben angeführten Spezifikationen überflüssig. Allerdings fehlen im Components Model 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. 4.3. IBM San Francisco 4.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. 114 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt Abbildung 59: 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. 4.3.2. Grundmuster der Architektur Abbildung 60: Die San Francisco Architektur © GDV 2001 115 Inhalt Das Objektorientierte Technische Referenzmodell 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). 4.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 116 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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ß © GDV 2001 117 Inhalt Das Objektorientierte Technische Referenzmodell 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. 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. 4.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 61: 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. 4.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 118 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt definiert und so können unterschiedliche Implementationen eines Kernprozesses ohne Änderung der eigentlichen Anwendung verwendet werden. Abbildung 62: 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 © GDV 2001 119 Inhalt Das Objektorientierte Technische Referenzmodell für die Stücklistenverwaltung. Die Lagerverwaltung definiert auch das Business Object Product. 4.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. 4.4. Enterprise JavaBeans 4.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 120 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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. 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. 4.4.2. Grundmuster der Architektur 4.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. 4.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, Webserver oder Datenbanksystem) bereitgestellt wurde. 4.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. 4.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. 4.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. © GDV 2001 121 Inhalt Das Objektorientierte Technische Referenzmodell 4.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. 4.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, Symantec Visual Cafec , SUN Forte oder Borland JBuilder, 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. 4.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. 4.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 Services definieren einen Kontrakt zwischen der Enterprise Bean und dem Container, der als Portabilitätsschicht 122 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt (portability layer) implementiert wird. Jede Enterprise Bean kann auf jedem Anwendungsserver laufen, der EJB Kontrakte unterstützt. 4.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. 4.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 63 : 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. © GDV 2001 123 Inhalt Das Objektorientierte Technische Referenzmodell Der EJB Server stellt einen oder mehrere Container zur Verfügung, die Enterprise Bean Objekte verwalten. Der Container ist verantwortlich für: 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. 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. 4.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 delegieren 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. 4.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 124 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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. 4.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. 4.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. 4.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. 4.4.5. Beschreibung der Services 4.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 © GDV 2001 125 Inhalt Das Objektorientierte Technische Referenzmodell 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. 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. 4.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 entfernt wird. Das EJB Modell kapselt diese Funktionen in die Methoden ejbLoad, ejbStore, ejbActivate und ejbPassivate in jeder Enterprise Bean Klasse. 4.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 126 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 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. 4.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. © GDV 2001 127 Inhalt Das Objektorientierte Technische Referenzmodell 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 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. 4.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. 4.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 Komponenten 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 128 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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. Das EntityDescriptor Objekt erweitert das Deployment Descriptor Objekt um die Attribute, in denen gespeichert wird, welches Feld automatisch vom Container persistent gemacht wird. 4.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. Es gibt inzwischen schon einige Implementierungen, u.a. z.B. innerhalb von Oracle 8i , Oracle 9i 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 E-Business Suite (ERP, CRM) . Die meisten dieser Implementierungen stützen sich (zumind. zum Zeitpunkt der Erstellung des Dokumentes) auf die Version 1.x von EJB. In dieser Version waren einige Dienste, die zur Erstellung von Applikationen erforderlich sind, noch nicht spezifiziert bzw. enthalten. Die o.g. Produkte haben die fehlenden Dienste mit eingener Logik gefüllt. Es bleibt abzuwarten, inwieweit die vorliegende Version 2.0 der EJB-Spezifikation, die nun vollständiger ist, Änderungen in den o.g. Produkten nach sich zieht. 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. © GDV 2001 129 Inhalt Das Objektorientierte Technische Referenzmodell 5. 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 1999 2000 2001 2002 Abbildung 64: Konvergenz der Komponentenarchitekturen Neben der Kompatibilität von Komponenten auf technischer Ebene sind einheitliche Schnittstellen auf fachlicher Ebene notwendig. Die Basis hierfür schafft das fachliche Referenzmodell. Die im fachlichen Referenzmodell beschriebenen fachlichen Komponenten sollten gemeinsam mit dem technischen Referenzmodell für zukünftige Implementierungen in der Versicherungswirtschaft als Basis dienen. 130 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 6. 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 Microsofts 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 Object Adapter (BOA) Ein von CORBA definierter Objektadapter, den alle ORBs 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. 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 © GDV 2001 131 Inhalt Das Objektorientierte Technische Referenzmodell transparenter Kommunikationsbus zwischen den Objekten fungiert und die CORBA-Services, die definierte Dienste zur Verfügung stellen, die auf der Systemebene des ORBs agieren. Zusätzlich beinhaltet CORBA die CORBAFacilities, 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) Anwendungsarchitektur von Microsoft, die in einem Framework von verteilten Einzellösungen das Internet mit einer Client-/Server-Architektur integriert. Sie ist ein Multitier 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 Object (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 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 132 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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 ORBs. Interoperability Specification Definition von Kategorien von Objekten inklusive ihres grundlegende Verhaltens Strukturvorgaben.(„Systemarchitektur„) und die benötigten technischen Funktionen Datenspeicherung und Transaktionsmanagement auf die CORBA - Dienste Interfacespezifikationen abzubilden („Technische Architektur„). und wie und Ziel ist die Integration der CORBA-Services in eine Systemarchitektur für Geschäftsanwendungen und das Zusammenspiel zwischen ORB-Funktionen und Business Objects. 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 Softwaresystems, 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. 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 © GDV 2001 133 Inhalt Das Objektorientierte Technische Referenzmodell 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 Object (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 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. 134 © GDV 2001 Das Objektorientierte Technische Referenzmodell Inhalt 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-Interfaces 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 2001 135 Das Objektorientierte Technische Referenzmodell Anhang 7. Anhang 7.1. Charakterisierung der einzelnen CORBA-Services Generell bestehen alle CORBA-Spezifikationen aus Schnittstellenbeschreibungen, 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 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 Interfacebeschreibungen werden in sogenannten Modulen zusammengefaßt. So enthält zum Beispiel das Modul cosRelationships alle Interfacebeschreibungen des Relationship Service. Hinweis: Die Beschreibung der Services beruht auf der CORBA Spezifikation 2.2, da für diese Spezifikation die meisten Produkte zum Zeitpunkt der Dokumentenerstellung verfügbar waren. Neuere CORBA Spezifikationen sind unter www.omg.org jederzeit im Web einsehbar. Darüber hinaus kann und will diese Beschreibung der Services nicht mit der derzeit vorhandenen Fachliteratur zu CORBA konkurrieren. Sie erhebt auch keinen Anspruch auf Vollständigkeit, da Services, die nicht als Produkt verfügbar waren (Stand der Dokumentenerstellung) in die Betrachtung einbezogen wurden. Vielmehr soll mit dieser Auflistung dem Leser eine Übersicht über die vorhandenen und benötigten Services vermittelt werden. Weiterführende Literatur siehe [OMG98a][Orfali98] [Orfali97] [Orfal98b] [Mow97] [Orfali96]. Eine Auflistung über die Verfügbarkeit der verschiedenen Services ist unter 7.2 zu finden. 7.1.1.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. © GDV 2001 137 Anhang Das Objektorientierte Technische Referenzmodell Objekte werden durch sogenannte Factories erzeugt. Factories sind Objekte, die über Methoden verfügen um ein Objekt eines bestimmten Typs zu erzeugen [Gamma96]. 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 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. Obwohl in vielen CORBA-Produkten der Lifecycle noch nicht Einzug gefunden hat, gibt es doch Implementierungen auf dem Markt, die auch genutzt werden sollten, da der Life-Cycle einen wichtigen Dienst darstellt. 7.1.1.2. Naming Service Definition 138 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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. 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 15: 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. Abbildung 65: 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. © GDV 2001 139 Anhang Das Objektorientierte Technische Referenzmodell 7.1.1.3. Relationship Service Definition 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: 140 Erzeugen eines Rollen- oder Relationenobjektes (fällt in die Zuständigkeit der Rollen- oder Relationen-Factory). © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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). 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 2001 141 Anhang 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 66: 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 142 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang Kante in die Ergebnismenge ausgegeben wird und bei welchem Knoten die Suche fortgesetzt werden soll. 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 67: 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. 7.1.1.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 2001 143 Anhang Das Objektorientierte Technische Referenzmodell Client Persistentes Objekt PO Protokoll Persistence Data Service PID POM Persistence-ID Persistence ObjectManager PDS Datenspeicher Abbildung 68: 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. 144 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 7.1.1.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 © GDV 2001 145 Anhang Das Objektorientierte Technische Referenzmodell Recoverable Object muß deshalb sowohl das TransactionalObject- als auch das Resource-Interface implementieren. Ein Recoverable Object beteiligt sich am Transaction 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 69: 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. 146 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang Ein Two-Phase Commit setzt immer dann sämtliche Veränderungen zurück, wenn eine einzige Ressource einen Fehler dokumentiert bekommen hat. 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 70: 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 © GDV 2001 147 Anhang Das Objektorientierte Technische Referenzmodell 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 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. 7.1.1.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: 148 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang Abbildung 71: Locking Modes des Concurrency Services 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. 7.1.1.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. © GDV 2001 149 Anhang Das Objektorientierte Technische Referenzmodell 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. Tabelle 16: 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 72: 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 150 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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 © GDV 2001 151 Anhang Das Objektorientierte Technische Referenzmodell 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 17: 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. 152 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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 18: 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 73: Beispiel Trader Service © GDV 2001 153 Anhang Das Objektorientierte Technische Referenzmodell 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. 7.1.1.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 154 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang Bestimmt, ob ein beliebiges Element innerhalb einer Collection nur genau einmal (unique) oder auch mehrfach (multiple) vorkommen darf. Eindeutigkeit der Einträge Tabelle 19: 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 74: 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 © GDV 2001 155 Anhang Das Objektorientierte Technische Referenzmodell 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. 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. 7.1.1.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: 156 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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. 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 20: 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 75: 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. 7.1.1.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 © GDV 2001 157 Anhang Das Objektorientierte Technische Referenzmodell 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: OQL – ODMG-93 Objekt Query Language SQL mit objektorientierten Erweiterungen Eine Mischung aus den SQL und OQL Schematische Darstellung des Ablaufes: Client Query Evaluator Query Evaluator Query Evaluator Native Query System Objekt Abbildung 76: 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 158 CollectionFactory; zum Erzeugen einer Collection © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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 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. © GDV 2001 159 Anhang Das Objektorientierte Technische Referenzmodell 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 77: Beispiel für eine Query mit dem QueryManager Wertung 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. 7.1.1.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 160 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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) überhaupt verwendet werden darf. Dazu reicht der ORB das mitgelieferte Credential an die Zugriffsentscheidung des Sicherheitsdienstes (AccessDecision) weiter. Hinter dieser abstrakten Schnittstellen verbirgt sich das eigentliche Autorisierungsverfahren, das ermittelt ob der Aufrufer durch seine Identität und Rollen für die betreffenden Ressource (Server-Objekt) berechtigt ist, die gewünschte Operation auszuführen. 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 78: 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. 7.1.1.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. © GDV 2001 161 Anhang Das Objektorientierte Technische Referenzmodell 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. 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 162 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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: Client 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 © GDV 2001 163 Anhang Das Objektorientierte Technische Referenzmodell Abbildung 79: 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. 7.1.1.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. 164 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 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. Consumer 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 © GDV 2001 165 Anhang Das Objektorientierte Technische Referenzmodell 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 80: 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 2.1.3). 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. 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. 7.2. Verfügbare CORBA Implementierungen und Services Die folgenden Listen erheben keinen Anspruch auf Vollständigkeit noch ergibt sich aus der Liste eine Wertung für ein Produkt oder einen Hersteller. Diese Listen soll einzig und allein dem Betrachter einen ersten Überblick über die Verfügbarkeit von CORBA-Implementierungen, unterstützten Sprachen sowie implementierten Services zu geben. Ein aktueller Überblick ist im WWW unter http://www.cetus-links.org/oo_object_request_brokers.html verfügbar. Die folgenden Übersichten wurden mit freundlicher Genehmigung von Cetus zur Verfügung gestellt. 7.2.1. Cetus – Übersicht über verfügbare CORBA – ORBs Folgende Auflistung soll eine Übersicht über die derzeit verfügbaren CORBA ORB Implementierungen bieten. Bei den entsprechenden Produkten ist außerdem ersichtlich, welche Programmiersprachen und Features unterstützt werden. 2000 by Cetus Team. ○ 166 Arachne (Decision Systems Group) − Product C++, Extensions − CORBA Services: Naming, Lifecycle, Property, Relationships, Externalization © GDV 2001 Das Objektorientierte Technische Referenzmodell ○ BEA WebLogic Server and BEA WebLogic Enterprise (was Object Broker, was M3 ) (BEA) − Product (BEA WebLogic Enterprise) Product (BEA WebLogic Server) − C++, Java, Active X Bridge, MOM, Extensions, Security − CORBA Services: Naming, Transaction − ObjectBroker page (Compaq-CERN Joint Project) ○ Bionic Buffalo - siehe Tatanka ○ BlueORB (Berry Software) − ○ ○ Product Java ChorusORB (Sun) − Product C++, real-time embedded systems − CORBA Services: Naming, (other non-standard) Component Broker/DSOM (IBM) − Product C++, Java, Smalltalk, COBOL, ActiveX Bridge, Extensions − CORBA Services: Naming, Events, LifeCycle, Transaction, Externalization, Concurrency, Identity, Query, Security, (other non-standard) − Redbook ○ Cool ORB - siehe ChorusORB ○ COPE (Bart Schuller) ○ CORBAplus (ExperSoft) − Product C++, Java, ActiveX Bridge − CORBA Services: Naming, Events, Relationship, Notification, Trader, Transaction ○ Corbus (obsolete) (BBN) ○ DAIS - siehe LiveContent BROKER ○ DIMMA (ANSA) ○ ○ − Product Download (zipped) C++ − Specialised ORB for multi-media and real-time applications Distributed Smalltalk (ObjectShare) − Product Smalltalk − CORBA Services: Naming, Events, Transaction, Concurrency DOME − ○ Anhang (Object Oriented Technologies) Product C, C++ Electra (Silvano Maffeis) − Product C++, (Tcl/Tk) − Specialised for fault-tolerant systems such as Horus and Ensemble. − CORBA Services : Naming, (Events) © GDV 2001 167 Anhang Das Objektorientierte Technische Referenzmodell ○ Enterprise JavaBeans - siehe JavaIDL ○ Flick (Flux Project at the University of Utah) − ○ Fnorb (DSTC) − ○ ○ − Product C++, Java , Smalltalk − CORBA Services : Naming, Events, Notification, Persistence, Lifecycle, Transaction, Concurrency Hardpack (Lockheed Martin) Product Dylan, Common Lisp, POA ILU (Xerox Parc) − Product C++, ( C , Java, Python, Lisp, Perl, Modula-3 ) ○ Interbroker - see DOME ○ ISP (Russian Academy of Science) − ○ Product C++ JacORB (Gerald Brose) − Product Java − CORBA Services : Naming, Events ○ JADE (APM) ○ JavaBeans - siehe JavaIDL ○ JavaIDL (and Enterprise JavaBeans) (JavaSoft) ○ ○ − JavaIDL Enterprise JavaBeans Java, ActiveX Bridge − CORBA Services : Naming, (Transactions) JavaORB (Distributed Objects Group) − Product Java, POA, OBV, Thread Policies, Interceptors − CORBA Services : Naming, Event, Notification, Trading, Transactions, Security, Persistence, Property, Collection JBroker (ObjectEra, now Silverstream (was ObjectEra) − Product Java, POA, RMI translator − CORBA Services : Naming, Security, (Transactions) ○ Joe - siehe NEO ○ Jonathan (France-Télécom/CNET) − 168 Product C, C++, Ada83, Ada95, RealTime, Fault Tolerant Harlequin (Harlequin) − ○ Product Python GemORB (GemStone) − ○ Product C++, C - Flexible and optimizing IDL compiler kit Product Java © GDV 2001 Das Objektorientierte Technische Referenzmodell ○ Jorba (Roland Turner) − Product Java − CORBA Services : Naming ○ JYLU - see ILU ○ Krypton (now part of Continuous eCommerce Platform) − ○ LiveContent BROKER (was DAIS) (Peerlogic) − Product C, C++ , Java , ActiveX Bridge , POA − CORBA Services: Naming, Events, Security, Transaction M3 - siehe BEA Object Broker ○ MICO (University of Frankfurt) − Product C++, (Perl, Tcl/Tk, POA) − CORBA Services : Naming, Events, Time, (Property) ○ NEO (Obsolete) (Sun Microsystems) ○ Netscape Internet Service Broker − ○ (Netscape) Product C++ , Java - siehe auch VisiBroker Nouveau (Roguewave) − Product − CORBA Services : Naming OAK C, C++, Java, POA, interoperability with COM (Camros Software) − Product − CORBA Services : Naming, Events C++, Objective-C, (Java) ○ Object Broker - siehe BEA WebLogic Enterprise ○ ObjectBus - siehe TIB/ObjectBus ○ ObjectDirector (Fujitsu) ○ ○ (TANTAU Software) Product C, C++, Java, COBOL ○ ○ Anhang − Product C, C++, Java, ActiveX Bridge, Extensions − CORBA Services : Naming, Events, Lifecycle, Persistent Object, Transaction, Externalization, Concurrency, Relationship, (Time, Properties, Security, Query, Licensing) − OmniBroker - siehe ORBacus − omniORB2 − Product C++, Python − CORBA Services : Naming, Property OrbAda (AT&T Laboratories ) (Top Graph'X) − Product Ada95 − CORBA Services : Naming ORBacus © GDV 2001 (Object-Oriented Concepts) 169 Anhang Das Objektorientierte Technische Referenzmodell − Product C++, Java, Extensions, (Security), − CORBA Services : Naming, Events, Notification , Prsperty, Trader, − ORBAsec : Security Service (Adiron) ○ ORBAsec - siehe ORBacus Security ○ ORBexpress ○ − Product C++, Ada 95, Embedded Systems, Real-Time, − CORBA Services : Naming, Time ORBit (RHAD Labs , GNOME Project ) ○ ○ Product C and others under development, e.g.: C++ , http://www.alphalink.com.au/%7Etabbycat/ORBit-Eiffel/index.htmlPython , Perl , Eiffel Orbix (Iona Technologies) − Product C++, Java, COM-Corba Bridge, Cobol, PL/I, Embedded Systems − CORBA Services : Naming, Events, Security, Trader, Transaction, (Notification) − CORBA Distributed Objects, using Orbix (Sean Baker) − Lumos TMS CORBA-Based TL1 Management Solution (Lumos Technologies) − CORBA-to-CMIP Gateway (UHC) ORB Plus (Obsolete) (HP) − Product C++, ActiveX Bridge − CORBA Services: Events, Naming, Lifecycle ○ RCP-ORB (Obsolete) (NORTEL) ○ ROBIN (Jim Pangburn, FermiLab) ○ ○ 170 (Objective Interface Systems) − Product C, C++, Java (unofficial mappings) − CORBA Services: (coming soon...) Secant Extreme Enterprise Server (Secant ) − Product C++, Java, Extensions − CORBA Services : Events, Concurrency, Persistence, Transaction, Security, (Query), (Externalization) − Rose Secant Extreme Link SmalltalkBroker (Promia (formerly DNS Technologies)) − Product − CORBA Services : Naming, Events, Lifecycle, Transaction, (Security), − Visual Enterprise Information Server Smalltalk, Extensions ○ SOMobjects ○ SORBET (obsolete) (Siemens Nixdorf ) ○ TAO ( Distributed Object Computing Group at Washington University - siehe ComponentBroker © GDV 2001 Das Objektorientierte Technische Referenzmodell ○ ○ − Product C++, Real-time, POA − CORBA Services : Naming, Events, Trader, Lifecycle, Property, Concurrency, A/V Streaming − Support for ACE from Riverace − Support for ACE from OCI Tatanka (Bionic Buffalo ) − Product C, (C++, Java), POA − CORBA Services : Naming, Events, Time, Externalization, Trader, Lifecycle, Persistence, Property, Relationship, Concurrency, Security, Transaction TIB/ObjectBus (TIBCO) − Product C++, Java, MOM − CORBA Services : Naming, Events ○ TME 10 (obsolete) (Tivoli Systems) ○ UNAS (TRW) ○ ○ Anhang − Product C++, Ada95, MOM, Extensions − CORBA Services : Naming VisiBroker (Borland) − Products C++, Java, COM/CORBA Bridge, Extensions − CORBA Services : Naming, Events, Transaction − Grasshopper - a mobile agent (IKV) − Highlander Communications' products based on VisiBroker (Highlander Communications) − Installing VisiBroker 3.2 for Java on "unsupported" systems (Hauke Fath) − Programming with VisiBroker (Doug Pedrick, Wiley) − MakoServer CICS Bridge (Saga Software (was Blue Lobster)) Voyager ORB (ObjectSpace) − Product Java, CORBA-enabled Mobile Agent − CORBA Services : Naming, Security, Transaction − Aliens3D - Multiuser world with VRML/EAI and Java Voyager ORB − Technical White Papers − Jini Voyager (Gamelan, Mar 1999) 7.2.2. CORBA Service Implementierungen Die folgenden CORBA Services werden zusätzlich zu den in 7.2.1 aufgeführten ORB Implementierungen Herstellern angeboten. Auch hier wird wieder keine Garantie auf Vollständigkeit übernommen. Die Auflistung soll lediglich zur Orientierung dienen: ○ Collection Service © GDV 2001 171 Anhang Das Objektorientierte Technische Referenzmodell − ○ Concurrency Service − ○ ○ − NetEvents (Exemplar Development) Java implementation of the Event Service. − OpenFusion Event Service (PrismTech) Event Service with Java & C++ bindings. Lifecycle Service ○ ○ 172 OpenFusion Lifecycle Service (PrismTech) Lifecycle Service with Java & C++ bindings. Licensing Service − ○ OpenFusion Concurrency Service (PrismTech) Concurrency Service with Java & C++ bindings. Event Service − ○ OpenFusion Collection Service (PrismTech) Collection Service with Java & C++ bindings. SilkMeter (Segue Software) C++ and Java implementations of the Licensing Service. Naming Service − DSTC Scalable Naming Service (DSTC) C++ implementation of the Naming Service − ENames - CORBA Naming Service Browser [German] (Entrance Software) Java / Swing Naming Service Browser − jNames (OutBack Resource Group) Java implementation of the Naming Service − OpenFusion Naming Service (PrismTech) Naming Service with Java & C++ bindings − ORBacus Names (OOC) Java implementation of the Naming Service − TRC Naming Service (Technical Resource Connection) Java implementation of the Naming Service. Notification Service − DSTC Notification Service (DSTC) C++ implementation of the Notification Service. − OpenFusion Notification Service (PrismTech) Notification Service with Java & C++ bindings. − ORBacus Notify (OOC) C++ implementation of the Notification Service. − Orbital Notification Service (NEC) C++ implementation of the Notification Service. Patient Identification Service © GDV 2001 Das Objektorientierte Technische Referenzmodell − ○ ○ ○ ○ ○ ○ Patient Identification Service (LANL) Persistent Object Service − ○ Anhang Secant Extreme Persistent Object Service for C++ and Java (Secant) Persistent Object Service with Java & C++ bindings. Property Service − OpenFusion Property Service (PrismTech) Property Service with Java & C++ bindings. − Property Service (Carsten Zerbst) Property Service implemented using Tcl and Mico. Relationship Service − Enabled Systems Persistent Relationship Service (Enabled Systems) Relationship Service with Java & C++ bindings. − OpenFusion Relationship Service (PrismTech) Relationship Service with Java & C++ bindings. Security Service − ORBAsec (Adiron) Java implementation of the Security Service (Level 1 and Level 2) − SecureBroker (Promia) Java implementation of the Security Service (Level 1 and Level 2) Time Service − OpenFusion Time Service (PrismTech) Time Service with Java & C++ bindings. − Time Service (Carsten Zerbst) Time Service implemented using C++. Trading Service − DSTC Object Trader (DSTC) C++ implementation of the Trading Object Service. − JTrader (Bruno Böttcher) Java Trading Service, implementing Manager - Factory pattern − OpenFusion Trading Service (PrismTech) Trading Object Service with Java & C++ bindings. − ORBacus Trader (OOC) Java implementation of the Trading Object Service. − TOI (IKV) C++ implementation of the Trading Object Service. − Trader (Washington University in St. Louis) C++ implementation of the Trading Object Service. Transaction Service © GDV 2001 173 Anhang Das Objektorientierte Technische Referenzmodell − CORBAplus Transaction Service (Expersoft) C++ implementation of the Object Transaction Service. − Java Transaction Service (JTS) (JavaSoft) Java implementation of the Object Transaction Service. − JTSArjuna (Arjuna Solutions) Java implementation of the Java Transaction Service − OTSArjuna (Arjuna Solutions) C++ implementation of the Object Transaction Service. − TPBroker (Hitachi) C++ implementation of OTS, and Java Implementation of OTS and JTS. − VisiBroker ITS (Borland) Implementation of CORBA OTS and JTS 7.3. Beispiele für Oberflächenanbindungen 7.3.1. Das archid - Framework als Beispiel einer flexiblen Verteilung von Oberfläche und Anwendungslogik 7.3.1.1. Kontext Außendienstsysteme im Versicherungsbereich unterliegen steigenden Anforderungen bezüglich Flexibilität, Konnektivität und Kosten. Neue Versicherungsprodukte müssen schnell und flexibel in Außendienstsysteme integriert werden, um die Mitarbeiter vor Ort zu unterstützen. Kann zusätzlich mit diesem System die Unterstützung unterschiedlicher Vertriebswege gewährleistet werden, lassen sich große Kostenvorteile für Entwicklung und Einarbeitung erzielen. Das archid-Framework des debis Systemhauses definiert eine Architektur, die speziell für die Anforderungen moderner Außendienstsystemplattformen entwickelt wurde und diesen Rechnung trägt. Diese Anforderungen sind im Einzelnen: Die Architektur muß ohne Änderungen in den Betriebsarten: Standalone (Fat Client), Client/Server (Thin Client) und Browser-Betrieb (Web, Thin Client) lauffähig sein. Sie muß eine horizontale Trennung zwischen Präsentations- und Logikschicht bieten. Sie muß eine horizontale Trennung zwischen Logik- und Datenzugriffsschicht bieten. Sie muß parallel laufende Anwendungsmodule ermöglichen. Sie muß die Erstellung von wiederverwendbaren Komponenten ermöglichen. Sie muß die Produktivität der Anwendungsentwickler unterstützen, indem viele Basisfunktionalitäten in der Architektur bereits implementiert sind. Sie muß prozeßorientiert arbeiten. Die Prozesse müssen mindestens per Filetransfer auf ein anderes System übertragbar sein. Das Framework, das die archid-Architetur umsetzt, ist in Java implementiert. 174 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang Die Architektur inkl. Framework wird derzeit erfolgreich für die Entwicklung der neuen Außendienstplattformen von Gerling und der Aachener und Münchener eingesetzt. Im weiteren werden speziell die Funktionalitäten und Konzepte für die Verbindung der Oberflächenschicht mit der Anwendungslogik beschrieben. 7.3.1.2. Probleme Betriebsarten Für die Unterstützung der verschiedenen Betriebsarten, im speziellen der Thin-Client-Bertriebsart, muß die Anwendung in den Oberflächenanteil und die fachliche Anwendungslogik aufgeteilt werden. Im Thin-Client-Betrieb ergibt sich dann die klassische Ausprägung des Client-/Server-Betriebes mit der Oberflächenschicht auf dem Client und der Awendungslogik auf dem (Applikations-) Server. Kommunikaton Die Aufteilung in Oberfläche und Anwendungslogik zieht Folgeprobleme hinsichtlich der Kommunikation nach sich. Die fachlichen Daten müssen in einfacher, kompakter Form als möglichst kleine Datenpakete vom Server zum Client transportiert werden. Dazu sollen idealerweise möglichst wenig Serverzugriffe nötig sein. Das bedeutet auch, daß Events der Oberfläche nicht über das Netz propagiert werden dürfen, weil sich sonst der Kommunikationsaufwand in unzumutbarer Weise erhöht. Der Datenzugriff muß in den verscheidenen Betriebsarten einheitlich sein, damit die Betriebsarten für die Anwendung transparent sind. Zusätzlich soll der Datenzugriff möglichst einfach und übersichtlich sein. Damit darf die Zahl der Komunikationsschnittstellen nicht zu stark ansteigen. Wiederverwendbarkeit Die fachlichen Anwendungskomponenten der Anwendung sollen wiederverwendbare Komponenten bilden. Da die Anwendungskomponenten aber zur Bearbeitung Daten benötigen, ergeben sich zwangsläufig Verbindungen zur Umwelt, die die Wiederverwendbarkeit nicht einschränken dürfen. 7.3.1.3. Kräfte Kommunikation Für die Übertragung der fachlichen Daten vom Server in die Oberflächenschicht sollen möglichst kompakte Datenpakete geschnürt werden, damit die Anzahl der Serverzugriffe gering gehalten wird. Aufgrund dieser Anforderung und der Anforderung für den einfachen Zugriff auf diese Daten bietet sich die Übertragung der Daten in Form von Kopieren der BO’s über das Netz an. Dabei werden die BO’s automatisiert serialisiert und übertragen. Wird ein BO übertragen, so werden automatisch auch alle Objekte übertragen, auf die von dem betreffenden BO referenziert werden. Zumeist werden diese referenzierten Objekte aber in der View nicht benötigt. Es werden folglich zu viele Daten übertragen. Es muß darauf geachtet werden, daß die Menge der übertragenen Daten in einem gesunden Verhältnis zu der Anzahl der Server-Zugriffe stehen. Dabei gilt in der Tendenz, daß die übertragenen Daten © GDV 2001 175 Anhang Das Objektorientierte Technische Referenzmodell größer sein dürfen, sofern dadurch Server-Zugriffe eingespart werden können, da jeder einzelne Server-Zugriff einen nicht zu unterschätzenden Protokolloverhead erzeugt. Business Objects Die Übertragung der BO’s ermöglicht einen einfachen und komfortablen Zugriff auf die fachlichen Daten. Damit die BO’s für den Client-/Server-Betrieb möglichst klein sind, dürfen die BO’s nur wenig Logik enthalten. Sie dürfen insbesondere keine Funktionalitäten beinhalten, die zur Ausführung Funktionalitäten des Servers aufrufen, da diese auf dem Client nicht verfügbar sind. Damit werden die BO’s im Extremfall zu einfachen „Datenhaltern“, während die Fachlogik in anderen Anwendungsbereichen untergebracht wird. Schnittstellen Für den Zugriff der Oberflächenschicht auf den Server muß eine Zugriffsmöglichkeit definiert werden, die von der reinen Netzwerkfunktionalität abstrahiert. Dafür bietet sich CORBA an. CORBA definiert für alle entfernten Zugriffe Schnittstellen, sogenannte Interfaces, über die der Zugriff erfolgen kann. Für die spezifischen Serverfunktionalitäten bedeutet das, daß in der Implementierung jeweils Interfaces für den Zugriff des Client zu erzeugen sind. Nach kurzer Zeit kann die Anzahl der spezifischen Interfaces eine Größenordnung erreichen, die die Übersichtlichkeit verringern und den Verwaltungsaufwand erhöhen. Alternative ist ein einheitliches generisches Interface, daß die gesamte Kommunikation zwischen der Oberfläche und dem Server abdeckt. Dabei geht aber die Typsicherheit sowohl für den Aufruf als auch für die Übergabeparameter verloren. Wiederverwendbarkeit Wiederverwendbare Komponenten gehen davon aus, daß keinerlei Informationen über den Kontext, in dem sie sich befinden in der Komponente enthalten sind. Benötigt eine wiederverwendbare Komponente während ihrer Ausführung Daten oder Services, die sie nur vom Kontext erhalten kann, ergibt sich automatisch eine Abhängigkeit vom Kontext. Eine vollständige Unabhängigkeit erhält man nur, wenn die Komponente Daten oder Services zur Verfügung gestellt bekommt, und sie sie nicht aktiv ermittelt. Dies erhöht aber den Verwaltungsaufwand des Kontextes und schränkt die (automatisierbare) Funktionsweise der Komponente ein. 176 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang 7.3.1.4. Lösung Das nachfolgende Schaubild stellt die wesentlichen Elemente der Architektur dar: Verwaltung main() Applet LogIn / LogInFrame Start Anwendung GUIFactory Server View View Client Server Activity GUIFactory main() LogIn Server / Connection Application Activity BusinessProcess Manager BusinessProcess Database Manager Business Object Business Object Business Object Datenbank Abb. 1 Architektur archid Auf der linken Seite sind die Elemente, die verwaltenden Charakter haben, dargestellt. Diese Objekte existieren im System nur einmal und haben die Aufgabe, die anderen Objekte zu verwalten. Auf der rechten Seite sind die Objekte dargestellt, aus denen die eigentliche Anwendung besteht. Bei diesen Objekten stellt die Architektur die Basisklassen oder Interfaces bereit. Die fachlichen Inhalte müssen in Ableitungen oder konkreten Ausprägungen implementiert werden. Der untere Teil der Abbildung enthält die Elemente, die auf einem Applicationserver eingesetzt werden, der obere Teil die Elemente des Clients. Im "Standalone-Modus" liegen alle Objekte auf dem selben Computer und werden auch von der gleichen Virtuellen Maschine (JVM7) ausgeführt. Verwaltungsobjekte Im folgenden sind nur die für die Unterstützung der Oberflächenschicht notwendigen Elemente näher beschrieben. ● GUIFactory: Die GUIFactory dient dazu, zu jeder Activity die dazugehörige View zu finden. Dazu hält die GUIFactory eine Liste aller Activities und der dazugehörigen Views. Sie zeigt die Views allerdings nicht selber an, sondern überläßt diese Aufgabe dem GUIFactoryServer, der auf der Client-Maschine läuft. ● GUIFactoryServer Der GUIFactoryServer existiert in der Präsentationsschicht und wird von der GUIFactory ange- 7 Java virtual machine © GDV 2001 177 Anhang Das Objektorientierte Technische Referenzmodell sprochen, wenn eine Activity eine View erzeugen möchte. In diesem Fall erhält der GUIFactoryServer den Namen der View, die er dann erzeugt und darstellt. Außerdem verwaltet der GUIFactoryServer die Liste aller aktiven Views und die Beziehung zu deren "Vater"-Views. Anwendungselemente ● 8 Activity / ActivityProvider Eine Activity enthält fachliche Logik und stellt eine wiederverwendbare Komponente mit exakt umrissenen Aufgabenbereich dar. Die Activity erzeugt über die GUIFactory ihre dazugehörige View und wird ab dann von dieser aus aufgerufen. Sie stellt dazu ein einheitliches generisches Interface zur Verfügung, daß für alle Activities gilt, damit die spezifischen Activities kein eigenes Interface definieren müssen, und die Netzwerkanbindung transparent ist. Eine Activity muß keine View haben wenn sie zum Beispiel nur eine Berechnung durchführt. Eine Activity ist so implementiert, daß sie die Klasse, von der sie aufgerufen wird, nicht kennen muß. So ist gewährleistet, daß sie in einem anderen Zusammenhang vollständig einsetzbar ist. Allerdings ist es notwendig, daß eine Activity von ihrem "Kontext" (also in diesem Fall dem BusinessProcess) Daten nachfragen kann. Daher gibt es zu jeder Activity ein ActivityProviderInterface, das die Methoden enthält, die die Activity in ihrem Kontext aufrufen möchte. Dieses Interface muß von der aufrufenden Klasse implementiert werden. Die Activity greift also nur über das ActivityProvider-Interface auf den Kontext zu. Das Konzept des ActivityProviders ist an dem Observer-Design-Pattern angelehnt und entspricht grundsätzlich der Listener-Logik seit JDK 1.1: Das Listener-Interface definiert eine Schnittstelle für alle Klassen, die sich für Informationen aus dem Source-Objekt interessieren. Alle Klassen, die diese Informationen bekommen wollen, müssen das Listener-Interface implementieren und sich beim Source-Objekt anmelden. Im Falle des Activity-Providers ist die Activity das Source-Objekt. Es definiert das Interface für alle, die diese Activity verwenden wollen. Dies können Business-Prozesse oder übergeordnete Activities sein. Diese müssen das Interface für die Activity implementieren. Der Unterschied zu Listenern liegt darin, daß jeder Aufrufer einer Activity automatisch als ‚Listener‘ angemeldet wird, und daß es pro Activity nur einen ‚Listener‘ in Form des Providers gibt.8 Ein weiterer Unterschied ist der, daß die Methoden des ActivityProviders Rückgabewerte haben können, was bei Methoden eines Listeners nicht der Fall ist. Das jeweilige Provider-Interface ist spezifisch für diese Activity. Die Activity greift über das Interface auf Daten der übergeordneten Komponente zu und kann sich so selbständig mit den erforderlichen Daten versorgen. Dies hat Vorteile, wenn Activity-Daten erneuert werden müssen, da sich Daten geändert haben. Den Zeitpunkt für den Refresh kennt nur die Activty, nicht die übergeordnete Komponente. Durch den Provider kann sich die Activity zu jedem Zeitpunkt die benötigten Daten holen ohne die übergeordnete Komponente zu benachrichtigen. Dadurch, daß die Activity nicht auf die übergeordnete Komponente (BusinessProcess oder Activity) direkt zugreift, sondern nur auf den jeweiligen Provider ist die Unabhängigkeit der Activity von der Auch im Event-Konzept des JDK gibt es das Konzept des unicast-Events, das nur an einen Listener geht. 178 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang übergeordneten Komponente gewährleistet. Activities können als wiederverwendbare Einheiten auch Bestandteil weiterer Activities sein. In diesem Kontext sind sie Subactivities ihrer übergeordneten Activity. Die aufrufende Activity muß lediglich das ActivityProvider-Interface der aufgerufenen Activity implementieren. Eine Activity kann aus mehreren Subactivities bestehen, die die fachliche Funktionalität beinhalten, sie selbst dient nur als Gruppierungsmechanismus. Damit wird die Implementierung neuer fachlicher Funktionalitäten durch Zusammenstellen von verschiedenen Activities nach dem Baukastenprinzip möglich. Da mit den Subactivities auch Views verbunden sein können, muß auch die Einbindung der Subviews in die übergeordnete View ermöglicht werden. ● View Eine View ist eine Klasse, die einen Dialog oder einen Teil eines Dialoges darstellt und bearbeitet. Die View enthält nur so viel fachliche Funktionen, wie aus Performacegründen notwendig ist. Für alle anderen Funktionen ruft die View Methoden der Activity auf und benutzt deren Rückgabewerte. Die Activity ist der „fachlliche Controller“ der View. Die Event-Verarbeitung erfolgt innerhalb der View, d.h. der „Oberfächencontroller“ ist Bestandteil der View, und nicht extrahiert (vor allem nicht auf den Server), um die Netzzugriffe einzuschränken. Eine View kann weitere Views verwenden, die sie allerdings nicht selber erzeugt, sondern sich von der Activity erzeugen läßt. ● Business Object Business Objects sind, wie im allgemeinen Sprachgebrauch üblich, die Abbildung der fachlichen Datenstrukturen. Das BO enthält genau die Datenfelder (Attribute), die zu einem fachlichen Objekt (Angebot, Person, Adresse etc.) gehören. Zusätzlich werden im BO auch Funktionen (Methoden) definiert, die auf diesen diesen Daten operieren (Plausibilitäten, Berechnungen, Initialisierungen usw.). Damit sind Funktionalitäten, die für das BO gelten, unabhängig von der jeweiligen Programmsituation. In archid werden Business Objects zur Übertragung der Daten von der Activity zur View benutzt. Im C/S – Modus geschieht diese Übertragungen über die CORBA – Schnittstelle. Wird ein BO übertragen, so werden automatisch auch alle Objekte übertragen, auf die von dem betreffenden BO referenziert werden. Um die Datenübertragungsmenge zu minimieren, werden alle nicht benötigten Objekt-Referenzen abgeschnitten und nur die Rohdaten, die sogenannten „Kerndaten“ übertragen. Jedes BO muß dafür die Methoden setKerndaten/getKerndaten implementieren. 7.3.1.5. Implementierungsumgebung Das archid-Framework ist in Java implementiert, um Portabilität und Web-Unterstützung zu gewährleisten. Java hat sich als gut strukturierte und robuste Programmiersprache erwiesen, die in zunehmendem Maß durch entsprechende Klassenbibliotheken umfangreich ergänzt wird. © GDV 2001 179 Anhang Das Objektorientierte Technische Referenzmodell Für die Kommunikation zwischen View und Activity sind wahlweise CORBA (Visigenic Visibroker als ORB) und RMI einsetzbar. Beide Varianten erwiesen sich für diesen Anwendungszweck als robust und performant genug. Das Framework hat gezeigt, daß es sowohl im Standalone, als auch im Client-/Server-Betrieb performant läuft. Der reine Web-Betrieb ist aber für den Endanwender noch unbefriedigend, da die neuesten Java-VM’s noch nicht standardmäßig in den Browsern enthalten sind, und damit umfangreiche Klassenbibliotheken oder ganze VM’s (in Form eines Plu-gIn) heruntergeladen werden müssen. Dies erfordert erhöhte Start-Wartezeiten für den ersten Betrieb. Denkbar ist hier, statt der Oberfläche (View) in Form eines Applet HTML-Seiten einzubinden. Im Intranet-Bereich ist die WEB-Variante aber dank möglicher Vorinstallationen der VM gut einzusetzen. Hierbei sollte aber beachtet werden, daß diese Umgebung nicht für die Versorgung von sehr vielen Clients (größer 20) ausgelegt ist. Für diese Versorgung sollten mehrere Applikationsserver parallel zur Verfügung gestellt werden. Ein Load-Balancing kann dann über die Middleware efolgen. 7.3.2. Beispiel Präsentation ORACLE: Oracle Business Components for Java Das Beispiel von ORACLE für heutiges GUI-Design ist die Realisierung im Rahmen des Business Components for Java (BC4J) Frameworks. BC4J ist ein Komponenten-Framwork für die Programmiersprache Java. Objekte wie beispielsweise Geschäftsregeln werden auf einer Meta-Ebene durch XML beschrieben. Die Anpassung und Konfiguration dieser Objekte läßt sich auf der XML-Ebene ohne Eingriff in den Java-Code vornehmen. 7.3.2.1. Konzepte Entity Object Entity Objects bilden eine Abstraktion der Information vor technischen Diensten wie Datenzugriff (JDBC), Caching etc. und erleichtern so die Kommunikation mit einem DatenbankManagementsystem für den Anwendungsentwickler. Über den Business Component Typ Association lassen sich verschiedene Entity Objects in Beziehung setzen und traversieren. An einzelne Attribute eines Entity Objects können vordefinierte Validierungsregeln (Business Component Typ Validation Rules) angehängt werden. Komplexere Validierungsregeln (z.B. korrektes Format einer Telefonnummer) lassen sich mittels Domains (separater Business Component Typ) umsetzen. View Object View Objects stellen verschiedene Sichten (Filterungs-, Sortierungsmechanismen) auf die Informationen bereit, die sich je nach Einsatz in Application Moduln zusammenstellen lassen. View Links Objekte spezifizieren Beziehungen zwischen verschiedenen View Objects. Application Module 180 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang Ein Application Module ist ein logischer Container für Instanzen von View Objekten und View Links. Geschäftslogik die sich aus Entity und View Objekten zusammensetzt lassen sich in Application Moduln zusammenfassen, die wiederum als EJB- oder CORBA-Komponente in die Laufzeitumgebung (z.B.: Application Server oder Data Server) verteilt werden kann. View Objekt Applikationsmodul Auftragserfassung Kunde View Link Auftrag Entity Objekt Kunde Assoziation Auftrag Abbildung 81: Beispiel Auftragserfassung Benutzeroberfläche Ein gutes Design sollte jede Art von Repräsentation und GUI ermöglichen ausgehend von den Nutzeranforderungen. So soll die grafische oder akustische Repräsentation unabhängig vom Endgerät (PC, Laptop, Mobiletelefon, Palmtop, Telefon) möglich sein. Die Darstellung von Informationen für den Anwender am Client basiert auf der Repräsentation durch HTML, Java oder auch XML. Vor allem darstellungsunabhängig in XML repräsentierte Information läßt sich durch geeignete XSL Transformationen mittels entsprechender Stylesheets in beliebige Repräsentation bringen (HTML, Sprache, WML, Word etc.). Das Oracle XML Developer Kit (XDK) stellt Basisfunktionalitäten für die XML-Verarbeitung bereit (technet.oracle.com/tech/xml/). Technologien die heute ihren Einsatz finden sind beispielsweise im Bereich Java die Servlets oder auch Java Server Pages (JSPs) die Informationen in einen HTML-Strom umwandeln und an den Client weiterleiten. Auch lassen sich die GUI-Designelemente die Java mit den Swing-Klassen bietet nutzen. © GDV 2001 181 Anhang Das Objektorientierte Technische Referenzmodell Abbildung 82: Flexible Benutzeroberflächen 7.3.2.2. Beispiel Kopplung ORACLE: Oracle Integration Server Kopplung bzw. Integration ist ein komplexes Gebiet welches aus verschiedenen Blickwinkeln zu betrachten ist. Ein wichtiger Aspekt ist die Motivation die hinter dem Wunsch auf Integration von Systemen steckt. Häufig geht es darum, ein existierendes System, daß eine bestimmte Funktionalität bietet in ein neues Gesamtsystem zu integrieren. Hierbei wäre die Neuentwicklung zu kostenintensiv oder zu zeitaufwendig. Was letzten Endes angestrebt wird ist die Integration der Teilprozesse des bestehenden Systems in den Gesamtprozess. Von IT werden allerdings häufig nur die Systemaspekte betrachtet. Letztendlich ist ein evolutionärer Ansatz welcher sauber zwischen den Chancen und Risiken abwägt der einzige der in der Realität tragfähig und akzeptabel ist. Ein System das heute eine bestimmte Funktionalität als Dienst erbringt soll sich zukünftig bei Bedarf durch ein neues Teilsystem ersetzen lassen. Häufig geht es darum die internen und externen Prozesse des Unternehmens vollständig zu automatisieren und damit zu beschleunigen, neue Prozesse für neue Vertriebskanäle zu etablieren oder interne Prozesse nach Außen abzubilden. Dabei finden offene Internet-Technologien ihre Anwendung. Außerdem läßt sich unterscheiden zwischen taktischer Integration die ein spezifisches Teilproblem löst und strategischer Integration zur Neuausrichtung der IT auf flexible Geschäftsprozesse. 182 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang Abbildung 83: Hub-and-Spoke Architektur Bei der Integration lassen sich grundsätzlich drei Ebenen unterscheiden: Daten Komponenten (Anwendungs)(Geschäfts)-prozessintegration Jede dieser Ebenen nutzt andere Sichtweisen und Technologien zur Umsetzung und findet in anderen Szenarien sein Einsatzgebiet. Prozess Integration Messaging, Business Events Komponenten Integration RPC, CORBA, COM, Java RMI Daten Integration Gateways, Replication, Database Events Abbildung 84: Integrationsmechanismen Topologien für die Integration sind ein Hub-and-Spoke Ansatz oder der Bus-Ansatz. © GDV 2001 183 Anhang Das Objektorientierte Technische Referenzmodell Integrationsstack Für eine flexible Integration ist eine Anzahl von Funktionalitäten notwendig die sich durch einen Stack darstellen lassen. Integration Server Business Process Intelligence Geschäftsprozessmodellierung Prozess Management Transformations Technologie Business Event Management Kommunikation/Adapter Abbildung 85: Integrationsstack Beim Kommunikationsmodell läßt sich zwischen synchronen (enge Kopplung) und asynchronen (lose Kopplung) Mechanismen unterscheiden. Synchron wäre etwa ein Aufruf über RPC. Asynchron wäre der Informationsaustausch auf Basis von Nachrichten (Messages). Interfacemechanismen Nach dem Pull-Modell lassen sich hier Dienste (Methoden, Argumente) beschreiben die ein Objekt auf Anfrage leistet. Dieses Modell findet sich bei OMG CORBA bei den IDL-Interfacebeschreibung oder beim Komponentenmodell von J2EE Enterprise JavaBeans durch das Remote Interface. Beim Push-Modell ist das System aktiv in der Lage Informationen sobald sie entstehen, an andere Systeme die sich für diese Information interessieren aufgrund von entsprechenden Abonnements (inhalts- oder themenbasiert) weiterzugeben. Transformation Für die Umwandlung von Informationen zwischen verschiedenen Systemen ist häufig eine Transformation notwendig. Objekte werden verschieden modelliert. Daten verschieden repräsentiert und formatiert. Eine mögliche Technologie ist die semantische Transformation mittels XSLT (Extensible Stylesheet Language Transformations, siehe auch: www.w3.org/TR/xslt) die verschiedene XML-Dokumente ineinander überführen kann. 184 © GDV 2001 Das Objektorientierte Technische Referenzmodell Anhang Adapter Zur Integration werden Adapter eingesetzt die auf bestimmte Anwendungen/Protokolle zugeschnitten sind und nur noch konfiguriert werden müssen. Der Einsatz ist vor allem dann sinnvoll, wenn eine Entwicklung zeitkritisch ist. Business Event Modellierung Ein Business Event (Geschäftsereignis) ist grundsätzlich eine Information (ein Geschäftsdokument wie z.B. ein „Vertrag“) mit einem Ereignis (z.B. Vertrag „anbieten“). Die Modellierung auf Basis der Business Events bietet den Vorteil, das sie domänenübergreifend und auch technologieunabhängig tragfähig ist. Auch Prozesse mit Organisationseinheiten in deren Systeme kein Eingriff möglich ist, lassen sich dadurch modellieren. Auch die OMG hat die Bedeutung von Event-basierten Architekturen erkannt und im März 2000 ein entsprechendes RFP (Request for Proposal) veröffentlicht [OMG2000b]. Wesentlich dabei ist, daß die Verwaltung der Business Events von der Infrastruktur als Dienst bereitgestellt wird, um die hohen nichtfunktionale Anforderungen eines geschäftskritischen Systems zu erfüllen. Dies wird bei Oracle durch die Implementierung eines Message Queuing Systems (Oracle Advanced Queuing) innerhalb des Datenbank-Managementsystem Oracle8i gewährleistet (Business Event Management). Dadurch lassen sich die bewährten Eigenschaften der Datenbank wie Transaktionsschutz, Backup, Recovery, Sicherheit, Hochverfügbarkeit und Skalierbarkeit auf das Management von Business Events übertragen. Dies spielt bei zukünftigen automatisierten Geschäftsprozessen zwischen einem Versicherungsunternehmen und seinen Partnern, wobei Millionen von geschäftsrelevanten Ereignissen verwaltet, dokumentiert und analysiert werden müssen, eine wesentliche Rolle für eine stabile und kosteneffiziente Umsetzung. Einsatzgebiet kann zum einen die interne Integration von Systemen sein. Auch die externe Integration wie etwa bei der VU - Endkunden Beziehung, oder zwischen Unternehmen (z.B. für VU Rückversicherer, VU - Banken Beziehungen) im Bereich Business-to-Business (B2B) läßt sich dadurch realisieren. Information Interface Grundsätzlich erfolgt die Integration durch den Austausch von Informationen (Information Sharing). Dies läßt sich heute auf Basis von semantisch abgestimmten in XML-kodierten Dokumenten (z.B. Vorgangsakte, Vertrag) sowie standardisierten domainspezifischen regionalen Prozessen (beispielsweise Prozesse für Versicherungen in Deutschland) durchführen. Beispiele für die Spezifikation von solchen Dokumenten (Business Object Documents, BOD) sind die Definitionen der Open Applications Group (www.openapplications.org). Beispiele für die Definition von Prozessen wären etwa die Partner Interface Processes (PIP) von RosettaNet (www.rosettanet.org). Ein wichtiger Teilaspekt dabei sind die nichtfunktionalen Eigenschaften eines Systems (Performance, Skalierbarkeit, Verfügbarkeit, Ausfallsicherheit). Diese beeinflussen die Lösungsrealisierung entscheidend. © GDV 2001 185 Anhang Das Objektorientierte Technische Referenzmodell Um etwa performant Informationen über ein größeres Informationsobjekt bereitzustellen bietet sich das Design eines Information Interface an. An dieser Schnittstelle wird etwa ein Produktobjekt komplett als ein in XML repräsentiertes Dokument (z.B. ein Vertrag) übergeben, um zu vermeiden, das die Information über Dutzende von Aufrufen bestehend aus einer Vielzahl von Einzelaufrufen über eine unübersichtlich breite Schnittstelle zusammengestellt werden muß. Wesentlich für den Erfolg eines solchen Integrationsansatzes ist die Einigung auf die Struktur dieser Dokumente innerhalb einer Versicherungsorganisation (zwischen Abteilungen) aber auch zwischen VUs und weiteren Partnern. Operations Mgmt Analyse Tools Anwendungen Prozess Management Kommunikation (wie ?) In nachfolgender Abbildung sind zusammenfassend die wesentlichen funktionalen Komponenten einer tragfähigen Integrationsarchitektur dargestellt. Business Event Management (Was wurde kommuniziert ?) Partner Informationen (Präferenzen etc.) (Directory Service) Abbildung 86: Architekturelemente für die Integration 186 © GDV 2001 Das Objektorientierte Technische Referenzmodell Literatur 8. Literatur [oFRM01] „Das objektorientierte fachliche Referenzmodell“, Version 2.0, März 2001, GDV [OMG98a] Object Management Group: „CORBAservices: Common Object Services Specification“, Updated Edition, Dezember 1998 [OMG95] Object Management Group : „Common Facilities Architecture“, Revision 4.0, November 1995 [GDV99] „Die Anwendungsarchitektur der Versicherungswirtschaft - Grundlagen und Prinzipien“, GDV, 1999 [Meta98] „CORBA vs. DCOM“, Meta Group Consulting, March 20, 1998 [Orfali98] R.Orfali u.a. „Client/Server Programming with Java and CORBA“, 2 nd Edition, John Wiley & Son 1998 [OMG98c] Object Management Group : „Interoperability Specification“, OMG Business Domain Task Force, BODTF-RFP 1 Submission, Feb. 5, 1998 [BOCA98] Object Management Group : „Business Object Component Architecture (BOCA)“, Revision 1.1, OMG Business Domain Task Force, BODTF-RFP 1 Submission, OMG document bom/98-01-07, 1998 [OMG97] Object Management Group : OMG document orbos/97-11-24, 1997 [OMG99] Object Management Group: CORBA Components, Joint Revised Submission 1999 [iX2000] „Episode 3“ – CORBA 3, Teil 1, Komponenten, i’X 04/2000, Heise Verlag 2000 [Stal99] Michael Stal: „Des Knaben Wunderhorn“, Objekt Spektrum 01/1999 [Szyp98] Clemens Szyperski : “Component Software : Beyond Object Oriented Programming”, AddisonWesley 1998 [Eeles98] Peter Eeles, Oliver Sims : «Building Business Objects », John Wiley & Sons 1998 [SUN00] Enterprise JavaBeans Specification, Version 2.0, www.javasoft.com/products/ejb/docs.html [IBM] „IBM SanFrancisco Project Technical Summary“, www.ibm.com/java/Sanfrancisco/technical.html, IBM [WfMC94] The Workflow Reference Model, Version 1.1., 1994, WfMC-TC-1003 [WfMC96a] WfMC: Workflow Client Application Programming Interface (WAPI) Specification, Version 1.2, 1996, WfMC-TC-1009 [WfMC96b] WfMC: Workflow Interoperability - Abstract Specification, Version 1.0, 1996, WfMC-TC-1012 [WfMCc] WfMC: Audit Data Specification, WfMC-TC-1015 [Sch+98] W. Schulze u.a.: Standardising on Workflow-Management - The OMG Workflow Management Facility, ACM SIGGROUP Bulletin, Vol. 19 (3), April 1998 [Sch98] W. Schulze: Relationship of Business Objects and the Workflow Facility, BODTF-Präsentation beim OMG Technical Meeting, Tampa, Jan. 1997 © GDV 2001 187 Literatur Das Objektorientierte Technische Referenzmodell [OMG98b] Object Management Group: OMG BODTF RFP #2 Submission Workflow Management Facility, OMG Document bom/98-06-07 [OOPS97] OOPSLA ´97 Workshop on Business Object Design and Implementation III, OOPSMessanger, ACM/SIGPLAN 1998 ( www.jeffsutherland.org/oopsla97/oo97final.html ) [OMG2000] Object Management Group: Workflow Resource Assignment Interfaces (RAI), Request For Proposal, OMG Document bom/2000-01-03 [Bal96] Balzert, Helmut: Lehrbuch der Software-Technik: Software-Entwicklung, Spektrum Akad. Verlag, 1996 [Fow+97] Fowler, Martin with Kendall, Scott: UML Distilled, Addison Wesley, 1997 [OMG98] Object Management Group: Suggested Revisions to Activity Models for Business Process Modelling, OMG Document ad/98-06-13 [Bal96] Balzert, Helmut: Lehrbuch der Software-Technik: Software-Entwicklung, Spektrum Akad. Verlag, 1996 [Fow+97] Fowler, Martin with Kendall, Scott: UML Distilled, Addison Wesley, 1997 [Har87] Harel, D.: Statecharts: A Visual Formalism for Complex Systems, in: Science of Computer Programming, Elsevier Science Publishers, 1987 [Fowl97] Martin Fowler, „Analysis Patterns“, Addison-Wesley, Reading Massachusetts 1997 [PLoP2000] N.Harrison, B.Footh, H.Rohnert (Eds) : „Pattern Language of Program Design 4“ (PloP 4), Addison-Wesley 2000 [Mart2000] Didier Martin usw.: “Professional XML”, Wrox Press, Birmingham 2000 [PLoP95] J.Coplien, Douglas C.Schmidt (Eds): „Pattern Languages of Program Design 1“ (PloP 1), AddisionWesley 1995 [Busch98] F. Buschmann u.a : „Pattern-orientierte Software-Architektur“, 1998 [Wann99] „Wiederverwendung von Softwarekomponenten durch entkoppelte Schnittstellen“, G. Wanner & K.D. Jäger in OBJEKTspektrum 1/99 [Orfali97] Orfali, Harley, Edwards: „Abenteuer Client/Server“ Addison-Wesley 1997 [Orfal98b] Orfali, Harley, Edwards: „Instant CORBA“, Addison-Wesley, Bonn 1998 [Mow97] T. Mowbray, W. Ruh: „Inside CORBA“, Addison-Wesley 1997 [Orfali96] Orfali, Harkey, Edwards: „The Essential Distributed Object Survival Guide“, John Wiley & Sons 1996 [Gamma96] E.Gamma, Helm, Vlissides, Johnson „Entwurfsmuster“, Addison-Wesley, 1996 [OMG2000b] Object Management Group: UMLTM Profile for Event-based Architectures in Enterprise Application Integration (EAI), OMG Document: ad/2000-03-07, 2000 188 © GDV 2001