Editing IFC - Industry Foundation Classes/IFC concepts/IFC sequence concepts

From Wiki.OSArch

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
{{IFC_Documentation}}
 
 
Processes are individual events or tasks. Processes may have different meanings when used in different scenarios. When processes are used in construction, they represent construction tasks which have associated sequence relationships, may transform inputs into outputs, and have relationships to costs, products, and resources. When processes are used in facility management, they represent maintenance tasks, including to-do lists and recurring patterns.
 
Processes are individual events or tasks. Processes may have different meanings when used in different scenarios. When processes are used in construction, they represent construction tasks which have associated sequence relationships, may transform inputs into outputs, and have relationships to costs, products, and resources. When processes are used in facility management, they represent maintenance tasks, including to-do lists and recurring patterns.
  
Line 13: Line 12:
 
* IfcLagTime
 
* IfcLagTime
 
* IfcTaskType
 
* IfcTaskType
 +
* IfcEvent
 +
* IfcProcedure
 +
* IfcEventType
 +
* IfcProcedureType
  
 
Bits that are currently skipped for further analysis:
 
Bits that are currently skipped for further analysis:
  
 
* IfcTask: Quantities of resources consumed by the task are dealt with by defining the IfcElementQuantity for the resource and not at the instance of IfcTask.
 
* IfcTask: Quantities of resources consumed by the task are dealt with by defining the IfcElementQuantity for the resource and not at the instance of IfcTask.
 +
* IfcTask: An IfcTask may in turn nest other IfcTask, IfcProcedure or IfcEvent entities.
 +
* IfcTask: IfcTask's can be triggered or can trigger IfcEvent's, which is also defined through the relationship IfcRelSequence.
 
* IfcTask: Constraints may be applied to a task to indicate fixed task duration, fixed start or fixed finish, where IfcMetric.ReferencePath is set to the corresponding attribute on the IfcTaskTime entity.
 
* IfcTask: Constraints may be applied to a task to indicate fixed task duration, fixed start or fixed finish, where IfcMetric.ReferencePath is set to the corresponding attribute on the IfcTaskTime entity.
  
Line 806: Line 811:
 
Source: IfcTaskType, IfcRelDefinesByObject
 
Source: IfcTaskType, IfcRelDefinesByObject
  
[[Category:Industry Foundation Classes (IFC)]]
+
== A procedure may be defined by a typical procedure type ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
  IfcRelDefinesByType [ color=pink]
 +
  IfcRelDefinesByType -> IfcProcedure [label="RelatedObjects"]
 +
  IfcRelDefinesByType -> IfcProcedureType [label="RelatingType"]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-procedure-type.png]]
 +
 
 +
Typically in smart buildings or in process diagrams that describe complex maintenance or emergency procedures, procedure types may be used to describe typical procedures that may occur. Example typical procedures may be "close" for an actuator or "evacuate building". These typical procedures types may then relate to individual procedure instances to describe the capabilities of individual products in a smart building, or relate to tasks to describe complex processes in more detail.
 +
 
 +
Source: IfcProcedure, IfcProcedureType
 +
 
 +
== An event may be defined by a typical event type ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
  IfcRelDefinesByType [ color=pink]
 +
  IfcRelDefinesByType -> IfcEvent [label="RelatedObjects"]
 +
  IfcRelDefinesByType -> IfcEventType [label="RelatingType"]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-event-type.png]]
 +
 
 +
Typically in smart buildings or in process diagrams that describe complex maintenance or emergency procedures, event types may be used to describe typical events that may occur. Example typical events may be "motion sensed" or "fire detected". These typical event types may then relate to individual event instances. The individual event instances are then responsible for triggering procedures, as described later in this document.
 +
 
 +
Source: IfcEvent, IfcEventType
 +
 
 +
== A product type may be able to perform procedures ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
 
 +
  IfcRelAssignsToProduct [color=pink]
 +
  IfcRelAssignsToProduct -> IfcActuatorType [label="RelatingProduct"]
 +
  IfcRelAssignsToProduct -> IfcProcedureType [label="RelatedObjects"]
 +
 
 +
  IfcProcedureType -> Close [label="Name"]
 +
  Close [shape=ellipse]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-procedure.png]]
 +
 
 +
Products which have capabilities can describe the procedures they are capable of. These procedures may later on be linked to events to program smart building capabilities and reactions to their surroundings.
 +
 
 +
Source: IfcProcedure
 +
 
 +
