Posts mit dem Label soa_bpm_gov_ws werden angezeigt. Alle Posts anzeigen
Posts mit dem Label soa_bpm_gov_ws werden angezeigt. Alle Posts anzeigen

Dienstag, 6. September 2011

BPMN-SOA-Governance Workshop: Password expired beim Start der SOA-Suite

Der Workshop ist jetzt schon ein paar Monate her. Startet man jetzt die SOA-Suite erneut (Desktop-Link 'Start SOA' oder 'Start WLS') bekommt man eine Fehlermeldung 'password expired'.

Abhilfe schaffen die folgenden Schritte:

  • Auf dem Desktop mit rechtem Mausklick ein Terminal öffnen
  • Im Terminalfenster:

    . oraenv [RETURN]
    [RETURN]
    sqlplus / as sysdba
  • In SQLPLUS dann folgendes eingeben:

    ALTER PROFILE DEFAULT LIMIT
    FAILED_LOGIN_ATTEMPTS UNLIMITED
    PASSWORD_LIFE_TIME UNLIMITED;

    alter user dev_mds identified by Oracle123;
    alter user dev_soainfra identified by Oracle123;
    alter user dev_ORABAM  identified by Oracle123;
    alter user dev_ORASDPM  identified by Oracle123;
Im Anschluss bitte das Fenster mit der SOA-Suite, welche auf den 'password expired'-Fehler gelaufen ist schliessen und neu starten, dann funktioniert alles wieder.

---8<-----------------------------------------------------------------------------------------

Update: für SOA 12c die folgenden user ändern:

alter user DEV_IAU_APPEND identified by oracle;
alter user DEV_IAU identified by oracle;
alter user DEV_OPSS identified by oracle;
alter user DEV_MDS identified by oracle;
alter user DEV_STB identified by oracle;
alter user DEV_SOAINFRA identified by oracle;
alter user DEV_ESS identified by oracle;
alter user DEV_WLS identified by oracle;
alter user DEV_UMS identified by oracle;
alter user DEV_OER identified by oracle;
alter user DEV_MFT identified by oracle;
alter user DEV_IAU_VIEWER identified by oracle;

 

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

Montag, 28. Februar 2011

BPMN: Deployment auf Weblogic Server

Das Deployment erfolgt im JDeveloper aus dem Application Navigator (falls nicht sichtbar: --> View --> Application Navigator).

Hier sollte es 3 Projekte geben: 'Urlaub' (das BPM Projekt), 'UrlaubsAntragErstellen_UI' und 'Genehmigung_UI' (die Projekte der Web-UI). Bitte alle 3 Projekte minimieren, das Projekt 'Urlaub' auswählen und rechte Maustaste -> deploy _> Urlaub.

'Deploy to Application Server' auswählen.
'Overwrite any existing composites with the same revision ID' ankreuzen, Next.
'Overwrite Existing Application' ankreuzen. Ebenso links neben 'Projects' den Haken setzen bei 'Click here to select all WAR profiles to deploy'. Dadurch werden die beiden UI-Projekte mit ausgewählt, ohne welche die Anwendung nicht lauffähig wäre.
Hier den SOABPM Server auswählen.
Der AdminServer ist genau richtig, Next.
In der Übersicht wird dann per 'Finish' das Deployment gestartet.


Wenn alles geklappt hat, steht unten im Log am Ende ---- Deployment finished. ----.

Nächster Schritt ---> BPMN: Prozess im Weblogic Server testen

Donnerstag, 24. Februar 2011

BPMN: Benutzeroberflächen generieren

Weiter geht es im SCA-Composite. Dieses sollte noch in einem Tabreite offen sein, ansonsten im Application Navigator das Projekt 'Urlaubsantrag' expandieren, SOA Content expandieren und Doppelklick auf composite.xml.

Im Composite sind jetzt auch die beiden Human Tasks zu sehen, die im Prozess definiert wurden. Diese müssen jetzt mit einer Benutzeroberfläche versehen werden. Start mit Doppelklick auf 'AntragErstellen.task'.

Weiter geht es oben links mit Create Form|Launch Task Form Wizard. Jede Taskform wird ein eigenes Projekt im JDeveloper. Als Name bitte 'UrlaubsAntragErstellen_UI' eingeben (UI = User Interface - ist wichtig, damit man im Application Navigator den Überblick behält beim Deployment) und 'OK'.

