windows- und java-integration mit oracle forms 10g und 6i · pdf filedoag konferenz 2006...
TRANSCRIPT
DOAG Konferenz 2006
Windows- und Java-Integration mit Oracle Forms 10g und 6i
Oder: In Forms 10g denken, mit Forms 6i leben
Andreas Leidner
infoteam GmbH Berlin
infoteamSolutions Wirkungsfeld
� Entwicklung und Vertrieb der Standard-Software RUBIN (Branchensoftware für die Messe-, Veranstaltungs- und Kongressbranche)
� Organisationsberatung
� 29 Mitarbeiter
� Umsatz RUBIN 2005 > 2,0 Mio. EUR
� ca. 250 Veranstaltungsstätten bzw. Veranstaltungsorganisationen werden mit RUBIN gemanagt
� Mehr als 1500 User in D-A-CH
� Marktführer im deutschsprachigen Raum
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Motivation und Anwendungsbeispiel
� Bestehendes Produkt RUBIN:
„Forms“ - Anwendung mit ca. 700 ModulenWeitere Produktbestandteile auf Basis anderer
Technologien wie AutoCAD, C/C++, Java, Oracle Business Intelligence, XSLT
� Derzeit in ca. 50 Produktivumgebungen als Client-Server-Anwendung (6i) im Einsatz
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Motivation und Anwendungsbeispiel
� Zur Zeit 3 Forms 10g-InstallationenVor allem Neukunden
Migrationsbereitschaft, Kosten
� Graphische SitzplanbuchungZiel
Hospitality-Geschäft: Verkauf von Nutzungsrechten auf Sitzplätze für Veranstaltungen an Firmen
• Unterschied zur bekannten Buchung von Sitzplätzen für Konzerte / Musicals / Events
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Motivation und Anwendungsbeispiel
� Abwicklung mit RUBIN
� Anforderung: Entwicklung eines integrierten graphischen Buchungsmoduls
In Forms 6i Client/Server!
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Java-Integrationsmöglichkeiten in Forms 10g
� Überblick
Oracle Application Server
Forms Runtime
fmxServer-
Komponenten
JVM
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Clientseitige Java-Integration
� Pluggable Java Components (PJC)Anpassung vorhandener
Forms Item TypesNeue GUI-Komponenten
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Pluggable Java Components
� Was ist eine PJC?Java-Klasse, implementiert Interface IView
oder erweitert VBean
(Re-)präsentiert ein Forms Item auf Client-Seite
� Grundregel: Bean gekapselt in Forms-Item
+paint(Zoll g : Graphics)
PjcBeispiel
+getProperty() : ID
+init(Zoll handler : IHandler)
+paint(Zoll g : Graphics)
+setProperty(Zoll id : ID, Zoll value : object)
VBean
Form
Block
Item
Implementation Class = PjcBeispiel
Canvas = Canvas1
Visible = Yes
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Pluggable Java Components
�Beispiele�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Pluggable Java Components
� Kommunikation Forms � PJC
Setzen und Abfragen von Properties
Auf Items (alle Instanzen)• set_custom_item_property � setProperty(…)• get_custom_item_property � getProperty()
Auf einzelnen Instanzen• set_custom_property � setProperty(…)• get_custom_property � getProperty()
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Pluggable Java Components
� Kommunikation PJC � FormsEvent-ModellNach Instanziierung Übergabe eines Handler‘s
durch Forms an die PJCMittels Handler kann ein Event ausgelöst werden
Abarbeitung in Forms über WHEN-CUSTOM-ITEM-EVENT-Trigger
• Event-Name in :SYSTEM.CUSTOM_ITEM_EVENT
• Event-Parameter: get_parameter_attr(:SYSTEM.CUSTOM_ITEM_EVENT_PARAMETERS, param-name in varchar2, param-type out number, param-value out varchar2)
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Pluggable Java Components
� EinschränkungenKeine dynamische Auswahl und ErzeugungAsynchrone Übermittlung von Properties
Synchronisierung nur über synchronize forcierbar (Performance!)
Umsortierung der Übermittlungsreihenfolge bzgl. Properties mehrerer ItemsAus Performancegründen (Komprimierung)Lösung: Synchron und geordnet mittels FBEAN-
PackageProperty Implementation Class nicht für alle
Forms Item Types verfügbarNicht bei Tab Canvases, Alerts, LoVs, Trees, …Lösung: selbst-kreierte Tab Canvases mit Stacked
Canvases à la Forms 4.5; eigenes EWT Look and Feel
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Pluggable Java Components
� EinschränkungenJInitiator implementiert Java 1.3Integration in Forms Builder unvollständig
Eingeschränkte Anzeige, keine InteraktionKeine Integration der Custom Properties in die Property
Palette
Keine Javadoc-Dokumentation!Spärliche Dokumentation in der Forms-Onlinehilfe
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Anwendungsbeispiel
� VorführungGraphische Sitzplanbuchung
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
JInitiator / Java Plugin OC4J / Application Server
infoteamSolutions Integration in Forms 6i Client/Server
� Architektur-Überblick für Forms 10g�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
Forms-Modul(FMB)
Graphische Belegung(PJC / Java)
Item Graphische Belegung(Bean Area)
VBean(Oracle PJC)
Form
sR
untimeHandler
infoteam GmbH Berlin
infoteamSolutions Integration in Forms 6i Client/Server
� Notwendige KompatibilitätsschichtenErsatz für den HandlerErsatz für den Item Type Bean AreaDer „glue“ dazwischen
10g Built-InsEvent-Modell
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Integration in Forms 6i Client/Server
� Ersatz für den Handler und Java PluginJava-Kompatibilitätsschicht
Funktionen:Laden einer PJC zur LaufzeitSetzen und Abfragen von Properties der PJCWeiterleiten von Events an Forms
Oracle Packagestruktur und Klassenhierarchievon VBean muss nachgebildet werdenoracle.forms.ui.VBean � LWContainer
• oracle.forms.ui.VBean � JPanelNur notwendig, falls PJCs vollständig kompatibel
zu 10g sein sollen
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Integration in Forms 6i Client/Server
� Ersatz für den Item Type Bean AreaItem Type OCXGenerisches ActiveX-Control
Lädt Java Laufzeitumgebung per InvocationInterface
Ändert auf dem Handler-Objekt das Window-Handle (HWND)
• Ermöglicht der PJC das Zeichnen im Bereich des OCX Items
Stellt ein COM Interface bereit• Setzen und Abfragen von Properties• Events
– InitializedJavaEvent– PjcLoadedEvent– CustomItemEvent(eventName, eventParams)
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Integration in Forms 6i Client/Server
� Der “glue” dazwischenForms-KompatibilitätsschichtEmulation der 10g-Built-ins
Package forms10gemuProzedur set_custom_item_property etc.
implementiert durch COM-Aufrufe auf dem OCX Item
Behandlung von EventsForms ruft bei COM-Events die entsprechende
importierte Prozedur aufVerwenden eines WHEN-CUSTOM-ITEM-EVENT-
Triggers auf Form-Ebene
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Integration in Forms 6i Client/Server
� Zu umgehende ProblemeProblem bei Code zur Event-Abarbeitung
� Timer
Namensauflösung für DLLs bei ActiveX und JNI unterschiedlichModule ist zweimal geladen mit unterschiedlichen
Speicherbereichen� Eigene Namensauflösung bei JNI (analog zu
ActiveX über die COM-Komponentenregistrierung)
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
infoteamSolutions Integration in Forms 6i Client/Server
� Schließlich: Migration nach 10gMinimaler AufwandFMBs und PLLs konvertieren mit Oracle Forms
10g Migration AssistentGgf. Anwendung eigener MigrationstoolsJava-Komponenten für 6i und 10g identisch –
keine Migration notwendigSofort einsatzbereit
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g
infoteam GmbH Berlin
DOAG Konferenz 2006
Kontakt:
[email protected]@leidner-net.de
infoteam GmbH BerlinKönigsberger Straße 1412207 Berlin
030-7733000
Vielen Dank für die Aufmerksamkeit!
Fragen ...
Überblick und weitere Details zur Java-Integration in Forms 10g:
Vortrag bei der DOAG SIG Development, 15.09.2005, Andreas Leidner, Lutz Döhler
�� infoteaminfoteam
�� MotivationMotivation
�� JavaJava--IntegrationsmIntegrationsmööglichkeitenglichkeiten
�� ClientseitigClientseitig PJCsPJCs
BeispieleBeispiele
DesignDesign
�� AnwendungsbeispielAnwendungsbeispiel
�� Integration Forms 6i C/SIntegration Forms 6i C/S
�� Migration Migration nachnach 10g10g