EPML Checker

Aus JACK Wiki
Version vom 12. August 2019, 08:27 Uhr von Striewe (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Der EPML Checker ermöglicht statische Checks für ereignisgesteuerte Prozessketten (EPKs), die in EPML formuliert sind. Er verwendet dazu Abfragen auf dem Syn…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Der EPML Checker ermöglicht statische Checks für ereignisgesteuerte Prozessketten (EPKs), die in EPML formuliert sind. Er verwendet dazu Abfragen auf dem Syntaxgraphen.

Um einen statischen Check mit dem Checker durchzuführen, muss die zu untersuchende Datei in der Liste "Source files" ausgewählt werden und eine einzelne Datei mit Prüfregeln ("Rule File") angegeben werden. Die Regeln werden in dieser Datei im XML-Format organisiert und verwenden die Sprache GReQL für Abfragen auf dem Syntaxbaum.

Beispiele und Eigenschaften von Regeln

Zwei beispielhafte Abfragen in dieser Sprache sehen so aus:

  <rule type="presence" points="5">
  	<query> from x: V{Event}
  		with isEmpty(x &lt;--)
  		report 0 end
  	</query>
  	<feedback prefix="Fehlerhafte Grundelemente">Es gibt kein Startevent.</feedback>
  </rule>
  <rule type="absence" points="4">
  	<query> from x: V{Element, ^Connector}, y1, y2 : V{Element}
  		with x --> y1 and x --> y2 and not (y1=y2)
  		report x.name as "xName", x.id as "xID" end
  	</query>
  	<feedback prefix="Fehlerhafte Grundstruktur">Das Element "{xName}" (ID {xID}) hat mehr als einen Ausgang.</feedback>
  </rule>

Die obere Regel ist vom Typ "presence", d.h. sie definiert einen Struktur von Modellelementen, die in der untersuchten Lösung vorkommen soll. Als Abfrage wird ein Element des Syntaxbaums (hier ein Event-Knoten) genannt und seine gewünschte Eigenschaft definiert (hier, dass die Menge seiner eingehenden Kanten leer ist). Als Meldung wird ein String definiert, der zur Fehlerliste hinzugefügt wird, wenn die in der Abfrage definierte Struktur nicht gefunden wird. Die zweite Regel ist vom Typ "absence" und definiert folglich eine Struktur, die in der untersuchten Lösung nicht vorkommen soll. In diesem Fall wird die definierte Fehlermeldung also ausgegeben, wenn die in der Abfrage definierte Struktur auftritt. Die im report-Clause der Abfrage zurückgegebenen Werte könnten dabei über Platzhalter in die Fehlermeldung eingefügt werden.

→ Weitere Beispiele: GReQL Regeln

Auswertung eines Regelsatzes

Bei der Durchführung des statischen Checks wird zunächst der abstrakte Syntaxgraph der abgegebenen Lösung erzeugt und anschließend alle Regeln angewendet. Alle erzeugten Fehlernachrichten werden als Ausgabe des statischen Tests gesammelt. Die vergebene Punktzahl ergibt sich aus den Punkten der einzelnen Regeln, wobei die Gesamtsumme der Punkte in der Regeldatei stets auf 100 normiert wird. Tritt während des Checks ein technischer Fehler auf, wird der Check abgebrochen und die Lösung mit einem "internal error" als fehlerhaft markiert.

Tools

GReQL-Referencecard