ZeitkonzepteProcessBase - Process Simulation Software

Zeiten spielen bei einer Prozessanalyse eine herausragende Rolle. ProcessBase bietet hier unterschiedliche Konzepte zur Unterstützung an. Zunächst einmal sind die unterschiedlichen Datentypen zu nennen, die Zeitinformationen repräsentieren:

  • Der Datentyp time repräsentiert Zeitinformationen hinsichtlich Stunden, Minuten und Sekunden. Diese werden als Zeichenkette notiert und haben zum Beispiel die Form "12:17:36". Hierbei müssen die Stunden nicht auf den Bereich von 0 bis 23 beschränkt sein, sondern können darüber hinaus gehen.
  • Der Datentyp date meint ein Kalenderdatum. Auch hier erfolgt die Repräsentation als String zum Beispiel als "2017.09.07". Die Darstellung in der Reihenfolge Jahr, Monat gefolgt vom Tag bietet den Vorteil, dass Daten leicht verglichen und auch zeitlich sortiert werden können.
  • Der Datentype datetime kombiniert die Konzepte von date und time in einem einzelnen Datentyp. Innerhalb einer Zeichenkette wird das Datum gefolgt von der Zeitinformation notiert, wobei Datum und Zeit durch den Buchstaben T getrennt werden. Eine beispielhafte Zeitangabe für den datetime-Datentype wäre etwa "2017.09.07T12:17:36"

Derzeit ist die kleinste zeitliche Einheit, die in ProcessBase repräsentiert wird, die Sekunde. Bei Bedarf wäre eine feinere Granularität aber auch denkbar.

Modelliert man Produktions- oder Geschäftsprozesse und ist an Zeitinformationen interessiert, so muss man Zeitinformationen addieren können, etwa um die Bearbeitungszeit an einem Auftrag zu bestimmen. ProcessBase unterstützt daher die Möglichkeit, Zeiten aufaddieren zu können.

Für einen time-Wert t gibt es in ProcessBase ferner die Möglichkeit, den Stunden-, Minuten- und Sekundenanteil zu extrahieren. Hierzu stehen die Funktionen hour(t), minute(t) und second(t) zur Verfügung.

Im Beispiel ist die Stelle Anfang mit unterschiedlichen Zeit-Werten markiert. Die erste Transition lässt nur diejenigen passieren, deren Minutenanteil größer 20 ist. Auf die so weitergereichten Objekte wird anschließend eine konstante Zeit aufaddiert - das könnte die Bearbeitungszeit in einem Produktionsprozess sein. Die zweite Transition reicht die Token von der mittleren Stelle ungefiltert weiter und spaltet die Zeit-Werte in ihren Stunden-, Minuten- und Sekundenanteil auf.

Das Aufaddieren von Datum-Werten erscheint (derzeit) wenig sinnvoll und wird von ProcessBase (noch) nicht unterstützt. Allerdings gibt es auch mit Blick auf Datum-Werte unterstützende Funktionen.

Mit den Funktionen year(d), month(d) und day(d) lassen sich die jeweiligen Bestandteile eines Datum-Wertes d extrahieren.

Zusätzlich gibt es die Funktion today(), die das aktuelle Tagesdatum liefert.

Im Beispiel ist die Stelle Anfang mit unterschiedlichen Datum-Werten inkl. dem aktuellen Tagesdatum markiert. Die Transition lässt nur diejenigen passieren, die vor dem 24.02.2017 liegen. Danach werden die Datum-Werte in ihre Bestandteile zerlegt.

Auch der in ProcessBase unterstütze Datentyp datetime bietet interessante Funktionen und ist aufgrund der Kombination von Zeit- und Datumwerten der mächtigste Zeitdatentyp in ProcessBase.

Zunächst gibt es auch für einen datetime-Wert dt die Möglichkeit, diesen mittels der Funktionen year(dt), month(dt), day(dt), hour(dt), minute(dt) und second(dt) in ihre Bestandteile zu zerlegen. Ferner gibt es die Funktion date(dt), die den Datumsanteil extrahiert, sowie die Funktion time(dt), die den Zeitanteil bestimmt.

Analog zur Funktion today() für Datum-Werte gibt es die Funktion now(), die den aktuellen Zeitpunkt inkl. Datum und Uhrzeit bestimmt. In Kombination mit der Funktion time ermöglicht diese Funktion auch, die aktuelle Tageszeit zu bestimmen.

Umgekehrt gibt es die Funktion datetime(d), die einen Datum-Wert d in den Datentyp datetime umwandelt. Als Uhrzeit wird hier "00:00:00" angenommen.

Die Funktion dayofweek(dt) bestimmt für ein datetime-Wert dt den zugehörigen Wochentag und gibt ihn abgekürzt als zweistellige Zeichenkette zurück.

Schließlich gibt es noch Funktionen, die den Abstand zwischen zwei Zeitpunkten, die als datetime-Werte vorliegen, zu bestimmen. Für zwei gegebene Zeitpunkte d1 und d2 gibt es die folgenden möglichen Berechnungen. Hierbei müssen d1 und d2 vom selben Zeittyp sein:

  • diff(d1,d2,"year") berechnet die Zeitdifferenz in Jahren
  • diff(d1,d2,"month") berechnet die Zeitdifferenz in Monaten
  • diff(d1,d2,"day") berechnet die Zeitdifferenz in Tagen
  • diff(d1,d2,"hour") berechnet die Zeitdifferenz in Stunden
  • diff(d1,d2,"minute") berechnet die Zeitdifferenz in Minuten
  • diff(d1,d2,"second") berechnet die Zeitdifferenz in Sekunden
  • diff(d1,d2,"time") berechnet die Zeitdifferenz als time-Wert
  • diff(d1,d2,"date") berechnet die Zeitdifferenz als date-Wert
  • diff(d1,d2,"datetime") berechnet die Zeitdifferenz als datetime-Wert

Das Beispiel zeigt eine Anwendung dieser Funktionen im Zusammenspiel mit der Funktion now(). Wenn Sie die Stelle Ich mit Ihrem Geburtsdatum und Ihrer Geburtszeit markieren, dann berechnet das Petri-Netz Ihr Alter in Jahren, Monaten, usw. und zeigt Ihnen außerdem noch den Wochentag Ihrer Geburt an.

Schließlich ist es von zentraler Bedeutung mit datetime-Werten rechnen zu können. So können zu datetime-Werten time-Werte addiert werden, um etwa die Bearbeitungszeit an einem Werkstück auszudrücken. Weil eine solche Bearbeitungszeit aber oftmals von der Größe einer Charge abhängt, ist es außerdem möglich, den Aufzuaddierenden Wert zu multiplizieren.

Im Beispiel sind auf der Stelle Auftrag drei Aufträge mit Auftragsnummer a, Kundenname k und Bestellmenge m hinterlegt. Die Stelle Startzeit wird zu Beginn mit dem aktuellen Zeitpunkt markiert. Die Aufträge werden durch die Transition in der Reichenfolge der Auftragsnummern abgearbeitet und es werden das Fertigstellungsdatum und damit auch das Datum des nächst möglichen Startzeitpunkts für den dann folgenden Auftrag berechnet.