ParamModi Info: On-call duty / Rufbereitschaft

Collection of information about the ParamModi App that might come in handy for people doing APP On-call duty (e.g. new features that might lead to questions, stumbling blocks, ...). The contents are updated when there is relevant new functionality etc. .

This page is deliberately written in German to reduce the possibility of misunderstandings because of the language. If an English version is needed, please contact Anne.

Sammlung von Informationen über die ParamModiApp, die im Rahmen der APP-Rufbereitschaft nützlich sein können (z.B. nachfrageträchtige neue Features, Stolperfallen, ...). Die Inhalte werden ergänzt, wenn es relevante neue Funktionen etc. gibt.

Die Seite ist bewusst auf Deutsch gehalten, um Missverständnisse aufgrund der Sprache möglichst auszuschließen. Bitte bei Anne melden, falls eine englische Übersetzung benötigt wird.

1 Grundlegende Informationen

1.1 Parameter werden auf ParamModi-Tabs nicht angezeigt

  • Prüfen (auf ParamModi-Tab mit Hilfe der Suche/Filter-Funktion): Wird Parameter evtl. unter Total-Tab angezeigt, nur nicht auf dem gewünschten Tab? Wenn ja: Sollte ausreichen als Workaround, ggf. Verweis auf LSA-DV-RB wenn Behebung gewünscht (nach Behebung evtl. Release von common-lsa-utils-lib und parammodi-app mit angepasster Abhängigkeit notwendig)
  • Prüfen (Trim-Tab oder DB): Sind Parameter in ParameterGroup "generation"? Wenn nicht: Fehlerhafte Modellkonfiguration, LSA-DV-RB
  • Prüfen (DB): Gibt es Parameter-Konfigurationen (GSI_APP_PARAMMODI_CONFIG) für die betreffenden Parameter? Wenn nicht: Fehlerhafte Konfiguration, Verweis auf LSA-DV-RB für Behebung (nach Behebung ggf. Release von common-lsa-utils-lib und parammodi-app mit angepasster Abhängigkeit notwendig)
  • Prüfen (ParamModi bzw. Logging-System): Gibt es Fehlermeldungen (Warnings, Errors) bzgl. fehlender Konfigurationen für die betroffenen Parameter/Gruppen/Tabs?

1.1.1 Typische Konfigurationsfehler NEW

Bei Fehlern in der Parameter-Konfiguration loggt ParamModi ERRORs in die Anwendungskonsole und ins Logging-System.

Es wurde schon mehrfach diskutiert, ob dieses Vorgehen sinnvoll ist. Bisher ist es bei diesem Vorgehen geblieben, unter anderem wegen der folgenden Argumentation:
  • Wäre es besser, statt einen Fehler zu loggen, den betroffenen Parameter etc. einfach gar nicht anzuzeigen und damit eine Korrektur der fehlerhaften Config zu erzwingen?
    • Das war von Seiten der Modellierer bisher explizit nicht gewünscht: "Unkritische" Config-Probleme sollen z.B. keinen weiteren RB-Einsatz für eine sofortige Korrektur zwingend zur Folge haben.
  • Ist das Loglevel ERROR angemessen, da die meisten Konfigurationsfehler im Grunde unkritisch sind (Parameter werden meist prinzipiell doch irgendwo angezeigt)?
    • Bei niedrigerem Loglevel würde man die Fehler vermutlich gar nicht bemerken.

Um einzuschätzen, ob ein Fehler kritisch ist: Solange ein genannter Parameter auf irgendeinem Weg verfügbar ist (z.B. Suche nach Parametername), kann ein Konfigurationsfehler als unkritisch eingestuft werden (HKR ggf. informieren, wo/wie der Parameter zu finden ist). Fehlende Übersetzungen sind normalerweise auch nicht kritisch.

Für die Fehlerbehebung ist der jeweils zuständige Modellierer für den Beschleunigerbereich zuständig, z.B. typischerweise:
  • SIS18: Holger Liebermann
  • ESR: Sergey Litvinov
  • Cryring: Ingrid Kraus
  • FRS: Ingrid Kraus / Christoph Hessler
  • Cooler: Michael Peter Kelnhofer
  • Transferlinien: Ingrid Kraus / Christoph Hessler
1.1.1.1 Unkritisch: Nicht vorhandene Gruppen NEW
=Configuration error: Group "COOLER_ECORR" not found! Using default group. There might be an error in importDisplayItems or importGroupItems! "ParamModiTabConfigImpl [parameter=GECEKX5C/FIX5, beamProcessPurpose=STORAGE_MANIP_WAIT, tabName=ESR_MANIPULATION, displayOrder=112, displayGroup=COOLER_ECORR]=

