Freitag, 19. Dezember 2014

Oracle Business Rules: Verbal Rules und BPM handson

Oracle hat mit SOA/BPM 12c die Oracle Business Rules um die sog. Verbal Rules erweitert. Damit ist es möglich, Regeln umgangsprachlicher zu formulieren um Fachanwender besser in das Regeldesign einzubinden. Dieses Tutorial zeigt den Umgang mit Verbal Rules, die grundsätzliche Bedienung der BPM-Suite sollte hierfür bekannt sein.


Los geht es im JDeveloper mit einer neuen BPM Application. Diese sollte gleich ein Projekt mit einem leeren BPM Process bekommen.


Wenn der Prozess geöffnet ist, lässt sich der Busisness Catalog anzeigen (Window|Catalog). Per Rechtsklick|New|Module wird zunächst ein neues Modul erstellt.


Auf dem Modul wird dann per Rechtsklick|New|Business Object das erste BO erstellt. 

Namen vergeben und fertig.


Es bekommt zwei Attribute (price:decimal, discount:int).


Ein zweite BO namens ApprovalOutBO wird angelegt, mit einem einzigen Attribut approval (String).


Zu den Business Objects werden jetzt entsprechende Process Data Objects benötigt. Erzeugt werden diese in der Structure-Darstellung via Rechtsklick|New.

Ein sinnvoller Name sollte vergeben werden, der Typ wird ausgewählt via Browse.


Hier dann das jeweils passende BO auswählen


Das Ganze wird für beide BO's durchgeführt, so dass jetzt zwei entsprechende Process Data Objects angezeigt werden sollten.


In der Prozessdarstellung wird nun eine Rules Task im Prozess platziert.


Auf dem Reiter Implementation wird zunächst per Klick auf das grüne Plus (+) ein neues Ruleset erstellt. Wieder per Klick auf das grüne Plus können die Parameter aus dem Fenster per Drag&Drop zugeordnet werden. Die Richtung wird oben in der Combobox eingestellt. Alle Dialoge werden danach mit OK verlassen.


In der Composite Darstellung ist jetzt auch die neue Rules-Komponente vorhanden. Diese kann per Doppelklick geöffnet werden.


Im Reiter Facts finden sich dann auch die beiden Parameter wieder. In der Spalte Alias können die Namen vereinfacht werden, z.B. auf Order und Approval.


Im Reiter Globals werden zwei Konstanten angelegt. 'minimal discount' mit dem Wert 1 und 'maximal discount' mit dem Wert 10.


Das Ergebnis sollte dann wie oben aussehen.


Damit können jetzt die ersten Business Phrases erstellt werden. Diese sind die umgangsprachlichen Bausteine für die Verbal Rules. Als erstes wird eine Test Phrase namens 'Discount is valid' angelegt. Das Mapping wird dann wie abgebildet erstellt, so dass ein gültiger Rabatt abgebildet wird.


Entsprechend wird noch eine zweite Test Phrase benötigt, die genau auf das Gegenteil testet, also einen Nachlass der niedriger als der Mindest- oder höher als der Maximalwert ist.


Zusätzlich werden noch zwei Action Phrases benötigt. Create Approval erstellt mittels assert ein neues Approval mit dem Text "APPROVED"


Analog dazu wird die Action Phrase Disapprove mit dem String "DISAPPROVED" erstellt.


Die Verbal Rules lassen sich auch mehrsprachlich nutzen. Dazu wird zunächst auf dem Reiter Translations ein neues Resource Bundle für Deutsch erstellt.


Danach können hier dann passende Übersetzungen eingetragen werden.


Jetzt sind alle Bausteine komplett und die Verbal Rules können erstellt werden. Hierzu geht es weiter auf dem jeweiligen Ruleset unter dem Reiter Verbal Rules. Die Regeln können hier aus den Test- und Action-Phrases zusammengestellt werden.


Neben dem Bottom-Up Ansatz, bei dem erst wie oben alle Komponenten erstellt werden um daraus die Verbal Rules zu erstellen, ist auch ein Top-Down Ansatz möglich. Hier werden die Verbal Rules einfach frei definiert, die entsprechenden Phrases erstellt der JDeveloper im Hintergrund.
Somit könnte zunächst ein fachlicher Anwender die Regeln umgangsprachlich formulieren, und erst später werden diese von einem Entwickler auf die Technik abgebildet. Und bis das geschehen ist, befindet sich die Verbal Rule im Zustand Draft.


Bei den Business Phrases werden dann auch die automatisch angelegten Phrases angezeigt. Auch diese sind bis zur Ausformulierung im Status Draft.


Um die neu angelegten Regeln zu testen, wird eine neue Test Suite auf dem Reiter Test erzeugt.


In der Testsuite werden zwei Testfälle über das grüne Plus (+) angelegt.


Der erste Test 'Approve correct discount' testet z.B. auf einen Discount von 5 und erwartet das Ergebnis "Approved".


Nach dem gleichen Schema wird ein zweiter Test erstellt, der für einen zu hohen Discount auf das Ergebnis "DISAPPROVED" testet.


Dann geht es wieder hoch auf Ebene der Test Suites, am schnellsten per Combobox 'Test Component'. Hier wird der Test mit dem grünen Pfeil gestartet.


Wenn bis hier nichts schiefgelaufen ist, sollten die beiden Tests durchlaufen.
Somit wurde aus BPM die Business Rules Engine aufgerufen, es wurden Verbal Rules definiert und diese wurden auf korrekte Funktion getestet.