Die ersten beiden Seiten im Task Form Wizard können mit 'Next' übersprungen werden. Auf der Seite für den Body den Title eingeben 'Bitte Urlaubsdaten erfassen'. Setup des Seitenlayouts nach belieben  und weiter mit 'Next'.

Auf der folgenden Seite für die erste Spalte die gewünschten Attribute (Vorschlag: Name, Datum_von, Datum_bis, Anzahl_Tage, Resturlaub) auswählen oder einfach alle übernehmen (bei nur einer Spalte). Weiter mit 'Next', ggf. wiederholen mit zweiter Spalte (Vorschlag: Vertreter, Kommentar, Status, Personalnr).
Auf der letzten Seite für den Footer als Title 'Weitere Informationen' eintragen sowie 'Comments' und 'History' selektieren. Bei 'Display in … columns' den Zähler auf 2 hochsetzen. Abschließen mit 'Next' und 'Finish'.

Als Ergebnis erhält man die generierte ADF Eingabeform.
Entsprechend soll jetzt noch die zweite Human Task für die Genehmigung erstellt werden, beginnend mit dem Doppelklick auf AntragGenehmigen im composite.xml. Als Projektname sollte 'Genehmigung_UI' vergeben werden.
Auch hier erhält man wieder eine Task-Form wie oben abgebildet. An dieser Stelle speichern und alle Fenster ausgenommen composite.xml schliessen.

ACHTUNG: da sich im JDeveloper 11.1.1.4 ein kleiner Fehler eingeschlichen hat, bitte noch die verlinkten Anweisungen befolgen. Da der Fehler aber mit 11.1.1.5 wieder behoben wurde, ist dieser Workaround dort nicht mehr notwendig.

Nächster Schritt ---> BPMN: Deployment auf Weblogic Server

Mittwoch, 23. Februar 2011

BPMN: Objekte mit dem Prozess verknüpfen

Weiter geht es wieder im Prozess, den man erreicht über den entsprechenden Tabreiter bzw. das durch Doppelklick im 'BPM Project Navigator' auf den 'UrlaubsProcess'.

Auf dem Prozessschritt Antrag (erstellen) rechter Mausklick, Properties. Wechseln auf Tabreiter 'Implementation' und neben dem leeren Feld 'Human Task' das grüne Plus-Symbol (+) anklicken.
Im 'Create Human Task' Dialog den Namen setzen auf 'AntragErstellen' und das Pattern auf 'Initiator' umstellen. Der Title wird 'Bitte Urlaubsdaten erfassen'.
Neben Parameters das grüne Plus-Symbol (+) klicken und aus dem Dialog 'BrowseDataObjects' das 'UrlaubDataObjekt' mit der linken Maustaste von rechts aus dem Fenster in die leere Parameterliste ziehen, loslassen und 'editable' auswählen.
Jetzt das Fenster 'Browse Data Objects' schließen, ebenso 'Create Human Task' via 'OK' - eine Human Task definition wird angelegt (noch nicht das UI). STOP! An dieser Stelle noch nicht mit 'OK' den Properties-Dialog verlassen! Statt dessen bei 'Data Associations' den Haken setzen bei 'Use Associations' und klick auf den gelben Bleistift daneben ('Edit Data Associations').

Es öffnet sich der 'Data Associations' Editor. Hier per Drag&Drop von rechts das UrlaubDataObject in das Input-Feld links vom 'urlaubsantrag'-Prozessobjekt bewegen. Im Output-Feld ist das UrlaubDataObject bereits vorbelegt.
Jetzt die beiden Fenster jeweils mit 'OK' schließen. Das Aussehen der User Task hat sich geändert: es ist der kleine Pfeil dazugekommen, weil es eine 'Initiator Task' ist.

Die gleichen Schritte werden jetzt noch einmal wiederholt für die Aktivität 'Genehmigung' mit folgenden Parametern: Name: 'AntragGenehmigen' (Pattern: Simple), Title: 'Bitte Antrag prüfen', Parameters: UrlaubDataObjekt: editable: angehakt. Dieses Mal kann auch gleich das 'Outcome Target' unten entsprechend auf 'Outcome' gesetzt werden. Über das 'Outcome'-Object wird die Genehmigung [APPROVE] oder Ablehnung [REJECT] vom Manager weitergegeben im Prozess.

