SmartPlant Foundation 定制 Schema数据结构

Schema是SPF的核心,用SPF做定制或集成,首先要理解它的结构。

Schenma基本数据结构

SPF的Schema基本数据结构包含4层,各层之间由关联关系连接。

  • Component Schema
  • ClassDef 类定义
  • InterfaceDef接口定义
  • PropertyDef属性定义

Component Schema

一类Schema的集合,每个工具软件有一个Component Schema。Component Schema可以自定义,例如定义一个Component将自定义的类归在一起。
所有Component Schema文件保存在Site路径的 \EFSchema\04.02\ 文件夹下。

ClassDef类定义

工具软件中的每种对象有一个类定义,类定义是对一类对象的定义,可以实例化成实际对象。例如PipeRun就是一个类定义。

ClassDef和多中对象有关联关系关系,但只需关注上图红框之内的两种关联关系(Compoment和Interface),其他关系很少使用(ShareObjDef已不再使用)。
在Component Schema右键菜单Show Component Class Definitions可展开集合中的所有类定义。

查看图纸中的对象的类定义:
图纸右键菜单展开对象Expand Drawing Items

Drawing Item界面默认有Class列,显示对象的类。

也可查看对象的ExportData,第一行为对象所属类

InterfaceDef 接口定义

Interface的作用是建立关联关系。可以减少重复的属性定义,如果直接在Class上定义属性,不同类的相同属性需要重复定义例如管道的压力和设备的压力。将属性建到接口上,再按需求将接口连接到不同类上,可以实现不同类有相同的属性。

下图是一个接口与多个ClassDef的链接。接口与类之间的关系是“实现Realizes”

下图是两个ClassDef有共用的接口,也有各自特有的接口

下图是拟人的方式展示ClassDef和InterfaceDef的关系。Interface可以有隐含关系Implies,隐含的Interface上的属性也可被实现。一个人的不同角色可视为不同接口。IHuman接口被IMan接口隐含,Ihuman虽然没有直接与ClassDef连接,上面的属性也可以被使用。

实际使用中隐含的情况应用不多,一般是主Interface上的属性不能满足要求,需要用其他Interface接口的属性,但又不希望这个Interface直接连接到类对象上时使用。通常被隐含接口的是范围非常大的、最基础的接口,例如Iobject。隐含关系通常在建立Schema时预先规划好。
下图表示的是,一般情况下定制Schema时,要让主接口隐含所有其他接口。

下图中IInstrument是ClassDef PIDInstrument的主Interface,通过主Interface隐含了IsolidItem接口,使得PIDInstrument能够实现IsolidItem上的属性。

另外如果类要和多个属性建立关系,可以在不同接口间建立关联关系
每个类可以有多个接口,但主接口Primary Interface只有一个。

类的主Interface不可用于其它类,可通过主Interfac唯一定位类。在定制查询方法或建立关联关系时,如在只想在两个对象间建立关联关系,不影响其他对象,需使用主Interface。

RelDef 关联关系

RelDef是关联关系RelationshipDefinition的简写
要在两个类定义之间建立关联关系,需要在两个类的Interface之间建立关联关系。下图中,通过IEmplyee接口和Icompany接口之间的关联关系,Man和Company的实现了雇佣关系。

关联关系是有方向的,当需要在图中表达关联关系方向时,用1表示起始,2表示终点。

PropertyDef 属性定义

属性与接口之间的关系是“暴露Exposes”。一个接口上可以有多个属性,也可以没有属性。

在接口上右键菜单-Show Exposed Property Definitions,可以查看当前接口上定义的属性。

Property Types 属性类型

每个属性定义通过ScopedBy关联一个类型。字符型、日期、布尔值、下拉菜单(EnumList)等类型

在属性上右键菜单-Show Scoped Property Definitions,可以在Class列查看当前属性的类型。

或在ExportData中查看第一行内容

Enum List Type下拉框类型

下拉菜单类型的属性通过ScopedBy关联到EnumListType类型,EnumListType类型通过Contains包含了多种EnumEnum选项。

下图是一个比较完整的多层下拉框形式数据结构。从类定义,到接口定义,到属性定义,到EnumListType,再到一层EnumListType,最后到EnumEnum选项。多层下拉框的典型应用是FluidSystem和FluidCode。

UoMListType UoM类型

UoMListType用于有不同表现形式的属性,例如温度的单位可以是摄氏度C、华氏度F、兰氏度Ra和绝对温度K。

Meta Schema元数据结构

Meta Schema是元数据结构,是最基本的数据结构。右侧示例中,ClassDef的类定义是ClassDef本身。在ExportData中查看,第一行就是ClassDef。

元Schema实例化出来的是Schema,右侧示例中,EQDCentrifugalPump是一个具体的类定义,定义了一种离心泵。

Schema实例化出来是具体的数据。右侧示例中,类定义实例化成了的一台具体的离心泵P-100,这台泵的类型是EQDCentrifugalPump。

Model Def

EdgeDef多层关联关系

两个Interface之间直接相连的关系是Relationship,间接相连的线形关系是EdgeDef。
下图中A和C之间隔了一层B,要从A找到C,就需要建立EdgeDef,将Rel1和Rel2组合一下。关联关系是有方向的,从1端到2端。从A到C需要先经过正方向的Rel1,再经过负方向的Rel2,所以这个Edge是+Rel1,-Rel2。

在下图中类定义PIDProcessEquipment和PIDProcessPoint之间没有关联关系,可以通过红色箭头方向建立EdgeDef。

GraphDef 发散关联关系

GraphDef是发散的关联关系,可以沿不同路径建立有分叉的关联关系。
下图中通过GraphDef +Rel1,-Rel2,+Rel3,A可以同时与C和D有关系

ViewDef

将GraphDef上的Interface的属性挑选出来,定义成一个集合用于在属性窗口浏览或出报表,就是ViewDef。

DTC的属性窗口中,通过自定义ViewDef,可以定义属性的显示。用Extended按钮可以显示或隐藏属性。

完整的数据模型

图中举例的内容为Excel导入SPF属性时泵的属性。
Schema集合为自定义的集合SPFExcelImportComponent。集合中定义了一个类定义EIPump。类定义有一个主接口IEI_Pump,又实现了四个其他接口。接口IEI_DesighnedItem和IEI_TaggedItem下各自有多个属性定义。接口IEI_HeldItem有了一个下拉框类型的属性定义。右侧IEI_PumpOcc接口实现了类定义与文档的关联关系。
主接口IEI_Pump有一个下拉框类型的属性定义。通过关联关系与一个Unit上的属性ISPFContract连接。主接口还与一个EdgeDef、一个ViewDef和一个DirectedGraphDef相连。



本文内容在不断修改完善中,未经许可请勿转载。

博客地址:https://mizart.cnblogs.com
原文地址:https://www.cnblogs.com/mizart/p/13755457.html
如果您所浏览的链接不是博客园地址,可能是爬取作者的文章,为保证内容的有效性,请点击原文地址阅读,感谢!

posted @ 2020-09-30 17:00  Mizar_T  阅读(801)  评论(2编辑  收藏  举报