![]() | eigene Parameter-Reader |
Dieses Kapitel handelt von selbst erstellten ParameterReadern. Über eigene ParameterReader können Sie Ihre business-spezifischen Parameter an Vishnu übergeben, so dass diese in Folge wie alle sonstigen Vishnu-Parameter behandelt werden und z.B. auch Gegenstand der Vishnu-Wildcard-Ersetzung sein können. Hier wird auf das Demo-Projekt DemoParameterProvider selbst eingegangen. Die Beschreibung eines zugehörigen Vishnu Test-Jobs finden Sie unter Vishnu Parameter-Ersetzung.
Sehen wir uns zuerst die Ausgabe des Demo-Projekts an:
Wie zu sehen ist, liefert das Programm den Wert Gefunden! zu einem
Parameter namens GesuchterParameter.
Das Ganze wiederholt sich alle 1 Minute und 2 Sekunden.
Verantwortlich für die im Demo-Projekt gezeigte Parameterersetzung ist die Klasse DemoParameterProvider, siehe folgendes Code-Listing:
... public class DemoParameterProvider : IParameterReader { #region IParameterReader Implementation /// <summary> /// Event, das ausgelöst wird, wenn die Parameter neu geladen wurden. /// </summary> public event EventHandler ParametersReloaded; /// <summary> /// Liefert zu einem String-Parameter einen String-Wert. /// </summary> /// <param name="parameterName">Parameter-Name.</param> /// <returns>Parameter-Value.</returns> public string ReadParameter(string parameterName) { if (parameterName == "GesuchterParameter") { return "Gefunden!"; } else { if (parameterName == "UebergebenerParameter") { string timeString = this._lastTimerStart == DateTime.MinValue ? " - " : this._lastTimerStart.ToString("hh:mm:ss.ms"); return String.Format($"{this._initParameter} - letzter Refresh: {timeString}"); } else { return null; } } } /// <summary> /// Einrichtungsroutine - übernimmt Parameter, holt alle Infos /// und stellt sie als Properties zur Verfügung. /// Startet ggf. einen Timer für den Parameter-Refresh. /// </summary> /// <param name="parameters">Ein Objekt zur Parameterübergabe; dieser ParameterProvider /// erwartet einen String mit einem übergebenem Testwert plus optional /// einen Timer-Parameter für regelmäßige Reloads durch Pipe-Symbol '|' abgetrennt.</param> public void Init(object parameters) { this._publisher = InfoController.GetInfoController(); this.EvaluateParameters(parameters.ToString()); this.ReloadApplicationParameters(); if (this._eventTimer != null) { this._lastTimerStart = DateTime.Now; this._nextTimerStart = this._lastTimerStart.AddMilliseconds(this._timerInterval); this._eventTimer.Start(); } } #endregion IParameterReader Implementation ... private void ReloadApplicationParameters() { try { this._publisher.Publish("Lade aufwändige Parameter..."); Thread.Sleep(2000); } catch (Exception ex) { this._publisher.Publish(this, ex.Message); throw; } this.OnParametersReloaded(); } ... private void eventTimer_Elapsed(object sender, ElapsedEventArgs e) { ... this.ReloadApplicationParameters(); ... } ...
Die Klasse DemoParameterProvider implementiert die von Vishnu bereitgestellte Schnittstelle Vishnu.InterchangeIParameterReader. In der Init-Routine werden Anwender-Einstellungen übernommen, die business-spezifischen Parameter geladen (Ausführung in der Unterroutine "ReloadApplicationParameters()") und ggf. ein Timer für den regelmäßigen Refresh der Parameter eingerichtet.
Die Methode ReadParameter(string parameterName) wird später von Vishnu immer dann aufgerufen, wenn ein Vishnu-Akteur einen Parameter abfragt.
![]() |
---|
Ihr eigener ParameterReader wird in der Priorität an zweiter Stelle direkt hinter dem ParameterReader für Kommandozeilen-Parameter eingereiht. |