Der Fehler besagt, dass in der Config eingetragen ist, dass der Parameter GECEKX5C/FIX5 auf dem Tab ESR_MANIPULATION in der Gruppe COOLER_ECORR angezeigt werden soll. Eine solche Gruppe gibt es auf dem Tab aber nicht (d.h. es fehlt die Konfiguration, dass eine solche Gruppe existieren soll, oder der Gruppenname ist falsch geschrieben, ...).

In diesem Fall wird der Parameter dann auf diesem Tab in der "default group" angezeigt (unter "ungruppiert"). => unkritisch

1.1.1.2 Weitere Fehler

[Wird bei Bedarf ergänzt]

1.2 Neue Parameter einbauen

Projekte Vorgehen
  1. Änderung in common-lsa-utils-lib durchführen (bzw. von Modellierer durchführen lassen)
  2. common-lsa-utils-lib releasen
  3. Abhängigkeit in parammodi-app hochziehen
  4. Reguläres App Release von parammodi-app
  5. ParamModi Instanzen im HKR schließen und neustarten lassen

1.3 Trim über Trim-Tab wird wegen Gerätefehlern zurückgerollt NEW

Über den Trim-Tab können Trims abgesetzt werden. Diese Trims werden bei Gerätefehlern beim Datenversorgen automatisch zurückgerollt (anders als Trims von den ParamModi-Tabs aus, die auch im Fall von Gerätefehlern persistiert werden).

Hier gibt es mehrere Lösungsansätze:
  • Pattern ausplanen, Trim durchführen, Pattern wieder einplanen. Umständlich, sollte aber immer funktionieren => gut zum Überbrücken des Problems während der RB!
  • Betreffenden Parameter über ParamModi-Tab trimmen.
    • Falls Parameter noch nicht auf ParamModi-Tab vorhanden (ggf. Suche benutzen!): Datenversorgungs-Team kontaktieren und fragen, ob der Parameter dort verfügbar gemacht werden kann. Zieht dann evtl. Release von common-lsa-utils-lib und ParamModi nach sich.
  • Gerätefehler beheben:
    • Falls das Gerät, das den Fehler liefert, z.B. Offline ist, kann (sollte?) es evtl. angeschaltet werden? usw.

2 Updates 2021-02

2.1 Performance-Optimierungen

Im Rahmen der Task Force Performance wurden im Herbst 2020 auch an ParamModi Optimierungen durchgeführt.

2.1.1 Ausgeblendeter Total-Tab

Der Total-Tab (ungruppierte Anzeige aller für ParamModi konfigurierten Parameter) ist standardmäßig ausgeblendet und kann per Menü-Option eingeblendet werden.
Die Suche findet alle irgendwo konfigurierten Parameter unabhängig von der Anzeige des Total-Tabs und findet somit ggf. auch Parameter, die außer auf dem Total-Tab nirgends zur Anzeige konfiguriert sind, wenn der Total-Tab ausgeblendet ist..

2.1.2 Warte-Animation bei Umschalten zwischen ParamModi-Tabs

Beim Umschalten zwischen ParamModi-Tabs (z.B. vom Resident-Tab zum Trim-Tab) kommt es zu einer kurzen Wartezeit mit einem Ladebalken im Tab-Bereich. Das ist normal und dient der allgemeinen Performance.

2.1.3 Performance-Logging im Logging-System ausfiltern

Für die Performance-Messungen wurden viele dafür spezifische Log-Nachrichten eingebaut. Falls das bei der Log-Analyse stört, kann man diese Nachrichten im Logging-Systemz.B. so ausfiltern:

program:"parammodi-app" AND NOT "Measuring" AND NOT logger:de*Performance*

2.2 Splash-Screen

ParamModi hat seit den Performance-Änderungen auch einen Splash-Screen (der nicht selbst die Performance verbessert wink ), der angezeigt wird, bevor das eigentliche Anwendungsfenster angezeigt werden kann.

Dieser Splash-Screen kann über die ParamModi-Properties mit Hilfe der Property app.parammodi.showSplashScreen=false deaktiviert werden.

2.3 Bypass-Trim

Mit Bypass-Trims können geänderte Settingwerte an Geräte gesendet werden, ohne dass ein laufendes Pattern dazu angehalten wird, wie es normalerweise aus Setting-Konsistenzgründen getan wird. Wenn solche Trims in ungünstigen Momenten abgesetzt werden, kann das unerwartetes Verhalten der Geräte, Rampenfehler, Strahlverluste usw. zur Folge haben.

Mit Bypass-Trims können nur ganz bestimmte Settingwerte gesendet werden, nämlich für Skalare auf Hardware-Ebene und für Funktionen auf Hardware-Ebene, solange Funktionslänge, -anfangswert und -endwert gleich bleiben. Für "higher-level" Parameter, z.B. Energie, ist der Bypass-Trim nicht gedacht und wirft ggf. Exceptions.