== A product may inherit procedures from its type ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
 
 +
  IfcRelAssignsToProduct2 [color=pink, label=IfcRelAssignsToProduct]
 +
  IfcRelAssignsToProduct2 -> IfcActuatorType [label="RelatingProduct"]
 +
  IfcRelAssignsToProduct2 -> IfcProcedureType [label="RelatedObjects"]
 +
 
 +
  IfcRelDefinesByType [color=pink]
 +
  IfcRelDefinesByType -> IfcActuatorType [label="RelatingType"]
 +
  IfcRelDefinesByType -> IfcActuator [label="RelatedObjects"]
 +
 
 +
  IfcRelAssignsToProduct [color=pink]
 +
  IfcRelAssignsToProduct -> IfcActuator [label="RelatingProduct"]
 +
  IfcRelAssignsToProduct -> IfcProcedure [label="RelatedObjects"]
 +
 
 +
  IfcProcedure -> Close [label="Name"]
 +
  Close [shape=ellipse]
 +
 
 +
  IfcProcedureType -> Close2 [label="Name"]
 +
  Close2 [shape=ellipse, label="Close"]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-procedure-product-type.png]]
 +
 
 +
If a type has procedures, then all of its product instances also inherit all of its procedures.
 +
 
 +
Source: IfcProcedure
 +
 
 +
== A product type may have events that can trigger procedures ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
 
 +
  IfcRelAssignsToProduct [color=pink]
 +
  IfcRelAssignsToProduct -> IfcSensorType [label="RelatingProduct"]
 +
  IfcRelAssignsToProduct -> IfcEventType [label="RelatedObjects"]
 +
  IfcRelSequence [color=pink]
 +
  IfcRelSequence -> IfcEventType [label="RelatingProcess"]
 +
  IfcRelSequence -> IfcProcedureType [label="RelatedProcess"]
 +
 
 +
  IfcSensorType -> MOVEMENTSENSOR [label="PredefinedType"]
 +
  MOVEMENTSENSOR [shape=ellipse]
 +
  IfcEventType -> Motion [label="Name"]
 +
  Motion [shape=ellipse]
 +
  IfcProcedureType -> turnonlights [label="Name"]
 +
  turnonlights [label="Turn On Lights", shape=ellipse]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-event-product-type.png]]
 +
 
 +
Product types may have events which trigger procedures. This is typically used in building operations and smart buildings.
 +
 
 +
Source: IfcEvent
 +
 
 +
== A product may inherit events from its type ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
 
 +
  IfcRelDefinesByType [color=pink]
 +
  IfcRelDefinesByType -> IfcSensorType
 +
  IfcRelDefinesByType -> IfcSensor
 +
 
 +
  IfcRelAssignsToProduct [color=pink]
 +
  IfcRelAssignsToProduct -> IfcSensor [label="RelatingProduct"]
 +
  IfcRelAssignsToProduct -> IfcEvent [label="RelatedObjects"]
 +
  IfcRelSequence [color=pink]
 +
  IfcRelSequence -> IfcEvent [label="RelatingProcess"]
 +
  IfcRelSequence -> IfcProcedure [label="RelatedProcess"]
 +
 
 +
  IfcSensorType -> MOVEMENTSENSOR [label="PredefinedType"]
 +
  MOVEMENTSENSOR [shape=ellipse]
 +
  IfcEvent -> Motion [label="Name"]
 +
  Motion [shape=ellipse]
 +
  IfcProcedure -> turnonlights [label="Name"]
 +
  turnonlights [label="Turn On Lights", shape=ellipse]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-event-product.png]]
 +
 
 +
Products may also have events which trigger procedures. This is typically used in building operations and smart buildings. If a product type has an event type, it must inherit the event and its related procedures as well.
 +
 
 +
Source: IfcEvent
 +
 
 +
== An event may be constrained to only trigger at certain times ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
 
 +
  IfcRelAssignsToProduct [color=pink]
 +
  IfcRelAssignsToProduct -> IfcSensor [label="RelatingProduct"]
 +
  IfcRelAssignsToProduct -> IfcEvent [label="RelatedObjects"]
 +
  IfcRelAssignsToControl [color=pink]
 +
  IfcRelAssignsToControl -> IfcEvent [label="RelatedObjects"]
 +
  IfcRelAssignsToControl -> IfcWorkCalendar [label="RelatingControl"]
 +
 
 +
  IfcSensor -> MOVEMENTSENSOR [label="PredefinedType"]
 +
  MOVEMENTSENSOR [shape=ellipse]
 +
  IfcEvent -> Motion [label="Name"]
 +
  Motion [shape=ellipse]
 +
  IfcWorkCalendar -> Night [label="Name"]
 +
  Night [shape=ellipse]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-event-calendar.png]]
 +
 
 +
A calendar may constrain when an event can occur. In this example, the motion sensor will only start monitoring for motion events during night hours. These night hours are defined by the calendar.
 +
 
 +
