1 引言

PDM已经成为企业产品开发的基础信息平台。CAD作为产品设计阶段的主要工具,其生成的数据将通过PDM应用到CAPP、CAM等后续信息化软件中,因此如何有效地进行PDM和CAD的集成将直接影响企业的信息化水平。目前,国内大型企业已逐步从二维CAD过渡到三维CAD,PDM与三维CAD的集成越来越受到人们的重视。

大型企业各部门可能采用了不同种类的CAD软件,需要与PDM进行跨网络的集成,然而网络异构性、软件产品多样性、C/S与B/s架构的混合给集成造成了困难。另外,传统的企业应用集成技术,如OMG的CORBA、微软的DCOM、SUN公司的J2EE,都不能较好地解决跨网络环境下的防火墙对应用程序阻隔的问题。

Web服务(Web Services)作为一项新兴的网络技术,具有平台无关性、松散耦合性、完好封装性、协议标准性等优点,能够很好地支持异构系统集成,允许应用程序透明地穿越防火墙。为能利用Web服务的优势,针对大型企业应用集成现状,本文提出了一种面向服务能跨产品平台的PDM与三维CAD双向集成策略,将PDM与主流三维CAD采用各自的统一服务代理封装成Web服务,采用各自的统一集成代理请求对方服务,以达到双向数据、业务和界面的集成。为了屏蔽不同CAD二次开发接口的差异性,本文提出了一种CAD统一接口模型。应用该模型不仅可以用来实现CAD统一服务代理,还可以应用在需要获取CAD产品模型信息的其它应用程序以及脚本程序中。为了弥补常规Web服务难于直接提供CAD软件的交互式图形服务,本文提出了一种统一用户界面动态构建模型,采用可视化实时构建界面的方法,快速实现了统一集成代理中实时图形界面互动功能。实际应用表明:将统一代理技术与Web服务技术结合起来,可以以较小代价、一致的方法较好地解决跨网络、跨产品平台时PDM与三维CAD的集成问题。

2基于统一代理面向服务的双向集成框架和原理

2.1采用统一代理及Web服务的双向集成框架

采用Web服务构建应用集成要求应用程序之间按照Web服务标准进行通信,然而大型企业现有的PDM与三维CAD软件大多不支持Web服务:既不提供Web服务接口也不提供调用Web服务接口的功能。为了尽可能减少集成成本,采用代理对这些软件进行封装来提供Web服务支持可以较好地解决现有软件的服务化改造问题。

大型企业应用集成的另一个问题是软件产品平台的多样性,不同部门采用的三维CAD软件很可能各不相同。为了提供统一的产品信息获取方法,本文提出了一种CAD统一接口模型,采用一致的调用接口封装各种CAD。这样,我们只须实现一个CAD统一服务代理,而不必为每种CAD都实现单独的CAD服务代理。

基于以上的统一代理及面向服务集成策略,我们设计了一个PDM与三维CAD双向集成框架,如图1所示。整个框架由客户端、PDM web服务器、CAD服务器组成。

(1)客户端。由PDM客户端软件以及各种三维CAD组成。PDM客户端软件包括胖客户端形式的PDM以及瘦客户端形式的浏览器,以满足各部门对PDM软件的要求。PDM客户端软件内部包含一个PDM统一集成代理,用于请求PDM服务及提供统一界面互动支持。每一种CAD软件内部包含一个CAD统一集成代理,用于获取产品信息、请求PDM服务及提供统一界面互动支持。

(2)PDM Web服务器。用于提供PDM服务。包括PDM统一服务代理、PDM服务端软件以及数据库。其中,PDM统一服务代理处理PDM胖/瘦客户端和CAD统一集成代理发来的PDM服务请求,另外也请求CAD服务。

(3)CAD服务器。包括CAD统一服务代理、各种三维CAD和相应的CAD文件。其中,CAD统一服务代理封装了各种三维CAD获取产品信息的功能。

2.2 PDM向CAD面向服务的分布式集成过程

PDM向三维CAD的集成过程一般是用户登录PDM系统后,检出CAD文件,从中获取产品设计信息、产品结构树信息等,然后修改这些信息,最终将CAD文件入库。其实质是PDM客户端软件如何通过CAD完成产品信息的读写。传统的方法是在每个客户机安装所有的CAD软件,PDM客户端以后台方式启动CAD并利用CAD二次开发接口读写产品信息。这种方法有两个缺点:(1)每个客户机都必须安装所有的CAD软件,增加了企业软件投人成本;(2)占用了客户机大量的硬件资源,这些因素给企业信息化实施带来了困难。采用服务的方式,将所有CAD软件一次集中部署在服务端,由CAD统一服务代理提供产品信息读写服务,既解决了以上两个问题,也使得跨网络集成更加容易。具体的集成过程是:用户登录到PDM并请求查看产品信息时,PDM客户端软件通过PDM统一集成代理向PDM统一服务代理请求获取产品信息服务,PDM统一服务代理随之请求CAD统一服务代理以完成产品信息的实际读取,并将结果返回给PDM用户,最后PDM统一集成代理将结果显示在统一界面中。采用这种间接请求CAD服务的好处是,PDM客户不必知道CAD服务的存在,减少了整个系统的耦合性。

