Oracle Fusion Middleware Blog

deutsche Informationen rund um Oracle Fusion Middleware

Archiv für die Kategorie ‘Forms

Installation von Oracle Fusion Middleware 11g – Forms & Reports

ohne Kommentare

Seit dem 2. Juli 2009 ist das neue Release der Oracle Fusion Middleware 11g verfügbar. Da sich seitdem die Fragen zur Installation von Forms & Reports 11g auf einem Entwicklerarbeitsplatz häufen, sind die wesentlichen Informationen und Schritte in diesem Papier zusammengestellt.

Das Papier ist keine offizielle Produkt-Dokumentation von Oracle und soll den Oracle® Fusion Middleware Installation Guide for Oracle Portal, Forms, Reports and Discoverer 11g Release 1 (11.1.1) lediglich ergänzen.

<JM>

Geschrieben von fmtechteam

September 22, 2009 um 9:17

Veröffentlicht in Appserver, Forms, Reports

Oracle Fusion Middleware 11g mit Forms und Reports verfügbar

ohne Kommentare

Seit Anfang Juli steht das neue Release der Oracle Fusion Middleware zum Download im Oracle Technet. Für Entwickler, die mit Oracle Forms und Reports arbeiten, ergeben sich daraus eine Reihe von Veränderungen:

  • Forms und Reports bringen eine ganze Reihe neuer Funktionen mit
  • Die Test- und Ablaufumgebung für Forms & Reports 11g ist der Oracle WebLogic Server.
  • Für die Installation von Forms, Reports, Portal und Discoverer auf einem Entwickler-Arbeitsplatz gibt es kein spezielles Installations Package mehr. Entwicklungs- und Laufzeit-Umgebung werden mit dem gleichen Package installiert und unterscheiden sich nur in der Auswahl der Komponenten. Eine Installationsbeschreibung für einen kompletten Forms/Reports-Entwicklungs-Arbeitsplatz findet man hier.
  • Der Oracle Designer ist nicht Bestandteil der Fusion Middleware 11g. Wer ihn benutzen will, benötigt weiterhin die Oracle Internet Developer Suite 10g Release 2. Für die Datenmodellierung und das Datenbank-Design steht aber mit dem SQL Developer Data Modeler seit Kurzem eine Alternative zur Verfügung.

<JM>

Geschrieben von fmtechteam

Juli 24, 2009 um 1:48

Veröffentlicht in Appserver, Forms, Reports

Migration von Oracle Forms nach Application Express (APEX)

ohne Kommentare

Mit der Version 3.2 von Oracle Application Express (APEX) ist ein Converter für Oracle Forms verfügbar. Zunächst müssen die existierenden  Anwendungsdateien für den Import in das APEX-Repository vorbereitet werden:

  • Konvertieren der binären Forms-Module (fmb, olb, mmb) mit dem Utilty frmf2xml.bat in das XML-Format
  • Konvertieren der PL/SQL-Bibliotheken (pll) im Forms Builder oder im Batch in das Textformat (pld)
  • Konvertieren der Reports-Module (rdf) im Reports Builder oder im Batch in das XML-Format

Danach können die Dateien in einen APEX-Workspace geladen werden. Interessant sind die vielfältigen Möglichkeiten der Analyse, die dem Entwickler  nach dem Laden der Applikation zur Verfügung stehen.
Anschließend kann aus den geladenen Metadaten eine APEX-Applikation generiert werden.
Das Vorgehen ist in einem Dokument an Hand eines Beispiels beschrieben.

Man sollte sich allerdings darüber im Klaren sein, dass mit diesem Schritt keinerlei Integration der Anwendung mit dem Desktop mehr möglich ist, wie sie heute in vielen Forms-Applikationen noch üblich ist  (MS Office, lokale Treiber etc.).

Wenn man langfristig über Alternativen zu Oracle Forms nachdenkt, sollte man für größere und komplexe Forms-Anwendungen das Oracle Application Development Framework (ADF) in die engere Wahl ziehen.

<JM>

Geschrieben von fmtechteam

April 8, 2009 um 5:02

Veröffentlicht in ADF, Forms

Aufruf von PL/SQL Stored Procedures in ADF-Anwendungen

ohne Kommentare

Viele Oracle-Anwender haben einen Teil der Geschäftslogik als PL/SQL Stored Procedures in der Datenbank abgelegt. Wie kann man diese Logik weiterhin nutzen, wenn statt Oracle Forms und Reports zukünftig Oracle ADF in der Anwendungsentwicklung zum Einsatz kommt?

