Beruflich Dokumente
Kultur Dokumente
2016
BEST PRACTISES
Friedhold Matz,
Proof of Concept
Cologne Data GmbH
Erstelldatum: 2016-11-16
Version: 1.1
1 Inhaltsverzeichnis
1 Inhaltsverzeichnis.........................................................................................................2
2 Hinweis zu den Empfehlungen.....................................................................................2
3 Firmenvorstellung ........................................................................................................3
4 Kurze Statistik der Teilnehmer der Veranstaltung ......................................................4
5 Migration, Upgrade oder Modernisierung? ..................................................................5
6 Modernisierung durch neue PLSQL Funktionen ..........................................................6
7 Automatisierte Codeanpassung mit Tools...................................................................7
8 Proof of Concept – Formsupgrade durch Forms12c ....................................................9
9 Modernisierung durch Button-Grafikgestaltung ....................................................... 10
10 Stolpersteine - verwenden Sie eine aktuelle Version ................................................ 11
11 Nutzen Sie weitere Aufrufparameter mit „FSAL“...................................................... 12
12 Sicherheit für Forms12c nur mit HTTPS .................................................................... 13
13 Betreiben Sie Ihre Reportlösung im Hintergrund ...................................................... 14
14 Machen Sie den Applikationsbetrieb transparent ..................................................... 15
15 Nutzen Sie das Color Schema von Forms 12c............................................................ 16
16 Unnötige JAR Files (Timout.jar) abschaffen .............................................................. 17
17 Sicherheit erweitern, vorgeschaltete Maske für Internetzugriffe einbauen ............. 17
18 Neue Features in Forms12c verbessern die Ergonomie ............................................ 18
19 Reports im Hintergrund generieren? ......................................................................... 19
20 Lernen und testen - webutil-demo ............................................................................. 20
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.
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.
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.
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.
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.
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;
Beispiel und Anzeige von Codeanpassung einer Migration mit Inline-Doku (Powersearch):
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)+'*/';
Vorher
Nachher
a)
Um die Umgebungsvariable „workingdirectory“ zu nutzen muss in default.env die
Form_module_path Variable auskommentiert werden
#FORMS_MODULE_PATH=%FORMS_PATH%
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
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%
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
http://docs.oracle.com/middleware/12212/formsandreports/releasenotes-
fnr/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.
set tmp=%USERPROFILE%\webutil\java\forms12c_12213
start /min javaw -splash:splash_forms12c.gif -jar frmsal_12213.jar -url
"https://www.forms12c.com/forms/frmservlet?config=DEMO0001"
https://forms12c.com/forms/frmservlet?config=demo0001
Splash-Screen Beispiel:
Beispiel:
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.
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
Oder zur Analyse der Umgebung aus der Sie gestartet wurde:
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
-
-- 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
https://forms12c.com/forms/frmservlet?config=demo0006
Vorteile:
Umfangreiche Sicherheitsprüfungen, Schutz vor DDOS Angriffen, Transparenz aller
Anmeldungen, Anonymisierung der Datenbank, Verzögerungen bei Falschanmeldungen…
BLOBDESTINATION, und ein Klick, Report wird generiert und über webutil in ein
Clientverzeichnis kopiert.
fertig
Wenn die Reiter alle ohne Fehler funktionieren hat die Webutil-Integration geklappt ;)