/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// // This file is generated automatically. #ifndef _IFC2X_FINAL_IFCTASK_AUTO_IMPL_H #define _IFC2X_FINAL_IFCTASK_AUTO_IMPL_H #include "IfcProcessAutoImpl.h" #include "IfcMeasureWithUnitAutoImpl.h" #include "TD_PackPush.h" /** \details The namespace contains schema-dependent classes, definitions and sub routines for work with IFC2X_FINAL express schema definitions. */ namespace OdIfc2x_final { /** \details 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. Quantities of resources consumed by the task are dealt with by defining the IfcElementQuantity for the resource and not at the instance of IfcTask. - 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 can be provided and this can be further elaborated by a narrative long description (IfcProcess.LongDescription). A work method can 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 can also be set. - Time and Duration Use Definition - Compared to releases before IFC4, 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. - Representation of Other Activities - The use definitions for IfcTask have been generalized to represent other activities as well, including activities that had been defined by own entities in previous IFC releases. This includes: * Order actions * Move operations 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. Thus, it 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 identify sub-tasks to track punch list items individually via IfcRelNests. - Object Typing - The IfcTask defines the expected or actual occurrence of any task. Common information about task types is handled by IfcTaskType. * EXAMPLE: It includes fixed duration, fixed unit or fixed work. An 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. - Property Sets - This concept can be applied to the following resources: * Pset_PackingInstructions (only applies to MOVE) - Nesting - IfcTask can be contained within an IfcTask using the IfcRelNests relationship. An IfcTask can in turn nest other IfcTask, IfcProcedure or IfcEvent entities. Such nesting indicates decomposed level of detail. From IFC4 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. As shown on the image below, the installation of a number of items of equipment within a particular space can 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. A task can nest other tasks as sub-items; the nesting relationship is modeled by IfcRelNests as shown on the image below. For example, the construction of a stud wall can 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. The hierarchy and order defined through IfcRelNests enables to order the tasks in a tree view or list view structure. A top-level task is declared within the IfcProject using the IfcRelDeclares relationship. - Sequential Connectivity - 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 IfcRelSequence relationship. - Control Assignment - Occurrences of IfcTask can be assigned to an IfcWorkControl (either a work plan or a work schedule) through IfcRelAssignsToControl. Note that the IfcRelAssignsTasks relationship class has been removed in IFC4 and is no longer available. - Process Assignment - 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. - Classification - An IfcTask can 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 also enables the source of the work breakdown structure classification to be identified. - Constraint - Constraints can 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. */ class IFC2X_FINAL_EXPORT IfcTask : public IfcProcess { //DOM-IGNORE-BEGIN OD_EXP_DECLARE_MEMBERS(OdIfc2x_final::IfcTask); //DOM-IGNORE-END public: // // OdDAI early binding accessors // /** \details Returns the value of TaskId attribute. This attribute represents an identifying designation given to a task. \returns Returns the value of TaskId attribute. */ const OdAnsiString& getTaskId() const; /** \details Sets the value of TaskId attribute. This attribute represents an identifying designation given to a task. \param TaskId [in] Task identifier to set. */ void setTaskId(const OdAnsiString& TaskId); /** \details Returns the value of WBSCode attribute. This attribute represents the code of the work breakdown structure implied to the type of the work task. \returns Returns the value of WBSCode attribute. */ void getWBSCode(OdArray& WBSCode) const; OdDAI::ListOfOdAnsiString& wBSCode(); /** \details Returns the value of WBSSource attribute. This attribute represents the codes of the work breakdown structure implied to the type of the work task. \returns Returns the value of WBSSource attribute. */ void getWBSSource(OdArray& WBSSource) const; OdDAI::ListOfOdAnsiString& wBSSource(); /** \details Returns the value of Status attribute. This attribute represents current status of the task. \returns Returns the value of Status attribute. \remarks 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'. */ IfcTaskStatusEnum getStatus() const; /** \details Sets the value of Status attribute. This attribute represents current status of the task. \param Status [in] Status to set. \remarks 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(IfcTaskStatusEnum Status); /** \details Returns the value of Milestones attribute. This attribute indicates the milestones that this task serves. One task could be a milestone of different purposes in different plans. \returns Returns the value of Milestones attribute. */ void getMilestones(OdArray& Milestones) const; OdDAI::SetOfEnum& milestones(); /** \details Returns the value of WorkMethod attribute. This attribute represents the method of work used in carrying out a task. \returns Returns the value of WorkMethod attribute. \remarks This attribute should not be used if the work method is specified for the IfcTaskType. */ const OdAnsiString& getWorkMethod() const; /** \details Sets the value of WorkMethod attribute. This attribute represents the method of work used in carrying out a task. \param WorkMethod [in] Work method to set. \remarks This attribute should not be used if the work method is specified for the IfcTaskType. */ void setWorkMethod(const OdAnsiString& WorkMethod); /** \details Returns the value of InPlaceQuantity attribute. This attribute represents the quantity that has been put in place by this work task. \returns Returns the value of InPlaceQuantity attribute. */ const OdDAIObjectId& getInPlaceQuantity() const; /** \details Sets the value of InPlaceQuantity attribute. This attribute represents the quantity that has been put in place by this work task. \param InPlaceQuantity [in] InPlaceQuantity attribute to set. */ void setInPlaceQuantity(const OdDAIObjectId& InPlaceQuantity); /** \details Returns the value of EstimatedQuantity attribute. This attribute represents the quantity that has been put in place by this work task. \returns Returns the value of EstimatedQuantity attribute. */ const OdDAIObjectId& getEstimatedQuantity() const; /** \details Sets the value of EstimatedQuantity attribute. This attribute represents the quantity that has been put in place by this work task. \param EstimatedQuantity [in] EstimatedQuantity attribute to set. */ void setEstimatedQuantity(const OdDAIObjectId& EstimatedQuantity); /** \details Returns the value of BudgetQuantity attribute. This attribute represents the budget quantity that this work task is planned to complete based on actual resource available. \returns Returns the value of BudgetQuantity attribute. */ const OdDAIObjectId& getBudgetQuantity() const; /** \details Sets the value of BudgetQuantity attribute. This attribute represents the budget quantity that this work task is planned to complete based on actual resource available. \param BudgetQuantity [in] BudgetQuantity attribute to set. */ void setBudgetQuantity(const OdDAIObjectId& BudgetQuantity); /** \details Returns the value of IsRootTask attribute. This attribute indicates whether the task is or is not a root task in a work plan or schedule. TRUE means that it is a root task. \returns Returns the value of IsRootTask attribute. */ OdDAI::Boolean getIsRootTask() const; /** \details Sets the value of IsRootTask attribute. This attribute indicates whether the task is or is not a root task in a work plan or schedule. TRUE means that it is a root task. \param IsRootTask [in] IsRootTask attribute to set. */ void setIsRootTask(OdDAI::Boolean IsRootTask); public: /** \details Default constructor for the IfcTask class. */ IfcTask(); /** \details Reads object's data from the specified filer. \param rdFiler [in] Pointer to a filer from which to read the data. \returns A value of OdResult type that contains the result of the method execution. */ virtual OdResult inFields(OdDAI::OdSpfFilerBase* rdFiler) override; /** \details Writes object's data the the specified filer. \param wrFiler [in] Pointer to a filer to which to write the data. \returns A value of OdResult type that contains the result of the method execution. */ virtual OdResult outFields(OdDAI::OdSpfFilerBase* wrFiler) override; /** \details Returns a type of a class instance. \returns Pointer to the OdDAI::Entity type that determines an entity definition within a schema. */ virtual OdDAI::Entity* getInstanceType() const override; /** \details Returns an attribute value for the specified attribute name. \param attrName [in] Name of an attribute to query. \returns OdRxValue object that represents a generic variant type value. */ virtual OdRxValue getAttr(const char * attrName) const override; /** \details Resets a value for the specified attribute. \param explicitAttrName [in] Explicit name of the attribute to reset. */ virtual void unsetAttr(const char * explicitAttrName) override; /** \details Checks whether the specified attribute is set. \param explicitAttrName [in] Explicit name of the attribute to test. \returns true if the specified attribute is set, false otherwise. */ virtual bool testAttr(const char * explicitAttrName) const override; /** \details Sets the specified attribute with a given value. \param explicitAttrName [in] Explicit name of the attribute to set. \param val [in] Value to set. \returns true if the value is successfully set for the specified attribute, false otherwise. */ virtual bool putAttr(const char * explicitAttrName, const OdRxValue &val) override; /** \details Checks whether the specified instance is the object derived from or belongs to this class. \param entityType [in] Entity to check. \returns true if the specified instance is the object derived from or belongs to this class, false otherwise. */ virtual bool isKindOf(OdIfc::OdIfcEntityType entityType) const override; /** \details Returns the type of this entity. \returns A value of the OdIfc::OdIfcEntityType type that represents type of this entity. */ virtual OdIfc::OdIfcEntityType type() const override; /** \details Returns an attribute value for the specified attribute definition. \param attrDef [in] Attribute definition to query. \returns OdRxValue object that represents a generic variant type value. */ virtual OdRxValue getAttr(const OdIfc::OdIfcAttribute attrDef) const override; /** \details Resets a value for the specified attribute. \param explicitAttrDef [in] Explicit definition that represents an attribute to reset. */ virtual void unsetAttr(const OdIfc::OdIfcAttribute explicitAttrDef) override; /** \details Checks whether the specified attribute is set. \param explicitAttrDef [in] Attribute definition to test. \returns true if the specified attribute is set, false otherwise. */ virtual bool testAttr(const OdIfc::OdIfcAttribute explicitAttrDef) const override; /** \details Sets the specified attribute with a given value. \param explicitAttrDef [in] Explicit attribute definition to set. \param val [in] Value to set. \returns true if the value is successfully set for the specified attribute, false otherwise. */ virtual bool putAttr(const OdIfc::OdIfcAttribute explicitAttrDef, const OdRxValue &val) override; protected: // Fields declaration: OdAnsiString m_TaskId; // IfcIdentifier OdDAI::ListOfOdAnsiString m_WBSCode; // LIST [1:?] of IfcLabel [optional] OdDAI::ListOfOdAnsiString m_WBSSource; // LIST [1:?] of IfcLabel [optional] OdDAI::Enum m_Status; // IfcTaskStatusEnum OdDAI::SetOfEnum m_Milestones; // SET [1:?] of IfcTaskMilestoneEnum [optional] OdAnsiString m_WorkMethod; // IfcLabel [optional] OdDAIObjectId m_InPlaceQuantity; // IfcMeasureWithUnit [optional] OdDAIObjectId m_EstimatedQuantity; // IfcMeasureWithUnit [optional] OdDAIObjectId m_BudgetQuantity; // IfcMeasureWithUnit [optional] OdDAI::Boolean m_IsRootTask; // BOOLEAN }; /** \details A data type that represents a smart pointer to a IfcTask object. */ typedef OdSmartPtr IfcTaskPtr; } // namespace #include "TD_PackPop.h" #endif // _IFC2X_FINAL_IFCTASK_AUTO_IMPL_H