Oracle Fusion Middleware Blog

deutsche Informationen rund um Oracle Fusion Middleware

JDeveloper Extension für WebCenter & SOA 11g

Hinterlasse einen Kommentar »

Seit 01. Juli ist das Release 11g zum Download auf  OTN verfügbar. Die JDeveloper Studio Edition enthält diesmal nicht die Erweiterungen für WebCenter und SOA. Diese müssen über das Updatecenter geladen werden. Wer dies nicht aus dem JDeveloper heraus tun möchte oder kann, oder wer dies in mehreren JDeveloper Installationen tun möchte, kann auch die Extensions hier runterladen und dann offline über die Updatefunktion einspielen. Die Erweiterungen findet man zum Download auf http://www.oracle.com/technology/products/jdev/101/update/fmw_products.xml

Hier eine kurze Anleitung für das Online Update.

OWC_Extension11g_1

OWC_Extension11g_2

OWC_Extension11g_3

<DM>

Written by fmtechteam

Juli 7, 2009 um 9:17

Veröffentlicht in JDeveloper, SOA, WebCenter

Nativer, asynchroner BPEL Prozeßaufruf vom Oracle Service Bus (OSB)

Hinterlasse einen Kommentar »

Der Oracle Service Bus (OSB)  kann BPEL Prozesse nicht nur über SOAP sondern auch  nativ durch Verwendung von RMI aufrufen, hier also mittels den Oracle Application Server Boardmitteln “opmn” oder “ormi”.

Um diese Integration zu erreichen,  sollte folgende, aktuelle  SW eingesetzt werden:

  • Oracle Service Bus 10gR3 (10.3.0)
  • Oracle SOA Suite 10.1.3.4 MLR7 oder höher

Des Weiteren müssen im OSB noch aktuelle JAR Files aus der SOA Suite ausgetauscht und ein Umgebungsparameter geändert werden, um folgenden  Fehler zu vermeiden:

  • com.evermind.server.rmi.RMIConnectionException: Disconnected: javax.xml.namespace.QName; local class incompatible: stream classdesc serialVersionUID

Unten genannte JAR-Files sollten im OSB Installationsverzeichnis in der Datei /osb_10.3/lib/transports/bpel10gtransport.ear aus der SOA Suite Installation ersetzt werden:

  • aus $ORACLE_HOME/bpel/lib/orabpel.jar
  • aus $ORACLE_HOME/bpel/lib/orabpel-common.jar
  • aus $ORACLE_HOME/bpel/lib/xmlparserv2.xml
  • aus $ORACLE_HOME/j2ee/home/oc4jclient.jar

Zusätzlich muss im OSB Installationsverzeichnis unter /user_projects/domains/osb_domain/bin in der  Datei setDomainEnv.sh folgende Zeile ersetzt werden:

  • JAVA_PROPERTIES=”-Dplatform.home=${WL_HOME} -Dwls.home=${WLS_HOME} -Dweblogic.home=${WLS_HOME} “
  • durch
  • JAVA_PROPERTIES=”-Dplatform.home=${WL_HOME} -Dwls.home=${WLS_HOME} -Dweblogic.home=${WLS_HOME} -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0″

Nun kommen wir zur eigentlichen Konfiguration des Oracle Service Bus, um nachfolgende Abbildung zu realisieren.

OSB BPEL Use Case

Vorausgesetzt wird, dass ein asynchroner BPEL Prozeß schon existiert. In der OSB Entwicklungsumgebung “Workshop for WebLogic 10gR3″ sollte eine Verbindung zum OSB Server, also zum WLS, aufgebaut werden. Durch betätigen der rechten Maustaste im Tabwriter “Server” wird eine Verbindung erzeugt.

OSB Server

Als nächstes wird ein “Oracle Service Bus Configuration Project” angelegt, siehe nachfolgende Abbildung. In diesem OSB Configuration Project wird ein OSB Project erzeugt mit 4 Folderinhalten:  proxy services, business services, WSDLs und credential (OSB Configuration Project markieren und über rechte Maustatste OSB Project und anschließend 4 mal im OSB Project Folder auswählen).