Source: IfcEvent
 +
 
 +
== A procedure may be constrained to only be performed at certain types ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
  IfcRelAssignsToControl [color=pink]
 +
  IfcRelAssignsToControl -> IfcProcedure [label="RelatedObjects"]
 +
  IfcRelAssignsToControl -> IfcWorkCalendar [label="RelatingControl"]
 +
 
 +
  IfcProcedure -> Reset [label="Name"]
 +
  Reset [shape=ellipse, label="Reset alarm"]
 +
  IfcWorkCalendar -> Night [label="Name"]
 +
  Night [shape=ellipse]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-procedure-calendar.png]]
 +
 
 +
A calendar may constrain when a procedure can be performed. In this example, the alarm may only be reset during the night. These night hours are defined by the calendar.
 +
 
 +
Source: IfcProcedure
 +
 
 +
== Warning or cautionary advice may be provided when tasks are to be performed ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
 
 +
  IfcRelAssignsToProcess [color=pink]
 +
  IfcRelAssignsToProcess -> IfcTask [label="RelatingProcess"]
 +
  IfcRelAssignsToProcess -> IfcProcedure [label="RelatedObjects"]
 +
 
 +
  IfcTask -> chillermaintenance [label="Name"]
 +
  chillermaintenance [shape=ellipse, label="Chiller Maintenance"]
 +
 
 +
  IfcProcedure -> ADVICE_WARNING [label="PredefinedType"]
 +
  IfcProcedure -> highvoltage [label="Name"]
 +
  highvoltage [shape=ellipse, label="High Voltage"]
 +
  ADVICE_WARNING [shape=ellipse]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-procedure-advice.png]]
 +
 
 +
If an IfcProcedure has its appropriate PredefinedType set to an "ADVICE_*", then it may be attached to another process to describe warnings, caution, or additional information to be aware of when performing that task. This is typical in building maintenance works.
 +
 
 +
Source: IfcProcedure
 +
 
 +
== A task may contain procedures and events ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
 
 +
  IfcRelNests [color=pink]
 +
  IfcRelNests -> IfcTask [label="RelatingObject"]
 +
  IfcRelNests -> IfcProcedure [label="RelatedObjects[0]"]
 +
  IfcRelNests -> IfcEvent [label="RelatedObjects[1]"]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-task-nest-procedure-event.png]]
 +
 
 +
A task may be broken down into procedures and events, if it is better described as a process diagram instead of a punch list (which would be a list of subtasks). When an event is nested in a task, it means that the event only may occur during the task time period.
 +
 
 +
Source: IfcProcedure, IfcEvent
 +
 
 +
== A procedure may be broken down into more procedures and events ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
 
 +
  IfcRelNests [color=pink]
 +
  IfcRelNests -> IfcProcedure [label="RelatingObject"]
 +
  IfcRelNests -> child [label="RelatedObjects[0]"]
 +
  IfcRelNests -> IfcEvent [label="RelatedObjects[1]"]
 +
  child [label=IfcProcedure]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-procedure-nest.png]]
 +
 
 +
If a procedure is particularly complex, it may be further broken down in more detail by nesting more procedures and events within it. Note that although it is possible to break down IfcProcedures into more detail, it is not allowed to break down IfcEvents into sub events.
 +
 
 +
Source: IfcProcedure, IfcEvent
 +
 
 +
== Events and procedures may have a sequence ==
 +
 
 +
<!--
 +
digraph {
 +
  node [ shape=rect, color=lightblue ];
 +
  edge [ fontsize=10 ];
 +
  predecessor [label="IfcEvent"]
 +
  IfcRelSequence [ color=pink]
 +
  IfcRelSequence -> predecessor [label="RelatingProcess"]
 +
  successor [label="IfcProcedure"]
 +
  IfcRelSequence -> successor [label="RelatedProcess"]
 +
  IfcRelSequence2 [ color=pink, label="IfcRelSequence"]
 +
  IfcRelSequence2 -> successor [label="RelatedProcess"]
 +
  IfcRelSequence2 -> IfcEvent [label="RelatingProcess"]
 +
}
 +
-->
 +
 
 +
[[File:Ifc-concept-sequence-event-procedure-sequence.png]]
 +
 
 +
Events and procedures may be sequenced in a particular order. If an event occurs before a procedure, this implies that the procedure will occur in response to an event. If an event occurs after a procedure, this implies that completing a procedure will trigger an event. Unlike tasks which have durations, there is no such thing as lag time nor sequence types in this context.
 +
 
 +
Source: IfcProcedure, IfcEvent

Please note that all contributions to Wiki.OSArch are considered to be released under the Creative Commons Attribution-ShareAlike (see Wiki.OSArch:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)

Template used on this page: