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

Tip: BPM Human Task und java.io.FileNotFoundException

Leider hat sich in die Oracle BPM Suite 11.1.14 (PS3) ein kleines Problem eingeschlichen, s. auch OTN-Forum.

Startet man einen Prozess über eine Initiator Task und füllt dann die Task-Form aus, bekommt man zum Abschluß ein Fenster mit der Fehlermeldung

OracleJSP error: java.io.FileNotFoundException:
Set the init-param debug_mode to "true" to see the complete exception message

Das Problem taucht auf, weil der JDeveloper 11.1.1.4 vergisst, die Empty1.jspx anzulegen. Folglich muss zur Behebung auch nur diese Datei erzeugt werden. Also Rechtsklick auf dem entsprechenden UI-Projekt und 'New' auswählen.

Dann JSF|JSF Page auswählen und 'OK'

'Create as XML Document (*.jspx)' ankreuzen, damit es eine .jspx-Datei wird, den Namen ändern auf Empty1.jspx und mit OK abschließen.

Diese jspx braucht weiter nichts zu enthalten, einfach neu deployen und das Problem ist behoben.