Mittwoch, 27. Juli 2011

Upgrade SOA/BPM-Suite 11.1.1.4 nach 11.1.1.5

1. Upgrade WLS 10.3.4 -> 10.3.5

Für das Upgrade muss zunächst der WebLogic Server von 10.3.4 auf 10.3.5 upgraded werden. Hierzu benötigt man den Patch von support.oracle.com. Die Patch-Nummern sind
  • 12395517 für Linux 32-Bit
  • 12395560 für Windows 32-Bit
Für alle anderen Plattformen einfach suchen nach Produkt='Oracle WebLogic Server', Release=10.3.5 und die gewünschte Plattform eingeben. Der WLS Patch Installer wird einfach mit den default-Einstellungen durchgeklickt.

2. SOA-Suite 11.1.1.5 Upgrade installieren

Als nächstes wird die SOA-Suite 11.1.1.5 benötigt, erhältlich unter http://www.oracle.com/technetwork/middleware/soasuite/downloads/index.html.

Den Installer für die SOA-Suite startet man dann nach dem Entpacken wie bei einer neuen Installation via .../Disk1/runInstaller. Die Dokumentation dazu findet man unter http://download.oracle.com/docs/cd/E17904_01/doc.1111/e16793/patch_set_installer.htm#insertedID0.


Der Installer erkennt die vorhandene Installation und bietet das Upgrade an, hier mit 'Yes' bestätigen.

3. Repository upgraden

