EXPRESS 信息建模语言(
ISO10303 - 11) 是产品模型数据交换标准 ( STandards for the Exchange of Product model data, STEP ) ) ) ) ISO 10303 的 核心。EXPRESS 语言提供了一种中性机制, 可以与各种编程环境( 如 C, C+ + 和 FORTRAN 等) 衔接。不同编程环境中的数据可以通过交互产生的 EXPRESS 语言数据文件进行交互。
简介
EXPRESS 信息建模语言( ISO 10303 - 11) 是产品模型数据交换标准 ( STandards for the Exchange of Product model data, STEP ) ) ) ) ISO 10303 的 核心。EXPRESS 语言提供了一种中性机制, 可以与各种编程环境( 如 C, C+ + 和 FORTRAN 等) 衔接。不同编程环境中的数据可以通过交互产生的 EXPRESS 语言数据文件进行交互。使用 EXPRESS 语言的好处还在于, 它既能被计算机编译, 又能被人们阅读。ISO 制定这一标准的初衷是建立一个统一的产品数据交换标准。除了 STEP 委员会的专家对 CAD /CAM /CAPP 产品数据描述和交换标准进行制定以外, 许多从事商务和信息工程的专家也开始研究用EXPRESS /STEP 作为数据建模的主要工具。笔者基于对
企业建模的研究以及 EXPRESS 语言的以上特点, 把 EXPRESS 语言应用于企业建模, 并给出具体的应用方法和实例。
EXPRESS 语言的主要框架为:
Schema
Entity Supertype,Subtype
Algorithm
Function
Procedure
Rule,Where
对客观事物进行描述时, 首先要考虑各种事物的主体, 在EXPRESS 语言中抽象为实体( Entity) 。很多事物主体的集合又可以形成更大的概念 ))) 模式( Schema) , 它是对相互联系的一组事物的描述。超类( Supertype) 、子类(Subtype) 反映了 Entity 间的继承关系;Function, Procedure 都是对 Entity 属性的描述,Rule, Where 指的是 Entity 所受的约束和条件。另外, 还有一些具体语句, 如 identifier, unique, if ,then,, 等等。从结构上来说, EXPRESS 语言的特点之一就是 Schema 和 Entity 的嵌套定义, 通过 Schema 和Entity 的相互引用, 把事物的属性及其之间的联系描述清楚。在STEP 中还提出了一种与 EXPRESS 语言相对应的产品模型图形描述方法)) ) EXPRESS )G , 它用图形的方法描述概念与概念之间的关系, 便于人们对 EXPRESS 语言的理解。
对象特征
EXPRESS允许某些实体定义为另一些实体的子类,子类继承其超类的特性(即属性和规则),这就创建了一种子类/超类的继承关系。
子类/超类
一个实体通过一个Subtype描述说明为子类,通过显式supertype或隐式描述说明为超类。当隐式说明为超类时,是指它至少存在它的一个子类的实体说明中,即至少另一个实体中出现subtype说明为它的子类。
1、属性继承(Attribute Inheritance)和重说明(Re-declaration)
超类属性在子类的范围中是可见的,即子类继承其超类的所有属性。 EXPRESS支持多重继承(multi-ple inheritance)即继承其所有超类的所有属性。当多类继承出现同名属性时,通过施加超类实体名于继承的属性前以解决同名歧义性。
除此之外,EXPRESS还支持属性重说明,即超类属性可以在子类中重新说明以进一步提高描述能力。有三种重新说明方式,超类中属性类型可以改为其一个值域的特殊子集(约束其范围,如数可以进一步约束为整数);超类中的可选(optional)属性可以更改为强制(mandatory)属性(即强化其表现作用);超类中的显式属性可以更改子类中的导出属性(即减弱其表现作用)。显然通过子类对超类的属性重说明,进一步地明确了实际需要,增加了描述事物的能力。
2、规则继承(rule inheritance)
每个应用于超类实体的局部或全域规则同样应用于子类实体。这样子类继承所有超类的所有规则。不能改变或删除任何继承的规则。但是可以添加新的规则以进一步约束子类。
子类/超类约束
EXPRESS规定,一个子类实体的实例需要其所有超类的实例,一个超类实体需要零个或一个子类实例。子类/超类约束可以放在子类/超类实例的组合中,通过supertype declaration说明。
1、抽象超类
EXPRESS通过abstract supertype定义不可直接实例化(be instantiated)的超类,但抽象超类可以和至少一个子类一起被实例化。这就是说,抽象超类实例描述的信息不完备,必须进一步和其子类联合起来方能表达一确切的概念,这一点和C++中的虚拟对象说明类同。
2、ONEOF关系
如果超类实体将要和一组可能的子类实例的一个一起实例化,那么ONEOF约束用来指定这种选择,这种选择可以是一个单个子类或其他子类/超类约束的表达式,即ONEOF(… )括号内的项可以是子类/超类约束的递归定义项。例如,
ENTITY pet
ABSTRACT SUPERTYPE OF (ONEOF(cat, rabbit,dog,… ));
name: pet name;
END ENTYTY;
ENTITY catSUBTYPE OF(pet)…END ENTYTY;
…
3、ANDOR关系
如果一个超类的多个子类不是异或(mutually ex-clusive)的关系,即不是相互排斥的,那么该超类实例可以包括其多个子类的多个实例,子类间的这种关系用ANDOR约束指定。如
ENTITY personSUPERTYPE OF (employee ANDOR sutdent);
…
END ENTYTY;
…
4、AND关系
如果超类被分成几组互不相容的子类(即多个O-NEOF组),就是说有不只一种方式分类超类,那么组间关系用AND约束指定。
ENTITY personSUPERTYPE OF (ONEOF ( male,female) AND ONE-OF (citizen,alien));
…
END ENTYTY;
5、子类间的缺省约束
如果超类约束没有在超类实体中说明,那么其子类(如果有)应该是彼此互相相容的,即是说,好象所有子类已经隐式说明为ANDOR关系。如果超类约束在其某些子类上,那么其他子类仍然缺省为ANDOR关系。
应用
用 EXPRESS 语言表达企业模型
1、尽管 EXPRESS 语言看起来像通常的编程语言, 但它毕竟不是
计算机编程语言, 不能用来定义可执行程序, 只能定义程序执行所需要的数据, 用于描述复杂的数据关系, 并实现其数据的共享与交换。因而, EXPRESS 语言不具有对产品生产过程的描述功能, 不能用 EXPRESS 语言描述过程视图。
2、 企业模型用 EXPRESS 语言描述时, 打破功能、信息、资源和组织等模型之间的界限, 形成一个由许多 entity 数据信息组成的 EXPRESS 语言的整体信息库, 这些 entity 可以利用 supertype of( ,) 和 sub-type of( ,) 语句来嵌套定义。
3、 在企业建模方面, EXPRESS ) G 可以省略,建模者可以直接根据功能、信息、资源和组织等视图写出 EXPRESS 语言, 这些模型传统的图形描述方法已被人们接受, 又便于理解, 较 EXPRESS ) G 的应用更为普遍。采用 EXPRESS 语言描述方法是因为它便于计算机编译及企业模型信息的交换。
4、用 EXPRESS 语言描述具体企业模型的方法如下: 用 EXPRESS 语言描述功能模型时, 把每个功能活动以及它的每一个输入( I) 、输出( O) 、控制( C) 和机制( M ) 看作一个 entity。对于每个 entity, 把图号与功能活动编号之和作为 entity 的 identifier, 把控制( C) 看作各种约束, 把输出( O) 看作 function 的返回值, 把输入( I) 和机制( M) 看作 function 所调用的参数。 º用 EXPRESS 语言描述信息模型时, 把每个信息实体看作一个 entity, 信息实体编号作为它的identifier, 信息实体的所有属性以及与其他实体的关系都作为 entity 的属性。»用 EXPRESS 语言描述资源模型时, 把每个资源实体看作一个 entity, 把资源实体的属性作为 entity 的属性。¼ 组织模型的描述与资源模型类似。