Skip to main content
Skip table of contents

Zeitscheiben - TimeSliceUtils (Admin)

Voraussetzungen

  • Die allgemeine Zeitscheibenfunktionalität ist in dem Modul EVI_BASIS enthalten. Durch das Einspielen und Lizenzieren dieses Moduls steht diese Funktionalität automatisch zur Verfügung.

Technische Dokumentation

Komponentenübersicht

Prozesse

  • C12TIMCESLICE_UTIL

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

  • SC12TimeSliceUtils

Globale Variablen

  • C12TIMESLICE_C12BILLPLAN

  • C12TIMESLICE_C12RTIMESL

  • C12TIMESLICE_C12TIMESLICINGIS

Administrationsmöglichkeiten

Die Administration der allgemeinen Zeitscheibenfunktionalität erfolgt über globale Variablen. Der Name der globalen Variable muss dabei dem Namensmuster "TIMESLICE_<Entitätsname in Großbuchstaben>" folgen (z. B. TIMESLICE_C12RTIMESL). Die Existenz einer globalen Variable gemäß diesem Namensschema aktiviert die Zeitscheibenprüfung.

Die globale Variable muss vom Typ "Einfacher Text" sein. Der Wert der Variablen wird gemäß dem nachfolgenden Schema aufgebaut. Technisch gesehen handelt es sich um eine HashMap, welche in einer Json Notation hinterlegt wird.

Globale Variable "Zeitscheibenkonfiguration"
CODE
TIMESLICE_<Entitätsname in Großbuchstaben> (z. B. TIMESLICE_RTIMESL)
{
  "TS_FROM_FIELD":"Field",
  "TS_UNTIL_FIELD":"Field",
  "TS_UNIQUE_FIELDS": [ "Field1", "Field2", ...],
  "TS_SEARCH_PLAINKEY":"<Plainkey der Suche>",     // optionaler Parameter
  "TS_CLOSE_FORMER_TS" : true,                     // optionaler Parameter 
  "TS_ERROR_MESSAGE_I18NKEY":"C12RTIMESL.Conflict" // optionaler Parameter  
}

Feld

Beschreibung

TS_FROM_FIELD

Definiert den Feldnamen innerhalb der Entität, in welchem der Beginn einer Zeitscheibe gespeichert wird.

TS_UNTIL_FIELD

Name des Feldes innerhalb der Entität, welches das Ende der Zeitscheibe speichert.

TS_UNIQUE_FIELDS

Liste der Felder innerhalb der Entität, über welche die Zeitscheiben gruppiert werden.

TS_SEARCH_PLAINKEY

Name einer Zeitscheibensuche, welche alle Zeitscheiben, die sich überlappen dürfen, von einer Prüfung ausschließt.

TS_CLOSE_FORMER_TS

Optionaler Parameter zum Schließen vorheriger, noch offener Zeitscheiben beim Anlegen einer neuen Zeitscheibe

TS_ERROR_MESSAGE_I18NKEY

Optionaler Parameter zur Festlegung einer internationalisierbaren Fehlermeldung im Falle eines Zeitscheibenkonfliktes. Hier wird der Name der Sprachvariablen hinterlegt. Als Fallback wird die Sprachvariable C12TimeSliceUtils.Conflict verwendet.

Es werden nur die Feldnamen (ohne Entität) angegeben, z.B. "FromDate".


Beispielkonfiguration für die Entitäten Abrechnungsvertrag (BillingContract) und Tarifzeitscheiben (C12RTIMESL):

Globale Variable "Zeitscheibenkonfiguration"
CODE
TIMESLICE_BILLINGCONTRACT
{ 
"TS_FROM_FIELD":"FromDate",
"TS_UNTIL_FIELD":"UntilDate",
"TS_UNIQUE_FIELDS": [ "C12INSTACCPK"]
}

// Für in C1 angelegte globale Variablen gilt automatisch der Präfix C12
// automatisches Schließen vorheriger Zeitscheiben aktiviert
// Gruppierungsfelder bestehend aus Nachschlagefeld und Schlüsselfeld mit bestimmten eindeutigen Werten
// Sprachvariable für Fehlermeldung bei Zeitscheibenkonflikt hinterlegt
C12TIMESLICE_C12RTIMESL
{ 
"TS_FROM_FIELD":"FromDate",
"TS_UNTIL_FIELD":"UntilDate",
"TS_UNIQUE_FIELDS": [ 
	"RATETYPEPK",
	{
         "StateTimeSlice":[
            "fvvvvvuglad4k1bb6gbu7iS_Keytab",
            "fvvvvvvaqejqq1bb6gb8klS_Keytab"
         ]
    }
],
"TS_CLOSE_FORMER_TS" : true,
"TS_ERROR_MESSAGE_I18NKEY":"C12RTIMESL.Conflict"
}


