IFC und die liebe Zeit

Objekte im IFC-Schema benötigen nicht unbedingt eine Geometrie, wie wir in einem früheren Beitrag schon erklärt haben. Genau genommen handelt es sich bei den meisten Objekten, welche derzeit in einer IFC-Datei dokumentiert werden, um solche, die von IfcProduct abgeleitet werden. Das erlaubt uns aber nur eine sehr eingeschränkte Datenmodellierung unserer Projekte.

Was dabei noch vollkommen fehlt, sind Objekte, die keine (oder keine relevante) Geometrie aufweisen. Beispiele hierfür sind

  • Organisationen
  • Personen
  • Rollen
  • Vorgänge
  • Kosten
  • Ressourcen uvm.

Relativ wenig bekannt ist, dass auch diese im IFC-Schema abgebildet sind. Die Objekte betreffend Zeit werden wir uns hier etwas genauer ansehen.

Prozesse

Ebenso wie die Klasse IfcProduct, von Objekte wie Wände, Fundamente oder Fenster abgeleitet werden, ist auch IfcProcess eine direkte Unterklasse von IfcObject. Prozesse sind wiederum eine abstrakte Klasse, somit können keine Objekte direkt diese Klasse aufweise. Erst ihre Unterklassen IfcEvent, IfcTask und IfcProcedure können wir in einer IFC-Datei verwenden. Leider fehlen hierzu in den meisten BIM-Programmen zu Erstellungsmöglichkeiten.

Aufgaben

Mit der Klasse IfcTask können Aufgaben im Projekt beschrieben werden, und das grundsätzlich bereits seit der ersten Version von IFC. Dafür sind einige zusätzliche Attribute notwendig, welche wir aber eigentlich bereits auch der klassischen Terminplanung kennen.

Die Eigenschaft Status ist selbsterklärend. Hierbei wird ein Schlagwort vergeben, um Aufgaben besser sortieren oder filtern zu können. Es gibt hierfür keine normierte Vorgabe. Beispiele sind „offen“, „in Arbeit“ oder „abgeschlossen“.

Mit dem Attribut WorkMethod wird die Arbeitsweise beschlagwortet, ebenfalls für ein einfacheres Auffinden bei einer Vielzahl von Aufgaben. Die Verwendung wird im IFC-Schema jedoch nicht genauer präzisiert und obliegt den Anwendern bzw. dem Softwareentwicklern.

IsMilestone ist ein „Ja/Nein“-Parameter, um anzuzeigen, ob eine Aufgabe eine Dauer aufweist oder nur einen Zeitpunkt beschreibt. Dieses Attribut ist das einzige, welches ausgefüllt werden muss, alle anderen sind optional.

Für jede Aufgabe kann eine Eigenschaft Priority definiert werden, um auch die Prioritäten besser verwalten zu können. Hierbei handelt es sich um eine Ganzzahl; die genaue Verwendung (0-100 oder 1-5 etc.) wird vom IFC-Schema nicht festgelegt.

TaskTime ist wahrscheinlich die wesentliche Information, welche wir für eine Aufgabe definieren wollen. Sie weist einen besonderen Datentyp auf, nämlich IfcTaskTime. Diese Ähnlichkeit in den Bezeichnungen ist zu Beginn etwas verwirrend, man gewöhnt sich aber langsam daran.

Mit IfcTaskTime wird die zeitliche Information einer Tätigkeit oder Aufgabe beschrieben, und hierfürf sind jede Menge Angaben erforderlich. Zu beachten ist aber, dass die Angabe von TaskTime optional ist; ebenso ist jedes einzelne Attribut bei IfcTaskTime nicht zwingend erforderlich.

Wir werden an dieser Stelle nicht alle Attribute einzeln durchgehen. Eine genaue Auflistung (beispielhaft für IFC4.1) findet sich hier. Es werden die Anfangs- und Endzeitpunkte festgelegt, geplante ebenso wie tatsächliche. Ebenso können Toleranzen definiert werden, also der frühest- und spätestmögliche Zeiten für Anfang und Ende einer Aufgabe.

Mit diesen Angaben können im Prinzip alle Informationen, welche in einem Gantt-Chart oder einem Kalender benötigt werden, auch in einer IFC-Datei verwaltet werden.

Nun sind dies nur die Attribute, welche einen Vorgang direkt beschreiben. Natürlich können wir auch Abhängigkeiten zwischen Vorgängen definieren; also Abfolgen (Anfang-Ende, Ende-Ende etc.) und zeitliche Abstände. Dazu aber ein anderes Mal mehr.

Ereignisse

Ein Objekt der Klasse IfcEvent wird verwendet, wenn ein Auslöser (Neudeutsch „Trigger“) für eine Tätigkeit benötigt wird. Diese Logik wurde aus der Business Process Modeling Notation (BPMN) übernommen. Etwa könnte durch eine Nachricht oder bestimmte Information ein Ereignis ausgelöst werden. Somit wäre ein nicht-lineare Prozessplanung und -umsetzung möglich. Ein durchaus interessanter Gedanke, aber vorerst noch schwer zu durchschauen; außerdem fehlen hierfür noch die Anwendungen.

Vorgehen / Abfolgen

IfcProcedure beschreibt eine logische Abfolge von Tätigkeiten, welche durch ein Ereignis ausgelöst werden oder ein solches auslösen. Dies ist zugebenerweise ein wenig abstrakt, damit können aber Aufgaben (IfcTask) im „Inneren“ noch genauer. Soviel sei hier nur der Vollständigkeit halber angeführt.