IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

4.1.3.6 Revision Control

================

虽然对象可能反映最终状态,但它们也可能在项目生命周期过程中不断被修改并反映瞬态状态。对于多个用户对同一信息进行更新的场景,存在基于支持多用户共享存储库的本地信息副本的概念。这种共享存储库通常被称为 模型服务器。模型服务器的概念类似于文档修订服务器,但能够按对象识别声明的更改,而不是从文本差异中推断更改。模型服务器具有按项目进行修订的概念,其中每次修订由特定用户在特定时间对包含的对象进行的一组更改组成。

为了支持模型服务器场景,每个对象都可以标记一个 change action(更改操作),指示自项目从服务器检索以来,该对象是添加、修改、删除还是没有更改。给定对象的标识符 (IFC-GUID) 和更改操作,在提交到模型服务器时可以合并对象的状态。当任何直接特性、引用的资源定义(任何不派生自 IfcRoot 的实体)上的特性发生更改、集合中添加或删除项,或列表中的项被添加、删除或重新排序时,对象被视为已修改。

对于多个用户对同一对象进行冲突更改的情况,用户可以选择在提交到服务器时保留自己的更改、接受他人的更改、合并两者的更改,或两者的组合。或者,为了避免此类合并场景并协调工作,对象可以被锁定,以便特定用户在当前时间对特定对象具有独占的读和/或写访问权限。

项目库也可以从具有特定修订版并且可能与引用项目具有不同服务器 URI 的模型服务器检索。由于项目可能包含同一项目库的多个修订版(当多个用户使用他人修订的库时,这是常见场景),IfcRoot.ObjectIdentifier IFC-GUID 仅在引用项目的范围内有效,并且单独的 library reference 标识了其原始模型服务器内的项目库基于对象的引用。

最后,对象还可以携带信息性特性,指示对象的创建时间、创建者、最后修改对象的时间和应用程序,以及当前所有者,可能根据其锁定状态拥有独占使用权。

下图展示了应用此概念时使用的通用类和关系。 此外,概念可能对常见或标准化的行业实践和场景具有特殊意义。对于这些特定的使用场景,下表展示了用户可采用的推荐通用使用模式列表。