Der nächste Schritt ist das Upgrade des Repositories mit dem Patch Set Assistant, der sich im Oracle_Home der SOA befindet unter z.B. Oracle_SOA1/bin/psa (s. Dokumentation: http://download.oracle.com/docs/cd/E17904_01/doc.1111/e16793/patch_set_assistant.htm#BABEBGEJ). Dieser muss für die Schemata DEV_MDS und DEV_SOAINFRA (Namen ggf. anpassen) analog dem folgenden Beispiel ausgeführt werden.


[oracle@oel5r5 bin]$ ./psa -dbConnectString //localhost:1521/orcl -dbaUserName sys -schemaUserName DEV_SOAINFRA
Oracle Fusion Middleware Patch Set Assistant 11.1.1.5.0

Enter the database administrator password for "sys":
Enter the schema password for schema user "DEV_SOAINFRA":
Log file is located at: /home/oracle/Oracle/Middleware/Oracle_SOA1/upgrade/logs/psa2011-08-03-14-10-17PM.log
Updating the Oracle Fusion Middleware Metadata Schema to release 11.1.1.5.0.
Updating schema for component Oracle SOA.
The command completed successfully

Das Ergebnis kann wie in der Doku beschrieben überprüft werden, oder einfach mit dem folgenden Statement:


SQL>  SELECT version, status, owner FROM schema_version_registry;

VERSION                        STATUS      OWNER
------------------------------ ----------- ------------------------------
11.1.1.4.0                     VALID       DEV_ORABAM
11.1.1.5.0                     VALID       DEV_MDS
11.1.1.2.0                     VALID       DEV_ORASDPM
11.1.1.5.0                     VALID       DEV_SOAINFRA

Zum Schluss noch gemäß Dokumentation die Packages neu compilieren und auf invalid objects prüfen.

SQL> conn / as sysdba
Connected.
SQL> @?/rdbms/admin/utlrp.sql

- - - Haufenweise Zeilen gelöscht - - -

ERRORS DURING RECOMPILATION
---------------------------
0

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

SQL> SELECT owner, object_name FROM all_objects WHERE status='INVALID';

no rows selected


4. Post Patching Tasks

Weiter streng nach Dokumentation müssen alle betreffenden Domains aktualisiert werden wie im folgenden Beispiel:


cd oracle_common/common/bin
./wlst.sh

wls:/offline>upgradeJRF('/home/oracle/Oracle/Middleware/user_projects/domains/bpm_domain')
upgradeJRF: skip, JRF is up-to-date.

Der nächste Schritt ist soa-upgrade.py, der Aufruf führte bei mir allerdings zu folgendem Ergebnis:

cd /home/oracle/Oracle/Middleware/Oracle_SOA1/bin

../common/bin/wlst.sh soa-upgrade.py --username weblogic --password Oracle123 --wlsHost oel5r5 --adminServerListenPort 7001 --targetList AdminServer

... seitenweise gelöscht ...

Current Status of your Deployment:
Deployment command type: deploy
Deployment State       : failed
Deployment Message     : weblogic.deploy.event.DeploymentVetoException: Cannot undeploy library Extension-Name: oracle.soa.worklist.webapp, Specification-Version: 11.1.1, Implementation-Version: 11.1.1 from server AdminServer, because the following deployed applications reference it: HT-01-simple-Form.war, UrlaubsAntragGenehmigen_UI.war, HT-04-Rules-Form.war, HT-02-Simple-Form.war, UrlaubsAntragErstellen_UI.war, HT-03-List-Form.war
No stack trace available.

... noch mehr gelöscht ...

WLSTException: Error occured while performing deploy : Target exception thrown while deploying application: Error occured while performing deploy : Deployment Failed. : Error occured while performing deploy : Deployment Failed.
Use dumpStack() to view the full stacktrace


Die Worklist-Application konnte nicht neu deployed werden, weil noch HumanTask-Anwendungen deployed waren die davon abhängen. Diese liessen sich auch nicht mehr über das Enterprise Manager Fusion Middleware Control undeployen.
In meinem Fall hatte sich während der Script-Ausführung die Datenbank-Verbindung zur Repository-DB irgendwie verknotet, so dass das Undeploy fehlschlug. Die schnelle Lösung war hier ein Neustart mit anschließendem manuellen Undeploy der Anwendungen.

Beim zweiten Versuch lief das Script dann auch fehlerfrei durch:

.Completed the deployment of Application with status completed
Current Status of your Deployment:
Deployment command type: deploy
Deployment State       : completed
Deployment Message     : no message

Fertig!


Mittwoch, 8. Juni 2011

JDeveloper 11.1.2.0 ist da


Kurz nach dem Release 11.1.1.5 wurde jetzt die 11.1.2.0 freigegeben. Eine Liste der neuen Features findet sich unter


Besonders auffällig ist gleich beim Start die Umstellung auf das neue JDeveloper Extension Framework, basierend auf OSGi. Die Startzeit hat sich dadurch massiv verbessert. Zum Vergleich: auf meinem System benötigt der JDeveloper 11.1.1.5 zum Start 1:24 min., der 11.1.2.0 nur noch 11 sek.

Einziger Wehrmutstropfen: Es ist ein reines Java-Release, das Tooling für SOA, BPMN und Webcenter fehlt hier noch, aber diese Veröffentlichungsstrategie ist ja bereits von vorherigen Releases bekannt. Das neue Release ist auf jeden Fall ein grosser Schritt nach vorne.

Freitag, 20. Mai 2011

Oracle - Business Transaction Management - BTM - Meine Bestellung hängt:...

Die Kollegen vom DTCC Potsdam haben auf YouTube einen eigenen Video-Channel mit deutschsprachigen Informationen zu Oracle Fusion Middleware gestartet



Viel Spaß beim Anschauen.

Mittwoch, 16. März 2011

BPM-Suite und Oracle Enterprise Repository im Zusammenspiel

Um einen Service aus dem Oracle Enterprise Repository im BPMN-Prozess zu nutzen, muss dieser zunächst auf Ebene des SCA Composites bekannt gemacht werden.

Hierzu wird von rechts aus der Component Palette ein Webservice in den rechten Bereich 'External References' des Composites gezogen.

Dies ist zunächst ein Platzhalter für einen Service, das Feld WSDL URL ist noch leer. Über einen Klick auf den Butten neben dem Feld kommt man in den Auswahldialog für einen bestehenden Service.

Die obere Auswahlbox wird umgeschaltet von 'File System' auf 'Resource Palette'. Unter 'IDE Connections' -> 'Oracle Enterprise Repository' -> 'OERConnection1' -> 'Asset Types' -> 'Service' findet sich der zuvor eingetragene HrInfoService2. Dieser wird per Doppelklick übernommen.

Die Werte werden automatisch aus dem Repository übernommen. Da unser Service nur über einen Port Type verfügt, ist dieser bereits korrekt voreingestellt und der Dialog kann mit 'OK' verlassen werden.

Der Service wird daraufhin im Composite unter 'External References' dargestellt.

Weiter geht es in der BPMN-Ansicht des UrlaubsProcess. Zunächst wird per Rechter Maustaste -> 'Add Role' eine neue Swimlane eingefügt. Als Name wird hierfür der 'Automatic Handler' ausgewählt, eine Farbe kann wahlweise vergeben werden. Die neue Swimlane wird zwischen die beiden bestehenden gezogen.
Nun wird per Drag&Drop von rechts aus der 'Component Palette' eine 'Serivce Task' genau auf die Verbindung zwischen 'Antrag' und 'Genehmigung' in der neuen Swimlane gezogen. Wenn die Verbindung richtig getroffen wurde, färbt sie sich blau.

In dem sich öffnenden Dialog wird auf im Reiter 'Basic' der Name 'Resturlaub abfragen' vergeben. Im Reiter 'Implementation' wird dann die Implementation auf 'Service Call' gestellt. Über die Lupe kann dann der HRinfoService ausgewählt werden. Die einzige Operation gethrinfo2 ist dadurch voreingestellt.
Dann ist noch der Haken zu setzen bei 'Use Associations', welche über den gelben Stift rechts davon noch definiert werden müssen.

Hier wird die personalnr aus dem UrlaubsDataObject auf die Eingabevariable empid gemappt, der Rückgabewert holidaysOut kommt in den resturlaub. Dann beide Dialoge mit 'OK' schliessen.
Jetzt muss die Anwendung neu deployed werden, damit die Änderungen auf den Server gelangen.


Jetzt kann wieder ein Urlaubsantrag erstellt werden. Wichtig ist jetzt, eine vorhandene Personalnummer zu nehmen (z.B. 100), da über diese jetzt ja über den Webservice die verbleibenden Urlaubstage ermittelt werden.
Nachdem der Antragsprozess gestartet werden kann, lässt sich im Enterprise Manager der korrekte Aufruf des Webservice überprüfen. Dort kann man Audit Trail des UrlaubsProcess' die Aktivität 'Resturlaub abfragen' über das Plus [+] aufblättern und bekommt über 'Instance left the activity' die XML-Payload angezeigt. Beispielsweise werden für die Personalnummer 100 noch 240 (!) Tage Resturlaub ausgewiesen.

Über ein Login mit dem Manager-Account jcooper/Oracle123 steht der Urlaubsantrag jetzt zur Genehmigung zur Verfügung. Hier werden auch die Verbleibenden Tage Resturlaub, die der Webservice geliefert hat, angezeigt.

Herzlichen Glückwunsch! Wenn Sie bis hier gekommen sind, haben Sie unseren BPMN und SOA-Governance Handson-Workshop erfolgreich abgeschlossen. Zusammenfassend haben wir folgendes erstellt:

  • Einen Prozess zur Anlegen und Genehmigen von Urlaubsanträgen
  • Die Ergebnisse werden über einen Adapter an ein beliebiges System weitergeleitet
  • Es wurde ein Antrag auf einen Webservice in das Repository gestellt
  • Ein bestehender Webservice wird erweitert und zur Wiederverwendung bereitgestellt
  • Der Prozess wurde um den Service erweitert, der hiermit wiederverwendet wurde.
Bei Fragen hierzu sprechen Sie uns wieder an:

Mittwoch, 2. März 2011

BPMN: Prozess-Simulation

Die Definition einer Prozess-Simulation erfolgt im 'BPM  Project Navigator'.

Auswahl von Simulations -> Simulation Definitions -> rechte Maustaste: 'New Simulation'

Der Default-Name kann übernommen werden, weiter mit 'OK'.

Wieder im BPM Project Navigator: Simulations -> Simulation Models -> 'New Simulation Model'

Der Prozess 'UrlaubsProzess' wurde bereits voreingestellt. Die Simulation sollte einen aussagekräftigeren 'Simulation Model name' bekommen wie z.B. 'UrlaubsSimulation'. Weiter mit 'OK'.

Das Simulation Model öffnet sich automatisch. Haken setzen bei 'Specify number of process instances to be created' und Vorsteinstellung 100 übernehmen.

Unter SimulationDefinition bei 'Process' die Checkbox "Include in Simulation" für UrlaubsProcess ankreuzen.

Gestartet wird die Simulation dann aus der BPMN-Ansicht des UrlaubsProcess. Hierzu im unteren Pane den Tabreiter 'Simulation' auswählen und den Start-Button (gründer Pfeil) klicken.

Im Prozess wird durch eine Animation der Lauf der Simulation angezeigt. Hier kann bei den Human Tasks die Anzal der Mitarbeiter mit + und - herauf- bzw. herabgesetzt werden, um zu überprüfen welche Auswirkungen dies auf die Simulation hat.
Im unteren Bereich wird dazu die aktuelle Statistik gezeigt.

Unter 'Simulation Models' -> 'UrlaubsProcess' -> 'UrlaubsSimulation' können die Simulationsparameter angepasst werden. Unter Flow Nodes (Prozess Schritte) können die jeweiligen Vorgaben wie Duration, Resources, Cost usw. eingestellt werden.
Damit ist der Basis-Prozess für diesen Workshop zunächst fertig.

Nächster Schritt ---> PL/SQL-Webservice erstellen, Datenbank vorbereiten

Dienstag, 1. März 2011

BPMN: Prozess im Weblogic Server testen

Zum Testen kann der BPM Workspace genutzt werden unter http://oel5r5:7001/bpm/workspace/

Login als User achrist, das Password ist im Workshop normalerweise 'Oracle123' (oder was auch immer im Kapitel 'Setup' eingegeben wurde).
Oben bei 'Applications' gibt es einen Link '[Urlaub] UrlaubsProcess v1.0' (die 'Initiator Task'), dort anklicken um den Prozess zu starten.

In dem erscheinenden Popup-Fenster kann der Urlaubsantrag mit halbwegs sinnvollen Daten gefüllt werden. Per 'Submit'-Button wird der Prozess dann mit diesen Daten gestartet.

Logout oder anderen Browser öffnen und Einloggen mit Manageraccount jcooper (pwd. s.o.). Dort ist jetzt die Task 'Urlaubsantrag genehmigen' zu sehen. Per klick auf die Zeile (und etwas warten) erscheinen im unteren Detail-Pane die Detail-Daten. Mit klick auf den 'Genehmigen'-Button verschwindet die Task.

Der den Prozess initiierende Benutzer (achrist) kann sich den Verlauf seines Urlaubsantrags direkt aus seinem Workspache anschauen. Dazu geht er auf den Reiter 'Initiated Tasks' und wählt dort z.B. State=completed und wählt dort seinen Urlaubsantrag aus. Unten in der Detail-Ansicht kann er sich dann über das Aufklappen von 'History' den Verlauf seines Prozesses ansehen.

Im Enterprise Manger (http://oel5r5:7001/em) lässt sich der gesamte Ablauf im Detail nachvollziehen. Hierzu wird der Baum unter der Farm_bpm_domain wie abgebildet geöffnet bis zum UrlaubsProject, welches  ausgewählt wird. Auf der rechten Seite kann dann die aktuelle Instanz ausgewählt werden.

Daraufhin öffnet sich ein Fenster mit dem 'Flow Trace'. Hier ist zu erkennen, dass der gesamte Ablauf durch ein Event (der manuelle Start des Prozesses) ausgelöst wurde, dann den Urlaubsprozess durchlief, welcher wiederum die Human Workflows und den File-Adapter aufrief.

Daraufhin öffnet sich ein Fenster mit dem 'Flow Trace'. Hier ist zu erkennen, dass der gesamte Ablauf durch ein Event (der manuelle Start des Prozesses) ausgelöst wurde, dann den Urlaubsprozess durchlief, welcher wiederum die Human Workflows und den File-Adapter aufrief.

Im Reiter 'Audit Trail' kann auch die Aktivität 'Bescheid genehmigt' über das [+] erweitert werden. Über den dann verfügbaren Link 'Instance left the activity' kann man die Rückgabewerte des Fileadapters sehen, welcher den geschriebenen Dateinamen und das Verzeichnis zurückliefert.

Auf dem Serversystem bzw. in der VM lässt sich der Rückgabewert überprüfen. In dem resultierenden XML-Dokument ist der korrekt durchgelaufene Urlaubsantrag inclusive des Approvals enthalten und könnte so z.B. an ein HR-System übertragen werden.

Nächster Schritt ---> BPMN: Prozess-Simulation