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
- Periodenlänge nicht positiv
- halbunbeschränkte und unbeschränkte Perioden
- Tageskategorien
- auf eine bestimmte Interpretation eingeschränkte Funktionen
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.
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
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
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
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
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
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
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.