PDM(Product Data Management,产品数据管理)是以软件为基础,以产品管理为核心,实现对产品相关的数据、过程、资源一体化集成管理的技术。传统C/S(Client/Server,客户端/服务端)架构的PDM软件主要应用于企业内部的信息管理,而企业之间的异地协同设计则要求能够通过互联网实现PDM产品数据与资源的跨平台、跨地域的共享和管理,但由于企业之间的应用软件的异构性和数据传输过程中网络通信协议的不同,导致了PDM的产品数据与资源在企业之间共享和管理难以实现。
目前,基于Web的PDM系统是PDM产品技术发展的重要趋势,Sun Yong采用Java EE技术,设计了B/S(Browser/Service)模式的PDM系统,范国磊等以J2EE平台为基础,根据SOA(面向服务的构架)的特点对PDM系统异地协同进行了研究,Li Shu-juan等分析了Web技术和PDM技术的关系,提出了三层模型的PDM系统,本文在三层模型的PDM系统框架的基础上,研究了基于Web的PDM四层模型结构,以开目公司C/S架构PDM软件为例,构建了Web化的PDM系统应用,采用ADO.NET访问PDM数据库,根据表名查询的表结构信息和主键分批访问PDM服务端系统中的数据信息,然后将数据通过WCF通信平台传输给PDM客户端,实现C/S架构PDM的Web化应用的大批量数据的网络分批传输。
1 C/S架构PDM的Web化系统总体结构
当前,基于Web的PDM系统多数采用B/W/D(浏览器/Web服务器/数据库)三层构架,其中,Web服务器实现PDM所有的业务逻辑,并进行与浏览器的通信和数据库的访问,这将需要大量重写PDM的业务逻辑,同时,也不利于实现与异构系统B/S(Browser/Server)架构PDM的系统集成和PDM产品数据二次开发的可扩展性,根据三层架构PDM系统的缺陷,采用四层模型的PDM系统,四层模型的PDM系统与三层架构的PDM系统最大的变化是将Web服务器的Web服务层和业务逻辑层分开,减轻了PDM系统Web服务器的负载,更重要的是将Web服务层和业务逻辑层分开后,PDM服务端和数据库之间依然可以采用传统C/S模式,这样PDM服务端可以更多的专注于传统开发,只需将得到的业务逻辑数据封装后发布到Web服务层,然后给PDM客户端调用,这样便可以更大程度上对传统C/S模式PDM系统数据和业务逻辑进行复用,四层模型的PDM系统如图1所示,包括用户层、Web服务层、业务逻辑层和数据服务层,其各个功能层的主要功能如下:
(1)用户层:PDM客户端提供可视化的用户操作界面,具有数据请求和浏览的输入输出,通过与Web服务层进行通信获取PDM产品数据,但不能直接访问数据库。
(2)Web服务层:接收并组织用户层的消息请求,提交用户层消息请求到PDM服务端;同时,支持对服务端响应数据的缓存。
(3)业务逻辑层:在传统PDM的业务逻辑的基础上,支持Web服务层消息请求的进程通信,实现对产品数据、过程和资源信息的管理,提供数据管理、变更管理、系统集成、数据安全等传统C/S架构PDM的业务功能。
(4)数据服务层:提供用户层最终浏览的数据源,包括CAD图纸、CAPP工艺过程、MES排产计划文档等数据。
根据PDM系统的四层结构模型,在传统C/S架构PDM软件基础上,开发PDM客户端,根据C/S架构PDM的Web化的企业业务需求部署数据的Web服务层,将PDM服务端的数据传输给PDM客户端,实现C/S架构PDM的Web化应用。
图1 C/S架构PDM的Web化系统总体结构
2 C/S架构PDM的Web化系统应用的构建过程
C/S架构PDM的Web化的实质是PDM功能模块数据集能够按照客户需求安全有效的从PDM服务端传送到PDM客户端,实现PDM客户端与PDM服务端产品数据的一致性,本文依托开目公司C/S架构的PDM产品软件,采用VS2010开发环境,构建了Web化的PDM系统应用,在四层结构模型中,除了数据服务层依然采用PDM底层数据库信息,其他的三层根据应用需求来构建。
2.1 用户层的构建
本文的用户层主要是根据开目公司PDM软件二次平台来定制,其提供了集成的可视化的输入输出界面,但需要建立一个可供PDM系统调用的客户程序,其目的主要是为了引入发布的WCF服务ServiceReferences,根据其发布的服务契约访问PDM服务端数据信息。
2.2 Web服务层的构建
Web服务层主要通过采用新型的WCF分布式通信技术构建,WCF是.Net建立和运行面向服务的应用程序的统一架构,它整合了.NET平台下所有的和分布式系统有关的技术,例如ASP.NET Web服务(ASMX)、增强Web服务扩展(WSE)、.NET Remoting、企业(EntERPrise Service)和微软消息队列(MSMQ)。WCF是典型的面向服务的、松耦合的、可互操作的平台,WCF不仅可以实现跨平台跨地域的通信,并且支持包括HTTP、TCP、Named Pipe等多种通信协议。
WCF的通信模型如图2所示,WCF各个应用的通信是由终结点(Endpoint)来实现,其客户端和服务端通过交换Endpoint进行通信,每个Endpoint由地址(Address)、绑定(Binding)和契约(Contact)三个部分组成,其中Address解决服务寻址问题;Binding实现服务器端和客户端之间通信的所有细节,包括网络传输、消息编码以及其他为实现某种功能(如安全、可靠传输、事务等)对消息进行的相应处理;Contract定义了消息交换模式和消息结构。
图2 WCF通信模型
WCF提供了三种实例上下文的服务模式:单调(Per-Call)模式、会话(Per-Session)模式和单例(Single)模式,本系统采用会话模式,可以保持调用某个WCF服务的同一个客户端多次服务调用的状态,因而在定义了OperationContract之后需要并在契约中将ServiceBehaviorAttribute特性将上下文模式设定为InstanceContextMode.PerSession,同时在服务契约上定义会话模式为Required。
2.3 业务逻辑层的构建
业务逻辑层是沟通Web服务层和数据库的桥梁,是整个Web化PDM系统的核心,为了降低服务端的负载,在PDM客户端未请求业务的时候是PDM服务端是关闭的,为了实现在PDM客户端响应请求的过程中开启后台PDM服务端,首先根据Directory.SetCurrentDirectory设定PDM安装目录,然后通过System.IO空间的System.Diagno stics.Process类定义一个实体,接着将Startlnfo属性类的FileName设定PDM的安装路径,Arguments设定用户名和密码的命令行参数,假设用户名sa,密码为123,则设定命令行参数为-u sa-p 123,这样便可以开启后台PDM服务端系统了。
后台的PDM服务端系统开启后,需要组织PDM服务端可供网络传输的产品数据,本系统产品数据的获取采用两种方式:一种是根据自定义XML调取PDM系统API(Application Programming Interface,应用程序编程接口)获取业务信息;一种是直接访问操作数据库获取。
(1)XML数据交互技术
XML(Extensible Markup Language,可扩展标记语言)是一种标准通用的结构性标记语言,并允许用户自己定义标记语言的源语言.XML采用统一结构化方式来描述并交换独立于应用程序和厂商的结构化数据,具有强大的扩展性,同时,XML支持对复杂数据关系的表达并提供数据节点相关搜索,XML的基本格式为<Tag>文本内容</Tag>。
首先通过SOCKET通信PDM端口号,连接到PDM服务端系统,根据PDM系统提供的API,自定义获取业务数据的XML,然后根据File Stream类读取XML并将取值传给XmIDocument类,通过遍历XmlDocument的XmINode各个节点,获取到PDM产品数据的值后,重新组织一个有取值结果的XML,再通过XmINodeList截取想要的节点值。
(2)ADO.NET数据库访问技术
ADO.NET是.NET平台下公开访问服务的类,它为创建分布式数据共享应用程序提供了丰富的组件。ADO.NET支持Microsoft SQL和XML等数据源的访问,ADO.NET的对象模型如图3所示。
图3 ADO.NET的对象模型
根据ADO.NET的对象模型,通过Connection对象进行对数据库的连接,创建Command数据命令对象,然后根据数据需求,通过DataAdapter对象对数据进行查询、删除、插入、更新操作或通过DataReader对象读取数据,在数据处理的过程中,以DataSet对象为一个小数据集,DataSet对象中包含数据表、数据列、数据行、视图、约束以及关系。DataSet对象也支持与XML文件的交互转换,调用ReadXML和WriteXML即可进行XML的读写。
对于零部件繁多的产品,其在数据库中保存的数据内容可能有上万条,如果采用一次性将数据从PDM服务端通过网络传输到PDM客户端,可能会由于网络速度差出现卡死,数据崩坏等错误,而本文通过查询的表结构信息和主键信息,将数据分段传输,首先根据查找的表名通过Connection对象的GetSchema方法获得表结构信息,当GetSchema的第一个参数为Columns,获取的为表结构的所有信息,当一个参数为IndexColumns时获取的是主键列结构信息,根据表结构信息的主键变量的字段结构,定义查找数据排序方法,将它赋给Command对象构造函数的第一个参数,然后将所得通过DataAdapter或DataReader对象传给定义的DataSet对象。DataSet对象支持Web的序列化传输,PDM客户端可以通过PDM服务端返回的DataSet对象读取数据。
3 C/S架构PDMIYJWeb化系统应用的实现过程
根据上一节所述的C/S架构PDM的Web化系统应用的构建方法,C/S架构PDM的Web化系统应用过程如图4所示,将PDM客户端和PDM服务端安装在不同的IP主机上,与C/S架构PDM系统直接操作数据库不同,PDM客户端只有显示数据的操作界面,不能直接访问数据库,所有的数据是通过PDM服务端发布到ⅡS上的WCF服务访问的,开启PDM客户端并定义操作界面,进而请求PDM服务端库中的数据,客户端的数据请求通过WCF服务通信机制,连接到服务端的通信进程中,为了实现PDM产品数据的安全访问,采用用户口令的方式验证客户端请求的安全性,若判定客户端请求是安全的,将通过服务端通信进程开启PDM服务端,PDM服务端根据客户端的请求,通过自有的对象模型(数据管理、编码管理、过程管理等)组织业务逻辑,通过XML文件向PDM产品数据库发送数据请求或采用ADO.NET的数据库访问得到所需要的PDM产品数据,再通过原先的通信路径将得到的产品数据返回给PDM客户端,实现C/S架构PDM的Web化系统应用的实现,在大批量数据的Web传输过程中,由于Web化的PDM系统与C/S架构PDM系统不同,PDM客户端不能直接访问数据库,即不可能像C/S架构PDM系统总是在本地连接数据库,需服务端组织并分发数据,为了数据传输的及时性和安全性,需要将数据分批传输到客户端。
图4 C/S架构PDM的Web化系统应用过程
4 系统应用实例
本文以开目公司PDM产品为例,采用第3节所讲的C/S架构PDM的Web化系统应用的实现过程,对产品软件进行Web化实际应用,并验证PDM客户端不直接访问数据库,实现PDM数据库通过PDM服务端业务逻辑组织后通过Web到达PDM客户端。
下面展示的三张图为信息流的依次传递过程,PDM大批量数据和信息从图5的底层数据库到图6的Web服务层的ⅡS上,然后再到图7的PDM客户端界面上,如图5为汽车产品数据库,其包含了有上万条的数据,为了实现对大批量数据的Web化批量访问,通过PDM客户端的对象管理模块中对象分类管理功能,向PDM服务端请求汽车产品数据库中的汽车部件数据,PDM服务端根据客户请求,以ADO.NET访问数据库和PDM系统API组织业务过程,将得到的汽车产品数据通过WCF服务发布到ⅡS上,如图6所示,然后PDM客户端调用WCF服务,而不直接访问数据库,实现对汽车部件数据的浏览,其结果如图7所示。
图5 汽车产品数据库
图6 数据通过WCF服务发布到ⅡS
图7 汽车产品的汽车部件数据浏览
5 结语
本文分析了C/S架构PDM软件Web化过程中的四层结构模型,重点解决了C/S架构PDM系统如何进行Web升迁的难题,设计并构建了通用的C/S架构PDM的Web化系统应用,同时也解决了后台大批量数据的网络传输问题,此已在开目公司的C/S架构PDM系统中应用实施,最终实现了企业之间异地协同设计的产品数据的管理。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:C/S架构PDM的Web化升迁与应用