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