2.3 CAD向PDM基于代理请求服务的互动集成过程

三维CAD向PDM集成的过程是用户在三维CAD设计环境下,可以直接将CAD当作PDM客户端使用,登录PDM系统,检出文件,修改文件,检入文件。另外,还可以将设计信息导入到PDM中,以达到CAD和PDM透明互动集成的效果。本文对文献[2]中的基于代理的CAx与PDM透明式互动集成框架进行了改造,以便适应跨网络环境集成采用的Web服务技术。具体的集成过程是:假设用户启动了UG软件,UG自动加载集成代理,并在UG的菜单栏中插入了一个菜单条,名为PDM;用户点击“登录”选项,集成代理通过统一界面机制显示登录对话框,用户输入登录信息后请求PDM统一服务代理的“登录”服务;登录成功后。集成代理动态添加新的菜单项,并根据当前的状态禁止或使能某些菜单项;集成代理也提取当前模型的结构信息和属性信息,并将这些信息通过调用相关的PDM服务上传到PDM服务器。

3基于统一代理面向服务的PDM与三维CAD双向集成实现

3.1统一代理中Web服务的实现

Web服务实现包括web服务提供者和请求者的实现。其中Web服务提供者包括PDM和CAD各自的统一服务代理,这两种代理只是封装的应用逻辑不同,而实现方法类似。由于.NET技术可以大大简化Web服务的开发,采用C#开发ASP NET Web Service是个不错的选择。不过大多数PDM和CAD软件并不直接支持.NET的调用方式,本文采用一种中间转换层技术,将PDM和CAD的应用逻辑封装在动态链接库中(DLL),这样C#就可以直接调用DLL中的函数。

web服务请求者包括PI)M和CAD各自的统一集成代理以及PDM统一服务代理。对于统一集成代理而言,考虑到现有的PDM客户端软件和CAD二次开发编程语言,本文采用gSOAP来实现web服务客户端。gSOAP是一个开源项目,用它可以方便地使用C/C++进行SOAP服务器端和客户端编程,而不必了解XML和.SOAP协议的细节。PDM统一服务代理充当服务请求者请求CAD服务的功能可并入服务提供者中。

3.2 CAD统一接口模型的实现

3.2.1 CAD统一接口模型结构

CAD统一服务代理封装了CAD的应用逻辑,为了达到统一封装的目的,本文提出一种CAD统一接口模型,该模型如图2所示,分成三层:应用层、适配器层和CAD层。

(1)应用层。即需要获取CAD模型信息的应用程序,如CAD统一服务代理。除此之外,还包括脚本程序和其它应用程序。

(2)适配器层。屏蔽不同CAD二次开发接口的差异性以及提供接口调用的脚本支持。由一个适配器管理器、若干个CAD适配器和脚本解释器组成。适配器管理器根据必要的信息加载正确的CAD适配器,通过CAD适配器来完成实际的接口功能。CAD适配器对应每一种CAD,调用CAD提供的二次开发接口或直接读取CAD文件来实现统一接口。

(3)CAD层。包括各种CAD软件和对应的CAD文件。CAD软件以后台方式运行并操作CAD文件。

采取适配器管理器提供统一接口支持适配器层和CAD层的形式具有以下优点:

(1)易扩展。添加对其他CAD支持时,只需按照统一模型规范开发对应的CAD适配器即可。

(2)实现统一接口灵活方便。适配器可以直接读写或调用CAD的二次开发接口来操作CAD文件,如图2中显示了Pro/E适配器可以直接读写文件(通过对Pr0/E文件进行逆向分析或第三方程序库)或通过调用Pro/E提供API来读写文件。


3.2.2 CAD统一接口模型实现统一接口的原理和过程

CAD统一接口模型中适配器层是提供统一接口支持的关键。应用程序只须加载适配器管理器并调用统一接口函数即可,而具体的CAD适配器和CAD软件对应用程序是透明的。整个过程如下:

(1)应用程序动态加载适配器管理器,并向其提供CAD软件和CAD文件路径信息;

(2)适配器管理器根据这些信息负责加载正确的CAD适配器;

