Skip to main content
Skip table of contents

Sanity Checks (Admin)

Voraussetzungen

  • Das Modul-Lizenz EVI-BASIS liegt im System vor und ist aktiv

Update

  • Bei einem Update ist zu prüfen, ob die genannten Prozeduren eingespielt wurden. Falls nicht, sind sie einzuspielen

Technische Dokumentation

Komponentenübersicht

Prozesse

  • C12SanityCheck

Beim Einspielen des Moduls werden die Prozesse automatisch veröffentlicht, dennoch ist eine Prüfung des Veröffentlichungsstatus empfehlenswert. Entsprechende Hinweise werden auch beim Import des Moduls ausgegeben.

Skriptbibliothek

  • SC12EVIBaseUtils

  • SC0InterfaceUtils

  • SC12SystemTestUtils

Globale Variablen

  • Speicherplatz prüfen - sanityCheckDiskSpace

    • C12DiskSpaceWarning

    • C12DiskSpaceError

Timer

Der mit dem EVI-Basis-Modul ausgelieferte Timer C12SanityCheck ist bei Inbetriebnahme der SanityChecks zu aktivieren und zu konfigurieren.

Administrationsmöglichkeiten

  • Administration über globale Variablen

Globale Variable

Beschreibung

C12DiskSpaceWarning

Gibt die Grenze an, ab der eine Warnung für den freien Speicherplatz angezeigt wird.

Default: 6000 MB

C12DiskSpaceError

Gibt die Grenze an, ab der eine Fehlermeldung für den freien Speicherplatz angezeigt wird.

Default: 2000 MB

Übersteuerungsmöglichkeiten

Grundsätzlich können die mit dem Modul bereitgestellten Komponenten wie BPM-Prozesse, -teilprozesse, Suchen und Skriptbibliotheksmethoden übersteuert werden, um diese an individuelle Anforderungen und Bedürfnisse anzupassen.
Nach dem Einspielen eines Moduls sollte geprüft werden, ob Methoden im Projekt übersteuert wurden und die Methodenänderung im Standard im Projekt übernommen werden sollte.

  • Jeder sanityCheck kann übersteuert werden

Skriptklasse

Methodenname

Funktionalität

SC12SystemTestUtils

getSanityChecks

Liefert eine Liste der Klassen- und Methodennamen der einzelnen SanityChecks. Dabei sucht die Methode alle Methode, die mit "sanityCheck" beginnen. Sollte in Kundenprojekten ein anderes Prefix gelten, kann dies hier angepasst werden.

Verfügbare Sanity Checks

Folgende SanityChecks stehen im Standard zur Verfügung

Methodenname

Funktionalität

SC12SystemTestUtils

sanityCheckDiskSpace

Diese Methode prüft für das Verzeichnis, in dem die Java-VM ausgeführt wird, wie viel freier Festplattenspeicher zur Verfügung steht. Es gibt zwei Grenzwerte zur Klassifizierung des freien Speichers, die in den folgenden globalen Variablen definiert werden:

  • Warnung: C12DiskSpaceWarning

  • Fehler: C12DiskSpaceError

Trifft keine der beiden Klassifizierungen zu, wird die Prüfung als erfolgreich gewertet und dementsprechend markiert im Systemmonitor angezeigt. Werden die Variablen nicht oder negativ initialisiert, werden Standardwerte genutzt. Für die Warnung sind das 6000MB und für den Fehler 2000MB.

sanityCheckCopyActPerf1

Aktivität kopieren

  • Es wird eine Suche übergeben. In dem Suchergebnis wird der erste Eintrag kopiert. Anschließend wird die gemessene Zeit in der LogMap gespeichert

  • Suchergebnis sollte nicht leer sein.

  • Rückgabewert: Map

sanityCheckDeprecatedMethods

Sucht nach Methoden, die auf "deprecated" gesetzt sind, aber weiterhin verwendet werden.

sanityCheckEmptyKeys

Diese Methode durchläuft für alle Entitäten (MetadataUtils.getAllEntityNames()) je Entität eine Schleife, die alle Schlüssel- (numerisch und alphanumerisch) und Picklistenfelder der Entität betrachtet. Für jedes dieser Felder wird geprüft, ob das Setzen des Leerschlüssels nicht erlaubt ist (!MetaDataUtils.isEmptyKeyAllowed()). Für jedes dieser Felder wird nun eine Suche erzeugt, die als Parameter für das Feld den Leerschlüssel verwendet. So werden alle Datensätze ermittelt, für die entgegen der Feldeigenschaften der Leerschlüssel gesetzt wurde. Die Anzahl der Datensätze im Suchergebnis wird gezählt und wenn größer 0 in die LogMap geschrieben und im Systemmonitor mit Feldnamen angezeigt.

sanityCheckEmptyMandatoryFields

Diese Methode arbeitet ähnlich der oben beschriebenen Methode. Hier wird statt des gesetzten Leerschlüssels geprüft, ob ein Pflichtfeld (MetaDataUtils.isRequired()) leer ist. Auch hier werden die Anzahl und der Feldname für den Systemmonitor aufbereitet.

sanityCheckIndexCosts

Prüft, ob das Skript "Check index costs" läuft.

sanityCheckModifyActListPerf1

Aktivität modifizieren

  • Es wird eine Suche durchgeführt wo der Betreff nicht leer ist. Dann wird ein zufälliger Eintrag mittels Zufallsgenerator gewählt.

  • Der Eintrag wird kopiert und der Betreff geändert sowie gespeichert.

  • Dann wird die gemessene Zeit in einer Logmap zurückgegeben.

sanityCheckOldIOMethods

Prüft, ob die alten Methoden zum Schreiben der InterfaceOver und -detail in Verwendung sind.

sanityCheckRenewStats

Prüft, ob das Skript "Check renew statistics" läuft.

sanityCheckSaveActivityPerf1

Neue Aktivität anlegen mit einer Person und einem Angebot

  • Es werden die Methoden createNewCustomer() und createNewContactPerson() aufgerufen. Dort werden ein neuer GP und AP angelegt und wieder als IContainer zurückgegeben

  • Dann wird ein neues Angebot erstellt. Anschließend wird der IContainer in einer Liste gespeichert, um später das Angebot mit der Aktivität zu verbinden.

  • Nun wird die Aktivität erstellt und mit dem Angebot verlinkt.

  • Dann wird überprüft, ob die (alle) IContainer gefüllt sind. Falls ja, werden die Zeiten in die LogMap geschrieben

  • Rückgabewert: Map

sanityCheckSaveBlankoLetterActNewPerf1

Neue Aktivität anlegen und Einzelbrief Blanko anlegen

  • Erst wird ein GP angelegt. Der GP wird bei Anlage des AP als Standard festgelegt. Dann wird die Aktivität mit dem AP angelegt. Anschließend werden diese verlinkt.

  • Im letzten Schritt wird ein Dokument zu der Aktivität hinzugefügt. Ist das erfolgreich wird die gemessene Zeit ausgewertet.

  • Rückgabewert: Map

sanityCheckSaveContactPersonNew

Neuen Ansprechpartner anlegen

  • Es wird die Methode createNewContactPerson() aufgerufen. Dort wird ein neuer AP angelegt und wieder als IContainer zurückgegebn

  • Dann wird überprüft, ob der IContainer gefüllt ist. Falls ja, werden die Zeiten in die LogMap geschrieben

  • Rückgabewert: Map

sanityCheckSaveCustomerNewPerf1

Neuen Geschäftspartner anlegen

  • Es wird die Methode createNewCustomer() aufgerufen. Dort wird ein neuer GP angelegt und wieder als IContainer zurückgegeben

  • Dann wird überprüft, ob der IContainer gefüllt ist. Falls ja, werden die Zeiten in die LogMap geschrieben

  • Rückgabewert: Map

sanityCheckSearchContactPersonPerf1

Ansprechpartner suchen

  • Es wird eine Suche an die Methode übergeben.

  • Nach der Suche und Prüfung wird das Ergebnis der Messung in eine LogMap geschrieben und zurückgegeben.

  • Rückgabewert: Map

sanityCheckSearchCustomerPerf1

Geschäftspartner suchen

  • Es wird eine Suche an die Methode übergeben.

  • Nach der Suche und Prüfung wird das Ergebnis der Messung in eine LogMap geschrieben und zurückgegeben.

  • Rückgabewert: Map

sanityCheckUnchangedKeys

Prüft auf Schlüssel, deren Schlüsselwert "BITTE AENDERN" enthält und gibt diesen inklusive des betroffenen Schlüsselbereichs im Systemmonitor aus.

sanityCheckUnindexedEntities

Anzahl der Einträge in UnindexedEntity

sanityCheckOnlyOneERPAddressPerCustomer

Prüft, ob für einen Geschäftspartner mehr als ein Kommunikationseintrag mit NameKey == ERP existiert.

sanityCheckC1Indexes

Prüft das Vorhandensein eines Index auf bestimmten C1-Entitäten

Bisher werden folgende Entitäten abgeprüft

  • C12EVENT

SC12RegionalStructureUtils

sanityCheck

Der SanityCheck für diesen fachlichen Bereich prüft, ob es Postleitzahlen-Datensätze gibt, bei denen das Bundesland nicht gefüllt ist.

SC12TimeSliceUtils

sanityCheck

Prüft für alle Entitäten die globalen Variablen für die Zeitscheibenkonfiguration.