OSB Configuration Project

Für die Kommunikation zwischen OSB und dem BPEL Prozeß wird die WSDL des BPEL Prozesses in den Folder WSDLs importiert. Dazu den Folder WSDL markieren, rechte Maustaste drücken und über Import, Oracle Service Bus – Resources from URL,  die entsprechende BPEL WSDL URL angeben.

WSDL

Nun werden im Folder “business services” zwei Business Services angelegt. Zum Einen ein Service für die Kommunikation zum BPEL Prozeß, hier BPELAsync.biz genannt und zum Anderen ein Business Service für die Kommunikation mit der Queue, der den BPELCallback beinhaltet, als BPELAsyncCallback.biz bezeichnet.

Business Services

BPEL Async WSDLBPEL Async Protokollauswahl

Die Konfiguration für den  TabWriter “BPEL 10g Transport”  (Art des Services, Callback Adresse, Credentialinformationen) wird später vorgenommen.

Der zweite Business Service BPELAsyncCallback wird nun konfiguriert. Das Anlegen erfolgt wie beim ersten Business Service. In diesem Business Service muss nun der Callback Port vom BPEL-Prozess aufgenommen und der weitere Transport zur Queue konfiguriert werden. Die Konfiguration der Queue und der ConnectionFactory einschließlich JMS Server wurde zuvor im WLS vorgenommen und wird hier nicht näher beschrieben.

BPEL Async Callback WSDL

BPEL Async Callback Protokollauswahl

Im TabWriter “JMS Transport” in obiger Abbildung muss noch der Destination- und Message Typ angegeben werden: Queue und Text.

Jetzt können für die beiden Business Services die zugehörigen Proxy Services im Folder proxy_services erzeugt werden, die das Weiterleiten zum Business Service bewerkstelligen. Hierzu wird der jeweilige Business Service markiert und mit der rechten Maustaste wird unter Oracle Service Bus der Proxy Service mittels “Generate Proxy Service” erstellt (ohne Abbildung). Anschließend werden weitere Transportkonfigurationen vorgenommen.

Proxy Service BPEL Async_proxy

Für den obigen Proxy Service BPELAsync_proxy muss keine weitere Transportkonfiguration vorgenommen werden. Allerdings für BPELAsyncCallback_proxy. Hier muss das Transportprotokoll auf sb gesetzt werden, damit der OSB den BPELCallback empfangen und zum Business Service weiterleiten kann.

Zweiter Proxy Service BPELAsyncCallback_proxy.proxy

Damit die Kommunikation zwischen zwischen OSB und BPEL Prozeß erfolgen kann, muss noch die Service Account Resource angegeben werden. Sie beinhaltet Adminusername und Password der SOA Suite. Hierzu den Folder credential markieren und mit der rechten Maustaste unter New den Eintrag “Service Account” auswählen.

Service Account

Nun müssen wir noch abschließend, wie ganz oben erwähnt, im Business Service BPELAsync die BPEL10gTransport-Informationen hinterlegen.

BPEL Async BPEL 10g Transport

Zum Testen des Projektes wird das Projekt zum OSB hinzugefügt. Hierzu unter Servers das Projekt hinzufügen.

WLS/OSB ProjektNun den Proxy Service BPELAsync_proxy.proxy im Folder proxy_serves markieren und mit der rechten Maustastenfunktionalität “Run AS, Run on Server” den Testclient mit entsprechende Eintraegen starten. Anschließend kann in der Queue im WLS nachvollzogen werden, dass die Eintraege, manipuliert durch den asynchronen BPEL Prozeß, angekommen sind.

<KM, 05.06.2009>

Oracle Service Bus Configuration Project

Written by fmtechteam

Juni 5, 2009 um 11:53

Das neue Web Service Interface im BI Publisher 10.1.3.4.1

Hinterlasse einen Kommentar »