Die Operateure sollten über die Risiken der Benutzung dieses Features unterrichtet worden sein, und es nur nutzen, wenn sie sich sicher sind, dass sie es verstehen und beherrschen.

Der Button für den Bypass-Trim erscheint nur, wenn dieses Feature explizit per Menü-Eintrag aktiviert wurde:

2.4 Testphase (nicht RB-kritisch): Rudimentäre Tastaturbedienung

Auf Anregung von Frank Herfurth wurde eine rudimentäre Tastaturbedienung implementiert:
  • Inkrementelle Änderungen:
    In den ParamModi-Eingabefeldern können einzelne (!) Ziffern markiert werden. Per Pfeiltasten hoch/runter bzw. Bild auf/ab kann diese einzelne Ziffer (ohne Übertrag auf Nachbarziffern) inkrementiert bzw. dekreentiert werden. Für führende Nullen gibt es eine Sonderbehandlung, da das Eingabefeld führende Nullen automatisch entfernt.
    • Tastenkombis verändern: de.gsi.cs.co.ap.app.parammodi.editor.view.form.DigitIncrementingKeyListener
  • Shortcuts zum Absenden von Trims:
    • Bei fokussiertem Eingabefeld:
      • Normaler Trim: Strg+T
      • Bypass-Trim: Strg+B (Bypass-Trim muss zuvor aktiviert worden sein, sonst Fehlermeldung!)
    • Tastenkombis verändern oder neue Commands hinzufügen: de.gsi.cs.co.ap.app.parammodi.editor.view.form.ValueCommittingKeyListener
Diese Tastaturbedienung befindet sich in der Testphase durch Christoph Böhm und Frank Herfurth. Bei Rufbereitschaftsanfragen zu diesem Feature also bitte auf die Testphase verweisen, Problem aufnehmen und die bisherige Bedienung per Maus vorschlagen.

3 Updates 2021-03: Zwischenablage und Export-Konfiguration

Im Rahmen von ParamModi 16.0.12 wurden neue Features ausgerollt, die es den Operateuren erleichtern sollen, Settings zwischen Kontexten zu übertragen und dabei auch genauer als vorher auswählen zu können, welche Settings übertragen bzw. exportiert werden sollen.

Die zugehörige Bedienungsanleitung für die neuen Features ist auch im OLOG:290496 hinterlegt.

3.1 Settings kopieren per Zwischenablage

Zum Übertragen der Settings per Zwischenablage wird der Import-Export-Mechanismus verwendet, der im ParamModi schon lange benutzt wird. Beim Export werden die gewählten Settings in Strings umgewandel, die beim Standard-Export in Dateien im lokalen Dateisystem und im WebDAV geschrieben werden. Für die Kopierfunktion wird dieser Dateiinhalt einfach in einem einzigen String in die System-Zwischenablage abgelegt und kann von dort wieder ausgelesen und in einzelne Zeilen zerlegt werden, die von der normalen Import-Funktion verarbeitet werden können.

Relevanter Code:
  • de.gsi.cs.co.ap.app.parammodi.main.controller.ParamModiMainController
    • #exportAllValuesToClipboard
    • #exportValuesOfCurrentTabToClipboard
  • Export (Umwandlung von Settings in Strings und Schreiben in Zwischenablage): de.gsi.cs.co.ap.app.parammodi.main.controller.importexport.ParamModiExportController#exportSettingsToClipboard
  • Import (Lesen aus Zwischenablage und Anwenden auf Settings): de.gsi.cs.co.ap.app.parammodi.main.controller.importexport.ParamModiImportController#importValuesFromClipboard
  • Eigentlicher Zwischenablagen-Zugriff (könnte ausgelagert werden an zentrale Stelle): de.gsi.cs.co.ap.app.parammodi.main.controller.importexport.ClipboardUtils

3.2 Auswahl von zu kopierenden/zu exportierenden Settings per Dialog

In einem Dialog kann ausgewählt werden, welche Settings exportiert bzw. kopiert werden sollen. Der Dialoginhalt ist in Fx geschrieben und damit potenziell auch für ein Fx-"ParamModi 2.0" einsetzbar. Der eigentliche Dialog ist in Swing implementiert, damit er in der Swing-Fensterstruktur von ParamModi korrekt behandelt wird.

Relevanter Code:
  • common-lsa-uilib-fx
    • Dialoginhalt: de.gsi.fcc.applications.common.lsa.uilib.fx.paramconfig.ParamConfigSettingSelector
  • ParamModi:
    • Swing-Dialog: de.gsi.cs.co.ap.app.parammodi.main.view.SettingsForExportSelectorDialogSwing

-- AnnekeWalter - 02 Feb 2021
Topic revision: r7 - 10 Nov 2023, AnnekeWalter
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback