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
  
 
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: 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.
 
  
 
== A project has plans related to construction and facility management ==
 
== A project has plans related to construction and facility management ==
Line 223: Line 223:
 
Source: IfcWorkCalendar
 
Source: IfcWorkCalendar
  
== A work calendar can be inherited through child tasks, procedures, and events ==
+
== A work calendar can be inherited through child tasks ==
  
 
<!--
 
<!--
Line 242: Line 242:
  
 
If a task does not have a calendar assigned to it, it inherits the calendar from its parent task. This inheritance makes it easy to assign default calendars to a top level task in a work schedule and only override as necessary in more specific child tasks.
 
If a task does not have a calendar assigned to it, it inherits the calendar from its parent task. This inheritance makes it easy to assign default calendars to a top level task in a work schedule and only override as necessary in more specific child tasks.
 
This same inheritance applies to procedures and events.
 
  
 
Note: it is assumed, but no evidence found, that hierarchical resources have this same inheritance behaviour. In other words, it is assumed that if a resource does not have a calendar assigned to it, it inherits the calendar from its parent resource.
 
Note: it is assumed, but no evidence found, that hierarchical resources have this same inheritance behaviour. In other words, it is assumed that if a resource does not have a calendar assigned to it, it inherits the calendar from its parent resource.
Line 288: Line 286:
 
[[File:Ifc-concept-sequence-workschedule-planned.png]]
 
[[File:Ifc-concept-sequence-workschedule-planned.png]]
  
In construction scheduling, a work schedule can represent your current plan of tasks, prior to the start of construction. A planned schedule typically has scheduled start, finish, and durations for its tasks. A planned schedule must not have any actual starts, actual finishes, or actual duration data. Similarly, a planned schedule must not have any lag times which are marked as "measured" lag times.
+
In construction scheduling, a work schedule can represent your current plan of tasks, prior to the start of construction. A planned schedule typically has scheduled start, finish, and durations for its tasks. A planned schedule must not have any actual starts, actual finishes, or actual duration data.
  
 
Note: the definition that distinguishing planned from actual is assumed. It is not clear in the docs. Also, the fact that we need to read the docs for IfcConstructionResource to figure this out isn't very nice.
 
Note: the definition that distinguishing planned from actual is assumed. It is not clear in the docs. Also, the fact that we need to read the docs for IfcConstructionResource to figure this out isn't very nice.
  
Source: IfcConstructionResource, IfcLagTime
+
Source: IfcConstructionResource
  
 
== A work schedule may represent actual dates when the tasks are underway or complete ==
 
== A work schedule may represent actual dates when the tasks are underway or complete ==
Line 307: Line 305:
 
[[File:Ifc-concept-sequence-workschedule-actual.png]]
 
[[File:Ifc-concept-sequence-workschedule-actual.png]]
  
A work schedule may be labeled as an actual schedule, if it contains actual start / end dates of tasks, and actual durations of tasks. Similarly, a actual schedule may have lag times which are marked as "measured" lag times.
+
A work schedule may be labeled as an actual schedule, if it contains actual start / end dates of tasks, and actual durations of tasks.
  
 
Note: the definition that distinguishes planned from actual is assumed. It is not clear in the docs. Also, the fact that we need to read the docs for IfcConstructionResource to figure this out isn't very nice.
 
Note: the definition that distinguishes planned from actual is assumed. It is not clear in the docs. Also, the fact that we need to read the docs for IfcConstructionResource to figure this out isn't very nice.
  
Source: IfcConstructionResource, IfcLagTime
+
Source: IfcConstructionResource
  
 
== Work schedules may be duplicated and compared as a baseline ==
 
== Work schedules may be duplicated and compared as a baseline ==
Line 490: Line 488:
 
<!--
 
<!--
 
digraph {
 
digraph {
   node [ shape=rect, color=lightblue ];
+
   node [ shape=rect ];
 
   edge [ fontsize=10 ];
 
   edge [ fontsize=10 ];
 
   predecessor [label="IfcTask"]
 
   predecessor [label="IfcTask"]
  IfcRelSequence [ color=pink]
 
 
   IfcRelSequence -> predecessor [label="RelatingProcess"]
 
   IfcRelSequence -> predecessor [label="RelatingProcess"]
 
   IfcRelSequence -> FINISH_START [label="SequenceType"]
 
   IfcRelSequence -> FINISH_START [label="SequenceType"]
 
   IfcRelSequence -> IfcLagTime [label="TimeLag"]
 
   IfcRelSequence -> IfcLagTime [label="TimeLag"]
  FINISH_START [shape=ellipse]
 
 
   P1D [shape=ellipse]
 
   P1D [shape=ellipse]
 
   ELAPSEDTIME [shape=ellipse]
 
   ELAPSEDTIME [shape=ellipse]
Line 506: Line 502:
 
   formwork [shape=ellipse, label="Formwork"]
 
   formwork [shape=ellipse, label="Formwork"]
 
   pour [shape=ellipse, label="Concrete Pour"]
 
   pour [shape=ellipse, label="Concrete Pour"]
   predecessor -> formwork [label=Name]
+
   predecessor -> formwork [label=DurationType]
   successor -> pour [label=Name]
+
   successor -> pour [label=ScheduleDuration]
 
}
 
}
 
