Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

Integration BPM TaskList Portlet in Oracle Portal 11g

leave a comment »

Verweise und Dokumentationen

  1. Oracle® Fusion Middleware Developer’s Guide for Oracle SOA Suite -> ConfiguringTask List Portlet
  2. Oracle® Fusion Middleware Administrator’s Guide for Oracle WebCenter Portal -> Configuring WS-Security
  3. Oracle® Fusion Middleware Administrator’s Guide for Oracle Portal -> Securing Access to Web Services Remote Portlets

Vorbemerkungen

Die TaskList Portlet Anwendung ist eine Produktkomponente der BPM Suite und somit funktional vorgegeben. Jegliche Änderungen der Logik, der Inhalte und des Layouts sind ohne weiteres nicht möglich. Im Wesentlichen ist dieses Portlet eine Abbildung der Worklist App der BPM Suite. Folgende Bilder zeigen das TaskList Portlet in einer WebCenter Portalanwendung sowie im Oracle Portal.

clip_image002

clip_image002[4]

Eine Gesamtarchitektur des Setups sieht wie folgt aus

clip_image002[9]

Die Portletanwendung wird auf dem Managed Server der SOA Suite installiert. Dazu muss der Managed Server zuvor mit der Portletlaufzeit erweitert werden. Weiterhin muss der WSRP request über SAML abgesichert werden, damit die Identität des Portalusers zum Portlet propagiert werden kann. Dies setzt auch voraus, dass sowohl Portal als auf BPM Suite denselben Userstore verwenden.

Im Folgenden ist die Herangehensweise der Integration beschrieben.

