![]() | Vishnu Parameter-Ersetzung |
Vishnu bietet eine globale Parameterersetzung an. Das bedeutet, dass alle in Übergabeparametern befindlichen Parameternamen, wenn möglich, durch ihre Laufzeitwerte ersetzt werden. Wie das im Detail aussieht, beschreibt dieses Kapitel.
Generell versucht Vishnu, alle in %-Zeichen eingeschlossenen Parameternamen
durch ihre Laufzeitwerte zu ersetzen.
Parameter sind alle Zeichenketten, die in einer JobDescription.xml
in den XML-Begrenzern <Parameters> eingeschlossen sind.
In dem nachfolgenden Code-Beispiel aus dem Demo-JobCheckWildcardParameters ist so eine Wildcard-Variable zu sehen: %ApplicationName%.
<?xml version="1.0" encoding="utf-8"?> <JobDescription> <LogicalName>Check WildcardParameters</LogicalName> <LogicalExpression> <![CDATA[IS WildcardParameterChecker]]> </LogicalExpression> <BreakWithResult>false</BreakWithResult> <ThreadLocked>false</ThreadLocked> <StartCollapsed>false</StartCollapsed> <IsVolatile>false</IsVolatile> <Checkers type="array"> <Checker> <LogicalName>WildcardParameterChecker</LogicalName> <PhysicalPath>TrueFalseExceptionChecker.dll</PhysicalPath> <Parameters>True||Diese Anwendung heißt %ApplicationName%.</Parameters> </Checker> </Checkers> </JobDescription>
In dem nachfolgenden Screenshot des Jobs CheckWildcardParameters sieht man dann, dass die Variable %ApplicationName% durch ihren Wert Vishnu ersetzt wurde.
![]() |
---|
Die Parameterersetzung funktioniert für alle Vishnu-Parameter. Eine vollständige Liste aller Vishnu-Parameter finden Sie unter Vishnu.InterchangeAppSettings. Weiterführende Erklärungen zu Vishnu-Parametern bietet die Seite Konfiguration und Parameter. |
Wie schon im Kapitel Vishnu Akteure erwähnt, können SubWorker von Vishnu nur Kommandozeilenparameter (einfachen Text) übergeben bekommen. Vishnu erweitert hier allerdings die global ersetzten Parameter um einige wesentliche aktuelle Laufzeitwerte:
"%Event%" = Name des Ereignisses, das zum Aufruf des Workers geführt hat
"%Source%" = Quelle des Ereignisses (Knoten, in dem das Ereignis zuerst aufgetreten ist)
"%Sender%" = Knoten, der aufgrund des Ereignisses aktuell den Worker aufruft
"%TreePath%" = kompletter Pfad im Tree zur Ereignis-Quelle
"%Timestamp%" = aktuelles Datum mit aktueller Uhrzeit im Format "dd.MM.yyyy HH.mm.ss"
"%Logical%" = aktueller logischer Wert des Senders
"%Exception%" = Exception.Message, falls %Event% gleich "Exception" ist, ansonsten ""
Der nachfolgende XML-Ausschnitt bietet ein Beispiel für die Verwendung der erweiterten Laufzeitwerte bei SubWorkern.
... <Workers type="array"> <Worker> <LogicalExpression>Heise:False|Exception</LogicalExpression> <SubWorkers type="array"> <SubWorker> <PhysicalPath>VishnuMessageBox.exe</PhysicalPath> <Parameters>-Message="%Timestamp%: CheckServers %Event% von %Source% in %Sender%#%Exception%" -Caption="Server Fehler" -MessageNewLine=#</Parameters> </SubWorker> <SubWorker> <PhysicalPath>MicroMailer.exe</PhysicalPath> <Parameters><![CDATA[-Message="%Timestamp%: CheckServers %Event% von %Source% in %Sender%#%Exception%." -Caption="Server Fehler!" -MailHostPort=%MailHostPort% -MailPassword=%MailPassword% -MailSender="Absender" -MailRecipients="Empfänger1[,Empfänger2,...]"]]></Parameters> <!-- Trigger> <LogicalName></LogicalName> <PhysicalPath>TimerTrigger.dll</PhysicalPath> <Parameters>M:20</Parameters> </Trigger --> </SubWorker> </SubWorkers> </Worker> ... </Workers> ...
Eigene ParameterReader bieten die Möglichkeit, Vishnu beim Start zusätzliche eigene, geschäftsspezifische Parameter mitzugeben. Diese Parameter werden dann in Folge wie normale Vishnu-Parameter behandelt, das heißt, dass sie z.B. auch Gegenstand der Vishnu-Parameterersetzung sein können.
Hierfür sind drei Komponenten nötig,
Eine eigene <UserParameter-Name>.dll. Diese DLL muss die Vishnu.InterchangeIParameterReader Schnittstelle implementieren.
![]() |
---|
Vishnu liefert schon einen DemoParameterReader und einen Demo-Job CheckParameterReader mit. Darauf wird weiter unten noch eingegangen. |
Über den Parameter UserAssemblyDirectory kann ein Verzeichnis gesetzt werden, in dem Vishnu zusätzlich zu den jeweweiligen Job-Verzeichnissen nach Ihren eigenen Checker-DLLs, eigenen UserControls oder auch Ihrem eigenen Parameter-Reader sucht. Die Default-Einstellung ist UserAssemblies.
Angabe des Pfades zu Ihrem eigenen ParameterReader. Wie schon weiter oben erwähnt, liefert Vishnu schon einen DemoParameterReader und einen Demo-Job CheckParameterReader mit. Der Pfad ist in der mitgelieferten Vishnu.exe.config.user auf "%UserAssemblyDirectory%\DemoParameterProvider.dll" eingestellt.
Unten sehen Sie Ausüge und Screenshots zur Verdeutlichung des Konzepts anhand des Demo-Jobs CheckParameterReader:
<?xml version="1.0"?> <configuration> <appSettings> ... <add key="UserParameterReaderPath" value="%UserAssemblyDirectory%\DemoParameterProvider.dll" /> ... </appSettings> </configuration>
<?xml version="1.0" encoding="utf-8"?> <JobDescription> <LogicalName>Check ParameterReader</LogicalName> <LogicalExpression> <![CDATA[IS ParameterReaderChecker]]> </LogicalExpression> <StartCollapsed>false</StartCollapsed> <Checkers type="array"> <Checker> <LogicalName>ParameterReaderChecker</LogicalName> <PhysicalPath>TrueFalseExceptionChecker.dll</PhysicalPath> <Parameters>True||Parameter-Wert ist %GesuchterParameter%</Parameters> </Checker> </Checkers> </JobDescription>
![]() |
---|
Weiterführende Informationen zu eigenen ParameterReadern finden Sie unter eigene Parameter-Reader. |