Visual Age und Rational Rose Daniel Faensen Übersicht Integration Rational Rose und VisualAge (Forward / Reverse Engineering) Team-Unterstützung in VisualAge EJB-Entwicklung mit VisualAge und der WebSphere Testumgebung 2 Integration Rose/VAJ Problem: Konsistenz von Modell und Code Abgrenzung: Nur statisches Strukturmodell (Klassendiagramm) Lösung I: “Low Level” CASE-Tool Lösung II: Forward und Reverse Engineering Drei Alternativen für Rose und VAJ: Klassische Variante Rose Link XMI Toolkit Frage: Wie oft synchronisieren? - Eher selten! 3 Integration Rose/VAJ I Klassische Variante Voraussetzungen (auch für Rose Link): Default language muss Java sein Referenzierte Klassen müssen im Rose-Classpath stehen 4 Integration Rose/VAJ I Klassische Variante Forward Engineering = Code Generation Tools -> Java -> Generate Java oder Kontextmenü -> Java -> Gerenate Java Viel Freude beim Suchen des generierten Codes! VAJ starten Java-Dateien importieren File -> Import -> Directory Code bearbeiten 5 Integration Rose/VAJ I Klassische Variante Reverse Engineering VAJ starten Java-Dateien exportieren File -> Export -> Directory Rose starten, Modell laden Tools -> Java -> Reverse Engineer Java oder Kontextmenü Klassen auswählen und Import starten Modell bearbeiten 6 Integration Rose/VAJ II Rose Link Rationals Tool zur Integration von Rose und VAJ Frei zum Download (bzw. ~faensen/rose/RoseVAJava.exe) Rose und VAJ müssen aktiv sein Als JVM muss IBM gewählt sein In VAJ RoseLink starten File -> QuickStart -> Basic -> Rose Link Plugin In Rose Code generieren Projekt wählen Code wird generiert und automatisch in VAJ importiert 7 Integration Rose/VAJ II Rose Link In Rose Reverse Engineering Projekt wählen Rose initiiert Export aus VAJ Rose bietet exportierte Klassen zum Import an Achtung! Speicherplatzprobleme 8 Integration Rose/VAJ Problembehebung Probleme beim Import: Vor dem Export aus VAJ alle Java-Dateien löschen (Backup!) Modell nach dem Reverse Engineering aufräumen Assoziationen in Attribute umwandeln (~faensen/rose/CleanAssociationsAfterImport.ebs + ~faensen/rose/roseImportConversions.txt) Für überfüllte Klassen: “Show All {Attributes,Operations}” abstellen, “Select Compartment Items” 9 Integration Rose/VAJ III XMI Toolkit XMI Toolkit IBMs Tool zur Integration von Rose und VAJ Mitgeliefert mit VAJ EE Liest Rose .mdl-Datei -> Rose wird nicht benötigt Austausch über XMI (XML Interchange (?)) Problem: Arbeitsspeicher! www.inf.fu-berlin.de/inst/ag-db/software/VAJ_PDF/xmi.pdf Forward Engineering Rose-Modell UML-XMI Java-XMI Java Reverse Engineering 10 Integration Rose/VAJ EJB Spezielle Enterprise Java Beans Unterstützung XMI Toolkit + XMI Bridge (~faensen/lehre/xmibridge.dat) Modelliere in Rose Markiere Primärschlüsselattribute mit dem Stereotyp <<OID>> In VAJ: EJB -> Add -> Import from Rose or XMI 11 VAJ Team-Unterstützung VAJ Enterprise Edition hat Team-Unterstützung Benutzer, Rollen, Rechte, Team-Server, Shared Repository VAJ Clients goliath emsvr lehre.dat Team Repository 12 VAJ Team-Unterstützung Client-Konfiguration: Eintrag in Datei C:\Programme\Ibm\Visual Age for Java\ ide\program\ide.ini ... [JavaDevelopment] ServerAddress=goliath DefaultName=lehre.dat OpenReadOnly=false ... 13 VAJ Team-Unterstützung Repository Benutzerverwaltung Speicherung der Objekte (Projekte, Packages, Klassen) Versionsverwaltung (Source Control Management, SCM) Workspace Jeweils eine Version/Edition aus dem Repository Workspace Owner Auf der lokalen Platte des Clients Problem: Synchronisation 14 VAJ Team-Unterstützung Object Role Rights Project Owner Version, Release Package Owner Group Member Release Version Type Owner Developer Release Version Jeder darf jede Klasse ändern/bearbeiten! 15 VAJ Team-Unterstützung Zustände von Projekten, Packages, Typen create undefined may change version others may load versioned release[ owner ] released change[ group member ] change[ not group member ] version[ developer ] open edition may change scratch edition 16 VAJ Team-Unterstützung Zustände eines Typs (Klasse, Interface) Open Edition: „Work in progress“ Im Repository können viele Open Editions vorliegen Versioned Edition: Kann nicht geändert werden. Zweck: Checkpoint, Freigabe, neue Baseline Released: Freigegeben für Team-Mitglieder Scratch Edition: Privat, zum Experimentieren 17 VAJ Team-Unterstützung Baselines Baseline Editionen im Workspace synchronisieren Baseline update: Role Class owner Baseline Package Package owner Project Project owner Project Action add class release class delete class release package delete package ... „ ... add package release resources 18 VAJ Team-Unterstützung Baselines Synchronisieren Projekt bzw. Package in den Workspace laden oder Replace with -> Released contents Lädt die zuletzt freigegebenen Klassen-Editionen dieser Edition Erfolglos, wenn es eine neue Version gibt! Hilfreich: Management Query 19 VAJ Team-Unterstützung Offline arbeiten Repositories sind (VAJ-)versionsunabhängig Vorgehen: Versioniere Packages Exportiere in lokales Repository (home.dat) Kopiere home.dat auf Offline-Rechner Starte VAJ Importiere aus Repository home.dat Lade Packages in Workspace („Add -> Package“ oder „Replace with -> Another Edition“) 20 VAJ Team-Unterstützung Anmerkungen Auch Ressourcen versionierbar (ab V 3.5) Kein Super-User Workspace Owner != NT User Es gibt kein check out (kein locking) Check in nicht nötig Jeder kann auf alles zugreifen Owner nimmt Änderungen an (release) Team-Kommunikation wird einem nicht abgenommen! 21 VAJ Team-Unterstützung Weitere Infos unter http://www.inf.fu-berlin.de/ ~ag-db/software/VAJ_PDF/team.pdf 22 EJB-Entwicklung VAJ EE hat EJB-Unterstützung Websphere Test Environment Weblogic VAJ Integration Kit Vorbereitungen Add Features (File -> Quickstart) EJB Tool Unterstützt: Session Bean CMP Bean BMP Bean 23 EJB-Entwicklung Schritte Add EJB Group Add EJBs Add home and remote (business) methods Add custom finders Add CMP fields Set deployment descriptor properties Generate EJB classes Generate access beans Test Export and deploy 24 EJB-Entwicklung Beispiele in EJB Samples: HelloWorld und Increment Projekt und Package erzeugen Empfehlung: getrennte Projekte für Client und EJB (-> jar-Dateien) EJB Group: Logische Gruppierung, z.B. f. Export in JAR-Datei Erzeugen einer neuen EJB Group EJB -> Add -> EJB Group Projekt wählen EJB Group benennen 25 EJB-Entwicklung Session Bean Session Bean 26 EJB-Entwicklung Session Bean Session Bean Felder hinzufügen Selektiere Bean-Klasse, Add -> Field (incl. getX() und set(X)) Methoden hinzufügen Selektiere Bean-Klasse, Add -> Method Implementiere Methode Add -> Methods-Add To -> EJB RemoteInterface Achtung: Erneutes Deployment erforderlich 27 EJB-Entwicklung Deployment Deployment descriptor wizard - Bean level: Select bean, Properties Deployment Methods Select method EJB Method attributes -> Add control descriptor 28 EJB-Entwicklung Deployment EJB Jar-Datei Class-Dateien, Deployment Descriptor, Manifest Generate Deployed Code erzeugt: Container-implementierte EJBHome- und EJBObjectKlassen (+ Persistor und Finder für CMP-Beans) Java ORB, Stubs und Skeletons für RMI Helper und Holder für Home und Remote Interfaces 29 EJB-Entwicklung Testing Add to -> Server configuration Properties Create database tables 30 EJB-Entwicklung Testing Start EJB Server: Tools -> Websphere Test Environment Start Persistent Name Server Start EJB Server Quelltextänderung, Debugging ohne Neustart 31 EJB-Entwicklung Testing Test Client Breakpoints, Debugging ... Lookup -> Initialer Naming Context -> laden desHome Interfaces Selektiere Create Run 32 EJB-Entwicklung Testing/Deployment Configuration für eigene Applikationen Websphere Test Environment muss in Project Classpath Deployment für andere Applikationsserver Export -> EJB JAR 33 EJB-Entwicklung CMP Beans Container Managed Persistence Entity Beans Wie Session Bean aber anderer Bean Type Add CMP Fields 34 EJB-Entwicklung CMP Beans Schema und Map: Abbildung zwischen CMPFeldern und Tabellenspalten Top Down: CMP-EJB existiert, generiere DB Schema Bottom Up: EJB für existierende DB (nicht unterstützt) Meet in the Middle: Importiere Schema Definiere Map 35 EJB-Entwicklung CMP Beans Top Down Add -> Schema and Map Schema browser und Map browser Generate deployed code Add to -> Server configuration EJB Server Properties: Configuriere DB-Verbindung EJB Server: Create Database Tables Eine Tabelle pro CMP Bean SQL> DESC SCOTT.Account Name Null? ----------------------------------------- -------ACCNUMBER NOT NULL BALANCE OWNER Type ---------------------------NUMBER(10) FLOAT(126) VARCHAR2(30) 36 EJB-Entwicklung CMP Beans Finder-Methoden Beim Home-Interface Add -> Method public java.util.Enumeration findNegativeAccounts() Add Exceptions Ignoriere Probleme Query String im AccountFinderHelper Kopiere Vorlage aus EJSJDBCPersisterAccount.findByKeySqlString nach AccountFinderHelper.findNegativeAccountsSqlString Generate Deployed Code löst Probleme 37 EJB-Entwicklung CMP Beans Finder-Methoden - Richtlinien Bezeichner für Query String: methodNameQueryString, z.B. findNegativeAccountsQueryString Test Starte EJB Server Selektiere Account Run Test Client Selektiere create(int) Setze Parameter auf 1001 Run SQL> SELECT * from SCOTT.Account; Spiele mit Test Client und Oracle Test Client: create() setOwner() ... Oracle: insert delete update (commit nicht vergessen) ACCNUMBER BALANCE OWNER ---------- ---------- -----------------------------1001 0 38 EJB-Entwicklung BMP Beans J. Picon, P. Genchi, M. Sahu, M. Weiss, A. Dessureault: Enterprise JavaBeans Development Using VisualAge for Java. IBM Redbook SG245429-00, June 1999 ~faensen/lehre/sg245429_EJB_VAJ.pdf Beispiel mit XML-Datei als Persistenzmedium 39 EJB-Entwicklung Access Beans Access Beans Home-Methoden, die einzelne Instanz liefern -> Constructor Erst instanziieren, dann aufrufen Copy helper statt wiederholtes get/set String-Konverter (für JSP) 40 EJB-Entwicklung Anmerkungen Code nur im EJB-Pane bearbeiten Package EJBGroupEJBReserved enthält Metadaten 41 EJB-Entwicklung Deployment Deployment descriptor wizard: Select bean, Properties Session Bean Methods Select method EJB Method attributes -> Add control descriptor 42 Integration Rose/VAJ EJB Spezielle Enterprise Java Beans Unterstützung XMI Toolkit + XMI Bridge (~faensen/lehre/xmibridge.dat) Modelliere in Rose Markiere Primärschlüsselattribute mit dem Stereotyp <<OID>> In VAJ: EJB -> Add -> Import from Rose or XMI 43 Quellenhinweise Lokale Dokumentation (PDF): http://www.inf.fu-berlin.de/~ag-db/software/VAJ_PDF z.B.: Team-Entwicklung, EJB-Entwicklung, XMI-Toolkit Visual Age Developer Domain http://www7.software.ibm.com/vad.nsf Doku, Downloads, Redbooks, Technical Journal ... Rose Tools ~faensen/rose/ Rose Link: RoseVAJava.exe Putzhilfe für das Après Reverse Engineering: CleanAssociationsAfterImport.ebs + roseImportConversions.txt XMI Bridge ~faensen/lehre/xmibridge.dat J. Picon, P. Genchi, M. Sahu, M. Weiss, A. Dessureault: Enterprise JavaBeans Development Using VisualAge for Java. IBM Redbook SG24-5429-00, June 1999 ~faensen/lehre/sg245429_EJB_VAJ.pdf 44