Download Hermes Alerting Service

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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