
可爱猪
- 组别:管理员
- 性别:
- 生日:1979-01-28
- 来自:
- 积分:702
- 帖子:212
- 注册:
2009-02-07
|
对IFC的几点补充
对IFC的几点补充
陈毅林
摘 要:IFC是一个非常优雅的对象模型,直到2x2版本,重点是在工程设计领域,如果用于工程管理,需要对模型进行扩展,以增强其表达能力,本文描述了我们使用IFC进行工程项目管理系统设计时,对它进行的几个比较重大的扩展,包括增强实体对象类、增加类型对象类及其子类和其他相关类、增加关系类型类等等,实践证明,通过适当扩展,IFC能够满足工程管理的要求;
关键词:IFC、施工管理、实体对象、类型对象、关系类型、模型扩展
一、 背景 IFC是国际协同工作联盟(IAI)制定的工业基类(Industry Foundation Classes)的缩写, IFC是一个非常优雅的对象模型,更是国际建筑业事实上的工程数据交换标准,并已经被接受为国际标准(ISO标准)。它是面向对象的建筑产品数据标准,支持从规划、设计、施工,一直到后期的物业管理全部生命周期的数据交换与共享,IFC在欧美日韩受到广泛重视和推崇,我国也逐渐重视起来,“十五”国家科技攻关计划中,有一个重要课题就是“基于国际标准IFC的建筑设计及施工管理系统研究”。 IFC在建筑设计方面得到很好的应用,国外许多著名的工程设计软件都符合IFC标准并取得IFC认证,如AutoCAD,但在工程管理方面的应用相对较少,从IAI的项目计划安排来看, 面向管理将是IFC将来重要的发展方向,IFC 3.x版本的重点是项目管理(PM); 2004年3月-2005年5月,本人承担了“上海建工集团海外部施工项目管理系统”的设计工作,系统设计的基础就是IFC,可以说是IFC用于项目管理的一次有益尝试,从中我们得到许多益处,也发现IFC在这方面的一些不足,IFC现在最新版本是2x2,本文将重点介绍我们使用该版本IFC设计和实现项目管理系统遇到的问题和我们采取得对策,供同仁参考。
二、 抽象对象与实体对象 在项目施工中,我们一定会用到施工机械,以下是一个典型的与施工机械有关的业务案例:做预算或计划时候,通常会说,完成某工程需要某种机械多少台套或台班,并根据台套(班)的计划单价,得到预算(计划)成本数据;在施工过程中我们需要根据计划调用、租用或购买这些机械进行施工作业,并根据租金或折旧计算实际成本;而且通常都会希望将这些计划成本和实际成本进行某种形式的比较分析,从中获得我们需要的信息。 在上述业务案例中,计划中描述的施工机械是某种型号的某种机械,是一种泛指的或者说是一种抽象的施工机械,一个符号而已,它们之间没有个体差异:产能一样、计划单价也相同,而施工过程调用、租用或购买的施工机械确是一个实实在在看得见摸得到的实物,它们的备品备件、消耗材料、进入成本的方式、租用单价、当前残值和折旧方法等可能都会有所不同,个体差异明显,它们不是同一类东西,又似乎是同一类东西,因为我们经常需要将它们联系在一起,才能获取我们需要的信息。这种情形在项目管理的业务中非常普遍,而IfcR2x2似乎不能很好的表达这种情况。 在IFC模型中,与此相关的内容涉及两个包:kernel和construction management domain,以下是相关的类图:

(插图1)
.gif)
(插图2)
IFC模型中,描述施工机械的类是IfcConstructionEquipmentResource,它的继承层次是: ENTITY IfcConstructionEquipmentResource; ENTITY IfcRoot; GlobalId : IfcGloballyUniqueId; OwnerHistory : IfcOwnerHistory; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText;
ENTITY IfcObject; ObjectType : OPTIONAL IfcLabel; INVERSE IsDefinedBy : SET OF
IfcRelDefines FOR RelatedObjects; HasAssociations : SET OF IfcRelAssociates FOR RelatedObjects; HasAssignments : SET OF IfcRelAssigns FOR RelatedObjects; Decomposes : SET [0:1] OF IfcRelDecomposes FOR RelatedObjects; IsDecomposedBy : SET OF IfcRelDecomposes FOR RelatingObject;
ENTITY IfcResource; INVERSE ResourceOf : SET OF IfcRelAssignsToResource FOR RelatingResource;
ENTITY IfcConstructionResource; ResourceIdentifier : OPTIONAL IfcIdentifier; ResourceGroup : OPTIONAL IfcLabel; ResourceConsumption : OPTIONAL IfcResourceConsumptionEnum; BaseQuantity : OPTIONAL IfcMeasureWithUnit;
ENTITY IfcConstructionEquipmentResource;
END_ENTITY;
我们曾试图在IfcConstructionResource和IfcResource类中增加一个属性: IsVirtual : OPTIONAL IfcBoolean; 来区别实物对象于抽象对象,但这样带来模型语义混乱的问题,实现起来也不简便。经过权衡,最后我们采取的做法是,根据IFC模型开发协定(IFC MODEL DEVELOPMENT CONVENTIONS),新增Construction Equipment Resource包,设置IfcConstructionEquipment类及其他相关类,这样,用IfcConstructionEquipmentResource代表抽象的施工机械,IfcConstructionEquipment代表实物的施工机械;类图图下:

