Dienstag, 22. Dezember 2015

Tetris in Forms 12c

Heute habe ich mal wieder etwas mit Forms 12c experimentiert. Aber nur zum Spielen und zu sehen, ob das Vorhaben im neuen Forms noch funktioniert.

Ausgangspunkt ist das Opensource-Framework LAF von Francois Degrelle, ein Set von Forms-Modulen und Pluggable Java Components zur Erweiterung der Standard Funktionalität von Forms.
Link zum Framework: klick

Vor knapp einem halben Jahr sah ich in Francois Blog einen Hinweis auf die Programmierung eines Spiels Tetris in Forms. Er schreibt selbst, es wäre ein wenig "buggy", aber es reicht zur Demonstration.

Und siehe da, selbst unter Forms 12c läuft es recht gut. Hier der entsprechende Beweis:
Die ankommenden Figuren lassen sich drehen, schnell nach unten schieben und nach rechts und links verschieben.

Damit das Ganze läuft, ist folgendes zu tun:
  1. Die Sourcen aus dem o.g. Blog herunterladen und das Modul brickdown.fmb kompilieren
  2. Die Sourcen für das Framework LAF herunterladen und extrahieren
  3. Daraus die JAR-Datei laf_11112.jar in den Standardpfaf der Forms-Jar Dateien kopieren. Bei Bedarf das File noch entsprechend valide signieren oder die URL zum Forms-Aufruf als Ausnahme in den Java-Einstellungen eintragen
  4. eine Konfiguration (bei mir test3) in der formsweb.cfg eintragen
  5. nun noch das Modul brickdown.fmb starten und das Ganze sollte laufen
Beim Ausführen des Moduls habe ich Unterschiede festgestellt, ob es mit dem Firefox oder dem IE ausgeführt wird. "Buggy" ist es, weil manchmal Teile der Bausteine verschwinden oder die Felder Level bzw. Score nicht gefüllt sind. Es ist aber auch eher eine Demo, was mit PJCs alles möglich ist.

Damit verabschiede ich mich auch für dieses Jahr, wünsche ein frohes Weihnachtsfest und einen guten Rutsch.

Ciao, Holger

Donnerstag, 17. Dezember 2015

Den POST_QUERY Trigger zähmen oder wie verändere ich Datensätze, ohne dass es Forms merkt

Im aktuellen Projekt kam wieder einmal die Situation auf, dass ein Bereich einer Forms Maske Daten anzeigt, die einerseits Non-Basetable-Items sind und nicht direkt in der Query gefüllt werden.

Dafür bietet sich natürlich der POST_QUERY Trigger an, der dann diese Felder mit Daten füllt. Kleiner Nachteil der Methode, der Record-Status wird verändert und ein erneutes Abfragen der Daten führt zu der berühmten Frage:

Ok kein Problem, dafür gibt es einen guten Workaround. Einfach wieder nach dem Füllen der Daten den Record-Status auf QUERY setzen.


set_record_property(:system.trigger_record, 'block_name', status, query_status);
 

Und nun kommt der komplexere Weg, ich möchte Daten verändern, die Basetable-Items sind und schon in der eigentlichen Query gefüllt. Da kommt die nächste Feinheit, die Daten sind nämlich gesperrt zur weiteren Bearbeitung, falls der Locking-Modus auf Immediate steht.

Als mögliches Fehlerbild ergibt sich dann sowas z.B.

Fehlermeldung auf der Datenbank, dass der Datensatz gesperrt ist

Und das obwohl die Daten sogar per Programmcode gelöscht und neu abgerufen worden sind in Forms durch ein CLEAR_BLOCK und ein EXECUTE_QUERY.

Die Lösung des Dilemmas erfolgt durch Veränderung des Locking-Modus im POST_QUERY:

Set_Block_Property ('block_name', LOCKING_MODE, Delayed);

   Wert der Basetable-Items verändern z.B. durch ein SELECT INTO...

Set_Block_Property ('block_name', LOCKING_MODE, Immediate);
set_record_property(:system.trigger_record, 'block_name', status, query_status);
Was heißt das nun?

Es werden oftmals in Forms durch einen POST_QUERY Trigger Daten in anderen Feldern verändert, die ohne die obige Sonderbehandlung dann möglichweise zu einem komischen Verhalten führen kann. Aber durch geschickte Befehle kann so getan werden, als merke Forms die nachträglichen Zuweisungen nicht.



Viel Spaß beim Ausprobieren
Holger

Mittwoch, 16. Dezember 2015

der Vorweihnachtspost mit Impressionen aus Köln

Heute mal kein technicher Post von mir. Letzte Woche ergab es sich, dass ich in Köln verweilen durfte. Davon habe ich nun einige Impressionen mitgebracht, teilweise vom Mediapark und dem Dom bzw. Hauptbahnhof. Es war bereits dunkel und die Fotos sind dementsprechend gelungen.

