Class Ifc4::IfcTask

Nested Relationships

This class is a nested type of Struct Ifc4.

Inheritance Relationships

Base Type

Class Documentation

class Ifc4::IfcTask : public Ifc4::IfcProcess

An IfcTask is an identifiable unit of work to be carried out in a construction project.

A task is typically used to describe an activity for the construction or installation of products, but is not limited to these types. For example it might be used to describe design processes, move operations and other design, construction and operation related activities as well.

HISTORY New entity in IFC 1.0. Renamed from IfcWorkTask in IFC 2x.

IFC2x4 CHANGE Attributes TaskTime and PredefinedType added. IfcMove and IfcOrderRequest has been removed in IFC2x4 and are now represented by IfcTask. Further information can be found in the description below.

Type use definition

IfcTask defines the anticipated or actual occurrence of any task; common information about task types is handled by IfcTaskType. The IfcTaskType (if present) may establish the common type name, usage (or predefined) type, common set of properties, and common product assignment using IfcRelAssignsToProduct. The IfcTaskType is attached using the IfcRelDefinesByType.RelatingType objectified relationship and is accessible by the inverse IsTypedBy attribute. Special type information relating to a task occurrence is asserted using IfcTask.ObjectType (inherited from IfcObject). Examples that may be used include fixed duration, fixed unit or fixed work. IfcTask can be aggregated to a task type in order to specify a task sequence or any time related information, e.g. the duration of a task. Please see the documentation of IfcTaskType for further information.

Attribute use definition

Each occurrence of IfcTask is given a name that is indicative of its content (IfcRoot.Name). A textual description of the task may be provided and this may be further elaborated by a narrative long description (IfcProcess.LongDescription). A work method may be declared for the method of work used in carrying out a task. A task is identified as being either a milestone task or not. A milestone task is defined by the marker IsMilestone. and has no duration. A status and priority for each task may also be set.

Property set use definition

The property sets relating to IfcTask are defined by IfcPropertySet and attached by the IfcRelDefinesByProperties relationship. They are accessible by the inverse IsDefinedBy relationship. Such property sets may define task parameters. No property sets for IfcTask are currently defined by IFC.

Connectivity Use Definition

The relationship IfcRelSequence is used to indicate control flow. An IfcTask as a successor to an IfcTask indicates logical sequence how these tasks should be performed. IfcTask’s can be triggered or can trigger IfcEvent’s, which is also defined through the relationship IfcRelSequence.

Composition use definition

IfcTask may be contained within an IfcTask using the IfcRelNests relationship. An IfcTask may in turn nest other IfcTask, IfcProcedure or IfcEvent entities. Such nesting indicates decomposed level of detail. From IFC2x4 onwards it is required to have a summary task (root of all tasks), which is used to define a link to the work plan or work schedule. All subtasks of the summary tasks are then implicitly linked to this work plan or work schedule. Please note that the summary task is used for data organization and not meant to store typical task information as defined by the user. It is therefore recommended that the summary task is hidden from the user to avoid confusion. Please also note that IfcRelNests is used to show the dependency between regular tasks and recurring task definitions (please see the section about time and duration use definitions).

As shown in Figure 13, the installation of a number of items of equipment within a particular space may be the subject of a single task which is identified as ‘fix equipment in space 123’. IfcTask represents the occurrence of a work performance of a type of process in a construction plan.

Figure 13 — Task visualization

A task may nest other tasks as sub-items; the nesting relationship is modeled by IfcRelNests as shown in Figure 14. For example, the construction of a stud wall may be designated as a nesting task named ‘install wall #1’ including other tasks such as ‘install dry wall’, ‘install studs’, ‘wall taping’, and ‘erect wall’ as sub-processes. A value that indicates the relative tree view position of the task (in comparison to the tree view position of other tasks and the task hierarchy defined by IfcRelNests). The task order information that is used for viewing purposes is derived from the order defined by the IfcRelNests relationship and thus is independent of the logical task order defined through IfcRelSequence. The hierarchy and order defined through IfcRelNests enables to order the tasks in a tree view or list view structure.

Figure 14 — Task nesting relationships

Time and duration use definition

Compared to previous IFC releases, basic task time information (scheduled start time, scheduled finish time, duration) is now directly attached to IfcTask through the TaskTime attribute. Regular tasks are defined through IfcTaskTime. Recurring tasks are defined through IfcTaskTimeRecurring. In case a regular task is derived from a recurring task both tasks should be linked together through a IfcRelNests relationship, where IfcRelNests.IsNestedBy points to the recurring task and IfcRelNests.Nests points to all regular tasks that have been derived from the recurring task.

Assignment use definition

Occurrences of IfcTask may be assigned to an IfcWorkControl (either a work plan or a work schedule) through IfcRelAssignsToControl. From IFC2x4 onwards it is suggested to use the ‘summary task’ (root element of the task hierarchy that is required for task management purposes) to assign all subtask to a work plan or work schedule. Resources used by tasks are assigned by IfcRelAssignsToProcess. Quantities of resources consumed by the task are dealt with by defining the IfcElementQuantity for the resource and not at the instance of IfcTask. Please note that the IfcRelAssignsTasks relationship class has been removed in IFC2x4 and is no longer available.

An IfcTask may be assigned a Work Breakdown Structure (WBS) code. A WBS code is dealt with as a classification of task and is associated to a task occurrence using the IfcRelAssociatesClassification relationship class. As well as being to designate the code, the classification structure of the IFC model also enables the source of the work breakdown structure classification to be identified.

Constraint use definition

Constraints may be applied to a task to indicate fixed task duration, fixed start or fixed finish (see Figure 15). The relationship IfcRelAssociatesConstraint is used where RelatingConstraint points to an IfcMetric and RelatedObjects includes the IfcTask. IfcRelAssociatesConstraint.Name identifies the attribute to be constrained using a period (“.”) to dereference; for example, “TaskTime.ScheduleStart” refers to the ScheduleStart attribute on the IfcTaskTime entity referenced on the TaskTime attribute. The following attributes may be constrained:

‘TaskTime.ScheduleDuration’: Indicate fixed duration of task with ConstraintGrade=HARD and Benchmark=EQUALTO such that changes to an assigned IfcConstructionResource.ResourceTime.ScheduleWork should impact IfcConstructionResource.ResourceTime.ScheduleUsage, and vice-versa.

‘TaskTime.ScheduleStart’: Indicate constrained start date with ConstraintGrade=HARD and Benchmark of EQUALTO, GREATERTHANOREQUALTO, or LESSTHANOREQUALTO to indicate “must start on”, “start no earlier than” or “start no later than” respectively where IfcMetric.DataValue indicates the specific IfcDateTime. Use SOFT constraint having LESSTHAN benchmark to indicate “start as soon as possible”.

‘TaskTime.ScheduleFinish’: Indicate constrained finish date with ConstraintGrade=HARD and Benchmark of EQUALTO, GREATERTHANOREQUALTO, or LESSTHANOREQUALTO to indicate “must finish on”, “finish no earlier than” or “finish no later than” respectively where IfcMetric.DateValue indicates the specific IfcDateTime

. Use SOFT constraint having GREATERTHAN benchmark to indicate “finish as late as


A “manual scheduled task” is indicated with ConstraintGrade=HARD and Benchmark=EQUALTO for both TaskTime.ScheduleStart and TaskTime.ScheduleFinish.

Figure 15 — Task constraints

Use Definition to represent other activities

The use definitions for IfcTask have been generalised to represent other activities as well, including actitities that had been defined by own entities in previous IFC releases. This includes

Order actions Move operations

IfcTask represents an order that might be carried out by a Helpdesk acting the role of interface for the organization between the facility user and the functional requirement of fulfilling their needs. The actual task represented by the IfcTask entity is turning a request into an order and initiating the action that will enable the order to be completed. The IfcProjectOrder or one of its subtypes including maintenance work order, is related to the IfcTask using IfcRelAssignsToControl.

IfcTask can also be used to describe an activity that moves people, groups within an organization or complete organizations together with their associated furniture and equipment from one place to another. It thus replaces the previous IFC entity IfcMove. The functionality is represented in IfcTask as follows:

Move from: The place from which actors and their associated equipment are moving. Use IfcRelAssignsToProcess where RelatingProcess points to the task and RelatedObjects holds the location(s) from which to move. Move to: The place to which actors and their associated equipment are moving. Use IfcRelAssignsToProduct where RelatedObjects points to the task(s) and RelatingProduct points to the location to which to move. Punch list: A list of points concerning a move that require attention. Use LongDescription or else identify sub-tasks to track punch list items individually via IfcRelNests.

Public Types

typedef IfcTemplatedEntityList<IfcTask> list

Public Functions

bool hasStatus() const

Whether the optional attribute Status is defined for this IfcTask.

std::string Status() const

Current status of the task.

NOTE: Particular values for status are not specified, these should be determined and agreed by local usage. Examples of possible status values include ‘Not Yet Started’, ‘Started’, ‘Completed’.

void setStatus(std::string v)
bool hasWorkMethod() const

Whether the optional attribute WorkMethod is defined for this IfcTask.

std::string WorkMethod() const

The method of work used in carrying out a task.

NOTE: This attribute should not be used if the work method is specified for the IfcTaskType

void setWorkMethod(std::string v)
bool IsMilestone() const

Identifies whether a task is a milestone task (=TRUE) or not (= FALSE).

NOTE: In small project planning applications, a milestone task may be understood to be a task having no duration. As such, it represents a singular point in time.

void setIsMilestone(bool v)
bool hasPriority() const

Whether the optional attribute Priority is defined for this IfcTask.

int Priority() const

A value that indicates the relative priority of the task (in comparison to the priorities of other tasks).

void setPriority(int v)
bool hasTaskTime() const

Whether the optional attribute TaskTime is defined for this IfcTask.

::Ifc4::IfcTaskTime *TaskTime() const

Time related information for the task.

Added in IFC 2x4

void setTaskTime(::Ifc4::IfcTaskTime *v)
bool hasPredefinedType() const

Whether the optional attribute PredefinedType is defined for this IfcTask.

::Ifc4::IfcTaskTypeEnum::Value PredefinedType() const

Identifies the predefined types of a task from which the type required may be set.

Added in IFC 2x4

void setPredefinedType(::Ifc4::IfcTaskTypeEnum::Value v)
const IfcParse::entity &declaration() const
IfcTask(IfcEntityInstanceData *e)
IfcTask(std::string v1_GlobalId, ::Ifc4::IfcOwnerHistory *v2_OwnerHistory, boost::optional<std::string> v3_Name, boost::optional<std::string> v4_Description, boost::optional<std::string> v5_ObjectType, boost::optional<std::string> v6_Identification, boost::optional<std::string> v7_LongDescription, boost::optional<std::string> v8_Status, boost::optional<std::string> v9_WorkMethod, bool v10_IsMilestone, boost::optional<int> v11_Priority, ::Ifc4::IfcTaskTime *v12_TaskTime, boost::optional<::Ifc4::IfcTaskTypeEnum::Value> v13_PredefinedType)

Public Static Functions

const IfcParse::entity &Class()