Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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