Click or drag to resize

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.

globale Parameterersetzung

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%.

Definition und Parameter von Workern
<?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.

Check Wildcard Parameters
Hinweis  Hinweis

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.

erweiterte Parameterersetzung bei SubWorkern

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.

Definition und Parameter von Workern
  ...
<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>
...
erweiterte Parameterersetzung durch eigenen ParameterReader

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,

  1. Eine eigene <UserParameter-Name>.dll. Diese DLL muss die Vishnu.InterchangeIParameterReader Schnittstelle implementieren.

    Hinweis  Hinweis

    Vishnu liefert schon einen DemoParameterReader und einen Demo-Job CheckParameterReader mit. Darauf wird weiter unten noch eingegangen.

  2. Ü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.

  3. 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:

Vishnu.exe.config.user Auszug
<?xml version="1.0"?>
<configuration>
  <appSettings>
    ...
    <add key="UserParameterReaderPath" value="%UserAssemblyDirectory%\DemoParameterProvider.dll" />
    ...
  </appSettings>
</configuration>
CheckParameterReader
<?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>
Check Parameter Reader
Hinweis  Hinweis

Weiterführende Informationen zu eigenen ParameterReadern finden Sie unter eigene Parameter-Reader.