模型中其他的地方也存在类似施工机械(IfcConstructionEquipmentResource)的这种情况,我们都采用类似的方法处理,在此不一一列举。
三、 对象与类型对象 如果你准备建立的是一个综合性的项目管理软件,类似以下描述的需求很可能会碰到: 1、按项目的类型,设置不同的成本核算项目、核算方法,例如,自营项目需要核算各主要材料成本、有分包的要设置分包成本的核算项目等等; 2、根据定额,计算某工序需要消耗的材料、人工和机械等的数量和金额; 3、根据工程类型,使用标准或预定义的工程分解结构,快速建立本工程的节点层次结构; 4、根据工序类型,设置和检查质量控制点;
上述这些需求,都反映了需要按对象类型进行数据管理的要求,在IFC2x2模型中IfcObject类只设置了ObjectType :OPTIONAL IfcLabel属性,这种方式只能用简短的文字区别对象不同类型,不能满足上述需求对系统模型的要求;为此,我们提出了类型对象的概念,在模型中增加一个类IfcTypeObject,并比照IfcObject继承树,根据需要,建立相应的类型对象的子类结构,这样就能够完全满足上述需求的要求,当然,也相应地,我们取消了IfcObject的ObjectType属性;类图示例如下:

为说明上述模型扩展的用法,用大家熟悉的定额子目IfcRationItem为例,把它作为IfcTypeProcess的子类,这样,能够满足上述需求中第2项要求的类图如下:

四、 关系类型 IFC中,对象之间的关系基本都由IfcRelationShip的子类来表达,极大降低了模型中类的耦合度,是IFC模型优越性的关键所在;该类的描述如下: ENTITY IfcRelationship; ENTITY IfcRoot; GlobalId : IfcGloballyUniqueId; OwnerHistory : IfcOwnerHistory; Name : OPTIONAL IfcLabel; Description : OPTIONAL IfcText;
ENTITY IfcRelationship; END_ENTITY;
IFC中,对象与对象之间的关系,通过Name属性来区分,IFC的这种设计能够满足图形软件的要求,我们在进行项目管理软件设计时,发现这种安排不能满足类似下面的需求:
不同对象之间有不同类型的关系,例如,人与人之间的关系有同学、同事、朋友、兄弟、姐妹等关系,公司与公司之间的关系有隶属、合作伙伴、曾合作等,人与公司的关系有雇佣、借用等关系,等等,一般不能混用,即使字面相同,其内涵也已发生变化,在建立两个对象之间关系时,要求从这两个对象得可能关系列表中选择关系,或者系统必须能够验证用户输入的关系是这两个对象之间可以存在的关系; 类似上述需要按对象和关系IfcRelationShip的类型进行数据统计分析或进行程序控制,经常发生,为此,我们在模型中增加一个关系类型类IfcRelationType,使用该类与前面扩展的类型对象一起,能够满足上述软件需求,类图说明如下:

为说明上述模型的用法,我们假设,人与人之间有同事、朋友关系,张三与李四是同事。张三与王五既是同事又是朋友,对象图如下:

五、 结语 本文介绍了我们在使用IFC进行项目管理系统设计时对IFC做的几个比较重大的补充,具体来说,当然还需要进行其他的修正,比如增加一些类的属性、根据实现技术(如采用的编程语言、数据库系统)需要做一些相应的调整,等等,但总的来说,经过少量的补充和调整,IFC模型能满足项目信息化和企业信息化的要求,并且在此基础上得到的系统模型抽象程度高、逻辑稳定,有利于提高系统的通用性、开放性和产品化。
|
|