TBeCbOperationTimeLine
TBeCbOperationTimeLine
Die Klasse TBeCbOperationTimeLine stellt eine Zeitleiste zur Abbildung der Anwesenheit und Verfügbarkeit von Ressourcen (Personen oder Maschinen) dar.
Hintergrund:
Für die Berechnung von (Produktions-)Planungs-Szenarien etc. unter Berücksichtigung von
Ressourcen-Verfügbarkeit wird u.a. Information darüber benötigt, ob eine Ressource zum
Zeitpunkt x verfügbar (im Sinne von anwesend, nicht im Sinne von frei) ist oder nicht.
Des Weiteren stellt sich häufig die Frage, wie lange eine Ressource mit einem Arbeitsauftrag
belegt ist, wenn dieser zum Zeitpunkt x begonnen wird und y Stunden in Anspruch nimmt.
Die Klasse TBeCbOperationTimeLine stellt eine Kapselung von Funktionalität zur Beantwortung
dieser Fragestellungen und verwandter Fragen bereit. Üblicherweise würde man in einer
Planung mind. eine Instanz einer Anwesenheits-Zeitleiste je zur Verfügung stehender
Ressource halten.
Funktionsweise:
Für die Abbildung von Anwesenheiten und Arbeitszeit werden zwei Zeit-Typen unterscheiden.
Zeit-Typ "Kalenderzeit"
- Ein Kalenderzeitpunkt stellt, wie der Name sagt einen exakten Zeitpunkt im Kalender dar.
- Zur Abbildung im Codeblock wird der Variablen-Typ "DT" (DateTime) genutzt.
Zeit-Typ "Operationszeit" - Eine Operationszeit hat den Charakter einer Zeit-Dauer-Angabe. Synonyme wären
"Arbeitszeit" bzw. "Arbeitsdauer".
Die Anwesenheits-Blöcke werden durch sog. "TimeItems" definiert. (siehe AddTimeItem).
Ein TimeItem hat einen Kalenderzeit-Start und ein Kalenderzeit-Ende.
Jeder Kalenderzeitpunkt wird nach der Initilisierung der Zeitleiste auf genau einen
Operationszeitpunkt abgebildet:
Nutzung:
Eine TBeCbOperationTimeLine muss vor der Nutzung mit den Anwesenheitsdaten
befüllt werden (siehe AddTimeItem). Anschließend müssen die Operations-Zeiten
berechnet werden (siehe CalcTimeLine). Jetzt können auf der Zeitleiste Berechnungen
wie z.B. OperationDurationBetween() durchgeführt werden.Eigenschaften
Precision:N
Präzision der Zeitrechnung. Muss definiert werden. Typ = Präzision eines DateTime-Variablen-Typs (DT)
HasAvailabilityData:L
Prüft, ob Anwesenheitsdaten definiert wurden.
BeginOfFirstAvailability
Ersten Zeitpunkt der Anwesenheit ermitteln.Kann erst nach Initialisierung der Zeitleiste abgefragt werden.
EndOfLastAvailability
Letzten Zeitpunkt der Anwesenheit ermitteln. Kann erst nach Initialisierung der Zeitleiste abgefragt werden.
Funktionen / Methoden
AddTimeItem
CreateTimeLine
CalcTimeLine
InitWithStandardTimeLine
CalendarToOperation
OperationToCalendar
CalendarAdd
CalendarSub
AdjustCalendarToTimeLine
OperationDurationBetween
Beispiel
CODE| oTimeLine:U, dStart:DT, dFinish:DT, dArbeitsdauer:DR, i | // Kalenderzeit Start und Ende-Variablen für die TimeItems dStart.Precision := precMinutes, dStart.DateTime := Date() + (8/24), // 08:00 Uhr dFinish.Precision := precMinutes, dFinish.DateTime := Date() + (17/24), // 17:00 Uhr // Zeitleiste erstellen oTimeLine := CreateObject('TBeCbOperationTimeLine'), oTimeLine.Precision := precMinutes, oTimeLine.CreateTimeLine(), // Anwesenheiten eintragen für 2 Wochen ab heute for i := 0 to 13 do // keine Anwesenheit am Samstag oder Sonntag if not (DoW(dStart.DateTime) = 7 or DoW(dStart.DateTime) = 1) then oTimeLine.AddTimeItem(dStart, dFinish), endif, dStart.DateTime += 1, dFinish.DateTime += 1, next, // Operationszeiten berechnen lassen oTimeLine.CalcTimeLine(), // Infos ausgeben: Writeln('Erster Anwesenheits-Zeitpunkt ', oTimeLine.BeginOfFirstAvailability ), Writeln('Letzter Anwesenheits-Zeitpunkt ', oTimeLine.EndOfLastAvailability ), dStart.DateTime := Date(), dFinish.DateTime := Date() + 1, Writeln('Anwesenheitsdauer heute ', oTimeLine.OperationDurationBetween(dStart, dFinish)), Writeln('Anwesenheitsdauer gesamt ', oTimeLine.OperationDurationBetween(oTimeLine.BeginOfFirstAvailability, oTimeLine.EndOfLastAvailability)), // Eine 12-stündige Arbeit die heute um 08:45 begonnen wird endet wann? dStart.DateTime := Date() + (8.75/24), dArbeitsdauer.Precision := precMinutes, dArbeitsdauer.Hours := 12, Writeln('12 h Arbeit fertig am / um ', oTimeLine.CalendarAdd(dStart, dArbeitsdauer)),
Weitere Verknüpfungen
>
TBeCbPCData