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.guhuozai8.cn/
本文標題:C/S架構PDM的Web化升遷與應用