(3)若加载指定的CAD适配器成功,则缓存CAD适配器中各个统一接口函数地址;

(4)应用程序调用统一接口函数,适配器管理器将调用转发给(3)中缓存的函数;

(5)CAD适配器或启动CAD软件,或直接读写CAD文件来获取产品信息;

(6)应用程序卸载适配器管理器。

3.2.3 CAD统一接口的定义

PDM向三维CAD集成一般是获取产品结构信息、产品属性信息。产品结构信息包括零件类型、个数、文件名等。产品属性信息包括产品的物理属性,如材料、重量等;基本属性。如设计者、主题、备注、日期等;自定义属性。因此,CAD统一接口必然包含这些产品信息获取函数。这些函数的实现与具体的CAD类型有关,由CAD适配器实现,适配器管理器只是转发调用并作必要的错误检查处理。

另外,由CAD统一接口模型的实现原理可知,适配器管理器应实现CAD适配器的加载和卸载等接口函数。要使适配器管理器能正确加载指定的CAD适配器,应提供识别该CAD适配器特征的信息,这个特征就是CAD程序标识,可以采用多种方式标识CAD程序,如名字、程序ID、GUlD等,如采用“SolidWorks.2006”表示SolidWorks。要获取产品信息,必须知道CAD文件名。因此,应用程序必须提供CAD标识和CAD文件名给适配器管理器。本文使用连接字符串的概念来表示CAD适配器信息。其格式为:

CAD=CAD类型:FILENAME=CAD文件名适配器管理器解析得到CAD类型以及CAD文件名之后,还需知道当前系统中可用的CAD适配器,若有匹配的适配器,则加载,否则返同错误。为了解决查找、匹配CAD适配器的问题。CAD适配器应支持自注册和反注册。注册时将其支持的CAD标识、适配器实现文件路径等写入注册表中,反注册时清除这些信息。适配器管理器可以查询这些信息进而能够正确加载适配器。

3.3统一用户界面模型的实现

PDM与三维CAD的集成必然涉及到界面的互动集成,具体地说就是在CAD中显示PDM信息结果、操作界面等,在PDM中显示产品结构信息界面等。PDM统一集成代理、CAD统一集成代理分别为PDM和CAD提供交互界面支持。为了提供一致的交互界面并快速开发应用,本文提出了一种GUI和网页元素的统一用户界面模型,方便了CAD图形化和PDM网页化的互动集成。

该模型的核心是可视化界面建模技术,包括可视化界面构建工具、脚本解释器、统一界面支持运行库等。创建统一界面的过程如图3所示。用户首先在可视化界面定义器中,利用界面工具箱拖放界面元素,如网格、树、表单等,并设置它们的属性以及事件处理函数名称等,然后保存得到统一界面定义文件。之后用户可以使用编译型语言,如C、C++、C#,调用统一界面支持运行库中的加载界面定义文件函数、界面解释及创建函数即可获得先前定义的界面,并可应用在普通程序和网页程序中,方便CAD图形化交互操作和PDM网页化操作的互动集成。用户也可以使用脚本语言经过脚本解释器处理而获取统一界面支持。

4应用

基于如上所述的实现原理,初步开发出PDM统一服务代理封装了开目PDM的部分功能,PDM统一集成代理(应用于浏览器的ActiveX控件和应用于开目PDM客户端软件的集成插件)和CAD统一接口模型支持主流三维CAD软件。另外开发了界面可视化定义工具和相应的支持运行库。在开目PDM集成平台中,初步实现了KMPDM、UG和SolidWorks等主流三维CAD的集成。图4为PDM客户登录KMPDM系统以Web服务方式请求对象信息的界面。图5为UG通过UG统一集成代理生成的菜单项请求PDM检人服务的界面。

5结束语

传统的集成方式缺乏穿透防火墙的能力,对跨网络应用集成的支持不足,另外大型企业各部门可能采用了不同种类的软件也给应用集成带来了困难。本文提出的面向服务和跨产品平台的PDM与三维CAD双向集成策略,由于采用统一代理机制将PDM与三维CAD封装成web服务,PDM和CAD通过各自的统一集成代理请求对方服务的方法,较好地解决了跨网络异构集成问题。本文提出的统一CAD接口模型提供了一致的调用接口,解决了跨产品平台集成问题。提出的统一用户界面模型通过可视化构建GUI和网页元素的方式,提供了CAD图形化和PDM网页化操作的界面互动集成。通过将统一代理技术和Web服务相结合,实现了PDM和三维cAD双向分布式透明集成。后续工作可考虑将其他CAx软件进行集成,建立统一产品数据模型,提高集成时系统响应速度以及系统的安全性等。