-->
 
-->
Line 514: Line 510:
  
 
In this scenario, a predecessor task (setting up formwork) has a finish to start relationship to a successor task (pouring concrete) with a lag time of 1 elapsed day between them.
 
In this scenario, a predecessor task (setting up formwork) has a finish to start relationship to a successor task (pouring concrete) with a lag time of 1 elapsed day between them.
 
Note: When lag times are expressed as absolute duration in working days (i.e. not elapsed days), there is an ambiguity as to whether the predecessor or successor task calendar should be applied. Based off testing in existing scheduling software, it seems as though both calendars are applied, and the one resulting in the worse value (i.e. the longest lag time) is chosen.
 
  
 
Source: IfcTask, IfcRelSequence, IfcProcess
 
Source: IfcTask, IfcRelSequence, IfcProcess
 
== A task may have a lag time expressed as a ratio ==
 
 
<!--
 
digraph {
 
  node [ shape=rect, color=lightblue ];
 
  edge [ fontsize=10 ];
 
  predecessor [label="IfcTask"]
 
  IfcRelSequence [color=pink]
 
  IfcRelSequence -> predecessor [label="RelatingProcess"]
 
  IfcRelSequence -> FINISH_START [label="SequenceType"]
 
  FINISH_START [ shape=ellipse]
 
  IfcRelSequence -> IfcLagTime [label="TimeLag"]
 
  IfcLagTime -> 0.5 [label="LagValue"]
 
  0.5 [shape=ellipse]
 
  successor [label="IfcTask"]
 
  IfcRelSequence -> successor [label="RelatedProcess"]
 
  ptasktime -> P10D [label=ScheduleDuration]
 
  P10D [shape=ellipse]
 
  predecessor -> ptasktime [label="TaskTime"]
 
  ptasktime [label="IfcTaskTime"]
 
}
 
-->
 
 
[[File:Ifc-concept-sequence-sequence-ratio.png]]
 
 
A lag time between two tasks may be expressed as a ratio instead of an absolute duration. If taken as a ratio, the lag duration is determined by the ratio multiplied by the scheduled duration of the predecessor task. So in this scenario, assuming the P10D of the predecessor task is elapsed time, the lag time will be P5D.
 
 
Note: In the case of a lag time specified as an absolute duration, the worse of two possible calendars is chosen. In the case of a ratio, the duration of the predecessor task is explicitly nominated. Therefore, we also assume that the calendar of the predecessor task is the only calendar that applies in this scenario.
 
 
Source: IfcLagTime
 
  
 
== Tasks can construct or install objects ==
 
== Tasks can construct or install objects ==
Line 638: Line 601:
  
 
Source: IfcTask
 
Source: IfcTask
 
== A task, event, or procedure may contain properties ==
 
 
<!--
 
digraph {
 
  node [ shape=rect, color=lightblue ];
 
  edge [ fontsize=10 ];
 
  IfcRelDefinesByProperties [color=pink]
 
  IfcRelDefinesByProperties -> IfcTask [ label="RelatedObjects" ];
 
  IfcRelDefinesByProperties -> IfcPropertySet [ label="RelatingPropertyDefinition" ];
 
  IfcPropertySet -> psetname [label="Name"]
 
  psetname [label="Pset_Risk", shape=ellipse]
 
  IfcPropertySet -> IfcPropertySingleValue [label="HasProperties"]
 
  propname [label="RiskType", shape=ellipse]
 
  HEALTHANDSAFETY [shape=ellipse]
 
  IfcPropertySingleValue -> propname [label="Name"]
 
  IfcPropertySingleValue -> HEALTHANDSAFETY [label="NominalValue"]
 
}
 
-->
 
 
[[File:Ifc-concept-sequence-task-pset.png]]
 
 
A task, event, or procedure may contain properties. Typically this is used for risk assessment. For logistic tasks, it may also contain properties for packing instructions.
 
 
Source: IfcTask
 
 
== A task may be assigned a classification reference ==
 
 
<!--
 
digraph {
 
  node [ shape=rect, color=lightblue ];
 
  edge [ fontsize=10 ];
 
  IfcRelAssociatesClassification [color=pink]
 
  IfcRelAssociatesClassification -> IfcTask [ label="RelatedObjects" ];
 
  IfcRelAssociatesClassification -> IfcClassificationReference [ label="RelatingClassification" ];
 
}
 
-->
 
 
[[File:Ifc-concept-sequence-task-classification.png]]
 
 
If tasks are based on an external classification system, such Omniclass, which guides the hierarchy of the work breakdown structure, the task may be assigned to a classification reference.
 
 
Source: IfcTask
 
 
== A project task may be based off a typical task type or template from a library of tasks ==
 
 
<!--
 