Vorbereitungen

  • FMW Repository der SOA Domain über RCU mit <präfix>_Portlets erweitern
  • Laufzeitumgebung für Portlets bereitstellen
    • Domain komplett stoppen
    • Installieren der WebCenter Software ins Middleware Home auf dem SOA Server
    • SOA Domain mit Oracle Portlet Producer- 11.1.1.0 (Oracle_WC1) erweitern
      • DB Verbindung auf das eben erstellte PortletDS Schema setzen
      • Auf der Wizard Seite „Optionale Konfiguration“ Deployments und Services“ aktivieren

        clip_image002[11]

      • Bei den Deploymenteinstellungen bitte schauen, welche Bibliotheken und Anwendungen nur auf das Target WC_Portlet aktiviert ist. Diese bitte auch auf das Target soa_server1 setzen.
        Das müssten sein

        • oracle.portlet-producer.jpdk(11.1.1,11.1.1)
        • oracle.portlet-producer.wsrp(11.1.1,11.1.1)
        • oracle.webcenter.skin(11.1.1,11.1.1)
        • portalTools (11.1.1.4.0)
        • wc-producer-web-lib(11.1.1,11.1.1)
        • wlp-framework-common-web-lib(11.1.1,11.1.1)
        • wlp-light-core-web-lib(11.1.1,11.1.1)
        • wlp-producer-full-web-lib(11.1.1,11.1.1)
        • wlp-wsrp-producer-core-web-lib(11.1.1,11.1.1)
        • wsrp-tools (11.1.1.4.0)
        • Bitte auch die PortletDS Datasource auf das Target soa_server1 setzen
    • Domain starten (nur AdminServer und soa_server1, aber nicht WC_Portlet . Diesen kann man über die WLS Konsole entfernen) und testen, ob die WSRP Tools funktionieren (http://<soaserver>:<soaport>/wsrp-tools )
  • Deployen eines Testportlets in das Target soa_server1, um zu sehen, ob alles gut funktioniert.

clip_image002[13]

clip_image002[15]

Der rot gekennzeichntete Link gibt die WSRP URL an, die beim Registrieren des Producers im Portal verwendet wird. Es wird hier nur überprüft, ob die Anwendung als WebService ansprechbar ist, nicht aber, ob der Inhalt der Anwendung fehlerfrei ist. Um das zu sehen, kann man oben den Link run as servlet aufrufen.

TaskList Portlet Deployen

  • Aus der SOA Domain in WLS Konsole auswählen
    • Deployments
    • Install
    • Current Location auf <Oracle_Home>/<SOA_Home>/soa/applications setzen
    • TaskListPortlet.ear auswählen
  • Target auf soa_server1 setzen
  • Deployment finalisieren
  • Url testen http://<soaserver>:<soaport>/TaskListPortlet und auf WSRP v2 klicken
    Achtung: die Url in der Dokumentation (1) ist falsch. Diese hier ist richtig.

Security (SAML) konfigurieren

Damit der Consumer (Oracle Portal) den aktuellen Benutzerkontext an das Portlet verlässlich übermitteln kann, müssen beide Parteien eine Vertrauenswürdigkeit in Form eines Keystores und der darin enthaltenen Public / Private Keys ausgemacht haben. Daher wird jeweils ein Keystore für den Consumer (portal.jks) und für den Producer (portlet.jks) angelegt und darin die entsprechenden public bzw. private keys registriert. In der Dokumentation (2) gibt es weitere Hinweise für das Erstellen solcher Keystores. Wir beziehen uns hier auf eine Typical Topology, das heißt 2 verschiedene Domains.

Da noch kein Keystore existiert, wurden diese mit dem keytool aus dem JDK erstellt. Dieser Vorgang ist einmalig, d.h. die Keystores sind universell und können auch auf andere Maschinen übertragen (kopiert) und dort eingesetzt werden. Für das Erstellen eines neuen Keystores empfiehlt es sich, den Pfad auf das Keytool in die Umgebungsvariable PATH aufzunehmen , <jdk_home>/jre/bin . Man kann beide keystores in einer Arbeitssequenz erstellen und dann auf die jeweiligen Server kopieren.

Keystores erstellen

  • keytool -genkeypair -keyalg RSA -dname „cn=portal,dc=oracle,dc=com“ -alias portal -keypass welcome1 -keystore portal.jks -storepass welcome1 -validity 4000
  • keytool -exportcert -v -alias portal -keystore portal.jks -storepass welcome1 -rfc -file portal_public.cer
  • keytool -importcert -alias portal_ws -file portal_public.cer -keystore portlet.jks -storepass welcome1
  • keytool -genkeypair -keyalg RSA -dname „cn=portlet,dc=example,dc=com“ -alias portlet -keypass welcome1 -keystore portlet.jks -storepass welcome1 -validity 4000
  • keytool -exportcert -v -alias portlet -keystore portlet.jks -storepass welcome1 -rfc -file orakay.cer
  • keytool -importcert -alias orakey -file orakay.cer -keystore portal.jks -storepass welcome1

SAML Konfiguration für Portlet Server

  • Kopieren des Keystores portlet.jks auf den Portlet Server (SOA Suite) nach <domain_home>/config/fmwconfig
  • Registrieren des Keystores in FMW Control
    • Weblogic Domain -> <Domain auswählen> -> Security -> Security Provider Configuration

      clip_image002[17]

    • Keystore aufklappen und auf Configure klicken

      clip_image002[19]

    • Formular ausfüllen
      • Keystore Type: Java Key Store (JKS)
      • Keystore Path: ./portlet.jks
      • Password: welcome1 (s.o.)
      • Confirm password : welcome1 (s.o.)
      • Signature Key Alias: portlet
      • Signature Password : welcome1 (s.o.)
      • Confirm password : welcome1 (s.o.)
      • Encryption Key Alias: portlet
      • Crypt Password: welcome1 (s.o.)
      • Confirm password : welcome1 (s.o.)

        clip_image002[21]

    • OK Klicken
    • Domain komplett neu starten (AdminServer, soa_server1)

SAML Konfiguration für Portalserver

  • Kopieren des Keystores portal.jks auf den Portal Server nach <domain_home>/config/fmwconfig
  • Registrieren des Keystores in FMW Control analog wie auf dem Portlet Server nur mit
    • ./portal.jks
    • portal als Alias Namen für die Keys

      Anmerkung: Da auf dem Portalserver der OWSM nicht installiert ist, sollte eigentlich eine Registratur über FMW Control überflüssig sein. Dennoch ist es nicht verkehrt, hier den Keystore zu registrieren., Wichtig ist, das der Keystore auf den Portalserver kopiert wird. Er wird später im Oracle Portal nochmal extra registriert

WSRP Endpoint des TaskList PortletApp sichern

Jetzt muss dem WSRP Service noch eine SAML Policy angehängt werden

  • Auf dem Portlet Server (SOA Suite) FMW Control starten
  • Öffne im Navigationsbaum Application Deployments -> TaskListPortlet
  • Öffne Menü Application Deployment -> Web Services

    clip_image002[23]

  • Wähle WSRP v2 Markup Service
  • Wähle Tabreiter OWSM Policies und klicke auf Attach/Detach

    clip_image002[27]

  • Wähle die Poliy oracle/wss10_saml_token_service_policy aus und klicke auf Attach. Sollte eine andere Policy bereits attached worden sein, bitte diese auswählen und Detach klicken. Speichern mit OK

    clip_image002[29]

  • Bitte den Managed Server (soa_server1) neu starten

Registratur des TaskList Portlets im Oracle Portal

Registratur des Keystores im Portal

  • Anmelden am Portal als Portal Admin (orcladmin)
  • Wähle Administer -> Global Settings

    clip_image002[31]

  • Wähle Tabreiter Keystore
    • Store Path : <absoluter Pfad zum Keystore> /portal.jks
    • Store Password : welcome1
    • Store Type : JKS

      clip_image002[33]

  • Klicke auf OK. Server muss nicht neu gestartet werden

Registratur des Producers

clip_image002[35]

clip_image002[37]

Das war’s. Das Portlet liegt nun im Portlet Repository und muss nur noch auf die gewünschten Seiten platziert werden.

Einschränkungen und sonstige Hinweise

Man darf nicht außer Acht lassen, dass diese Portlet eine Verwendung in Oracle Portal nicht explizit berücksichtigt. WSRPv2 ist der kleinste gemeinsame Nenner und sorgt nur dafür, dass das Portlet grundsätzlich funktionieren sollte. Da WebCenter und Oracle Portal komplett unterschiedliche Basistechnologien verwenden, gibt es naturgemäß auch entsprechende Brüche und Reibungsverluste.

Portlet Parameter

Das TaskList Portlet besitzt diverse Initialisierungsparmeter, die beim Instanzieren eines Portlets optional gesetzt werden und die die Darstellung der Portletinnhalte steuern können (siehe Dokumentation 1 – 36.4 Passing Worklist Parameters) . Werden die Parameter nicht gefüllt, ziehen Default Werte. Im WebCenter Portal kann man die Parameter im Editiermodus des Portlets sehen und füllen. Diese Parameterliste sieht man aber im Oracle Portal nicht, genauer genommen kennt das Oracle Portal den Editiermodus des Portlets gar nicht. Will man dennoch das Verhalten des Portlets über die Portletparameter steuern, so müsste man vielleicht die Default Werte in der portlet.xml der Portlet App überschreiben. Das heißt,

  • TaskListPortlet.ear auspacken
  • WAR Archiv auspacken
  • portlet.xml im WEB-INF Ordner editieren
  • Archive wieder einpacken
  • TaskListPortlet.ear neu deployen

Diese Vorgehensweise ist zum einen nicht verifiziert und zum anderen werden dann die Parameter, die eigentlich nur für die entsprechende Portlet Instanz gelten sollen, für alle Portlet Instanzen gültig. Das kann also bestenfalls nur ein Workaround sein.

Layout / Skins

Da Oracle Portal nichts mit ADF Faces und dem Skinninng zu tun hat, ziehen die normalen Trinidad Skins. Will man ein spezielles Skinning erhalten, müsste man evtl. einen Portalservice bauen (meinetwegen eine Content Komponente), der die notwendigen CSS Definitionen in die HTML Seite legt, oder man muss das Portlet EAR auspacken und eigene, neue Skins hinzufügen, alles wieder einpacken und neu deployen. Auch das ist nicht verifizert und nur eine Lösungsidee.

Dokumentationsfehler

Die Dokumentation (1) weist Fehler auf. Beispielsweise weicht die angegebene Parameterliste von der Realität ab. Es gibt z.B. den Parameter soaURL gar nicht, der die Verbindung zur SOA Suite definieren soll. Das Problem wurde hier so gelöst, dass das Portlet auf dem SOA Server deployt wurde, so dass hier diverse JNDI Einträge und andere Artefakte sowohl für die SOA Suite als auch fürs Portlet gelten.

Es sind einige kleine Unstimmigkeiten, Ungenauigkeiten und Fehler vorhanden (ungenaue Syntax, falsche URL usw.), so dass diese Dokumentation nicht als How To angewendet werden kann, ohne zu verstehen, was der Hintergrund der jeweiligen Aktivität ist.

<DM>

Written by fmtechteam

15/07/2013 um 15:39

Veröffentlicht in Detlef Müller, Portlet, SOA, WebCenter

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: