Beratung Software Lösungen Teilaspekte einer Migration von Forms nach ADF Zahlen und Fakten Unternehmensgruppe Materna: 1.300 Mitarbeiter – 160 Mio. Euro Umsatz in 2011 Geschäftsführung: Michael Baranowski - Heike Käferle Mitarbeiterzahl: 60 OracleBusiness: Passgenaue Oracle - Dienstleistungen Lizenzierung Consulting Individualentwicklungen Business Intelligence Schulungen Support ProStore® - Intralogistik und Warehousemanagement WMS/LVS MFR/MFS beleglose Kommissionierung Pick-by-Voice Staplerleitsystem Ressourcenplanung Logistikleitstand Logistics Intelligence Agenda • Migrationsgegenstand • Was muss bei einer Migration beachtet werden? • Konkreter Migrationsprozess • TEAM ADF Framework 06.12.2012 © TEAM - Ihr Partner für IT 6 Migrationsgegenstand 06.12.2012 © TEAM - Ihr Partner für IT 7 Warum migrieren? • Hoher Aufwand „neue“ Features in Forms zu realisieren Handlungsbedarf nach neuer Technologie • Verbesserung der User Experience Fokus auf Prozessmodellierung • Es gibt nicht DAS Tool für JEDEN Benutzer User Centered Design • Nutzung verschiedener Kanäle Desktop Mobile 06.12.2012 © TEAM - Ihr Partner für IT 8 Die Spitze des Eisberges 06.12.2012 © TEAM - Ihr Partner für IT 9 Unter der Wasseroberfläche Zahlen und Fakten • > 350 Forms-Dialoge • z.T. mit kundenspezifischen Anpassungen • mehr als 4 Mio. Zeilen PL/SQL – Code • gute Trennung zwischen Forms- und PL/SQL-Logik in der Datenbank Randbedingungen: Keine komplette Neuentwicklung Wiederverwendung von PL/SQL in der Datenbank Beibehalten des aktuellen Systems - “don‘t touch running code“ Maximale Anzahl gleichzeitig arbeitender Nutzer < 1000 06.12.2012 © TEAM - Ihr Partner für IT 10 Wieso ist es nicht einfach zu migrieren? ADF – Entwicklung auf der „grünen Wiese“ ADF – Entwicklung in einem Migrationsprojekt Forms ADF DB DB • Tabellen • (Updatable) Views • Packages (Stored Procedures) • Tabellen • (Updatable) Views • Packages (Stored Procedures) Data – Store „Alleskönner“ 06.12.2012 © TEAM - Ihr Partner für IT 11 Querschnittsfunktionalitäten • > 4 Millionen LoC (PL/SQL) wie kann PL/SQL eingebunden werden? Benutzer & Rollen? Transaktionshandling? Pooling? Datentypen? Datenbankbenutzer? Fehlerbehandlung? Security? Internationalisierung? Tracing / Logging? Optimistisches / Pessimistisches Locking? 06.12.2012 © TEAM - Ihr Partner für IT Querschnittsfunktionen Sessionkontext? 12 Querschnittsfunktionalitäten • Sessionkontext – PL/SQL und Connection Pooling ADF BC Application Module Pool 06.12.2012 © TEAM - Ihr Partner für IT JDBC Connection Pool 13 Querschnittsfunktionalitäten • Sessionkontext • Maximale Anzahl gleichzeitig arbeitender Nutzer < 1000 • Application Module (AM) Konfiguration • Disconnect Application Module upon release: disabled 06.12.2012 © TEAM - Ihr Partner für IT 14 Querschnittsfunktionalitäten • Sessionkontext – PL/SQL und Application Module Pooling ADF BC Application Module Pool 06.12.2012 © TEAM - Ihr Partner für IT JDBC Connection Pool 15 Querschnittsfunktionalitäten • Sessionkontext • Maximale Anzahl gleichzeitig arbeitender Nutzer < 1000 • Application Module (AM) Konfiguration • Disconnect Application Module upon release: disabled • Support Dynamic JDBC Credentials: enabled • RELEASE_MODE: RESERVED Application Module behält Connection nach Abarbeitung einer Anfrage Umstellung des Release_Modes („Freigabe“) im TaskFlow Finalizer Benutzer bekommt gleiche AM-Instanz und DB-Session Globale Package-Variablen können verwendet werden! 06.12.2012 © TEAM - Ihr Partner für IT 16 Business-Logik • Wiederverwendung des PL/SQL – Codes in der Datenbank TEAM – Lösung (Version 1.0): • Import Stored Procedures Wizard (Extension) Generierung eines Java Wrappers, der den Aufruf kapselt TEAM – Lösung (Version 2.0): • JDeveloper PL/SQL – Extension Direktes schreiben des PL/SQL – Codes an den Business Components (ADF BC) 06.12.2012 © TEAM - Ihr Partner für IT 17 Business-Logik ADF (Java) public void callPkDoagAnmelden() throws SQLException { DoagViewRowImpl row = (DoagViewRowImpl) getCurrentRow(); String vorname = row.getVorname(); String nachname = row.getNachname(); String kontakt = row.getPhoneNumber(); String bestaetigung = null; DBTransaction trans = getDBTransaction(); String stmnt = “begin pk_doag.anmelden(?,?,?,?); end;”; OraclePreparedStatement ops = (OraclePreparedStatement) trans.createPreparedStatement(statement, DBTransaction.DEFAULT); ops.setString(1, vorname); ops.setString(2, nachname); ops.setString(3, kontakt); ops.registerOutParameter(4, OracleTypes.VARCHAR2); ops.execute(); bestaetigung = ocs.getString(4); row.setBestaetigung(bestaetigung); } 06.12.2012 © TEAM - Ihr Partner für IT 18 Business-Logik ADF (Java) Forms public void callPkDoagAnmelden() throws SQLException { DoagViewRowImpl row = (DoagViewRowImpl) getCurrentRow(); String vorname = row.getVorname(); String nachname = row.getNachname(); String kontakt = row.getPhoneNumber(); String bestaetigung = null; DBTransaction trans = getDBTransaction(); String stmnt = “begin pk_doag.anmelden(?,?,?,?); end;”; OraclePreparedStatement ops = (OraclePreparedStatement) trans.createPreparedStatement(statement, DBTransaction.DEFAULT); ops.setString(1, vorname); ops.setString(2, nachname); ops.setString(3, kontakt); ops.registerOutParameter(4, OracleTypes.VARCHAR2); ops.execute(); bestaetigung = ocs.getString(4); row.setBestaetigung(bestaetigung); } -- T_BUTTON_PRESSED begin pk_doag.anmelden ( :bl_dialog.vorname, :bl_dialog.nachname, :bl_dialog.kontakt, :bl_dialog.bestaetigung ); end; 06.12.2012 © TEAM - Ihr Partner für IT 19 Was muss ich bei einer Migration beachten? • Updatable Database Views • (Datenbank)-View mit 2 Tabellen • LoV über JobTitle • Validierung • Forms: • Query Only • Nur Abfrage • ADF? 06.12.2012 © TEAM - Ihr Partner für IT 20 Was muss ich bei einer Migration beachten? • Updatable Database Views Application Module DialogReadOnly View Objects Entity Objects DbView DialogUpdatable UpdDbView DbViewImpl SQL aNTI pATTERN! (Oracle) JDBC Interface UPD_DB_VIEW DB_VIEW TABELLE_1 06.12.2012 06.12.2012 © TEAM - Ihr Partner für IT © TEAM - Ihr Partner für IT TABELLE_2 TABELLE_3 21 21 Was muss ich bei einer Migration beachten? • Updatable Database Views Application Module DialogReadOnly View Objects Entity Objects DbView SQL DialogUpdatable UpdDbView Tabelle1Eo Tabelle2Eo automatisierte Generierung von Entity- und View-Objekten Tabelle3Eo (Oracle) JDBC Interface UPD_DB_VIEW DB_VIEW TABELLE_1 06.12.2012 06.12.2012 © TEAM - Ihr Partner für IT © TEAM - Ihr Partner für IT TABELLE_2 TABELLE_3 22 22 Wiederverwendung von ADF-Komponenten • Componenten-Framework nach dem Baukastenprinzip Zusammenführen mehrerer Dialoge zu einer Oberfläche / zu einem Workflow Konfiguration der (Task-Flow) Komponente zur Laufzeit • Konfiguration „Standalone“ • Die selbe Komponente als Detail eingebettet (Der rot markierte Bereich stellt die Nutzer – Sicht dar.) 06.12.2012 © TEAM - Ihr Partner für IT 23 Konkreter Migrationsprozess UserCentered Design Componenten Framework ViewController UI-Framework Model BL-Framework QF* Oracle Forms QF* - ADF Design / Doc… Oracle ADF * Querschnittsfunktionalitäten 06.12.2012 © TEAM - Ihr Partner für IT 24 TEAM ADF Framework – TAF (User) Interface Framework Component Framework BusinessLogic Framework Querschnittsfunktionalitäten (Cross-Section Functions) 06.12.2012 © TEAM - Ihr Partner für IT 25 Was bietet das TEAM ADF Framework? • Implementierung von Best Practices für den Migrationsprozess • Lösung für eine Vielzahl von Querschnittsfunktionalitäten • Leichte Einbindung von bestehendem PL/SQL Code • Kostengünstige Entwicklung von neuer Business-Logik • Wohldefiniertes Vorgehensmodell für eine Migration 06.12.2012 © TEAM - Ihr Partner für IT 26 Haben Sie noch Fragen Beratung Software Lösungen TEAM-Konferenzvorträge Forms fits4all Stephan La Rocca Mittwoch, 21. November 2012, 14:00 - 14:45 Uhr Raum: St. Petersburg Teilaspekte einer Migration von Forms nach ADF Manuel Malatyali Mittwoch, 21. November 2012, 16:00 - 16:45 Uhr Raum: Kopenhagen Minimalinvasive Überwachung von Datenbanken für optimale Verfügbarkeit Ralf Appelbaum Donnerstag, 22. November 2012, 10:00 - 10:45 Uhr Uhr Raum: St. Petersburg 06.12.2012 © TEAM - Ihr Partner für IT 28 TEAM-Stand Besuchen Sie uns am Stand 204 in der 2. Etage (gelb)! SIE können der Gewinner sein! So einfach geht´s: Visitenkarte abgeben und eine 3-tägige TEAM-Standardschulung im Wert von 1.200 Euro zu einem beliebigen Thema gewinnen! Die Ziehung erfolgt am letzten Tag der DOAG um 16:00 Uhr. Beratung Software Lösungen Vielen Dank für Ihre Aufmerksamkeit! TEAM Partner für Technologie und angewandte Methoden der Informationsverarbeitung GmbH Hermann-Löns-Str. 88 33104 Paderborn Fon +49 5254 8008-0 Fax +49 5254 8008-19 Mail [email protected] Web www.team-pb.de