Skip to main content
Skip table of contents

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

JavaScript errors detected

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

If this problem persists, please contact our support.