![]() | Snapshots |
Snapshots sind Momentaufnahmen der Verarbeitung in einem Vishnu-Job. Diese Snapshots können in einem anderen Vishnu-Programm als Teil dessen Jobs angezeigt werden, als ob sie direkt dazugehören würden.
Sie können Vishnu dazu veranlassen, Snapshots zu schreiben, indem Sie dies wie in der folgenden JobDescription.xml konfigurieren:
<?xml version="1.0" encoding="utf-8"?> <JobDescription> <LogicalName>Check TreeEventTrigger Snapshot</LogicalName> <LogicalExpression>IS flipflop</LogicalExpression> <JobSnapshotTrigger> <Reference>AnyLogicalResultChanged|Exception</Reference> <Parameters>Check TreeEventTrigger Snapshot</Parameters> </JobSnapshotTrigger> <Checkers type="array"> <Checker> <LogicalName>flipflop</LogicalName> <PhysicalPath>TrueFalseExceptionChecker.dll</PhysicalPath> <Parameters>Null:True:False:Exception</Parameters> <Trigger> <PhysicalPath>TimerTrigger.dll</PhysicalPath> <Parameters>S:10</Parameters> </Trigger> </Checker> </Checkers> </JobDescription>
Im Abschnitt JobSnapshotTrigger wird bei diesem Beispiel festgelegt, dass immer dann ein Snapshot geschrieben werden soll, wenn im Knoten "Check TreeEventTrigger Snapshot" oder irgendwo bei seinen Unterknoten
sich der logische Zustand ändert (rot auf grün oder umgekehrt): "AnyLogicalResultChanged"
ein unvorhergesehes Ereignis (i.d.R. Fehler) auftritt: "Exception"
Der senkrechte Strich "|" trennt einzelne Argumente und bedeutet bei Vishnu-eigenen Akteuren immer eine ODER-Verknüpfung.
![]() |
---|
Snapshots werden immer unter dem Namen "JobSnapshot.xml" in ein Unterverzeichnis mit dem selben Namen wie das Job-Verzeichnis des erzeugenden Jobs geschrieben und NICHT! mit dem LogicalName des Jobs. In unserem Beispiel ist das "...\CheckTreeEventTriggerSnapshot\JobSnapshot.xml" und nicht etwa "...\Check TreeEventTrigger Snapshot\JobSnapshot.xml". Wo genau Vishnu Snapshots schreibt und sucht können Sie im Kapitel "Wo Vishnu Snapshots erzeugt und sucht" nachlesen. |
![]() |
---|
JobSnapshotTrigger gehören zu den TreeEventTriggern. Diese erlauben als letztes Argument hinter den Ereignissen noch zusätzlich eine Zeitangabe, z.B. AnyLogicalResultChanged|Exception|S:30. Bei unserem JobSnapshotTrigger würde dieser Zusatz dafür sorgen, dass unabhängig von den sonstigen Ereignissen auf jeden Fall alle 30 Sekunden ein Snapshot geschrieben würde. |
Im folgenden Beispiel wird ein Snapshot aus dem obigen Beispiel-Job Check TreeEventTrigger Snapshot in einem anderen Job angezeigt:
<?xml version="1.0" encoding="utf-8"?> <JobDescription> <LogicalName>ShowRefCheckTreeEventTriggerSnapshot</LogicalName> <LogicalExpression>IS CheckTreeEventTriggerSnapshot</LogicalExpression> <Snapshots type="array"> <Snapshot> <LogicalName>CheckTreeEventTriggerSnapshot</LogicalName> <Trigger> <PhysicalPath>FileWatcherTrigger.dll</PhysicalPath> </Trigger> </Snapshot> </Snapshots> </JobDescription>
Zu ladende Snapshots anderer Jobs werden in der Sektion Snapshots definiert. In diesem Beispiel muss der LogicalName des referenzierten Snapshots genau der Name des Verzeichnisses sein, in dem der Snapshot vom erzeugenden Job abgelegt wurde.
![]() |
---|
Man kann auch Snapshots unter einem frei gewählten LogicalName laden. Dann muss man allerdings zusätzlich den Parameter PhysicalPath mit dem Original-Namen des Job-Verzeichnisses des schreibenden Jobs angeben. |
Bei der Definition eines zu ladenden Snapshots wird diesem üblicherweise ein FileWatcherTrigger zugeordnet. Sie könnten aber auch andere Trigger einsetzen. FileWatcherTrigger lösen nicht nach festen Zeitintervallen aus, sondern genau dann, wenn sich die beobachtete Datei (hier ...\JobSnapshot.xml) ändert.
![]() |
---|
Der einem Snapshot zugeordnete FileWatcherTrigger beobachtet per Voreinstellung die JobSnapshot.xml des besitzenden Snapshots. Wenn man dies ändern will muss man den FileWatcherTrigger mit eigenen Parametern beschicken. Wie dies funktioniert, wird im Kapitel Vishnu Akteure im Unterpunkt Trigger beschrieben. |
Vishnu schreibt und sucht Snapshots ausgehend von einem allen Snapshot-Verzeichnissen gemeinsamen Unterverzeichnis, dem "SnapshotDirectory". Das SnapshotDirectory ist in der Regel relativ zum aktuellen Job-Verzeichnis und per Default auf "..\Snapshots" eingestellt. SnapshotDirectory ist ein Vishnu-Parameter und kann wie unter Konfiguration und Parameter beschrieben gesetzt werden.
![]() |
---|
Wenn Sie ein bestimmtes SnapshotDirectory festlegen, ist dies, wie oben schon erwähnt, immer relativ zum aktuellen Job-Verzeichnis. Einzige Ausnahme: Sie legen das SnapshotDirectory mit einem absoluten Pfad fest. |