0 引言
传统的应用系统集成模式是在信息、过程和服务等层次上实现的。面向信息的集成用来解决企业内应用和系统间的数据共享与交换,具体的实现方式有数据复制、数据联邦和基于接口的信息集成方式等;面向过程的集成(实现业务过程逻辑和应用逻辑相分离)是通过工作流引擎对企业内业务流程模式的执行,实现业务应用数据和信息在不同应用、子过程或执行任务的人员之间流动;面向服务的集成是为实现企业间具有松散耦合关系的不同应用间互操作提出的一种动态集成方式。但上述不同层次上的集成方法缺乏统一模式,集成工作量大、集成效率低。以产品生命周期管理(Product Lifecycle Management,PLM)系统为代表的集成应用系统的发展,对集成方法提出了新的要求。
信息系统实质上是现实系统在信息空间的影射,通过建立现实系统组成部分(或要素)及其相互关系在信息系统中的影射关系,将现实系统组成部分(或要素)及其相互关系转换为信息系统的对象(实体)及其相互关系,构造出信息模型。基于元模型的应用系统集成方法提高了用户构造大规模应用系统的能力。元模型驱动的开发模式减少了业务模型发生更改时,对组件内部逻辑和外部接口进行修改的工作量,并方便地实现应用开发从一种平台到另外一种平台的切换,这种元模型驱动的开发方法已引起业界关注。在标准方面,对象管理组织(Object Management Group,OMG)开展了模型驱动体系结构(Model Driven Architecture,MDA)的定义工作;在实践上,一些应用系统的研究和开发引人了MDA机制。
本文研究采用元模型作为PLM系统进行集成的方法,在元模型的基础上构造应用,并对元模型进行解析,使不同应用系统能在元模型层次上交换数据信息。在统一模型的基础上,进一步实现元模型到开发环境的映射和转换,建立元模型驱动的开发方法。
1 系统总体结构
PLM以产品的整个生命周期过程为主线,在产品数据管理(Product Data Management,PDM)的基础上,融合协同产品商务(Collaborative Product Commerce,CPC)中的协同工作模式和协同工具,并有效集成企业中的各种应用系统,从而成为支持企业运行的统一的集成平台。在此平台上,PLM提供企业间的应用集成方法,通过企业集成门户(Enterprise Integrated Portal,EIP)支持企业之间开展信息交互和电子商务活动。
元模型驱动的PLM体系结构(如图1)以元模型(meta model)为核心,使PLM系统具有更好的开放性和集成性。支持PLM系统的元模型表示需要解决的关键问题有:具有规范语义的元模型、图形化建模环境、存储模型信息的知识库、对知识库的访问和管理和通用模型与应用系统数据模型的映射等。其中,知识库及相应的元模型是统一数据模型的核心,元模型与知识库通过各种接口与前、后端应用系统进行交互。

图1 元模型驱动的PLM体系结构
支持PLM系统的元模型采用统一建模语言(Unified Modeling Language,UML)进行构造。大量的模型最终存放在知识库中,表示模型的数据格式采用可扩展标记语言(eXtensible Markup Language,XML)。因此,UML建模环境下构造的图形化数据模型需要转换成字节流格式。转换过程中采用数据流交换格式(Stream一based Model Inter-change Format,SMIF)实现基于XML的元数交换(XML—based Metadata Interchange,XMI)的功能,目的是建立不同知识库、中间件、工具之间的标准交换机制。转换的实现需要XML文档类型定义(Document Type Definition,DTD)生成规则和XML document生成规则两方面的支持,前者针对编码元数据生成XML DTD,后者把元数据解释成与XML兼容的格式。DTD与XML分离的优点在于DTD可以存储在本地,数据交换只需传递XML文件。
模型管理与应用主要包括:①对模型的访问和调用;②应用系统模型与元模型的交互。对模型的管理和应用,关系到PLM系统能否集成在统一的元模型下,因此,各类管理工具和接口转换工具是必不可少的。PLM在开发时会选择一种具体的开发技术,实际可供选择的开发平台有很多,主流的包括J2EE/公共对象请求代理体系结构(Common Object Request Broker Arichitecture,CORBA) /Webservices/. Net等,这些开发平台体系结构各不相同,在模型到接口的转换过程中,需要针对每种开发平台分别提供模型转换服务。如针对Web serv-ices,从模型中生成网络服务定义语言(Web ServiceDefinition Language,WSDL)和统一描述、发现和集成协议(Universal Description,Discovery and Integration,UDDI)文件;针对CORBA服务,生成PSDL(persistent state definition language)和CIDL(component implementation definition language);针对J2EE,生成相应的Java文件。这些接口与相应的服务进行联编,生成.obj,.d11,. intermediate byte code(Java)等资源,最后是对服务端应用程序的组装和配置。在元模型驱动的PLM系统开发中,具体选择了CORBA作为组件化封装平台。
另一方面,知识库中的模型需要与现有的计算机辅助设计(Computer Aided Design,CAD)/企业资源规划(Enterprise Resouse Planning,ERP)等系统进行交互,交换过程以XML网关作为中间交换平台,由XML Mapper完成数据格式的映射,并把外部应用系统中的数据模型信息通过XML Builder转换到数据模型的知识库中。应用系统集成参照企业应用集成(Enterprise Application Integration,EAI)的思想,重点解决应用系统数据库的连接问题,并采用数据引用参考或信息拷贝方式,简化应用系统集成方法。
2 元模型表达方法
企业数据模型的建立需要一套明确语义支持的建模语言。信息系统建模方法有很多种,如ARIS,PERA,IDEFx,CIM-OSA等。元模型驱动的PLM系统设计选用UML作为建模语言。UML的定义包括UML语义和UML表示法两个部分,UML语义通过其元模型严格定义。元模型为UML的所有元素在语法和语义上提供了简单、一致、通用的定义性说明,使开发者在语义上取得一致,而且UML语义支持对元模型的扩展定义。UML表示法定义了UML的表示符号,为建模者和建模支持工具的开发者提供了标准的图形符号和正文语法。这些图形符号和文字所表达的是应用级的模型,在语义上它是UML元模型的实例。在实际建模过程中,以UML语义为基础,根据企业模型的特点,加入领域知识方面的约束。约束采用UML中的构造型(stereotype)和标记值(tag)表示,对于复杂约束,采用对象约束语言(Object Constraint Language,OCL)进行描述。在PLM系统的开发中,选择符合UML规范的Rational公司的ROSE作为元模型构造环境。
在系统设计阶段,采用UML建立的元模型与中间件平台无关。在详细设计阶段,需要根据具体开发平台,对UML进行进一步的扩展和解释,把平台无关模型转换成与CORBA相关的模型,为此需要制定某些规则。UML类图要求能够表示COR-BA的接口定义语言(Interactive Data Language,IDL)接口,以及CORBA的数据类型和数据结构。另外,与COBRA平台相关时,需要区分UML类图,使之能够识别接口、数据结构及数据类型,并对这些结构进行表示。
类似的规定采用UML Profile进行描述。UML Profile通过UML内建的(build -in)扩展机制制定一系列扩展集,UML Profile for CORBA定义了如何通过标准的方法使用UML来定义CORBA的IDL描述、结构(structure)和联合(union)。例如,在这个规范中定义了诸如CORBAInterface,CORBAValue,CORBAStructure,CORBAUnion等版型,可以描述对应CORBA环境下的语义信息。在图形化的表示方法中,版型采用符号《》来表示。使用UML Profile对工程变更订单进行CORBA描述扩展,比单独使用CORBA IDL接口更能清晰地表达基于CORBA的应用,如图2所示。

3 元模型解析和转换
UML图形化建模方式为用户提供了直观的建模环境,但计算机不易理解。在统一数据模型的基础上,要进行模型的处理和利用,首先需要对模型进行解析。系统中选择XML作为对UML模型进行描述和表达的表现形式,通过XML实现模型信息的传递和数据交换。在构造XML文件的过程中,XML本身无语义,因此,首先要对UML中涉及的数据类型和逻辑关系进行DTD定义,以指导统一模型相应的XML文件的生成。
3.1 XML生成规则定义
元模型到DTDs和XML的映射采用EBNF(extended backus naur form)语法,以产生式规则集合的形式定义转换规则,实现元模型中类元属性、关系等内容到XML文件的映射。
定义1 一个简单DTD生成规则定义如下:
(DTD)::=(FixedContent )
(XMIAttList )?
(PackageDTD)+
其中:(FixedContent) :: =//Fixed declaration//
(XMIAttList)::=“(!ATTLIST”“XMI” (“xnilns:”
//Name of namespace//
(“CDATA”,“#IMPLIED”?)十“)”
(PackageDTD)::=((PachageDTD)}
(C1assDTD )} DTD>}( AssociationDTD> )#(PackageElementDef > )
定义2 引入分组实体的DTD定义如下:
(DTD>::=( FixedDeclarations )
(XMIAttList)?
(EntityDTD)
(PackageDTD)+
其中:(FixedDeclarations) :: =//Fixed declarations//
(PackageDTD)::=(
︱(RefsEntityDef )︱( CompsEntityDef )︱( C1assAttPropsEntity)︱( ClassAttRefEntity> )+
引人分组实体,可使DTD的定义更精练,对DTD的修改和扩充更易实现。定义1和定义2中给出的是DTD生成的第一层定义,对定义项中的详细内容,遵守OMG的XMI规范。
定义3 XML文档生成规则定义如下:
(XMI Document)::=“(XMI”(Namespaces)
“Version=”//XMI Version//
(“timestamp=”/八imestamp//)?
(“verified=”//verified//)?
“)”
((Header) )?
((Content))?
( (Differences) )?
((Extensions) )?
“(/XMI)”
定义3生成的XML文档的有效性可以用定义1和定义2中产生的DTD文件进行校验。
3.2 UML模型解析
元模型在UML建模环境进行创建,XML文档生成过程遵照前面定义的DTD及XML生成规则。从UML模型到XML文件的生成过程如图3所示

图3 UML模型到XML的转换过程
系统开发人员首先在支持UML标准的图形化建模环境中对业务模型进行描述,生成用户实例、顺序图、类图等表示动态流程与静态结构的信息实体,这些信息实体会保存在模型库中。在进行模型信息处理时,通过UML建模环境提供的应用程序接口(Application Programming Interface,API),对模型中的模型类别、元素、参数、约束和数据类型等元一元数据进行处理,转换为可识别的信息模型,然后通过规范的DTD,生成与元模型一致的XML文件描述。在XML生成过程中,可借助一些标准的组件,如DOM(document object model),Web一DAV(Web based distributed authoring and versioning)进行开发,提高XML文档生成的速度与质量。
PLM系统模型设计采用Rose作为业务模型的建模环境,通过其提供的REI (eXtensibility interface)扩展编程接口对模型中的基本信息进行提取,形成基本信息模型,再通过XML DOM接口根据上述DTD定义把这些基本信息表示成XML格式的文件,DOM接口采用Microsoft的MSXML3.0。由于UML DTD是对统一建模语言的全面、细致的完整描述,其内容比较复杂,模型分析时从静态结构入手,在PLM系统中首先解决产品元模型中类图的表达和交换。3.3 与元模型对应的XML生成
为对元模型进行解析和生成XML文件,系统开发了UML-XML生成工具,其界面如图4所示。

图4 UML模型解析及XML生成界面
在该工具中,设计人员通过集成的Rose建模环境进行模型定义,也可加载已定义的UML模型,此工具可直接生成模型对应的XML文件,并把模型中的数据和关系以树的方式显示出来。元模型生成的XML文档主要由两大部分内容组成,第一部分为XMI. header,包含对XML文档的描述,如版本、时间戳、名域、模型名称和创建工具等;第二部分为XMI. content,是描述类图中的相关信息,其中UML : Class中包含了对类的描述,其属性中有关于类名、可见性、id和uuid的描述,其子元素UML:Attribute中包括了类拥有的属性和对属性的描述,子元素UML:Operation中包括了类拥有的操作以及对操作的描述(包括参数、参数的类型等)。生成的XML文件主体结构如下:
(?xml version= “l.0” encoding=“gb2312”?)
(!一一Date:Thu Jun 2003 AM 10:08:54——)
(!一一Generated by tools:XMICreator 1.0一一)
(!一一Generated by,XMI Framework 1.0,DTD validation from OMG UMLL 3 DTD一一)
(!一一This is XMI document created from UML meta-modal一一)
(XMI xmi.version= “1.1” timestamp=“Thu Jun 2003 AM 10:08:54” xmlns:UML=“org. omg/UMLl.3”)
(XMI. header)
(!一一documentation for transfer data一一)
(XMI. documentation)
(XMI. owner) Rational Rose一psd. mdl(/XMI. owner)
(XMI. exporter) XMI Creator(/XMI. exporter)
(XMI. exporterVersion) 1.0(/XMI. exporterVersion)
(/XMI. documentation)
(!一一XMI. metamodel identifies the metamodel(s) for
the transferred data一一)
(XMI. metamodel xmi. name=“UML” xmi. version=“1. 3”/)
(/XMI. header)
(!一一XMI. content is the actual data being transferred一一)
(/XMI. content)
(/XMI)
XML不能表达语义信息,它只是符合W3C规范的一个文档,对于XML文件的有效性,还需要引人已定义的DTD进行检查。系统中选择XMLSPY5. 0对UML元模型对应的XML进行有效性校验。
在进行有效性验证时,在XML文件的第2行中插人下列语句:
(!DOCTYPE XMI SYSTEM "uml. dtd")。
此语句说明XML文件采用uml. dtd进行校验,uml. dtd应预先进行定义,并把该DTD放在XML文件所在的当前目录下。
4 元模型到COBRA平台的映射
PLM系统的功能实现选择CORBA作为平台,需对采用UML表示的平台无关模型进行映射处理,根据CORBA服务描述的特点,把模型中的信息首先转换为CORBA平台需要的IDL。在IDL基础上,CORBA开发环境对IDL进行编译,生成对应服务器的构架(skeleton)和对应客户端的桩(stub),PLM系统功能代码通过与构架进行联编,生成符合CORBA规范的软件组件。
在详细设计过程中,PLM系统根据UML profile for CORBA对元模型进行扩充,UML的扩展机制集合可用于向具体语言的映射添加细节。代码生成的主要扩展机制是特征值,在UML中,特征值能附加到任何模型元素,在默认情况下,UML/IDL对每一个IDL元素生成一个名为IDLfilename. idl的源代码单元。这里,IDLfilename是一个特征值,指定要生成的源文件的名字。
在UML模型中,通过把IDL元素指定到一个构件,把这些元素的代码生成到目标源文件中,为此可定义一个IDL模块接口集合,把类和其他类型映射到这些接口。在转换过程中,需要对元模型中的模块、接口、结构、联合、类型定义、常量和异常等分别进行处理。
以对元模型中类图的IDL表达为例,类的所有属性、操作和关系均可在代码中生成(如图5)。每个类生成的主要元素包括Class name,attributes,Operations,relationships,Documentation等。UML模型中的大多数信息直接用于生成代码,对类之间的双向关联、单向关联、一对多关联、多对多关联、约束倍增性关联、反身关联、依赖性关系和一般化关系等关系处理,通过在关系双方定义IDL文件进行表达。其他模型字段(如输入的类文档)不直接影响代码,这些字段值成为生成代码的说明语句。

图5 类图对应的IDL生成
图5中的sampleclass类生成下列IDL文件:
//source file: c:/corba/sampleclass. idl//模块段,描述所生成类和IDL文件位置的说明语句
# ifndef Sampleclass_defined//预处理器指令段,插入这些语句使文件不会重复出现
# define_Sampleclass_defined
# include “includeclass. idl”//包括段,描述该类引用的资源
interface sampleclass (//类定义段包含类本身的信息,包括类名、属性、操作和关系
attribute string Attributel:
attribute string Attribute2;
};
#endif
IDL语言是一种独立于编程语言、下层网络和具体实现的数据类型描述语言,其本身是一种描述性语言,而非编程语言。为使客户方程序和对象实现方程序能够统一地使用IDL语言中定义的数据类型和接口的信息,CORBA规范中规定了IDL到具体编程语言如C,C++,Java,SmallTalk等多种编程语言的映射,其具体实现由符合CORBA规范的产品提供。
5 结束语
本文依托PLM项目的开发,对元模型及其应用进行了研究,实现了产品生命周期系统中产品数据从UML建模、模型解析、IDL生成到应用开发的全过程,验证了模型驱动体系结构在实际项目开发中的可用性,实现了PLM系统的基本功能。基于元模型驱动的PLM系统原型已在企业得到实际应用,并应用在南京市科技局立项的企业信息化集成平台项目中。PLM系统中元模型的表达和交换子系统被包装成独立的工具,可应用于其他项目中。基于元模型驱动的PLM系统应用也有其适用范围,其设计思路符合大型企业对信息系统进行总体规划的需求,适用于新构造系统的设计和开发。对于历史遗留系统的集成,则需通过XML网关进行信息交互。
元模型驱动的PLM系统的发展符合软件工程理论的新方向,当前面向对象技术的前沿已从强调对象的管理,上升到模型的转换(model一based transformation)、模型的实效性(time一effective-ness of model)、可进化性(evolutionableness of model)和模型的层级性(hierarchy of model)。在元模型基础之上,研究针对元模型操作的通用元数据接口、查找和管理联邦知识库的方法、从代码中抽取元模型的逆向工程等,是下一步的研究方向。
本文作者:李海峰 吴慧中 来源:E-Works 万方数据库
CIO之家 www.ciozj.com 微信公众号:imciow