Ein gangbarer Weg besteht darin, die Stored Procedure als Web Service zu kapseln und ADF Data Controls für den Web Service zu erzeugen.
Soll das Framework ADF Business Components (ADF BC) eingesetzt werden, so gibt es derzeit keine deklarative Funktionalität, um zum Beispiel ein Entity Object (EO) auf Basis einer Stored Procedure zu definieren.  Eine Integration von Stored Procedures ist aber programmatisch möglich.
Die Dokumentation beschreibt dazu zwei Wege:

  • den Aufruf von Stored Procedures/Functions mit unterschiedlichen Parameter-Konstellationen (siehe Doc) an beliebiger Stelle im Framework ADF BC.
  • den Aufruf von Insert/Update/Delete-Prozeduren, die den Zugriff auf DB-Tabellen kapseln und im Entity Object aufgerufen werden (siehe Doc).

Der im zweiten Weg beschriebene prozedur-basierte Tabellenzugriff wird in vielen Forms-Anwendungen genutzt; häufig wurde dazu der Table API Generator des Oracle Designer eingesetzt. Will man diese Prozeduren weiter verwenden, muss die doDML()-Methode der EntityImpl-Klasse überschrieben werden. Die Dokumentation enthält Beispiele für den Programmcode und beschreibt auch die Möglichkeit, Select- und Lock-Funktionalität hinzuzufügen.

<JM>

Geschrieben von fmtechteam

März 16, 2009 um 6:21

Veröffentlicht in ADF, Forms

Getaggt mit

Web Services im BI Publisher 10.1.3.4

mit einem Kommentar

Nachdem die neue Version des BI Publisher 10.1.3.4 verfügbar ist, wollte ich einen bestehenden Web Service-Aufruf aus einer Forms-Applikation testen. Der Aufruf konnte ohne Fehler ausgeführt werden, der erzeugte Report aber war leer.
Was war hier los?

Nähere Untersuchungen zeigten, dass der BI Publisher Server eine out-Datei mit den richtigen Ergebnissen erzeugt hatte, aber die PDF-Datei aus 0 Byte bestand.

Des Rätsels Lösung ist ein neuer Parameter SizeOfDataChunkDownload, der dem Request-Objekt mit setSizeOfDataChunkDownload() hinzugefügt werden muss. Der Parameter gibt an,  in welchen Portionen die out-Datei in die PDF-Datei gestreamt wird. Fehlt der Parameter, wird die out-Datei nicht übertragen. Gibt man für den Parameter -1 an, wird die gesamte out-Datei in einem Stück übertragen.

Das aktualisierte Papier zum Aufruf von BI Publisher Web Services 10.1.3.4 aus Oracle Forms findet man hier.

Übrigens gibt es mit der Version 10.1.3.4 wieder eine zusammengefasste aktuelle Dokumentation der Web Services, die auch die neu hinzugekommenen Methodenaufrufe enthält.

<JM>

Geschrieben von fmtechteam

Dezember 8, 2008 um 12:37

Persistente Referenzen in Forms erzeugen

mit 2 Kommentaren

Ein Kunde berichtete, dass er innerhalb eines Forms-Programmes ein neues Java-Objekt mit:
obj := myclass.new();
erzeugt habe.
Während der erste Aufruf einer Methode mit diesem Objekt noch funktionierte, bekam er beim zweiten Aufruf die Fehlermeldung “Unable to call out to Java, Invalid object type for argument 1”.
Bei näherer Betrachtung stellte sich schnell heraus, dass das Objekt offensichtlich nach dem ersten Aufruf nicht mehr existierte. In der Dokumentation heißt es dazu, dass die Lebensdauer des Objektes auf die Laufzeit der Programmeinhzeit bzw. des Triggers beschränkt ist.

Forms bietet hier die Möglichkeit, durch eine persistente Referenz das Objekt am Leben zu erhalten:
mypkg.instobj := ORA_JAVA.NEW_GLOBAL_REF(obj);

Jetzt kann das Objekt aus verschiedenen Programmeinheiten bzw. Triggern referenziert werden.
Zum Schluss sollte man nicht vergessen, diese Referenz wieder mit DELETE_GLOBAL_REF() zu entfernen.

<JM>

Geschrieben von fmtechteam

Dezember 7, 2008 um 9:03

Veröffentlicht in Forms

Getaggt mit ,

Wie für eine Forms-Applikation der Titel des Browser-Fensters bzw. -Tabs gesetzt werden kann