SC12RightUtils

sanityCheck

Führt diverse Prüfungen durch bzgl. der konfigurierten Entitäten. Wenn keine einzige Entität konfiguriert ist, wird eine Warnung ausgegeben.

SC12I18nUtils

sanityCheck

Prüft auf fehlende Internationalisierungen in Entscheidungsdialogen, Meldungsdialogen, Auswahldialogen in der Anwendung (inkl. BPM)

Zur Ausführung ist eine Datenbankprozedur einzurichten

SQL-Statements
CODE
-- Oracle
PROCEDURE i18nSanityCheck(p_return OUT varchar2) IS
  BEGIN
    select listagg(pcid, ';') within group(order by pcid) into p_return
    from
    (Select distinct pc.id as pcid
      FROM processmodel pm
        INNER JOIN processcontainer pc on (pc.pk = pm.processkey and pc.active = 1)
    WHERE pm.active = 1
       and pm.modeltype in ('BPMN_IMPL','REPOSITORY')
       and
       (
        (
          INSTR(UPPER(pm.XMLDATA),UPPER('DialogUtils.showDecisionDialog')) > 1
          and
          INSTR(UPPER(pm.XMLDATA),UPPER('DialogUtils.showDecisionDialog(I18nUtils')) = 0
        )
       or
       (
          INSTR(UPPER(pm.XMLDATA),UPPER('DialogUtils.showMessageDialog')) > 1
          and
          INSTR(UPPER(pm.XMLDATA),UPPER('DialogUtils.showMessageDialog(I18nUtils')) = 0
        )
        or
        (
          INSTR(UPPER(pm.XMLDATA),UPPER('DialogUtils.showSelectionDialog')) > 1
          and
          INSTR(UPPER(pm.XMLDATA),UPPER('DialogUtils.showSelectionDialog(I18nUtils')) = 0
        )
        )
 group by pc.id);
  END;
  
  -- MS SQL
CREATE PROC i18nSanityCheck(@return VARCHAR(500) OUTPUT) AS
    BEGIN
        DECLARE @IDS VARCHAR(8000)
        Select distinct @IDS = COALESCE(@IDS + ';', '') + pc.id
            FROM processmodel pm
            INNER JOIN processcontainer pc on (pc.pk = pm.processkey and pc.active = 1)
        WHERE pm.active = 1
            and pm.modeltype in ('BPMN_IMPL','REPOSITORY')
            and
            (
                (
                    CHARINDEX(UPPER('DialogUtils.showDecisionDialog'),UPPER(pm.XMLDATA)) > 1
                    and
                    CHARINDEX(UPPER('DialogUtils.showDecisionDialog(I18nUtils'),UPPER(pm.XMLDATA)) = 0
                )
                or
                (
                    CHARINDEX(UPPER('DialogUtils.showMessageDialog'),UPPER(pm.XMLDATA)) > 1
                    and
                    CHARINDEX(UPPER('DialogUtils.showMessageDialog(I18nUtils'),UPPER(pm.XMLDATA)) = 0
                )
                or
                (
                    CHARINDEX(UPPER('DialogUtils.showSelectionDialog'),UPPER(pm.XMLDATA)) > 1
                    and
                    CHARINDEX(UPPER('DialogUtils.showSelectionDialog(I18nUtils'),UPPER(pm.XMLDATA)) = 0
                )
            )
 
        group by pc.id;
    END;

Interner Ablauf

Zur Systemüberwachung liefert CURSOR den Prozess „SanityCheck” aus.

Dieser Prozess führt timergesteuerte Systemtests durch und speichert die Ergebnisse als Schnittstellendetails-Datensatz. In diesen Prozess können weitere Prüfungen aufgenommen werden. Diese sollten als Skriptbibliotheksmethoden implementiert und in diesem Prozess aufgerufen werden. Die durch den Prozess erzeugten Schnittstellen-Datensätze sollten über Ihren Primärschlüssel in den Systemmonitor eingebunden werden.

Zu einer Skript-Bibliotheksklasse kann eine Methode, deren Name mit "sanityCheck" beginnt, angelegt werden. Diese kann beispielsweise die Voraussetzungen zur korrekten Funktion der Skript-Bibliotheksklasse prüfen. Diese Skriptmethoden werden vom Prozess C12SanityCheck gesammelt und ausgeführt. Dieser verarbeitet die Ergebnisse zu Schnittstellen-Datensätzen. Liegt kein Datensatz mit der übergebenen ID vor, wird er angelegt.

Die dynamischen Suchen zur Ermittlung der zu prüfenden Datensätze berücksichtigten das Feld Active.<Entitätsname> = true. Dadurch werden inaktive/gelöschte Datensätze nicht mehr geprüft.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.