/////////////////////////////////////////////////////////////////////////////// // 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 _IFC4X2_IFCTASK_AUTO_IMPL_H #define _IFC4X2_IFCTASK_AUTO_IMPL_H #include "IfcProcessAutoImpl.h" #include "IfcTaskTimeAutoImpl.h" #include "TD_PackPush.h" /** \details The namespace contains schema-dependent classes, definitions and sub routines for work with IFC4X2 express schema definitions. */ namespace OdIfc4x2 { /** \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. \changes * IFC4 changes: * Name of the IsMilestone attribute changed to Priority. * Attribute IsMilestone is optional. * Type of the IsMilestone attribute changed from "boolean" to "IfcInteger". * Name of the Priority attribute changed to TaskTime. * Type of the Priority attribute changed from "integer" to "IfcTaskTime". */ class IFC4X2_EXPORT IfcTask : public IfcProcess { //DOM-IGNORE-BEGIN OD_EXP_DECLARE_MEMBERS(OdIfc4x2::IfcTask); //DOM-IGNORE-END public: // // OdDAI early binding accessors // /** \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'. */ const OdAnsiString& 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(const OdAnsiString& Status); /** \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 IsMilestone attribute. This attribute represents whether a task is a milestone task (=TRUE) or not(= FALSE). \returns Returns the value of IsMilestone attribute. \remarks In small project planning applications, a milestone task can be understood to be a task having no duration. As such, it represents a singular point in time. */ OdDAI::Boolean getIsMilestone() const; /** \details Sets the value of IsMilestone attribute. This attribute represents whether a task is a milestone task (=TRUE) or not(= FALSE). \param IsMilestone [in] IsMilestone attribute to set. \remarks In small project planning applications, a milestone task can be understood to be a task having no duration. As such, it represents a singular point in time. */ void setIsMilestone(OdDAI::Boolean IsMilestone); /** \details Returns the value of Priority attribute. This attribute represents a value that indicates the relative priority of the task (in comparison to the priorities of other tasks). \returns Returns the value of Priority attribute. */ int getPriority() const; /** \details Sets the value of Priority attribute. This attribute represents a value that indicates the relative priority of the task (in comparison to the priorities of other tasks). \param Priority [in] Priority to set. */ void setPriority(int Priority); /** \details Returns the value of TaskTime attribute. This attribute represents time related information for the task. \returns Returns the value of TaskTime attribute. */ const OdDAIObjectId& getTaskTime() const; /** \details Sets the value of TaskTime attribute. This attribute represents time related information for the task. \param TaskTime [in] Task time to set. */ void setTaskTime(const OdDAIObjectId& TaskTime); /** \details Returns the value of PredefinedType attribute. This attribute represents the predefined types of a task from which the required type can be set. \returns Returns the value of PredefinedType attribute. */ IfcTaskTypeEnum getPredefinedType() const; /** \details Sets the value of PredefinedType attribute. This attribute represents the predefined types of a task from which the required type can be set. \param PredefinedType [in] Predefined type to set. */ void setPredefinedType(IfcTaskTypeEnum PredefinedType); 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_Status; // IfcLabel [optional] OdAnsiString m_WorkMethod; // IfcLabel [optional] OdDAI::Boolean m_IsMilestone; // IfcBoolean int m_Priority; // IfcInteger [optional] OdDAIObjectId m_TaskTime; // IfcTaskTime [optional] OdDAI::Enum m_PredefinedType; // IfcTaskTypeEnum [optional] }; /** \details A data type that represents a smart pointer to a IfcTask object. */ typedef OdSmartPtr IfcTaskPtr; } // namespace #include "TD_PackPop.h" #endif // _IFC4X2_IFCTASK_AUTO_IMPL_H