Mein Vortrag von der DOAG Konferenz 2011:
Karten in Java Anwendungen einbinden - ADF und Oracle Maps
Karten in Java Anwendungen einbinden - ADF und Oracle Maps
Herausforderung:
"Fusion Bottle & Co" will expandieren... wo sollen die nächsten Getränkemärkte gebaut werden?
Wir wollen das Management der Firma bei der Entscheidung durch aussagekräftiges Kartenmaterial und Marktdaten unterstützen.
Umsetzung:
Ziel soll es sein, mittels JDeveloper und ADF eine Karte in die Anwendung zu zaubern, die auf Oracle Spatial bzw. Oracle Mapviewer/Oracle Maps basiert. Ich werde Marktdaten der GfK Marketing zu Hilfe nehmen. Wir wollen die Bier-/ Wein-Konsumdaten bzw. die dahinter steckende Kaufkraft in Deutschland im Verhältnis zur Bevölkerung bzw. Bevölkerungsdichte anschauen können..., um zu entscheiden, wo wir für Fusion Bottle & Co noch einen Getränkemarkt hinbauen sollten - und endlich unser Freibier bekommen...(;-).
So wird das Ergebnis aussehen:
1. Welche Komponenten brauchen wir?
- Oracle Datenbank (10g, 11g)
- Oracle Mapviewer, Mapbuilder (optional)
- Oracle Weblogic Server oder Oracle AS (OC4J) mit Quickstart Kit
- Kartendaten bzw. demografische Daten (hier: von GFK Marketing)
- JDeveloper 11g
- Oracle Mapviewer, Mapbuilder (optional)
- Oracle Weblogic Server oder Oracle AS (OC4J) mit Quickstart Kit
- Kartendaten bzw. demografische Daten (hier: von GFK Marketing)
- JDeveloper 11g
2. Vorgehensweise
Step 1: Zunächst installiere ich eine Oracle Datenbank 11g - Editon egal, XE tut es auch.
Step 3: Danach importiere ich die GFK Marketing Demodaten mittels "Load_DE_2010.sql" und gemäß des ReadME.txt
Step 4: Mapviewer - ich downloade den aktuellen Mapviewer, Mapbuilder und das Mapviewer Quickstart Kit (OC4J inkl. Mapviewer installiert) - benötigt wird noch ein aktuelles JDK - recommended JDK 6.
Step 5: Mapviewer Quickstart-Kit unzippen und mittels start.bat oder start.sh starten, nachdem die Verzeichnisstruktur im start-Batchfile angepasst wurde.
Während des Startvorgangs werden wir aufgefordert, für den Standart-Administrator "OC4JAdmin" ein Passwort zu vergeben.(z.B. Oracle 123).., welches wir uns bitte merken (aufschreiben!!!(;-)
Step 6: Mapviewer konfigurieren - um das in der Datenbank liegende Kartenmaterial nutzen zu können, muss die Datenbank Connection angepasst werden.
Dazu rufen wir den Mapviewer im Browser auf:
http://localhost:8888/mapviewer (wir werden weitergeleitet zur Startseite).
Auf der Mapviewer Startseite klicken wir oben rechts den Link "ADMIN" und gelangen auf die Login-Seite: User: OC4JAdmin, Passwort: Oracle 123
Linker Hand im Menue: Manage Mapviewer klicken wir auf "Configuration".
Hier erscheint ein Editor für die "mapViewerConfig.xml" - wir scrollen bis zum Ende nach unten...
Dort finden sich die permanenten Einträge für die DB connections:
(möglicherweise auskommentiert - als bitte "scharf schalten" und <--- bzw. --> rausnehmen.
<map_data_source name="MVDEMO"
jdbc_host="localhost"
jdbc_sid="xe"
jdbc_port="1521"
jdbc_user="mvdemo"
jdbc_password="BBZwqpVvIIOAUp6UlVxgBQdri7Z6VvtW"
jdbc_mode="thin"
number_of_mappers="3"
allow_jdbc_theme_based_foi="true"
/>
Wir kopieren uns am Besten diesen Block und passen ihn an wie folgt:
<map_data_source name="GFK-Daten"
jdbc_host="localhost"
jdbc_sid="xe"
jdbc_port="1521"
jdbc_user="GFK"
jdbc_password="!gfk"
jdbc_mode="thin"
number_of_mappers="3"
allow_jdbc_theme_based_foi="true"
/>
Dann unten: Save & Restart klicken - eine positive Bestätigung sollte oben auf der Seite erscheinen.
Tipp zum Quickstart-Kit: Sollte im nächsten Schritt keine Verbindung zur DB angezeigt werden, bitte Passwort überprüfen/anpassen. Es sind nur "kleingeschriebene" Passwörter zulässig im Quickstart-Kit 10g. - oder Treiber aktualisieren - aber Passwort anpassen auf SQL Ebene geht schneller (SQL-Plus: connect as SYS as SYSDBA, dann
SQL-plus>alter user gfk identified by gfk; ) - bei mir war der GFK Account (=Schema) "gelockt"... dann:
SQL-plus>alter user gfk identified by gfk account unlock;
Wenn wir dann auf "Datasources" klicken erscheinen die Datasources und "GFK-Daten" sollte dabeisein:
Step 7: GFK-Germany Basemap erzeugen
Wir gehen im Mapviewer Admin Menue zu: Manage Map Tile Layers und klicken links Create --> Internal (eine interne, auf unserem Server liegende Karte ; external wäre: WebMapService) --> Continue -->
Name: GfK-Germany
Datasource: GFK
Base-Map: Germany
- alle anderen default Werte können wir so übernehmen; fertig ist die Karte im Mapviewer.
Zum Überprüfen: Wiede im Menue: Manager Map Tile Layer links Manage anklicken.
In der Übersicht erscheint unsere GfK-Germany Karte
--> Checkbox selektieren --> View Map - manage Tiles anklicken.
Es erscheint das Karten Test UI - die Karte erscheint, nachdem wir den Button Show Map anklicken und 2x Doppelklick auf die Karten (zum Vergrössern):
Die Basemap zur Nutzung in ADF/JDeveloper ist fertig.
Step 8 - Anwendung
erstellen:
Nach dem JDeveloper Download starten wir den JDeveloper 11g (11.1...)
1.
Application anlegen vom Typ: Fusion Web App - Name: FusionMapApp -->
alles default --> Finish
Entity
Objekte erstellen (Verbindung zu Tabellen/DB):
2. -->
"model" --> New --> "Business Tier" -->
"ADf Bus. Components" --> "Business Components from
Tables"
3.
Connection zu DB (XE) User/Passwort gfk/gfk
4.
DE_COUNTIES2010 als Tabelle für "Entity Object" und "View
Objekt" nutzen
Seite
erstellen:
5. -->
Viewcontroller --> New --> Webtier --> JSF/Facelets -->
Page --> Name anpassen --> Quickstart Layout --> Browse
-->
Two Columns --> Layout mit 2 übereinanderliegenden Regionen
auswählen.
Karte
einbinden:
6. Karte
auf "First" (obere Region) ziehen: --> Component Palette
--> "ADF Data Visualizations" auswählen --> Map
-->
"Geographic Map" auf "first"(obere)-Region
ziehen.
7.
Karten-Wizard: Name eingeben: "Mapviewer" - url für
Mapviewer eingeben (standard: http://localhost:8888/mapviewer)
7a.
Mapviewer starten
7b.
Authentication: "Basic" auswählen - user: gfk - pwasswort:
gfk (muss natürlich mit dem Schema korrespondieren)
7c.
Connection Testen : Success! --> OK
7d.
"BaseMap" auswählen und durch Doppelklick positionieren
bzw. Zoom Level (Schieberegler) einstellen --> OK
8. Layer
auf der Karte einbinden: --> "DataControls" (refresh!)
--> DECOUNTIES2010View1 auswählen und auf Karte ziehen.
8a.
Start "Layer Wizard" --> Layer/Theme Typ "Color
Theme" auswählen
8b.
ThemeID: (sieht der User!) Name: "Kaufkraft Bier in Euro
p/Person"
--> Map Theme --> Name: DECounties2010 auswählen
--> Map Theme --> Name: DECounties2010 auswählen
-->
Location Column: Name Ascii
-->
Appearance/Buckets: Werte übernehmen
-->
Data: Location "Name Ascii"
--------->
Location Label: "Name Ascii"
--------->
Location Value: "Nr0121e"
--------->
Location Data Label: "Kaufkraft Bier"
Wichtig!
--> (x) "Enable Row Selection" anklicken !
-->
OK - Layer fertig (sieht man auf Karte nicht - nur im Structure Pane
unter "map" (links unten)
9.
Details synchron zum Layer in unterer Region anzeigen:
-->
DataControls --> DECOUNTIES2010View1 auf die untere (second
facelet) ziehen
aus dem
Kontext Menü "Create" auswählen: "Form" -->
dann: "ADF Read-Only Form"
Der Form
Layout Wizard startet --> nur 2 Spalten des Entity Objekts
auswählen: "NameAscii" und "Nr.0122e" -
die
anderen Spalten löschen --> OK
9a.
(optional) Label "Nr.0121e" anklicken und im Property
Inspector (rechts unten)
bei
"Common" --> Label: umbenennen in: "Kaufkraft für
Bier pro Person in Euro:"
Ergebnis im JDeveloper 11g:
10.
Anwendung testen: mit rechte Maustaste auf die Seite klicken -->
Kontextmenü --> Run (grüner Pfeil)
Falls
der Weblogic Server noch nicht gestartet wurde, startet er jetzt und
"deployed" die Anwendung
optional:
unten Tab "Deployment" anklicken und Fortschritt
beobachten.
wenn
Anwendung fertig deployed, öffnet der Default Browser mit der
Anwendung - oder man klickt auf den angebotenen Link.
11. Beim
Klicken auf die Regionen in der Karte, sollten "Name" und
"Nr121e" (Kaufkraft Bier) synchron angezeigt werden.
Edit 28.11.2011:
Ich habe ein kommentiertes Viewlet erstellt zur besseren Illustration und Erklärung der Architektur.
Edit 28.11.2011:
Ich habe ein kommentiertes Viewlet erstellt zur besseren Illustration und Erklärung der Architektur.
1 comment:
I got a job by saying this answer in my last interview. thanks for awesome help.
I got more idea about Oracle from Besant Technologies. If anyone wants to get Oracle Training in Chennai visit Besant Technologies.
http://www.oracletraininginchennai.in
Post a Comment