ohne Kommentare

Wird eine Oracle Forms-Applikation im Web Browser ausgeführt, erscheint normalerweise „Oracle Application Server Forms Services“ als Titel im Browser-Fenster des Internet Explorer 6 oder als Titel des aktiven Tabs im Internet Explorer 7 oder Mozilla Firefox.
Der Titel kann in der Konfigurationsdatei formsweb.cfg geändert werden, er bleibt allerdings ein Stück statischer Text.
Was aber, wenn man als Titel aussagekräftigere Informationen wie z.B. den Modulnamen, den Namen des Benutzers oder Ähnliches anzeigen möchte ?

Hier die Schritte, um den Titel entsprechend anzupassen:

  1. Modifizieren des verwendeten Basis-Templates (zum Beispiel: basejini.html) durch Hinzufügen einer JavaScript-Funktion:
    <script>
    function change_pagetitle(title)
    {
    document.title=title;
    }
    </script>
  2. In jedem Forms-Modul muss ein Trigger (PRE-FORM oder WHEN-NEW-FORM-INSTANCE) definiert werden, der nach dem Start der Form folgenden Programmcode ausführt:
    web.show_document(‘javascript:change_pagetitle(‘||’“‘ || get_application_property(current_form_name) || ‘“‘||’) ‘ ,’_self’)
    In diesem Beispiel wird der Name der laufenden Form als Titel angezeigt. Natürlich können auch beliebige andere Informationen in den Titel aufgenommen werden.

Mit der Version Oracle Forms 11g wird es eventuell eine noch elegantere Lösung für diese Anforderung geben, die das angekündigte JavaScript API verwendet. Lassen wir uns überraschen. <JM>

Geschrieben von fmtechteam

Oktober 6, 2008 um 1:25

Veröffentlicht in Forms

Getaggt mit , ,

Aufruf eines Web Service aus einer Forms-Anwendung

mit einem Kommentar

OK, für einen OO-erfahrenen Entwickler scheint dies eine klare Sache zu sein. Aber manchmal trägt es zum Verständnis bei, die Dinge etwas zu sortieren.
Soll ein Web Service aus einer Oracle Forms-Anwendung aufgerufen werden, sind ein oder mehrere Java-Klassen des Web Service-Client in das Forms-Modul zu importieren.

Dabei können verschiedene Fälle auftreten:

  1. Wenn die Klasse static ist, enthält die Signatur der importierten Methoden in den meisten Fällen nur einfache Datentypen wie in diesem Beispiel:
    FUNCTION <method>(
    a0 VARCHAR2,
    a1 VARCHAR2,
    a2 VARCHAR2) RETURN BOOLEAN;
    Diese Methode kann auf einfache Weise innerhalb der Forms-Applikation aufgerufen werden, indem die entsprechenden Werte übergeben werden.

  2. Wenn die Klasse nicht vom Typ static ist, d.h. es werden Instanzen dieser Klasse zur Laufzeit erzeugt, findet man in der Signatur der generierten PL/SQL-Methode ein Objekt:
    FUNCTION <method>(
    obj ORA_JAVA.JOBJECT,
    a0 VARCHAR2,
    a1 VARCHAR2) RETURN ORA_JAVA.JOBJECT;
    In diesem Fall muss beim Aufruf ein initialisiertes Objekt dieser Klasse übergeben werden. Dieses Objekt kann durch die Methode new() innerhalb des PL/SQL-Codes erzeugt werden:
    obj := <class>.new();

  3. Wenn die Klasse nicht vom Typ static ist und ein zusätzliches Objekt als Parameter benötigt, sieht die Signatur der PL/SQL-Methode folgendermaßen aus:
    FUNCTION <method>(
    obj ORA_JAVA.JOBJECT,
    a0 ORA_JAVA.JOBJECT,
    a1 VARCHAR2,
    a2 VARCHAR2) RETURN ORA_JAVA.JOBJECT;
    In diesem Fall muss wie im zweiten Fall ein initialisiertes Objekt für diese Klasse mittels der Methode new() im PL/SQL-Code erzeugt werden:
    obj := <class>.new();
    Zusätzlich
    muss ein Objekt für den Parameter übergeben werden, indem die entsprechende Klasse (des Parameter-Objektes) in das Forms-Modul importiert und eine neue Instanz dieser Klasse erzeugt wird:
    a0: = <additional_class>.new();

<JM>

Geschrieben von fmtechteam

Oktober 4, 2008 um 6:44

Veröffentlicht in Forms

Getaggt mit ,