Freitag, 1. Juli 2016

Forms 12c - Webutil Konfiguration

Nachdem die Windows VM mit Forms 12c und Reports nun läuft und konfiguriert ist, hat noch ein spannender Teil gefehlt. Die Konfiguration von Webutil, welches doch viele Forms Anwender gerne verwenden. Webutil ermöglicht es den neueren Forms Web Versionen auf den Client des Anwenders zuzugreifen und Client-Funktionalitäten auszuführen, die normalerweise durch die Kobination JRE/Applet unterbunden sind.

Die WebUtil Core Features (alles, was man sonst selbst in Java Beans nachbauen müßte)
  • Text_IO: Read and write text files on the client machine.
  • Tool_Env: Read client side variables
  • C API on the client:  Interface with client side C.
  • Host: Run Host commands on the client machine
  • OLE2:  Integrate with client side OLE (e.g. Word and Excel)
  • Enhanced Host commands: Host command can now call back into Forms!
  • Browser functions: Integrate with the browser.
  • File transfer: Move from between the client, application server and database.
  • Client machine information:  Read information from the client machine
  • READ/WRITE_IMAGE_FILE: Read and write client side images
  • Get_File_Name: Use a file selection dialog on the client machine         
Der größte Teil der Webutil-Funktionalität ist bereits vorkonfiguriert, doch sind noch einige Schritte nach der Forms-Installation durchzuführen. Das wichtigste zuerst; man muß ein Zusatzpaket herunterladen und einbinden jacob.jar (Java COM Bridge). Zu Forms 12c passt die jacob-Version Jacob 1.18-M2, die gibt es hier zum Download. JACOB is a JAVA COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls into the COM and Win32 libraries. JACOB runs on x86 and x64 environments supporting 32 bit and 64 bit JVMs.

Enthalten sind hauptsächlich 3 wichtige Dateien:
  • jacob.jar
  • jacob-1.18-M2-x64.dll
  • jacob-1.18-M2-x86.dll
nötige Schritte bei der Konfiguration:
  • Signieren der Datei jacob.jar mit einem gültigen Zertifikat und in das Verzeichnis ORACLE_HOME/forms/java kopieren (dort ist schon die bereits signierte Datei frmwebutil.jar)
  • Kopieren der Datei jacob-1.18-M2-x86.dll in das Verzeichnis ORACLE_HOME/forms/webutil/win32 und jacob-1.18-M2-x64.dll in ORACLE_HOME/forms/webutil/win64
  • bei Bedarf, falls eine C-dll Datei auf dem Client aufgerufen werden soll, Kopie von ffisamp.dll aus dem Demo-Test in den Unterordner ORACLE_HOME/forms/webutil//win32
  • Anpassen der Konfigurationsdatei webutil.cfg
    Darin kann konfiguriert werden, ob Webutil Fehler und Meldungen geloggt werden sollen. Ebenfalls läßt sich ein- und ausschalten, ob der Dateitransfer gestattet ist. Als nächstes läßt sich einstellen, in welches Verzeichnis die benutzten DLL-Files auf den Client kopiert werden. Und es wird konfiguriert, welche DLL's Webutil verwendet. Falls diese nicht in /win32 und/oder /win64 liegen und die angegebene Größe in Bytes nicht zu tatsächlichen Größen passt, gibt es später Fehlermeldungen beim Aufruf der Forms-Anwendung.
  • Einspielen eines Datenbank-Packages webutil_db mit dem Skript (ORACLE_HOME/forms/create_webutil_db.sql) und Erstellen eines Public Synonyms dafür
Hier der Eintrag der Webutil-Beispiel Konfiguration in der formsweb.cfg

# Sample configuration for deploying WebUtil. Note that WebUtil is
# only installed with the Forms Builder and is also available for download
# from OTN.
[webutil]
WebUtilArchive=frmwebutil.jar,jacob.jar
WebUtilLogging=off
WebUtilLoggingDetail=normal
WebUtilErrorMode=Alert
WebUtilDispatchMonitorInterval=5
WebUtilTrustInternal=true
WebUtilMaxTransferSize=16384
baseHTML=webutilbase.htm
baseHTMLjpi=webutiljpi.htm
archive=frmall.jar
lookAndFeel=oracle
form=webutil_demo.fmx

Hat man dies alles getan, ist Webutil fast schon einsatzbereit. Als weitere Forms-Module liefert Oracle eine webutil.pll und webutil.olb mit. Am einfachsten packt man diese 2 Module in das Verzeichnis, dass der Variable FORMS_PATH entspricht und kompiliert die webutil.pll einmal durch und generiert ggf. das webutil.plx.

Zum Testen, ob alles richtig eingestellt ist, liefert Oracle ein Forms webutil_demo.fmb zum Testen, erhältlich unter dem folgenden Link. Damit kann geprüft werden, ob die Webutil-Basis Funktionen richtig laufen.



unter Forms 10g geht die Uhrzeitermittlung noch korrekt



Hinweise / Auffälligkeiten:
Warum die Maske bei der Time Zone Europe/Berlin 18:13 Uhr ausspuckt, obwohl es erst 16:13 Uhr ist, ist mir noch rätselhaft. Was auch unter der Version 12c nicht bei mir funktioniert hat, ist die Demo im Reiter Browser, um eine Message an den Browser zu senden (liegt vielleicht daran, dass keine Statusleiste im Browser ist). Sonst lief die Demo-Version sehr gut bei mir. Hinzukommen können auf Nicht-Windows Umgebungen Fehlermeldungen bei nicht richtig gesetzten Berechtigungen auf Verzeichnissen für den Application Server, damit der Datei-Upload/-download funktioniert.

Nachtrag vom 4.7.2016, dank einer Antwort von Frank Hoffmann via Twitter
Es muss bedingt durch eine Änderung im Forms Patch 12.2.1.1 (change im Time zone Support) in der default.env eine Umgebungsvariable gesetzt werden:
FORMS_DATETIME_LOCAL_TZ=GMT
 
Bis bald wieder sagt
Holger