Forms und Reports 12c R2 Schriff für Schritt

Werbung
DOAG2016: FORMS12c Upgrade
16.11.2016
BEST PRACTISES
Empfehlungen zum Einsatz
von Forms 12c
Autor:
Frank Christian Hoffmann
Cologne Data GmbH
Proof of Concept
Friedhold Matz,
Cologne Data GmbH
Erstelldatum:
2016-11-16
Letzte Änderung:
2016-11-16
Version:
1.0
DOAG2016_Forms12c_Upgrade.docx
Seite 1 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
1 Inhaltsverzeichnis
1
2
3
4
5
6
7
Inhaltsverzeichnis.........................................................................................................2
Hinweis zu den Empfehlungen.....................................................................................2
Firmenvorstellung ........................................................................................................3
Kurze Statistik der Teilnehmer der Veranstaltung ......................................................4
Migration, Upgrade oder Modernisierung? ..................................................................5
Modernisierung durch neue PLSQL Funktionen ..........................................................6
Automatisierte Codeanpassung mit Tools...................................................................7
8
9
10
11
12
13
14
Proof of Concept – Formsupgrade durch Forms12c ....................................................9
Modernisierung durch Button-Grafikgestaltung ....................................................... 10
Stolpersteine - verwenden Sie eine aktuelle Version ................................................ 11
Nutzen Sie weitere Aufrufparameter mit „FSAL“...................................................... 12
Sicherheit für Forms12c nur mit HTTPS .................................................................... 13
Betreiben Sie Ihre Reportlösung im Hintergrund ...................................................... 14
Machen Sie den Applikationsbetrieb transparent ..................................................... 15
15
16
17
18
19
20
Nutzen Sie das Color Schema von Forms 12c............................................................ 16
Unnötige JAR Files (Timout.jar) abschaffen .............................................................. 17
Sicherheit erweitern, vorgeschaltete Maske für Internetzugriffe einbauen ............. 17
Neue Features in Forms12c verbessern die Ergonomie ............................................ 18
Reports im Hintergrund generieren? ......................................................................... 19
Lernen und testen - webutil-demo ............................................................................. 20
2 Hinweis zu den Empfehlungen
Alle Tipps und Tricks sind Empfehlungen des Autors zu einem bestimmten Stand und können
Fehlern unterliegen oder auch anders bewertet werden. Jeder Punkt muss geprüft und
diskutiert werden! Anregungen und Korrekturen zu den Inhalten werden gerne
aufgenommen.
DOAG2016_Forms12c_Upgrade.docx
Seite 2 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
3 Firmenvorstellung
Cologne Data hat sich seit dem Erscheinen von Forms12c (Oktober 2015) ausschließlich auf
die Entwicklung mit Forms12c spezialisiert und arbeitet täglich mit dieser Software. Wir
nehmen nur neue Aufgaben auf diesem Gebiet an und haben dadurch eine Reihe von
umfangreichen Migrationen und Upgrades zu Forms12c (aktuell 12.2.1.2) auf Basis des
Forms API Masters durchgeführt. Profitieren Sie von unserem Wissen und unserer Erfahrung
als ORACLE Forms Spezialist. Als ORACLE Gold Partner können wir Ihnen zu guten Preisen
ORACLE Forms/Reports Lizenzen besorgen oder Ihnen zu besonderen Konditionen Lizenzen
der oft verwendeten „Third Party Tools“ wie „PLPDF“ (PLSQL Reporttool) oder
„FormsApiMaster“ (automatisierte FormsApi Codeanpassung) anbieten. Weiterhin bieten
wir Ihnen an Ihre ORACLE Forms GUI durch einen kreativen Kölner Künstler (Lars Käker) zu
modernisieren.
Beispielarbeit von Lars Käker, Logo und Applikationsgrafiken visualisiert
DOAG2016_Forms12c_Upgrade.docx
Seite 3 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
4 Kurze Statistik der Teilnehmer der Veranstaltung
Bei der DOAG Veranstaltung am 15.11.2016 um 12:00 zu ORACLE Forms12c von mir
waren etwa 70-80 Zuhörer anwesend.
Folgende kleine Statistik wurde unter den Zuhörern durchgeführt:
1.
2.
3.
4.
Wie viele Forms-Kunden setzen in diesem Raum Forms6i ein?
Wie viele Kunden setzen bereits Forms12c in Produktion ein?
Wie viele Kunden setzen aktuell Forms11g in Produktion ein?
Wie viele von den Forms11g Kunden planen ein Upgrade auf 12c?
Antwort 4
Antwort 4
Antwort 70
Antwort 60-70
Fazit:
Oracle Forms Kunden sprechen nicht mehr über eine Migration weg von der
Kerntechnologie nach Apex oder ADF. Die Festlegung von ORACLE für einen Support bis
2020 (extended 2023) der aktuellen Version schafft Vertrauen und neue Features zur
Abschaffung bekannter Probleme bilden einen zusätzlichen Anreiz zu einem Upgrade auf
Forms12c.
(Reports Instabilität, Browser Plugins, fehlende Boardmittel für Layout, Timeout usw.)
Das Vertrauen ist berechtigt. Wer einmal einen Forms12c Server in Produktion gebracht
hat wird für die Geschwindigkeit und Stabilität des Upgrades dankbar sein.
DOAG2016_Forms12c_Upgrade.docx
Seite 4 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
5 Migration, Upgrade oder Modernisierung?
Begriffsbestimmung Migration
Bei einer Migration werden umfangreiche Teile der Software angepasst und mit aktuellem
Code ersetzt. Eine Migration erfordert umfangreiche Tests besonders bei Schnittstellen
und neuen Technologien die zum Einsatz kommen sollen. Oft muss dann auch im Workflow
und in der Ablaufsteuerung anders synchronisiert werden oder Logik anders umgesetzt
werden.
Beispiel für eine ORACLE Forms Migration
ORACLE Forms 6i nach Oracle Forms 12c (2-Schicht in 3-Schicht Architektur)
Begriffsbestimmung Upgrade
Ein Upgrade liegt vor, wenn sich die Kerntechnologie nicht ändert. Zum Beispiel würde ein
Upgrade von Reports 9i, 10g oder 11g auf 12c durch ein einfaches „Compile all“ möglich
werden. Bei Forms könnte der PLSQL Code gleich bleiben aber erweiterte Komponenten
wie webutil.pll und webutil.olb sowie alle verwendeten Client Jar Files müssen
ausgetauscht werden.
Beispiel für ein Upgrade
Upgrade Oracle Forms 11g nach Forms 12c (Recompile)
Begriffsbestimmung Modernisierung
Eine Moderniserung kann in jeder Version erzielt werden durch Erweiterung der
Funktionalität oder ergonomischer Anpassung der GUI Umgebung. Einige
Modernsierungen sind mit wenig Aufwand und hoher Nachhaltigkeit möglich – andere
(Verwendung von neun Java-Klassen, Mobile Funktionalität) erfordern kontinuierliche
Softwarepflege.
Beispiel für Modernsierungen
Anpassung von Farben, Layout, Grafiken. PL/SQL, neue GUI Java-Klassen für die GUI,
Auraplayer, Kontrastverhältnis, Pixelanpassungen, responsive Design usw.
DOAG2016_Forms12c_Upgrade.docx
Seite 5 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
6 Modernisierung durch neue PLSQL Funktionen
Forms im Wandel der Zeit
In der Regel werden in den Forms Upgrades auch die Technologien modernisiert. Aktuelle
Java Versionen kommen zum Einsatz und neue Logik kann eingesetzt werden.
Viele ältere Applikation waren auf den Stand PL/SQL 8 sehr stark eingeschränkt. Unter
den neueren Versionen kann aus dem vollen PL/SQL 11gR2 Umfang geschöpft werden.
Beispiel Parameterübergabe von PL/SQL Tabellen in Forms (Forms 11gR2/12c):
-- PL/SQL Tabelle in Forms auf Basis einer TYPE Definitionen generieren
-- create or replace type reporting.rankingsonderwerte as table of
-- reporting.rankingsonderwert;
-- create or replace type reporting.rankingsonderwert
-- as object (kunden_name varchar2(20), out number, cbs number);
FUNCTION l_func_get_sonder_tab
return reporting.rankingsonderwerte
is
l_data reporting.rankingsonderwerte := reporting.rankingsonderwerte();
l_cnt number default 0;
begin
for x in ( select * from forecast_ranking_sonder_nr)
loop
l_cnt := l_cnt + 1;
l_data.extend;
l_data(l_data.count) :=
reporting.rankingsonderwert( kunden_name=>x.kunden_name,
out=>x.kunden_out*1000,
cbs=>x.kunden_cbs);
end loop;
return l_data;
end;
-- Laufende Nr fur den Reportlauf ermitteln dafür PL/SQL Tabelle übergeben
num_rep_ranking_lfd_nr :=
rep_ranking.start_ranking
( startDatum => :b1.starttag,
sonderwerte => l_func_get_sonder_tab – Übergabe der Tabelle mit Sonderwerten
);
DOAG2016_Forms12c_Upgrade.docx
Seite 6 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
7 Automatisierte Codeanpassung mit Tools
Auf dem Markt werden verschiedene Tools für die automatisierte Codegenerierung und
Codeanpassung angeboten. Die neue Version von Oracle Forms 12c erlaubt auch eine
Konvertierung des Formscodes in XML und zurück. Auch auf diesem Weg könnte man
Anpassungen durchführen.
Beispiel und Anzeige von Codeanpassung einer Migration mit Inline-Doku (Powersearch):
DOAG2016_Forms12c_Upgrade.docx
Seite 7 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
Anzeige von Moduländerung in Forms-Apimaster 3.0
Funktion Compare (Modul vor und nach der Migration)
Automatisierte Layoutanpassung (Fenstergröße)
Codebeispiel API-Master
// Anlegen des DOKUMENTATIONSHEADER
src_new :=
'/*====================================================================================='+chr(
10)+' * Bezeichnung
: Cologne Data - Migrationsdokuheader Datei: '+lowerfilename+chr(10)+' * Inhalt
:
Dokumentation der laufenden web-tier Anpassungen'+chr(10)+' * Erstellungsdatum : '+datetostr(SYSDATE)+'
Quelldatei: '+DateTimeToStr(GetFileDate(filename))+chr(10)+' *'+chr(10)+' * Nr. Datum
Name
Beschreibung'+chr(10)+' * -------------------------------------------------------------------------------------'+chr(10)+'*/';
if v_type = 'FMB' then
begin
v_obj_timer := Generic_FindObj(frm, 'DOKUMENTATION', D2FFO_TRIGGER);
if v_obj_timer = 0 then
begin
v_obj_timer:= Generic_Create (frm,'DOKUMENTATION', D2FFO_TRIGGER);
API_SetPLSQL( v_obj_timer,src_new+chr(10)+'null;');
logadd('Trigger DOKUMENTATION angelegt.');
end;
end;
DOAG2016_Forms12c_Upgrade.docx
Seite 8 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
8 Proof of Concept – Formsupgrade durch Forms12c
Eine Lösung wurde vorgestellt, die eine Forms Migration, das Upgrade und und die
Modernisierung direkt mit einer Oracle Forms12c Maske ermöglichen kann.
Die Lösung befindet sich aktuell in der Prototyp-Phase ist.
Hier die Screenshots dazu:
Zuerst wird die Forms-Api-Master Konfiguration eingelesen und Verzeichnisse generiert
(Login oder Datenbank-Connect sind nicht notwendig)
Dann können Statistiken ausgeführt werden und zum Beispiel eine
webutil Integration mit dem Forms-Api-Master direkt ausgeführt werden:
DOAG2016_Forms12c_Upgrade.docx
Seite 9 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
9 Modernisierung durch Button-Grafikgestaltung
Viele Kunden setzen in Ihren Menüs zum Starten von Anwendungen Buttonmenüs ein.
Diese sehen in der Regel nicht sehr spannend aus. Durch moderne Grafikgestaltung
können diese Oberflächen ein modernes Look and Feel bekommen.
Vorher
Nachher
Copyright und Design: Lars Käker, Cologne Data GmbH
DOAG2016_Forms12c_Upgrade.docx
Seite 10 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
10 Stolpersteine - verwenden Sie eine aktuelle Version
12.2.1.0
12.2.1.1
12.2.1.2
6-7 Major Bugs (Workarounds möglich)
Keine Blocking Bugs (Alle Bugs aus 12.2.1.0 gefixt)
Weitere Optimierungen und kleine neue Bugfixes
a)
Um die Umgebungsvariable „workingdirectory“ zu nutzen muss in default.env die
Form_module_path Variable auskommentiert werden
#FORMS_MODULE_PATH=%FORMS_PATH%
Mit “Workingdirectory” lassen sich die Forms- und Reportsmodule einer
Konfiguration aus einem Verzeichnis aufrufen
b)
Wer sich wundert, dass bei Forms die Uhren unter der Version 12c anders laufen sollte
folgenden Parameter in der Default.env setzen:
FORMS_DATETIME_LOCAL_TZ=GMT
c)
Wer alle Features von Forms nutzen will muss eventuell in der webutiljpi.htm oder
webutilsaa.txt ein paar Variablen ergänzen
cache_archive_ex=%cache_archive_ex%
workingDirectory=%workingDirectory%
java_version=%java_version%
networkStats=%networkStats%
latencyCheck=%latencyCheck%
separate_jvm=true
Man kann sich auch ein paar Neue ausdenken und in formsweb.cfg konfigurieren
und aus Forms aufrufen
report_server_name=%report_server_name%
report_server_port=%report_server_port%
report_blobdest_prod=%report_blobdest_prod%
report_blobdest_entw=%report_blobdest_entw%
forms_session_timeout=%forms_session_timeout%
timer_debug=%timer_debug%
forms_debug=%forms_debug%
protect_heartbeat=%protect_heartbeat%
DOAG2016_Forms12c_Upgrade.docx
Seite 11 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
d)
Zum Einsatz von Reports (wird ja noch bis 2020 (extended 2023) uunterstützt) muss ein
gültiger Eintrag in der default.env vorliegen:
Beispiel:
COMPONENT_CONFIG_PATH=
C:\Oracle\weblogic1221\Oracle_Home\user_projects\domains\base_domain\confi
g\fmwconfig\components\ReportsToolsComponent\reptools1
Aktuelle Stopersteine stehen auch in der Doku von ORACLE:
http://docs.oracle.com/middleware/12212/formsandreports/releasenotesfnr/GUID-48A43867-FD34-4944-AB05-E34F3E600BDC.htm#FRREL1430
e)
Reports6i ist buggy -selbst ein „compile all“ findet die Fehler in Query-Groups
nicht. Reports12c wird Sie finden – daher nicht wundern.
11 Nutzen Sie weitere Aufrufparameter mit „FSAL“
Client Idle Demo auf dem Forms-Demoserver (https-Verbindung):
start /min "Oracle Forms 12c Console - bitte nicht schliessen" ..\jre1.8.0_77\bin\javaw.exe -jar splash:..\starticons\splash_cd.gif ..\frmsal\frmsal_1221.jar -url
https://forms12c.com/forms/frmservlet?config=webutil_frmsal
Splash-Screen Beispiel:
Verbinden Sie die Batch-Files mit Starticons (Beispiel 128 Pixel)
DOAG2016_Forms12c_Upgrade.docx
Seite 12 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
12 Sicherheit für Forms12c nur mit HTTPS
Verwenden Sie für INTRANET und INTERNET im Produktionsbetrieb IMMER eine HTTPS
Verbindung damit Ihre Passworte nicht einfach abgefischt werden können
Beispiel:
Forms Message found from 2504 to 2562
The Message in Hex
:10001341b163000b4344466f726d734861636b41b26300134344466f726d73486163
6b50617373776f726441b3630007656d7265706f73f0f001
Message size = 3
Property 0: 433 Type: 1
--- Value: CDFormsHack
Property 1: 434 Type: 1
--- Value: CDFormsHackPassword
Property 2: 435 Type: 1
--- Value: emrepos
Message OK
Read finished at:f0
as[99]='emrepos'
Anleitung zum Nachvollziehen (Tool Wireshark):
1) Simple Form, die nur Login zur Datenbank macht und eine Tabelle zur
Bearbeitung anbietet.
2) WireShark mit dem Capture - Filter "host 172.16.1.68" (das ist der Forms Server mit der 12c Applikation).
3) Obige Form via Standalone Applet (frmsal.jar) starten.
3.1) An der Datenbank anmelden.
3.2) Record in die Datenbank - Tabelle hinzufügen.
3.3) Form via Exit beenden.
4) Wireshark Capturing beenden und Protokoll in Datei standalone.pcapng
ablegen.
5) In WireShark nach GDay suchen und die folgenden 4 Byte merken.
6) In WireShark nach Mate suchen und die folgenden 4 Byte merken. Paket
Nummer merken!
7) In WireShark eine Display Filter http.request.method == POST setzen.
8) Ab dem ersten POST (einschl.) nach dem Mate - Paket bis zum letzten POST ,
werden alle Application-Octed- Stream als Hex - String 'zu Fuß' kopiert und in einer
Datei standalone_payload_as_stream.txt abgelegt.
9) Diese wird einem JAVA - Programm zur Auswertung vorgelegt.
DOAG2016_Forms12c_Upgrade.docx
Seite 13 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
13 Betreiben Sie Ihre Reportlösung im Hintergrund
Reports sollten nicht von außen sichtbar sein oder offen liegen.
Tipp:
Blobdestination und Repository in die DB und vorher pwd key in den Zugangsdaten
anlegen
<jobStatusRepository class="oracle.reports.server.JobRepositoryDB">
<property name="dbuser" value="cd_webutil"/>
<property name="dbpassword" value="csf:reports:cd_pwd_key"/>
<property name="dbconn" value="z30:1521:cds"/>
</jobStatusRepository>
<jobRepository>
<property name="dbpassword" value="csf:reports:cd_pwd_key"/>
<property name="dbconn" value="z30:1521:cds"/>
<property name="dbuser" value="cd_webutil"/>
</jobRepository>
Jeder kann nun mit einer Maske oder einer einfachen DB-Abfrage aktuelles Monitoring der
Reportsprozesse vornehmen
DOAG2016_Forms12c_Upgrade.docx
Seite 14 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
14 Machen Sie den Applikationsbetrieb transparent
Nutzen Sie PLSQL Debugfunktionen um Ihre komplexen Abläufe zu visualisieren
Verwenden Sie Funktionen um die Protokollierung einer Forms-Session zu ermöglichen:
Oder zur Analyse der Umgebung aus der Sie gestartet wurde:
Protokollieren Sie Reportaufrufparameter In der Datenbank
Helfen Sie dem DBA mit (CLIENT_INFO) Formstransparent zu machen
Clienthost, Clientuser, Country, Modul, Last Heartbeat(Timeout)
DOAG2016_Forms12c_Upgrade.docx
Seite 15 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
15 Nutzen Sie das Color Schema von Forms 12c
Die Standardeinstellung ist vielleicht noch nicht optimal kann aber in der
registry.dat geändert werden und so an die eigene Farbpalette angepasst
werden.
colorScheme.sample.lightest=0xFFFF33,
colorScheme.sample.lighter=0xFFCC33,
colorScheme.sample.light=0xCC3333
colorScheme.sample.dark=0x993333,
colorScheme.sample.darker=0x660033,
colorScheme.sample.darkest=0x003333
colorScheme.sample.selection=0x4169E1,
colorScheme.sample.pinstripe1=0xEE82EE,
colorScheme.sample.pinstripe2=0xF5DEB3
DOAG2016_Forms12c_Upgrade.docx
Seite 16 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
16 Unnötige JAR Files (Timout.jar) abschaffen
Forms12c bietet für fast alle Anforderung Boardmittel.
Nutzen Sie zum Beispiel „system.client.idl“ für die Ablösung des Java-Timers
Codebeispiel Forms 12c:
-- WHEN-EVENT-RAISED Trigger for 12cDemo "System client-idle"
--- 5.2.2016 Frank Hoffmann, Cologne Data GmbH (created)
--- After SET_APPLICATION_PROPERTY(CLIENT_IDLE_TIME,xx); was called, and the Idle time
(in sec) reached its time, this trigger will fire
Timer stoppen: SET_APPLICATION_PROPERTY(CLIENT_IDLE_TIME,0);
Timer starten (10 Sekunden) : SET_APPLICATION_PROPERTY(CLIENT_IDLE_TIME,10);
Beispielaufruf (FSAL oder Browser)
https://forms12c.com/forms/frmservlet?config=webutil_frmsal
17 Sicherheit erweitern, vorgeschaltete Maske für
Internetzugriffe einbauen
Vorteile:
Umfangreiche Sicherheitsprüfungen, Schutz vor DDOS Angriffen, Transparenz aller
Anmeldungen, Anonymisierung der Datenbank, Verzögerungen bei Falschanmeldungen…
DOAG2016_Forms12c_Upgrade.docx
Seite 17 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
18 Neue Features in Forms12c verbessern die
Ergonomie
Clientdpi=120 vergrößert die Darstellung
16 Pixel Grafiken in den Reitern helfen bei der Orientierung
Ein hohes Kontrastverhältnis verbessert die Lesbarkeit
DOAG2016_Forms12c_Upgrade.docx
Seite 18 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
19 Reports im Hintergrund generieren?
Beispiel:
BLOBDESTINATION, und ein Klick, Report wird generiert und über webutil in ein
Clientverzeichnis kopiert.
fertig
DOAG2016_Forms12c_Upgrade.docx
Seite 19 von 20
DOAG2016: FORMS12c Upgrade
16.11.2016
20 Lernen und testen - webutil-demo
Die gute alte webutil-demo aus 11g läuft auch unter 12c. Hier kann man sich gut ein paar
Anregungen holen was mit webutil möglich ist und alle Basisfunktionen testen.
Wenn die Reiter alle ohne Fehler funktionieren hat die Webutil-Integration geklappt ;)
DOAG2016_Forms12c_Upgrade.docx
Seite 20 von 20
Herunterladen