Forms und Java Integration oder Migration Stephan La Rocca Team GmbH
Zahlen und Fakten TEAM in Paderborn Geschäftsführung Michael Baranowski - Heike Käferle Paderborn - Schloß Neuhaus Firmenzentrale Gründung 1982 50 Mitarbeiter Unternehmensgruppe Materna 1.100 Mitarbeiter 120 Mio. Euro Umsatz in 2004 Copyright TEAM, Paderborn Nov-05 Seite 2
Historie Als Kunde einer Entwicklungsplattform Oracle Forms... Implementieren wird seit 1989 mit diesem Tools Haben wird daraus drei Produkte und eine Vielzahl von Individualprojekten ins Leben gerufen Haben wir ca 4000 unterschiedliche Forms Dialoge generiert. Nutzen wir ein eigenes Framework (ProTools) um dem Entwickler wiederkehrende Aufgaben zu Benutzerberechtigung, Fehlerbehandlung, Dialogsteuerung, etc. abzunehmen. Bieten wir unserem Kunden einen StyleGuide, der es ermöglicht, benutzerspezifisches Layout zu den Dialogen abzuspeichern. Copyright TEAM, Paderborn Nov-05 Seite 3
PRO ROPLAN erp für die Prozessindustrie Rechnungswesen Lohn und Gehalt Controlling Absatzplanung Vertrieb / Verkauf Materialwirtschaft / Einkauf PROPLAN Materialflussverfolgung Chargenverfolgung Lagerverwaltung Rezepturen/ Prozessvorschrift Produktionsplanung Qualitätssicherung Copyright TEAM, Paderborn Nov-05 Seite 4
PRO ROSTORE elogistics & Warehousemanagement Wareneingang Qualitätssicherung Einlagerung Lagerverwaltung PROSTORE Kommissionierung Stammdaten Bestandsführung Chargenverfolgung Leergutverwaltung Produktionszu/abgang Staplerleitsystem Inventur Etikettierung Versand Infosystem Schnittstellen Copyright TEAM, Paderborn Nov-05 Seite 5
Aufgabenstellung Es war an einem Dienstag... Wir würden gerne unsere Chip-Karten zur Authentifizierung der Benutzer innerhalb der ProStore - Applikation nutzen Forms im Web... Zugriff auf die Serielle Schnittstelle... Auslesen von Daten...? Ein kleiner Anruf eines Kunden ein großer Schritt in die Welt der Java-Entwicklung für unsere Forms- Programmierer. Copyright TEAM, Paderborn Nov-05 Seite 6
Aufgabenstellung In diesem Dialog sollten bei Einschub einer Karte an dem lokalen PC die Benutzerdaten übernommen und eine automatische Anmeldung erfolgen. Copyright TEAM, Paderborn Nov-05 Seite 7
Umsetzung Der Zugriff auf die Karte wurde durch das OpenCard- Consortium sichergestellt. Damit stand eine Java-Api zur Verfügung, wie auf diese Schnittstelle zugegriffen werden konnte. Es konnte eine Java-Klasse erstellt werden, die ein Ereignis mit den Parametern Benutzername und Passwort zurücklieferte. Copyright TEAM, Paderborn Nov-05 Seite 8
Umsetzung innerhalb von Forms Copyright TEAM, Paderborn Nov-05 Seite 9
Arten der Integration Pluggable Java Component Einfache API Erweiterung der Forms UI-Komponenten Java Beans Integration von JavaBeans und JavaApplets in Forms Verwaltung ausschließlich über PL/SQL Unterstützung durch die FBEAN-Package Zugriff auf alle Methoden, Properties und Events Java auf dem Application Server Integration durch ORA_JAVA-Package, ummantelt die Java- Methoden für PL/SQL Wird erstellt durch JAVA-Importer Copyright TEAM, Paderborn Nov-05 Seite 10
Plugable Java Components Implementierungsklassen für vorhandene Objekte Cursor-Positionierung bei Dossierfeldern innerhalb eines Kundenstamm Copyright TEAM, Paderborn Nov-05 Seite 11
Java Beans mit visueller Darstellung Integration eines hierarchischen Baums mit Daten aus anderen Datenquellen Lag bereits als Implementierung vor und konnte innerhalb des Forms Dialoges zum Einsatz gebracht werden. Copyright TEAM, Paderborn Nov-05 Seite 12
Business Intelligence Beans Copyright TEAM, Paderborn Nov-05 Seite 13
Java Importer Integration von Forms und CMSDK Zugriff auf Dokumente innerhalb einer Spendenapplikation auf eingescannte Dokumente und Unterlagen zu den Spenden Auf dem Applikation Server wurden Java-Klassen für den Zugriff auf das CMSDK erstellt. Anmeldung und Aktion wurden als Parameter der Klassen berücksichtigt. Innerhalb der Forms-Applikation wurden durch den Java- Importer PLSQL-Hüllen um die Java-Klassen gelegt. So ist es aus Forms möglich, Ordner anzulegen, Dateien zu löschen, ACLs zuzuweisen, etc. Copyright TEAM, Paderborn Nov-05 Seite 14
Webservices Der JDeveloper bietet einen Wizard, der es ermöglicht, für beliebige Webservices einen Java-Stub zu erstellen. Dieser Java-Stub kann mit dem Java-Importer mit einem PL/SQL-Mantel umgeben werden. Integration des WebServices in Forms-Trigger und Programm-Units Beispiel: Online-Adressvalidierung Copyright TEAM, Paderborn Nov-05 Seite 15
Integration vs Migration Integration Mintegration Besteht Handlungsbedarf innerhalb der aktuellen Applikation? Migriert auch das Wissen der Entwickler? Minegration Wird eine transaktionslastige Inhouse-Lösung oder eine smarte Webapplikation gefragt? Welche Berührungspunkte gibt es zu bereits Mingration vorhandenen Komponenten und womit sind diese realisiert? Migration Copyright TEAM, Paderborn Nov-05 Seite 16
Zwischenschritt der Koexistenz Web-Browser Forms-Java-Applet Java Open Source WebServices Oracle Applikation Server WebServices begin...... end; Copyright TEAM, Paderborn Nov-05 Seite 17
Konsequenz einer Migration Software-Architekturen Forms Gewachsen aus einer Client/Server- Architektur Datenbankmodell PL/SQL-Packages für Applikationslogik Forms-Bibliotheken für wiederkehrende Funktionen Layout, Navigation, Logik, Interaktion in einer Datei ADF Datenmodell unabhängig von der Datenbank ADF-BC für die Applikationslogik ADF- Controller/Struts ADF-UIX, JSF, etc. für die Gestaltung der Oberflächen Copyright TEAM, Paderborn Nov-05 Seite 18
Hürden einer Migration Copyright TEAM, Paderborn Nov-05 Seite 19
Querschnittsfunktionalitäten Unstrukturierte Software wird durch eine Migration nicht besser! ( M³... Müll migriert zu Müll) Querschnittsfunktionalitäten an Hand von Layout-Definitionen Controller Benutzerberechtigung Fehlerbehandlung Mehrsprachigkeit Copyright TEAM, Paderborn Nov-05 Seite 20
Layout-Definitionen Layout-Definitionen werden in Forms durch Properties an den Items und durch Layout-Objekte beschrieben. Properties können zur Laufzeit gelesen und geschrieben werden (Team-StyleGuide) Das komplette Layout eines Dialoges kann durch die Java- API oder den XML-Export ausgelesen werden. In der J2EE-Entwicklung können identische Daten, identische Applikationslogiken auf unterschiedlichen Oberflächen ausgegeben werden. Präsentationslayer werden für den Entwickler zweitrangig bei Verwendung von JSF. Verwendung von MVC-Design Pattern Copyright TEAM, Paderborn Nov-05 Seite 21
Controller Aktionen werden direkt den grafischen Objekten zugeordnet. (z.b. Der WHEN-BUTTON-PRESSED-Trigger einer Befehlsfläche. Navigationen werden durch Objektnavigator und Forms- Built-Ins bestimmt. Modularisierung durch ProTools (Menü, Button, Tastatur) und strikter Trennung zwischen Client und Server - Programmierung Struts oder andere Controller übernehmen deklarativ die Zuordnung von Aktionen und Reaktionen. Copyright TEAM, Paderborn Nov-05 Seite 22
Benutzerberechtigung Kombination aus Rollenkonzept in der Datenbank und Benutzerberechtigung auf Menü/Funktionsebene in Forms. Es sollte eine zentrale Verwaltung der Benutzerberechtigung geben. Wird in Forms durch Menü-Sicherheit oder Trigger implementiert. Können in der J2EE-Entwicklung durch Frameworks wie JAZN implementiert werden. Optimalerweise beruhen die Methoden auf der gleichen Datenquelle (Datenbankrollen, XML, etc.) Copyright TEAM, Paderborn Nov-05 Seite 23
Fehlerbehandlung Fehlerbehandlungen unter Forms werden berücksichtigt In der Datenbankentwicklung In den PLSQL-Blöcken In den Forms ON-ERROR-Triggern Fehlerbehandlungen Java Exception - Handling Bedürfen einer Kapselung in den Methoden und Klassen Bedürfen einer Abgrenzung zwischen den Schichten der Software-Architektur Copyright TEAM, Paderborn Nov-05 Seite 24
Mehrsprachigkeit Können realisiert werden durch Oracle Translation Manager (Unterschiedliche FMX) Dynamische Ersetzung zur Laufzeit (Team StyleGuide, Sprachtabellen...) Werden im J2EE-Umfeld in der Regel durch Resource- Bundles abgebildet. Copyright TEAM, Paderborn Nov-05 Seite 25
Bewertung einer Forms-Applikation Eine gute Vorarbeit ermöglicht eine leichtere Migration der Applikation Klare Trennung der Applikationslogik zwischen Datenbank, PL/SQL-Bibliothek und Forms-Modul Aufruf aller applikationsspezifischen Funktionen über USER- DEFINED-Trigger Dialogwechsel-Definitionen in der Datenbank Zentrale Benutzerberechtigung und globale Umsetzung in den Dialogen Zentrale Fehlerbehandlung Datengetriebene Mehrsprachigkeit Copyright TEAM, Paderborn Nov-05 Seite 26
Bewertung einer Forms-Applikation Copyright TEAM, Paderborn Nov-05 Seite 27
Fazit Es existieren Tools auf dem Markt, die diese Migration automatisieren können -> wer kann das Ergebnis verstehen, warten und weiterentwickeln? Eine Integration hilft klein anzufangen und auch das Know-How der Mitarbeiter aufzubauen Eine Integrationsstufe ist die Entwicklung neuere Komponenten innerhalb der J2EE-Welt und das gemeinsame Nutzen von Querschnittsfunktionalitäten Die Einhaltung von Best-Practise für Forms und PL/SQL erlaubt einen einfacheren Wechsel in die Welt von ADF und J2EE Copyright TEAM, Paderborn Nov-05 Seite 28
Vielen Dank für Ihre Aufmerksamkeit! Hermann-Löns-Str. 88 33104 Paderborn Fon: 0 52 54 / 80 08-0 Fax: 0 52 54 / 80 08-19 email: team@team-pb.de www.team-pb.de