Seit Mitte Mai ist das Release 10.1.3.4.1 des BI Publisher verfügbar und unter der Haube verbirgt sich bereits das neue Web Service Interface des kommenden Release 11.
Der Endpunkt des neuen Interface lautet:   http://<host>:<port>/<applikation>/services/PublicReportService_v11?wsdl

Zu den Neuerungen zählen:

  • neue und geänderte komplexe Datentypen
  • neue und geänderte Operationen.

So gibt es einen neuen Datentyp FileDataSource, mit dem XML-Dateien als Datenquelle für Berichte verwendet werden können.
Eine weitere wichtige Neuerung betrifft die Möglichkeit, anstelle Username/Passwort mit einem Session Token zu arbeiten.

Wer jetzt damit beginnt, die Web Services des BI Publisher zu nutzen, sollte sofort mit dem neuen Web Service Interface einsteigen.
Eine Beschreibung der Funktionalität ist im “New Features Guide – 10.1.3.4.1” zu finden.

<JM>

Written by fmtechteam

Mai 25, 2009 um 7:28

Veröffentlicht in BI Publisher

ADF Faces Stylesheet rückverfolgen

Hinterlasse einen Kommentar »

Problem:

Wie finde ich die entsprechende Styledefinition einer UI Komponente in einem ADF Faces Skin, um diese wie gewünscht zu gestalten.

Lösungsvariante 1:

Man kennt die ADF Faces UI Komponenten und schaut in deren Dokumentation, um die notwendigen Stylesheet Klassen in einer eigenen Skindefinition anzugeben.

Lösungsvariante 2:

Man verfolgt den im Browser ankommende Stylesheet zurück bis zur Definition im ADF Faces Skin. Aber wie ?

An dieser Stelle sei nochmal erwähnt, dass ein Skin eine auf CSS 3.0 Syntax basierende Stylesheetdefinition ist. Skins benutzen also CSS, um die Darstellung von ADF Faces und Trinidad UI Komponenten zu definieren.

Für Variante 1 ist die im Blogeintrag vom 11.Februar beschriebene Lösung ein gutes Hilfsmittel. Deshalb behandeln wir nun Variante 2. Als Beispiel dazu dient eine ADF Faces Rel. 11 Anwendung, die mit einem Standard ADF Faces Skin („blafplus-rich“) versehen ist.

Beispielanwendung

Bild 1: ADF Beispielanwendung

Wir wollen nun die CSS Definition für bestimmte Oberflächenelemente ermitteln, um sie wunschgemäß anpassen zu können. Schauen wir zunächst auf den im Browser ankommenden HTML Sourceode und suchen den Link zur Stylesheet Definition, die der Browser umsetzt.

<link rel=”stylesheet” charset=”UTF-8″ type=”text/css” href=”/HRSystem-ViewController-context-root/adf/styles/cache/blafplus-rich-desktop-f72ien-ltr-gecko-1.9.0.8-cmp.css”>…

Hier erkennen wir, dass dies aber nicht die eigentliche CSS Definition aus dem Skin ist, sondern ein vom ADF Faces Renderer zur Laufzeit generierter Stylesheet. Dabei liest der ADF Faces Renderer die Skindefinition aus  und erstellt eine browserspezifische CSS Datei mit dynamischen, komprimierten Klassennamen. Wie schließen wir aber aus den dynamischen CSS Klassen im Browser auf den originär im Skin definierten Style der betreffenden UI Komponente?

Über die Firefox Community gibt es ein paar nützliche Add-Ons, die wir hier gut gebrauchen können. Es empfehlt sich, die Firebug- und die Web Developer – Erweiterungen runterzuladen und zu installieren, falls nicht schon geschehen.

Nach erfolgreicher Installation der Plugins starten wir nocheinmal die ADF Anwendung, um jetzt beispielsweise die Darstellung eines Tabreiters vom Browser bis zur ursprünglichen Definition im Skin zurückzuverfolgen. Dazu klickt man mit der rechten Maustaste auf den Tabreiter und wählt „Inspect Element” aus.

css_bild2a

Bild 2: Aufruf Firebug Erweiterung in Firefox

Firebug öffnet sich und stellt im unteren Fenster den HTML Source Code sowie im rechten Fenster die im Browser anliegenden CSS Settings dar.

css_bild3

Bild 3: Ansicht Firebug Erweiterung in Firefox

Bewegt man nun den Mauszeiger im Source Code Fenster über andere Codpassagen, so wird im oberen Darstellungsfenster die betreffende HTML Komponenten markiert.

Eine schöne Möglichkeit, gleich an Ort und Stelle in der laufenden Anwendung verschiedene CSS Attribute auszutesten, bietet die Web Developer Erweiterung. Mit Ctrl + Shift + E gelangt man in den CSS Editor und sieht nocheinmal den geladenen Stylesheet.

css_bild4

Bild 4: Ansicht Web Developer Erweiterung - Stylesheet Editor

Man kann in dieser Liste Attribute von CSS Klassen verändern und gleich die Auswirkungen auf der Seite sehen.

Über Firebug findet man also die gültige CSS Klasse der betreffenden UI Komponente (hier Tabreiter) und über Web Developer kann man diese gezielt verändern. In unserem  Beispiel möchten wir den Text des Tabreiters ShowDetailItem1 rot einfärben. Wir klicken daher im Browserfenster mit der rechten Maustaste auf den Text ShowDetailItem1 und wählen Inspect Element aus. Wir sehen, dass hier die CSS Klasse .xs4 verwendet wird.

css_bild4

Bild 5: Ad-Hoc Änderungen von Stylesheet Attributen im Web Developer

Im CSS Editorfenster links suchen wir nun die CSS Klasse  .xs4. p_AFSelected und deren Attribut [color:#000000], welches wir dann auf [color:#FF0000] ändern. Man sieht sofort, dass sich der Text des Tabreiters rot färbt.

Bleibt nur noch die Frage, wie man von der dynamisch erzeugten CSS Klasse .xs4 im Browser auf die tatsächliche Styledefinition im ADF Faces Skin schließt? Dort werden ja die für die jeweilige UI Komponente festgelegten CSS Klassen definiert, die nicht xs4 oder ähnlich heissen, sondern irgendwie den Komponentennamen enthalten. Man muss zuerst in der web.xml der JSF Anwendung die Kompression der CSS Klassen deaktivieren. Damit werden keine dynamischen Klassennamen vom Renderer generiert, sondern die Klassennamen des Skins verwendet. Man öffnet im JDeveloper im Projekt der JSF unter Web-INF die web.xml und fügt unter Context Initialization Parameters einen neuen Parameter org.apache.myfaces.trinidad.DISABLE_CONTENT_COMPRESSION mit dem Wert True hinzu.

css_bild5c

Bild 6: Einschalten der CSS Dekompression in der web.xml

Nun startet man die Anwendung neu und schaut über Firebug auf den Tabreiter. Die Stylesheet Klasse des Tabreitertextes heißt in unserem Beispiel nun .af_PanelTabbed _tab-text-link (Zur Erinnerung: vorher war der CSS Klassenname .xs4)

css_bild6

Bild 7: dekomprimierte Stylesheet Klassenamen

Auf OTN kann man sich die Skindefinition dieser UI Komponente anschauen und weiß nun, welche Klassen in der CSS Datei des eigenen Skins definiert werden müssen, um ein gewünschtes Layout der Komponente zu erhalten. Man kann aber auch aus aus dem im Browser anliegenden Klassennamen auf die CSS Klasse im Skin schließen, in dem man .af_ mit .af| und dann jedes weitere _ mit :: ersetzt. In gegebenen Beispiel würde man .af_PanelTabbed _tab-text-link mit .af|PanelTabbed ::tab-text-link ersetzen und hätte ohne nachzuschauen den Klassennamen für die eigene Skindefinition.

Wie man eine eigene ADF Faces Skindefinition anlegt,  ist in der ADF Faces Doku beschrieben oder in diversen BLOG Postings zu finden.

<DM>

Written by fmtechteam

April 9, 2009 um 7:24

Veröffentlicht in ADF, JDeveloper, WebCenter

Migration von Oracle Forms nach Application Express (APEX)

Hinterlasse einen Kommentar »

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>

Written by fmtechteam

April 8, 2009 um 5:02

Veröffentlicht in ADF, Forms

Aufruf von PL/SQL Stored Procedures in ADF-Anwendungen

Hinterlasse einen Kommentar »

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>

Written by fmtechteam

März 16, 2009 um 6:21

Veröffentlicht in ADF, Forms

Tagged with

Übersicht über alle ADF Faces R11 UI Komponenten

mit einem Kommentar

adf-faces-rich-client-demoWer sich mit komponentenbasierter Oberflächenentwicklung beschäftigt, wird mit Sicherheit bei JSF, MyFaces und ADF Faces landen. Die Frage, die sich dabei immer wieder stellt ist, welche Komponente nun für das zu bearbeitende Anwendungsdetail geeignet ist. Die mit jedem Release wachsende Zahl an Komponenten in den jeweiligen UI Frameworks kann man kaum noch soweit verinnerlichen, dass man, ohne nachzuschauen, weiß, welche Komponente in der IDE ausgewählt werden soll. Entweder schaut man in irgendwelche statischen Dokumentationen oder man nutzt mehr oder weniger immer die selben Komponenten, die man kennt (Oder man erinnert sich an diesen Blogeintrag :-) ).

Man benötigt also eine irgendwie geartete Übersicht aller Komponenten und deren Anwendungsbereiche und Gestaltungsmöglichkeiten. Für ADF Faces Release 11 ist seit geraumer Zeit eine solche Übersicht in Form einer interaktiven Anwendung entweder Online oder als Offline Version zum Downloaden verfügbar.

Hier kann man gut strukturiert auf Layoutkomponenten und deren Gestaltungsmöglichkeiten schauen. Eine sehr schöne Hilfe und Erleichterung für jeden ADF Entwickler.

<DM>

Written by fmtechteam

Februar 11, 2009 um 3:56

Veröffentlicht in ADF, JDeveloper, WebCenter

Zusätzliches Web Service API im BI Publisher 10.1.3.4c

Hinterlasse einen Kommentar »

Im aktuellen Release 10.1.3.4 des Oracle BI Publisher gibt es mit dem Patchset c ein zweites Web Service API (siehe Web Services im BI Publisher 10.1.3.4).
Die WSDL der neuen Web Services lautet:
http://<host>:<port>/xmlpserver/services/PublicReportService_v11?wsdl
So enthält die Methode zum Aufruf von Berichten runReport() einen komplexen Datentyp dynamicDataSource, die eine JDBC Datasource oder eine File Data Source sein kann.
Damit lassen sich beim Berichtsaufruf eine gültige JDBC Datenquelle oder der Name einer XML-Datei übergeben.

<JM>

Written by fmtechteam

Januar 28, 2009 um 7:53

Veröffentlicht in BI Publisher

Windows im JDeveloper 11.1.1.x

Hinterlasse einen Kommentar »

Im Eifer der Arbeit kann es passieren, dass die gewohnte Ordnung der vielen Windows (Structure Pane, Log Window, Property Inspector, Component Palette etc.) im JDeveloper 11.1.1.x verlorengeht. Oft ist es dann sehr mühevoll oder fast unmöglich, das gewohnte Bild wiederherzustellen.

Die aktuelle Anordnung der Windows wird in der Datei <JDeveloper_Home>/system11.1.1.0.31.xx/o.ide/windowinglayout.xml gespeichert. Löscht man diese Datei vor dem Start des JDeveloper, wird das ursprüngliche Layout wie nach der Installation verwendet.

<JM>

Written by fmtechteam

Januar 12, 2009 um 9:57

Veröffentlicht in JDeveloper

Tagged with

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>

Written by fmtechteam

Dezember 8, 2008 um 12:37