das Cinedom im Mediapark

der Mediapark aus einer etwas anderen Richtung

der Kölner Dom mit Weihnachtsbaum im Vordergrund

das Dean & David Restaurant am Hauptbahnhof

Viele Vorweihnachtsgrüße
Holger

Donnerstag, 10. Dezember 2015

Oracle: Bekanntgabe einer neuen Lifetime Support Policy zur Oracle Produkten inkl. Fusion Middleware 12c

Sie ist raus die News des Tages, zumindest für mich.

Eben per Twitter von Michael Ferrante getwittert, die neue Lifetime Support Policy einiger Oracle Produkte, inklusive der neuen Oracle Fusion Middleware Komponenten.

Zu finden unter:
http://www.oracle.com/us/support/library/lifetime-support-middleware-069163.pdf

Darin sind auch gleich die neuen Versionen von Forms und Reports 12c enthalten.

Wichtigstes Datum darin, Extended Support für Fusion Middleware 12c (12.2.x) bis Okt. 2023, der wichtigere Premier Support geht bis Okt. 2020.

Das heißt doch folglich: noch lange Bestandsschutz für diverse Oracle Anwendungen mit Aussicht auf neue Versionen danach.

Für Forms 11 Anwendungen könnte dann bald die nächste Migrationsstufe anstehen, hin zur neuen Variante 12c. Der Aufwand dürfte sich in Grenzen halten, einfach die bestehenden Applikationsmodule kompilieren und fertig. Schwieriger ist da sicherlich nur der Aufbau der neuen Server.

es grüßt ein erfreuter Holger

Montag, 7. Dezember 2015

Forms 12c: Installation im Detail (3) - Forms Einrichtung und Erstellung WLS Domäne

Fast fertig.

Alle Vorbereitungen zur letzten Etappe der Forms 12 Konfiguration sind getroffen. In den vorherigen Teilen 1 und 2 haben wir den Weblogic Server 12 installiert, die Software installiert und das Repository kreiert.

Nun folgt noch die Kür, Konfiguration der neuen WLS Domänen.

Wir starten mit dem Aufruf der Datei config.cmd aus dem Verzeichnis %ORACLE_HOME%\oracle_common\common\bin.




Auf der Seite werden die zu konfigurierenden Produkte ausgewählt.

wir wählen aus:
Oracle Reports Server - 12.2.1 [ReportsServerComponent]
 Oracle Reports Bridge - 12.2.1 [ReportsBridgeComponent]
Oracle Reports Application - 12.2.1 [reports]
 Oracle Reports Tools - 12.2.1 [ReportsToolsComponent]
 Oracle HTTP Server (Collocated) - 12.2.1 [ohs]
Oracle Forms - 12.2.1 [forms]
Oracle Enterprise Manager - 12.2.1 [em]

 

hier die Weblogic Zugangsdaten eingeben


die hier Zugangsdaten zum Repository Schema eingeben

wenn die einzelnen Passwörter unterschiedlich sind, müssen diese auch einzeln
angegeben werden


Managed Server und Systemkomponenten zum Konfigurieren auswählen






AdminServer zu AdminServerMachine rüberschieben

hier muss die OHS ausgewählt und manuell als ohs1 angelegt werden



nun auf Erstellen klicken

Fortschritt beim Erstellen der Domain

fertig, fertig, fertig....

abschließende Übersichtsseite mit URL der Admin Console

Jetzt ist alles fertig konfiguriert, laufen will es aber noch NICHT.
Also starten wir noch ein paar Batch-Dateien, Reihenfolge ist wichtig:
  1. Nodemanager starten als Admin -> startNodeManager.cmd im Verzeichnis C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\bin
  2. Admin-Server starten -> startWebLogic.cmd im selben Verzeichnis
  3. die Datei startManagedWebLogic.cmd mit dem Parameter WLS_FORMS starten
  4. für WLS_REPORTS muss man das natürlich auch machen

Nun sind alle Server und Domänen gestartet und wir schauen mal in den neuen schicken Enterprise Manager:


So zu guter Letzt wollen wir auch noch zum Test das Forms Servlet starten:
Das Resümee von allem:
Nach den ganzen Mühen sind wir geschafft, aber glücklich. Die Installation schon oft wiederholt, weil ein Klick falsch war oder vergessen wurde. Einfach ist es nicht, umständlich eher. 
Wenn es läuft, natürlich sehr gut. Demnächst wollen wir dann mal schauen, ob wir beim Systemstart die ganzen Server als Windows-Dienst starten können, damit das nicht immer per Hand passieren muss. Reports-Server konfigurieren und einrichten fehlt noch. 
Vielleicht kann ich ja mit dieser Anleitung experimentierfreudigen Anwendern bzw. Administratoren helfen, die es wagen wollen, in die neue Forms 12 Welt vorzudringen. Ich glaube, es gibt noch viel zu entdecken dort.
Ciao bis bald,
Holger