Click or drag to resize

Vishnu Logik

Vishnu setzt Ihren logischen Ausdruck (LogicalExpression, siehe auch Konfiguration und Parameter) intern in eine entsprechende Baumstruktur (Tree) um, die logisch verarbeitet wird und welche Sie dann letzten Endes in der Normaldarstellung ("Logical Task Tree") auch so wiederfinden. Wie das im Detail aussieht und welche logischen Ausdrücke Vishnu versteht, lesen Sie in diesem Kapikel.

Logical Task Tree

Während der Verarbeitung ergibt sich das logische Ergebnis eines Knoten aus den Ergebnissen seiner Unterknoten. Schauen wir uns zur Verdeutlichung noch mal den Demo-Job aus ein einfaches Beispiel an.

Demo Job 01

Der Knoten "CheckDiskSpace" wird rot dargestellt, weil der Checker des Unterknotens "Check_D" "false" zurückgemeldet hat ("Frei" war mit 143636 MB kleiner als "Minimum" mit 200000 MB). Da "CheckDiskSpace" seine Unterknoten mit einem logischen UND ("AND") verbindet, geht infolgedessen "Check_DiskSpace" auch auf "false" (rot). Dies pflanzt sich dann im Tree nach oben fort und "Check All" geht auch auf "false" (rot).

Bei dem Knoten "CheckServers" müssen wir schon etwas genauer hinschauen. Dieser Knoten ist grün (true), obwohl einer seiner "Enkel"-Knoten "Local_Backup" rot ist, also "false" zurückgemeldet hat. Wie man an folgendem Ausschnitt aus der JobDescription.xml sehen kann, ist der problematische Knoten "Local_Backup" über ein ODER ("OR") mit dem Knoten "Local" verbunden und diese Verbindung als Ganzes geklammert.

JobDescription.xml
...
  <LogicalName>CheckServers</LogicalName>
  <LogicalExpression>(Google AND Heise) AND (Local OR Local_Backup)</LogicalExpression>
...

Da es bei einem logischen ODER ausreicht, wenn einer der beiden Partner "true" (grün) ist, wird der von Vishnu anstelle der Klammern eingezogene anonyme Zwischenknoten "true" (grün). Der andere anonyme Zwischenknoten, der "Google" und "Heise" über "AND" verbindet ist ohnehin grün, womit "CheckServers" letztendlich auch grün wird. Vishnu erzeugt immer dann Zwischenknoten, wenn in einem logischen Ausdruck mehrere Operatoren (AND, OR, etc.) mit unterschiedlicher Bindungskraft (z.B. UND bindet enger als ODER) vorkommen oder von Ihnen Klammern gesetzt wurden.

Hinweis  Hinweis

Man kann Klammern auch setzen, wenn sie aus rein logischen Gesichtspunkten nicht erforderlich sind um Vishnu dazu zu bringen, anonyme Zwischenknoten zu erzeugen, und damit die Bildschirmdarstellung kompakter gestalten.

Logik-Elemente und Syntax

LogicalExpressions können auf zwei leicht unterschiedliche Arten formuliert werden (dargestellt an unserem obigen Beispiel):

  1. <LogicalExpression>(Google AND Heise) AND (Local OR Local_Backup)</LogicalExpression>

  2. <LogicalExpression><![CDATA[(Google AND Heise) AND (Local OR Local_Backup)]]></LogicalExpression>

Die zweite Form, in der der logische Ausdruck noch zusätzlich in "<![CDATA[" und "]]>" eingeschlossen ist, hat den Vorteil, dass im logischen Ausdruck auch Sonderzeichen vorkommen dürfen. Das ermöglicht, Operatoren in ihrer Kurzform verwenden zu können (siehe nachfolgende Operatoren-Tabelle).

gültige Vishnu-Operatoren

Operator

Syntax

Kurzformen

Ist gleich (Identität)

'IS'

':'

Ist nicht (Verneinung)

'NOT'

'!'

Logisches UND

'AND'

'&'

Logisches ODER

'OR'

'|'

Exklusiv ODER (entweder oder)

'XOR'

'><'

Implikation (daraus folgt)

'IMP'

'=>'

Logisches Nicht UND

'NAND'

'!&'

Logisches Nicht ODER

'NOR'

'!|'

Logisches Nicht Exklusiv ODER

'XNOR'

'!><'

Klammer auf

'GROUP'

'(', '[', '{'

Klammer zu

'UNGROUP'

')', ']', '}'

Ist gleich

'EQ'

'==', '='

Ist ungleich

'NE'

'<>'

Ist kleiner

'LT'

'<'

Ist kleiner oder gleich

'LE'

'<='

Ist größer

'GT'

'>'

Ist größer oder gleich

'GE'

'>='

Schwellenwert 10%, 20%, ... , 80%, 90%

'TR10', 'TR20', ... , 'TR80', 'TR90'

---

Wichtig  Wichtig

Eine Variable in einer LogicalExpression wie zum Beispiel "Google" oder "Heise" kann in einem komplexeren logischen Konstrukt durchaus mehrfach auftreten. Vishnu stellt sie dann im Tree auch mehrfach dar, sorgt aber intern dafür, dass ein zugehöriger Checker nur einmal ausgeführt wird.

weitere Hinweise

Die Schwellenwert-Logik (treshold) prüft, ob ein bestimmter Prozentsatz der dem Job untergeordneter Knoten das Ergebnis geliefert hat. Wird der durch den gewählten Operator festgelegte Prozentsatz (Schwellenwert) erreicht oder überschritten, geht der gesamte Job auf (grüne Anzeige).
Im unteren Beispiel mit insgesamt 10 Checkern wurde über den Operator TR50 der Schwellenwert 50% übergeben. Wie zu sehen, geht ab dem 5. grünen Checker der Job auch auf grün (true).

Check Treshold 50 10

Operatoren können in der Regel in einer Kette mit insgesamt mehr als zwei Argumenten angewendet werden. Das bedeutet, dass zum Beispiel über den Operator XOR mehr als nur zwei Checker in Beziehung gesetzt werden können (siehe Bild unten). Gleiches gilt z.B. auch für Vergleichsoperatoren.

Check Dependent Node