Lade...
 

CX_SPAN_DATE - Intervall oder Vorgang

Intervall oder Vorgang

Eine Datumsperiode verfügt über ein (Start-)Datum und eine Periodenlänge (Dauer).

Im einfachsten Fall: Dauer ist positiv, Typ ist FROM_TO (mit Start und Ende) und Tageskategorie ist Brutto, ist eine solche Datumsperiode sowohl eine Menge von Daten (Zeitspanne, Intervall) als auch ein Vorgang. D.h. im einfachsten Fall müssen wir uns keine Gedanken darüber machen, ob nun eine Zeitspanne oder eine Art Zeitaufwand mit Startdatum das ist,

was mit der Datumsperiode modelliert wird.

Wenn man durch eine nicht positive Dauer oder einen bestimmtes Flag im

validEnum nicht mehr den einfachsten Fall vorliegen hat, muss jedoch zwischen diesen beiden Interpretationen unterschieden werden, da z.B. einige Funktionen nur für eine bestimmte Interpretation Sinn machen. Deswegen sollen im folgenden

die möglichen Abweichungen vom Normalfall beschrieben werden.

Periodenlänge nicht positiv:

Ein Vorgang, also ein bestimmter notwendiger zeitlicher Aufwand, der an einem

bestimmten Termin hängt (beginnt), kann auch das Ergebnis einer Berechnung sein, z.B. der Berechnung des Kritischen Pfades in einem Gantt-Diagramms (Critical Path). Eine Pufferzeit in einer Produktion sollte zumindest nicht negativ sein. Bei einer (noch) nicht-harmonisierten Planung kann als Zwischenergebnis durchaus ein negativer Wert für diese entstehen.
Direkt interpretiert bedeutet dies: "Man hat an diesem Tag noch - 1 Tage Zeit etwas fertigzustellen". Oder besser gesagt: "Man muss an anderer Stelle noch 1 Tag gewinnen/sparen, um das Endprodukt rechtzeitig fertig stellen zu können." Um solche kalkulatorischen Ergebnisse in ClassiX® darstellen zu können, ist eine Periodenlänge, die nicht positiv ist, zulässig.
Da eine Datumsperiode für einen bestimmten Tag die Periodenlänge "1 Tag" hat und, z.B., vom "3.10.1990" bis zum "3.10.1990" reicht, bedeutet schon eine Periodenlänge von "0 Tagen", dass diese, z.B., vom "3.10.1990" bis zum "2.10.1990" reicht. Das Ende liegt also vor dem Anfang! Das Ende schiebt sich entsprechend weiter vor den Start, wenn die Dauer -1, -2, -3 usw. Tage lang ist.

Es wird also strikt nach der Formel:

EndeDatum = StartDatum + Periodenlänge -1 Tag

verfahren.

Für ein (geschlossenes!) Intervall macht hingegen bereits eine Periodenlänge

von 0 im Grunde keinen Sinn. Bei nicht positiver Periodenlänge enthielte nämlich so ein Intervall keine Werte, wäre aber dennoch ungleich der leeren Menge. So ein Gebilde kann es als Menge nicht geben.
Aus diesem Grund liefern alle Funktionen die sich auf die Mengenbetrachtung der Datumsperiode beziehen (s.u.) einen Wert, der ihre Unanwendbarkeit

widerspiegelt (z.B. NULL), zurück.

Ist eine nicht positive Periodenlänge nur darauf zurückzuführen, dass im

Grunde nur das Start- und Enddatum verdreht worden sind (z.B. jeweils aus einer freien Berechnungsformel stammen), so kann man auf das jeweils jüngste oder älteste Datum über die Funktionen RealStartOfPeriod und RealEndOfPeriod zurückgreifen. Zusammen mit der ideellen Periodenlänge eines Intervalls, das aus diesen Größen gebildet werden kann, und mit der Funktion RealDuration berechnet wird, kann auch eine Datumsperiode mit nicht positiver Dauer als Intervall behandelt werden.
Die Funktionen Real* bilden auch für (halb-) unbeschränkte

Intervalle gewünschte Eigenschaften ab.

 

halbunbeschränkte und unbeschränkte Perioden:

Intervalle (in der Mengentheorie) müssen keine/beide Grenzen haben. Jede

