RuleEvaluatorAction

Übersicht

Die Action org.b2bbp.runtime.actions.internal.RuleEvaluatorAction kann nach konfigurierten Regeln unterschiedliche Outbound Services ausführen und dabei bestimmte MessageContext-Variablen füllen.

Zur Verknüpfung der Ausdrücke gibt es die logischen Ausdrücke ‚AND‘, ‚OR‘ und ‚NOT‘, sowie Klammern (). Des Weiteren gibt es die folgenden Funktionen:

  • equals(MessageContextType, String)

Diese Funktion prüft, ob der Wert MessageContextType aus dem MessageContext dem übergebenen String entspricht.

  • contains(MessageContextType, String)

Diese Funktion prüft, ob der Wert MessageContextType aus dem MessageContext den übergebenen String enthält.

  • matches(MessageContextType, Regex)

Diese Funktion prüft, ob der Wert MessageContextType aus dem MessageContext dem übergebenen regulären Ausdruck genügt.

  • equalsEdi(EdiPath, String)

Diese Funktion prüft, ob der Wert des EdiPath-Ausdrucks dem übergebenen String entspricht.

  • containsEdi(EdiPath, String)

Diese Funktion prüft, ob der Wert des EdiPath-Ausdrucks den übergebenen String enthält.

  • matchesEdi(EdiPath, Regex)

Diese Funktion prüft, ob der Wert des EdiPath-Ausdrucks dem regulären Ausdruck genügt.

Ausdrücke

Im Folgenden sei als Beispiel dieser MessageContext gegeben:

  • a = A
  • b = B
  • B3P_BASE_MESSAGE_EDI = UNB+UNOC:3+9800081500008:502+9870077400009:502+120801:1436+110000058914’… BGM+E02+110000058914+9’ …UNZ+1+110000058914’

Beispiele:

  • equals("a","A") Returns true

  • equals("a","A") AND equals("b", "B") Returns true

  • equals("a","A") AND equals("b", "ZZZ") Returns false

  • equals("a","Z") OR equals("b", "B") Returns true

  • NOT equals("a","Z") Returns true

  • equalsEdi("BGM+6+0", 110000058914) Returns false

  • matchesEdi("BGM+2+0", "\b11.*58914\b") Returns true

Regeln

Beispiel:

EDM[B3P_MAIL_TO="edm_zeitreihen@ewe.de", B3P_SEND_APERAK=false, B3P_SEND_CONTRL=false] 
<= equalsEdi("UNH+2+0", APERAK) AND 
(equalsEdi("UNB+3+0",9900496000005) OR equalsEdi("UNB+3+0", 9900496000005)``

Grammatik

forwardingRules: forwardingRule* EOF
forwardingRule: serviceList ‘<=’ expression ‘;’
serviceList: service (‘,’ service)*
service: (ID | STRING_LITERAL) ‘[’ ( mcAssignement (‘,’ mcAssignement)* )? ‘]’
mcAssignement: (ID | STRING_LITERAL) ‘=’ (ID | INT | STRING_LITERAL)
term: func | ‘(‘ expression ‘)’
expression: ‘NOT’? term ( (‘AND’ | ‘OR’) ‘NOT’? term)*
func: (func_equals_mct | func_contains_mct | func_matches_mct | func_equals_edi | func_contains_edi | func_matches_edi)
func_equals_mct: ‘equals’ ‘(‘ (ID | STRING_LITERAL) ‘,’ (INT | ID | STRING_LITERAL) ‘)’
func_contains_mct: ‘contains’ ‘(‘ (ID | STRING_LITERAL) ‘,’ (INT | ID | STRING_LITERAL) ‘)’
func_matches_mct: ‘matches’ ‘(‘ (ID | STRING_LITERAL) ‘,’ (INT | ID | STRING_LITERAL) ‘)’
func_equals_edi: ‘equalsEdi’ ‘(‘ (ID | STRING_LITERAL) ‘,’ (INT | ID | STRING_LITERAL) ‘)’
func_contains_edi: ‘containsEdi’ ‘(‘ (ID | STRING_LITERAL) ‘,’ (INT | ID | STRING_LITERAL) ‘)’
func_matches_edi: ‘matchesEdi’ ‘(‘ (ID | STRING_LITERAL) ‘,’ (INT | ID | STRING_LITERAL) ‘)’
ID: ((‘a’..’z’ | ‘A’..’Z’) | ‘_’) ((‘a’..’z’ | ‘A’..’Z’) | ‘0’..’9’ | ‘_’)*
INT: ( ‘+’ | ‘-‘ )? ‘0’..’9’+
STRING_LITERAL: ’”’ ( ~(‘”’ | ‘\r’ | ‘\n’) )* ‘”’

Grafische Benutzeroberfläche

Aufgabe

Zum einfachen Erstellen und Ändern der Regeln dient ein entsprechendes Plugin im B2B by Practice Cockpit.

Cockpit Integration

Die Extension „B3P_RULE_EXTENSION” muss leer angelegt werden. In Benutzer/Attribute kann das entsprechende Attribut angelegt werden:

Override={view=mainView,type=AddChild,target=toolBarBox,name=org.b2bbp.ui.uicomponent.MainNavLinkButton,value=[id:’forwardingRules’;label:’Forwarding Rules’;isExtension:’false’;type:’com.nextlevel.b2b.rule.ui.swf’;provider:’nextlevel.com’;version:’1.0’;container:’applicationViewStack’;toolTip:’Forwarding Rules’;width:’180’;labelPlacement:’right’;textAlign:’left’;horizontalGap:’10’;paddingLeft:’5’;paddingRight:’5’;iconURL:’images/famfamfam-icons/arrow_branch.png’]}

Dieses Attribut kann dann einer Rolle und damit Nutzern zugewiesen werden. Nach einem Neustart des Cockpits sollte nun das Modul zur Verfügung stehen und kann über das entsprechende Icon in der Navigationsleiste gestartet werden.

Benutzung

In der Hauptansicht des Moduls wird eine (am Anfang leere) Regel dargestellt. Entsprechend der Text-Repräsentation gibt es hier auch:

  • ID
  • Beschreibung
  • Service-Aufrufe mit zugehörigen Message Context Einträgen
  • Bedingung bestehend aus verschachtelten Ausdrücken

Mit den Plus-Buttons kann man Elemente (Service-Aufrufe, Message Context Einträge, Funktionsaufrufe und logische Ausdrücke) hinzufügen.

Mit dem „Save”-Button kann man die Regel speichern. Wichtig ist dabei die eindeutige Regel-ID, eine eventuell vorhandene Regel mit gleicher ID wird überschrieben.

Durch drücken des „New”-Buttons werden alle Elemente entfernt und eine neue, leere Regel angezeigt.

Mit dem „Rule list” Button kann man ein Fenster zum Suchen, Laden und Löschen der Regeln aufrufen. Durch Eingabe von Suchausdrücken im Suchfenster werden die Anzeige der Regeln eingeschränkt. Mit „Remove” wird die ausgewählte Regel endgültig gelöscht.

Mit „Load” wird die ausgewählte Regel geladen, das Rule list Fenster geschlossen und die Regel in der Hauptansicht dargestellt.

View Me   Edit Me