Dann ist bei Data Associations wieder der Haken zu setzen bei 'Use Associations'. Mit dem Klick auf das Edit-Icon (gelber Bleistift) gelangt gelangt man wieder zu den 'Edit Data Associations'. Dieses Mal müssen auf der linken Seite alle Felder einzeln zugewiesen werden, ausgenommen das Feld Resturlaub. Dieses wird anschließend mit einer Funktion gefüllt über den fx-Button.

Hier wird zunächst der 'Mode' oben links umgestellt auf 'XPath Exp.', bei Functions werden die 'Conversion Functions' voreingestellt. Dann wird die Funktion 'string' ausgewählt und nach oben in die 'Expression' übernommen per Doppelklick oder den Button 'Insert Into Expression'.
Oben in der 'Expression' setzt man den Cursor zwischen die beiden Klammern von 'string()'. Nun wird links unten bei 'Variables' ResturlaubReturn ausgewählt und wiederum oben in den Ausdruck eingefügt, so dass dieser jetzt aussieht wie auf dem Bild oben.
Die drei Fenster werden jeweils geschlossen mit 'OK'.

In der Prozess-Grafik verschwindet auch sogleich die Warning, da diese Task nun vollständig implementiert ist. Es ist allerdings noch kein User Interface generiert worden, das folgt später. An dieser Stelle bitte wieder speichern.

Jetzt wird die Verbindung 'abgelehnt' (von Bescheid zu BescheidAbgelehnt) bearbeitet. Hierzu den Pfeil anklicken und rechte Maustaste, Properties, wechseln auf den Tab Properties, Type setzen auf 'Condition'. Über das Icon: [fx] gelangt man in den Expression Builder.


Unter 'Variables' die Variable Outcome auswählen und per Drag&Drop oder über den Button 'Insert into Expression' in das Feld 'Expression' bewegen. Hier muss es nun heissen: Outcome == "REJECT" (Wichtig!!! => vor REJECT ist ein doppeltes Gleichheitszeichen und REJECT ist von Anführungszeichen umschlossen) !). Verlassen mit zwei Mal 'OK'.
Der Manager erhält den Urlaubsantrag und gemäß des "Simple" Patterns (nur APPROVE oder REJECT wählen zu können) wählt er bei Nicht-Genehmigung REJECT und somit läuft der Prozess jetzt diesen Pfad entlang. APPROVE wird nicht modelliert, denn das entspricht dem Default/Standard Pfad.

Nun wird der Prozessschritt BescheidGenehmigt implementiert. Hierzu Rechtsklick auf die Aktivität BescheidGenehmigt und 'Properties' auswählen. Dann auf Reiter 'Implementation', Implementation Type setzen auf 'Service task' und Implementation 'Service Call' auswählen. Weiter über Lupensymbol neben dem Feld 'Name'. Hier 'AntwortSchreiben' auswählen und die Operation 'write' wird automatisch übernommen. Noch nicht OK klicken.


Jetzt wieder 'use Associations' ankreuzen und den Button (Stift) für 'edit Data Associations' anklicken. In der Mitte das Data Objekt 'Urlaubsdaten' expandieren durch [+], ebenso rechts das "Urlaubsantrag" Dataobject.
Von rechts mit gedrückter rechter Maustaste die UrlaubsAntragObjekt Attribute nach links in die korrespondierenden Felder unter 'Input' ziehen. Ausnahmen: die Attribute 'status' und 'resturlaub'. Hierhin kommen statt dessen die Data Objekts 'Outcome' und 'ResturlaubReturn', für letzteres bitte wieder die Funktion anwenden wie oben beschrieben. Beenden mit zwei Mal 'OK'.



Die Warnung im Prozessschritt verschwindet, da jetzt die Implementierung auf den Service Call zum File-Adapter gesetzt wurde. Hierdurch werden die UrlaubsDataObjekt-Inhalte und der Status (REJECT oder APPROVE) in ein Textfile geschrieben.
Die gleichen Schritte sind noch ein mal entsprechend für die Aktivität 'BescheidAbgelehnt' durchzuführen, dann alles sichern. Unser Prozess sollte jetzt keine Warndreiecke mehr verzeichnen.

Nächster Schritt ---> BPMN: Benutzeroberflächen generieren