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.
I got a job by saying this answer in my last interview. thanks for awesome help.
ReplyDeleteI got more idea about Oracle from Besant Technologies. If anyone wants to get Oracle Training in Chennai visit Besant Technologies.
http://www.oracletraininginchennai.in