// Wenn Tarifzeitscheiben mit Zeitscheibenstatus "IN VORBEREITUNG" von der Prüfung ausgeschlossen werden sollen, folgende Suche in die Konfiguration aufnehmen:
{
"TS_FROM_FIELD":"FromDate",
"TS_UNTIL_FIELD":"UntilDate",
"TS_UNIQUE_FIELDS": ["RateTypePk", "StateTimeSlice"]
"TS_SEARCH_PLAINKEY":"C12TS_UNIQUE_C12RTIMESL"
}

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

Der überwiegende Großteil der Logik für das Handling von Zeitscheiben liegt in der Skriptbibliothek SC12TimeSliceUtils. Mit den dort hinterlegten Methoden sind diverse Prüfungen und Operationen auf Zeitscheiben möglich.

Die Prüfung zur Laufzeit (Neuanlage und Änderung) erfolgt über einen generischen BPM-Prozess. Dieser nutzt die Methoden aus der Skriptbibliothek zur Prüfung auf eventuell vorliegende Zeitscheibenkonflikte und gibt in diesem Fall einen Fehler (technisch: Exception) aus.

Nachfolgend werden die wichtigsten Methoden aus der Skriptklasse SC12TimeSliceUtils aufgeführt. Detaillierte Informationen zu den einzelnen Methoden können direkt in der Skriptbibliothek über die Code Completion eingesehen werden.

Methode

Kurzbeschreibung

closeFormerTimeSlice

Ermittelt eine vorherige Zeitscheibe, die geschlossen werden kann, wenn dies konfiguriert ist

closeTimeSlice

Schließt eine vorherige, noch offene Zeitscheibe

date2JDBC_TS

Wandelt ein übergebenes Java-Datum in einen Datumswert für Datenbanken um

getConflictingTimeSlices

Ermittelt die Zeitscheiben, welche mit den Daten aus dem übergebenen IContainer in Konflikt stehen (sofern vorhanden).

getErrorMessage

Prüft die Konfiguration einer Entität auf eine definierte internationalisierte Fehlermeldung und gibt diese zurück

getFollowingTimeSlices

Ermittelt alle Zeitscheiben, welche zeitlich nach der übergeben Zeitscheibe liegen.

getFrom

Ermittelt aus der übergebenen Zeitscheibe gemäß der Konfiguration das Beginndatum.

getFromField

Liefert den Feldnamen des Feldes für den Beginn einer Zeitscheibe zurück

getGroupFields

Liefert die Gruppierungsfelder zurück

getGroupValues

Liefert die Werte für die Schlüsselfelder einer Gruppierung zurück

getTimeSlice

Liefert eine Zeitscheibe für ein übergebenes Datum und eine Konfiguration zurückLi

getTimeSliceConfig

Liefert die Konfiguration als Map für eine übergebene Entität zurück

getUntil

Ermittelt aus der übergebenen Zeitscheibe das Endedatum.

getUntilField

Liefert den Feldnamen des Feldes für das Ende einer Zeitscheibe zurück

isTimeSliceConflict

Prüft, ob die Zeitscheibe gemäß den Daten im übergebenen Container einen Zeitscheibenkonflikt verursachen würde. Diese Methode kann vor dem Speichern genutzt werden, um einen Fehler beim Speichern zu verhindern.

isTimeSliceEnabled

Prüft, ob für eine konkrete Entität die Zeitscheibenfunktionalität konfiguriert und damit aktiviert ist.

isUnlimited

Prüft, ob eine Zeitscheibe unbefristet ist. Eine Zeitscheibe ist per Definition unbefristet, wenn das Endedatum nicht gefüllt ist.

sanityCheck

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

Ablaufbeschreibung

Die Prüfung zur Laufzeit (bei Neuanlage und Änderungen) erfolgt durch einen generischen BPM-Prozess.

  • Der BPM-Prozess prüft im Startereignis, ob für die aktuelle Entität die Zeitscheibenfunktionalität konfiguriert ist.

    • In diesem Fall (und nur in diesem) wird die Prüfung auf mögliche Zeitscheibenkonflikte durchgeführt.

    • Wird ein Konflikt erkannt, wird die Operation durch einen technischen Fehler (Exception) abgebrochen.

JavaScript errors detected

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

If this problem persists, please contact our support.