Grenze kann auch jeweils wegfallen. Fehlt eine Grenze spricht man von einem halbunbeschränkten, fehlen beide von einem unbeschränkten Intervall.
Mit den Typen FROM (Ende fehlt), TO (Start fehlt) und ENDLESS (Start und Ende fehlt) kann auch eine Datumsperiode halbunbeschränkt oder unbeschränkt sein.
Anwendungen sind Beschreibungen für einen Zustand, der nicht nur von einem Zeitpunkt bis zu einem anderen Zeitpunkt andauert, sondern z.B. von einem Zeitpunkt beginnen und nie wieder enden. In der Modellierung wäre dies z.B. ein Mehrwertsteuersatz, der am "1.4.1997" eingeführt wurde und (a priori, da es noch keine neuere Festlegung gibt) bis zum Ende aller Zeiten anhält.
Entsprechende Bedeutungen ergeben sich auch für TO und ENDLESS, speziell, wenn

eine Datumsperiode das Ergebnis einer Berechnung ist.

Da das Startdatum immer das interne Datum ist und das Enddatum aus der obigen

Berechnungsformel gewonnen wird, können diese Größen nicht benutzt werden, um ein Ergebnis anzufordern, das auch den Fall einer Unbeschränktheit widerspiegelt.
Hierfür sind die Real*-Funktionen zu verwenden. So liefert RealStartOfPeriod für die Definition TO oder ENDLESS den Wert NULL zurück. Entsprechendes gilt für RealEndOfPeriod und FROM oder ENDLESS. Mit diesen Funktionen bekommt man also, unabhängig von der Definition, immer die tatsächlichen ("realen") Grenzen der Intervalls zurück. Um zu prüfen, ob ein Datum in einer Datumsperiode ist, kann man also z.B. RealStartOfPeriod aufrufen und vor dem Datumsvergleich das Ergebnis auf NULL prüfen. Ist dies der Fall, so liegt jedes Datum später als der Intervall-Anfang. (Eleganter für solche

"enthalten sein" Prüfungen ist natürlich die Funktion Encompassed.) 

Auch Vorgänge können theoretisch unbeschränkt sein. Hier wäre dann ein

Typ ungleich FROM_TO zu wählen. Praktisch werden diese auch aus Berechnungen nicht auftreten, da z.B. in der Aggregation von Vorgängen immer nur welche endlicher Länge einfließen, und damit auch so eine Aggregation immer endliche

Länge besitzt.

Wenn eine Datumsperiode auch nur halbunbeschränkt ist, ist ihre theoretische

Länge immer unendlich. De facto wird das Feld duration aber auch beim Verändern des Typs nicht verändert. Dadurch kann der Wert in diesem (vor allem die Diffusität) später zurückgewonnen werden. Bei allen Berechnungsfunktionen wird jedoch so verfahren, als wäre es unendlich gesetzt.
Da also für (halb-)unbeschränkte Datumsperioden die Periodenlänge keine Bedeutung mehr hat, ist es auch irrelevant, ob sie nicht positiv ist. Auch die Tageskategorien

(s.u.) sind dann nicht mehr anwendbar.

Tageskategorien:

Tageskategorien bestimmen den Datums-Typ, über den

die Periodenlänge gebildet wird. Eine Datumsperiode mit einer Tageskategorie ungleich ALL_TERM wird auch als Netto-Datumsperiode bezeichnet. Die Interpretation dieser wird als eigenes Konzept Netto-Typ erläutert. Siehe dort.
Für eine Intervall-Interpretation werden Netto-Perioden wie die entsprechende Brutto-Periode (gleicher Start, gleiches Ende) behandelt. Netto-Perioden können auch zusammen mit einer nicht positiven Periodenlänge auftreten. Netto-Perioden sind immer FROM_TO definiert, da ein "Netto" zusammen mit einer

unendlichen Dauer keinen Sinn ergibt.

Eigentlicher Zweck einer Netto-Dauer ist die Verwendung als Aufwand innerhalb eines Vorgangs.

 

Auf eine bestimmte Interpretation eingeschränkte Funktionen:

Intervall:

Encompassed, Overlap, RealStartOfPeriod,

RealEndOfPeriod, RealDuration, FirstPeriod, LastPeriod,
JoinPeriods, OverlappingPeriod

Vorgang:

NetDuration, GrossDuration, IsNet, GetNet, SetNet

Zudem sind viele Funktionen auf eine Datumsperiode anwendbar, die sich eigentlich auf das (Start-)Datum beziehen, so wie z.B. IsWorkingday.