G <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRoot.htm'>IfcRoot</a> IfcRoot 1. GlobalId [1:1] 2. OwnerHistory [0:1] 3. Name [0:1] 4. Description [0:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a> IfcOwnerHistory 1. OwningUser [1:1] 2. OwningApplication [1:1] 3. State [0:1] 4. ChangeAction [0:1] 5. LastModifiedDate [0:1] 6. LastModifyingUser [0:1] 7. LastModifyingApplication [0:1] 8. CreationDate [1:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRoot.htm'>IfcRoot</a>:OwnerHistory1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:IfcOwnerHistory0 IfcPersonAndOrganization_0 IfcPersonAndOrganization 1. ThePerson [1:1] 2. TheOrganization [1:1] 3. Roles [1:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:OwningUser1->IfcPersonAndOrganization_0:IfcPersonAndOrganization0 IfcApplication_0 IfcApplication 1. ApplicationDeveloper [1:1] 2. Version [1:1] 3. ApplicationFullName [1:1] 4. ApplicationIdentifier [1:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:OwningApplication1->IfcApplication_0:IfcApplication0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcStateEnum.htm'>IfcStateEnum</a> IfcStateEnum <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:State1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcStateEnum.htm'>IfcStateEnum</a>:IfcStateEnum0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcChangeActionEnum.htm'>IfcChangeActionEnum</a> IfcChangeActionEnum <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:ChangeAction1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcChangeActionEnum.htm'>IfcChangeActionEnum</a>:IfcChangeActionEnum0 IfcTimeStamp_0 IfcTimeStamp <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:CreationDate1->IfcTimeStamp_0:IfcTimeStamp0 IfcTimeStamp_1 IfcTimeStamp <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:LastModifiedDate1->IfcTimeStamp_1:IfcTimeStamp0 IfcPersonAndOrganization_1 IfcPersonAndOrganization 1. ThePerson [1:1] 2. TheOrganization [1:1] 3. Roles [1:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:LastModifyingUser1->IfcPersonAndOrganization_1:IfcPersonAndOrganization0 IfcApplication_1 IfcApplication 1. ApplicationDeveloper [1:1] 2. Version [1:1] 3. ApplicationFullName [1:1] 4. ApplicationIdentifier [1:1] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOwnerHistory.htm'>IfcOwnerHistory</a>:LastModifyingApplication1->IfcApplication_1:IfcApplication0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a> IfcPerson 1. Identification [0:1] 2. FamilyName [0:1] 3. GivenName [0:1] 4. MiddleNames [1:?] 5. PrefixTitles [1:?] 6. SuffixTitles [1:?] 7. Roles [1:?] 8. Addresses [1:?]      EngagedIn [0:?] IfcPersonAndOrganization_0:ThePerson1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:IfcPerson0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOrganization.htm'>IfcOrganization</a> IfcOrganization 1. Identification [0:1] 2. Name [1:1] 3. Description [0:1] 4. Roles [1:?] 5. Addresses [1:?]      IsRelatedBy [0:?]      Relates [0:?]      Engages [0:?] IfcPersonAndOrganization_0:TheOrganization1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOrganization.htm'>IfcOrganization</a>:IfcOrganization0 IfcActorRole_2 IfcActorRole 1. Role [1:1] 2. UserDefinedRole [0:1] 3. Description [0:1]      HasExternalReference [0:?] IfcPersonAndOrganization_0:Roles1->IfcActorRole_2:IfcActorRole0 IfcIdentifier_0 IfcIdentifier <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:Identification1->IfcIdentifier_0:IfcIdentifier0 IfcLabel_0 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:FamilyName1->IfcLabel_0:IfcLabel0 IfcLabel_1 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:GivenName1->IfcLabel_1:IfcLabel0 IfcLabel_2 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:MiddleNames1->IfcLabel_2:IfcLabel0 IfcLabel_3 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:PrefixTitles1->IfcLabel_3:IfcLabel0 IfcLabel_4 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:SuffixTitles1->IfcLabel_4:IfcLabel0 IfcActorRole_0 IfcActorRole 1. Role [1:1] 2. UserDefinedRole [0:1] 3. Description [0:1]      HasExternalReference [0:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:Roles1->IfcActorRole_0:IfcActorRole0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a> IfcTelecomAddress 1. Purpose [0:1] 2. Description [0:1] 3. UserDefinedPurpose [0:1]      OfPerson [0:?]      OfOrganization [0:?] 4. TelephoneNumbers [1:?] 5. FacsimileNumbers [1:?] 6. PagerNumber [0:1] 7. ElectronicMailAddresses [1:?] 8. WWWHomePageURL [0:1] 9. MessagingIDs [1:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPerson.htm'>IfcPerson</a>:Addresses1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:IfcTelecomAddress0 IfcIdentifier_1 IfcIdentifier <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOrganization.htm'>IfcOrganization</a>:Identification1->IfcIdentifier_1:IfcIdentifier0 IfcLabel_9 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOrganization.htm'>IfcOrganization</a>:Name1->IfcLabel_9:IfcLabel0 IfcText_1 IfcText <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOrganization.htm'>IfcOrganization</a>:Description1->IfcText_1:IfcText0 IfcActorRole_1 IfcActorRole 1. Role [1:1] 2. UserDefinedRole [0:1] 3. Description [0:1]      HasExternalReference [0:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOrganization.htm'>IfcOrganization</a>:Roles1->IfcActorRole_1:IfcActorRole0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcAddress.htm'>IfcAddress</a> IfcAddress 1. Purpose [0:1] 2. Description [0:1] 3. UserDefinedPurpose [0:1]      OfPerson [0:?]      OfOrganization [0:?] <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcOrganization.htm'>IfcOrganization</a>:Addresses1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcAddress.htm'>IfcAddress</a>:IfcAddress0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRoleEnum.htm'>IfcRoleEnum</a> IfcRoleEnum IfcActorRole_2:Role1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcRoleEnum.htm'>IfcRoleEnum</a>:IfcRoleEnum0 IfcLabel_10 IfcLabel IfcActorRole_2:UserDefinedRole1->IfcLabel_10:IfcLabel0 IfcText_2 IfcText IfcActorRole_2:Description1->IfcText_2:IfcText0 <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcAddressTypeEnum.htm'>IfcAddressTypeEnum</a> IfcAddressTypeEnum <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:Purpose1-><a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcAddressTypeEnum.htm'>IfcAddressTypeEnum</a>:IfcAddressTypeEnum0 IfcLabel_5 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:TelephoneNumbers1->IfcLabel_5:IfcLabel0 IfcLabel_6 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:FacsimileNumbers1->IfcLabel_6:IfcLabel0 IfcLabel_7 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:ElectronicMailAddresses1->IfcLabel_7:IfcLabel0 IfcURIReference_0 IfcURIReference <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:WWWHomePageURL1->IfcURIReference_0:IfcURIReference0 IfcURIReference_1 IfcURIReference <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:MessagingIDs1->IfcURIReference_1:IfcURIReference0 IfcText_0 IfcText <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:Description1->IfcText_0:IfcText0 IfcLabel_8 IfcLabel <a href='/IFC/RELEASE/IFC4x3/HTML/lexical/IfcTelecomAddress.htm'>IfcTelecomAddress</a>:UserDefinedPurpose1->IfcLabel_8:IfcLabel0
Figure 4.1.3.6.A

General Usage

ApplicableEntity
IfcRoot
表 4.1.3.6.B