digraph {
 
  node [ shape=rect, color=lightblue ];
 
  edge [ fontsize=10 ];
 
  IfcRelDefinesByType [ color=pink]
 
  IfcRelDefinesByType -> IfcTask [label="RelatedObjects"]
 
  IfcRelDefinesByType -> IfcTaskType [label="RelatingType"]
 
}
 
-->
 
 
[[File:Ifc-concept-sequence-task-type.png]]
 
 
Whereas an IfcTask represents an actual task within a project's work schedule, it may be derived from a task template, also called a task type. Task types are not project specific and may typically be shared within a library of tasks to aid planners in creating schedules.
 
 
Source: IfcTask, IfcTaskType
 
 
== A task type can nest a task type ==
 
 
<!--
 
digraph {
 
  node [ shape=rect, color=lightblue ];
 
  edge [ fontsize=10 ];
 
 
 
  IfcRelNests [color=pink]
 
  IfcRelNests -> IfcTaskType [label="RelatingObject"]
 
  IfcRelNests -> subtask1 [label="RelatedObjects"]
 
  subtask1 [label="IfcTaskType"]
 
}
 
-->
 
 
[[File:Ifc-concept-sequence-task-type-nest-task-type.png]]
 
 
Note: It is currently ambiguous as to what this means.
 
 
Source: IfcTaskType
 
 
== A task type can nest a task ==
 
 
<!--
 
digraph {
 
  node [ shape=rect, color=lightblue ];
 
  edge [ fontsize=10 ];
 
 
 
  IfcRelNests [color=pink]
 
  IfcRelNests -> IfcTaskType [label="RelatingObject"]
 
  IfcRelNests -> subtask1 [label="RelatedObjects"]
 
  subtask1 [label="IfcTask"]
 
}
 
-->
 
 
[[File:Ifc-concept-sequence-task-type-nest-task.png]]
 
 
Note: It is currently ambiguous as to what this means.
 
 
Source: IfcTaskType
 
 
== A task type can nest a task, that is also typed ==
 
 
<!--
 
digraph {
 
  node [ shape=rect, color=lightblue ];
 
  edge [ fontsize=10 ];
 
 
 
  IfcRelNests [color=pink]
 
  IfcRelNests -> IfcTaskType [label="RelatingObject"]
 
  IfcRelNests -> subtask1 [label="RelatedObjects"]
 
  subtask1 [label="IfcTask"]
 
 
 
  tasktype1 [label="IfcTaskType"]
 
  IfcRelDefinesByType [color=pink]
 
  IfcRelDefinesByType -> subtask1 [label="RelatedObjects"]
 
  IfcRelDefinesByType -> tasktype1 [label="RelatingType"]
 
}
 
-->
 
 
[[File:Ifc-concept-sequence-task-type-nest-task-with-type.png]]
 
 
Note: it is currently ambiguous as to what this means.
 
 
Source: IfcTaskType, IfcRelDefinesByObject
 
 
== When a task type is used in a project, its child tasks are linked to the project tasks ==
 
 
<!--
 
digraph {
 
  node [ shape=rect, color=lightblue ];
 
  edge [ fontsize=10 ];
 
 
 
  { rank = same; IfcRelDefinesByType }
 
  { rank = max; IfcRelNests irelnests }
 
  { rank = sink; IfcRelDefinesByObject }
 
 
 
  IfcRelDefinesByType [ color=pink]
 
  IfcRelDefinesByType -> IfcTask [label="RelatedObjects"]
 
  IfcRelDefinesByType -> IfcTaskType [label="RelatingType"]
 
 
  irelnests [label="IfcRelNests", color=pink]
 
  irelnests -> IfcTask [label="RelatingObject"]
 
  irelnests -> isubtask1 [label="RelatedObjects"]
 
  isubtask1 [label="IfcTask"]
 
 
  IfcRelNests [color=pink]
 
  IfcRelNests -> IfcTaskType [label="RelatingObject"]
 
  IfcRelNests -> subtask1 [label="RelatedObjects"]
 
  subtask1 [label="IfcTask"]
 
 
 
  IfcRelDefinesByObject [color=pink]
 
  IfcRelDefinesByObject -> isubtask1 [label="RelatedObjects"]
 
  IfcRelDefinesByObject -> subtask1 [label="RelatingObject"]
 
 
}
 
-->
 
 
[[File:Ifc-concept-sequence-task-type-definesbyobject.png]]
 
 
When a task type with subtasks is used in a project, it creates corresponding task instances in your task tree. To correlate these task instances back to the task type, an object relationship is created.
 
 
Note: usecases and workflows of this is still currently ambiguous. Also, there is a discrepancy where the documentation in IfcTaskType describes a nesting relationship, whereas the IfcRelDefinesByObject documentation describes an aggregation relationship.
 
 
Source: IfcTaskType, IfcRelDefinesByObject
 
 
[[Category:Industry Foundation Classes (IFC)]]
 

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: