鄭君媛
摘要:Web Service是通過Internet進行基于Http協(xié)議的網(wǎng)絡(luò)應(yīng)用間的交互,運用WSDL(web服務(wù)定義語言)/SOAP(簡單請求協(xié)議)等規(guī)范實現(xiàn)不同語言間的調(diào)用,可以通過讀寫XM文件,使任何兩個應(yīng)用程序在各種硬件平臺、操作系統(tǒng)以及軟件協(xié)議通信之間進行互相通信,進而提供異構(gòu)平臺的無縫銜接技術(shù)手段。目前Oracle提供了一套OVS(Oracle VM Server)虛擬機服務(wù)器環(huán)境,這個環(huán)境模擬了真實的OPC(ORACLE public cloud)公有云服務(wù)運行環(huán)境進行項目開發(fā),PLM產(chǎn)品就是部署在OPC之上。該文主要介紹通過Web Service技術(shù)對Oracle云平臺上的PLM產(chǎn)品上的數(shù)據(jù)和信息進行訪問的實現(xiàn)過程。
關(guān)鍵詞:Web Service;XML;ORACLE云平臺;訪問實現(xiàn)
中圖分類號:TP393.09 文獻標識碼:A
文章編號:1009-3044(2019)07-0037-03
Abstract: Web Service is the interaction between network applications based on Http protocol through the Internet, using WSDL (Web Service definition language) /SOAP (simple request protocol) and other specifications to achieve the call between different languages, thus providing a heterogeneous platform seamless street technology means. Any two applications can communicate with each other across various hardware platforms, operating systems, and software protocol communications by reading and writing XML files. At present, Oracle provides a set of OVS (Oracle VM Server) virtual machine Server environment, which simulates the real OPC(Oracle public cloud) public cloud service running environment for project development, and PLM products are deployed on the OPC. This article mainly introduces the implementation process of accessing data and information on Oracle PLM products through Web Service technology.
Key words: Web Service; XML; ORACLE Cloud Platform; Access to Realize
1 核心術(shù)語概念
1)WSDL—WSDL是一種基于xml的格式,用于描述Web服務(wù)的接口。WSDL描述Web服務(wù)所有方面的端點、位置、協(xié)議綁定操作、參數(shù)和數(shù)據(jù)類型。
2)XML—Web Service交換的消息必須用XML表示。XML模式定義了基于XML的輸入輸出消息的數(shù)據(jù)結(jié)構(gòu), 這些消息由Web服務(wù)來交換,XML模式可以直接鏈接到WSDL定義, 或是嵌入到WSDL定義中[1]。
3)SOAP—SOAP是一種輕量級協(xié)議,用于在分散的分布式環(huán)境中交換結(jié)構(gòu)化信息。SOAP使用XML定義可擴展的消息傳遞框架。SOAP消息包括以下內(nèi)容: 用于包裝消息的信封,包括地址和安全信息。一組用XML編碼數(shù)據(jù)類型的序列化規(guī)則。過程調(diào)用和或響應(yīng)的約定。
2 背景
ORACLE公司為了方便開發(fā)OPC(ORACLE public cloud)公有云服務(wù),提供了一套叫作OVS(Oracle VM Server)虛擬機服務(wù)器環(huán)境,它模擬了真實的OPC運行環(huán)境,可以在OPC上進行云服務(wù)開發(fā)和測試工作,同時開發(fā)完成后可方便地將整個系統(tǒng)打包成為OPC可用的系統(tǒng)鏡像文件,并上傳部署到OPC[2]。在Oracle Cloud上部署了各種功能的產(chǎn)品,比如PeopleSoft、Fusion HCM, PLM產(chǎn)品等。WebService是一個SOA(面向服務(wù)的編程)的架構(gòu),基于普遍認可的結(jié)構(gòu)化數(shù)據(jù)交換、消息傳遞、服務(wù)發(fā)現(xiàn)、接口描述和業(yè)務(wù)流程設(shè)計的規(guī)范。它是不依賴于語言,不依賴于平臺來實現(xiàn)不同的語言間的相互調(diào)用。用戶可以不通過界面登錄產(chǎn)品,直接通過WebService技術(shù)實現(xiàn)對Oracle Could上的PLM產(chǎn)品上的數(shù)據(jù)和信息既方便又安全的訪問[3]。
3 具體實現(xiàn)
現(xiàn)有Oracle公司的一套PLM產(chǎn)品,該產(chǎn)品由C++和Java語言混合開發(fā),主要運行在Linux平臺和Windows平臺,同時也支持Solaris,HPUX和AIX平臺。下面筆者結(jié)合之前參與的一個項目來進行具體分析如何通過WebService技術(shù)訪問Oracle Could上的PLM產(chǎn)品上的數(shù)據(jù)和信息。
3.1 WebService體系結(jié)構(gòu)
本項目使用Web Services構(gòu)建分布式應(yīng)用程序的技術(shù),使用標準化的XML消息傳遞系統(tǒng),并且不與特定的操作系統(tǒng)或編程語言綁定。通過Web Services封裝現(xiàn)有的業(yè)務(wù)流程,將它們作為服務(wù)發(fā)布,搜索和訂閱其他服務(wù),并在整個企業(yè)內(nèi)外交換信息。使用因特網(wǎng)進行遠程過程是使用簡單的對象訪問協(xié)議(SOAP)來傳遞請求和響應(yīng)信息[4][5]。項目中WebServices使用行業(yè)標準核心技術(shù):1、Web服務(wù)描述語言(WSDL)2、XML和XML模式3、簡單對象訪問協(xié)議(SOAP)。
本項目設(shè)計的WebService體系結(jié)構(gòu)包含內(nèi)容如表1,可以根據(jù)角色和協(xié)議棧查看WebService體系結(jié)構(gòu):
3.2 WebService訪問模塊
本項目Web Service公開支持PLM應(yīng)用程序中的部分模塊提供的功能,如項目管理、工程管理和元數(shù)據(jù)管理等的許多功能。可提供的WebService訪問功能模塊部署在WebLogic應(yīng)用程序域中,如圖1所示。
3.3 WebService框架組件與實現(xiàn)
PLM產(chǎn)品的WebService框架包括以下內(nèi)容: 1.WebService wrapper,支持來自產(chǎn)品定義的LogiView過程的出站W(wǎng)ebService調(diào)用。2.Core Web Services,以支持映射到PLM產(chǎn)品的ECI-API調(diào)用的入站W(wǎng)eb服務(wù)調(diào)用。具體框架組件以及實現(xiàn)過程請見圖2。
WebService框架是PLM產(chǎn)品之上的另一層,它支持基于標準WebService技術(shù)的入站和出站通信。它提供了從PLM產(chǎn)品內(nèi)部的 LogiView進程(出站方向)內(nèi)部調(diào)用外部WebService的方法。此外,它允許外部應(yīng)用程序(WebService客戶端)通過Web服務(wù)調(diào)用PLM產(chǎn)品的API。WebService框架附帶了一組預(yù)定義的核心Web服務(wù),這些服務(wù)立即即用,支持最常見的集成場景,如創(chuàng)建PLM對象或獲取PLM對象。
3.4 WebService訪問過程實現(xiàn)與實例
3.4.1 本項目產(chǎn)品WebService會話處理
本項目產(chǎn)品核心WebService的每次調(diào)用都需要一個PLM產(chǎn)品服務(wù)器實例,所以限制服務(wù)器實例的數(shù)量以減少服務(wù)器上的資源負載非常重要。根據(jù)這個原則制定了以下處理機制來共享產(chǎn)品服務(wù)器實例。Oracle PLM引入了Ticket的概念,PLM Ticket是一種可在后續(xù)調(diào)用中使用的響應(yīng)字符串。這個Ticket使調(diào)用者可以訪問上次請求中使用的PLM服務(wù)器實例。此Ticket僅在服務(wù)器實例運行時有效。獲取Ticket后,客戶機代碼需要通過將Ticket字符串設(shè)置為密碼來配置端口。PLM Ticket提高了WebService的性能并簡化了會話管理。如果在usecase流中使用不同的WebService,那么當客戶端調(diào)用另一個服務(wù)操作(例如本項目中的BusinessObject.getObjects)時,一個服務(wù)操作(例如本項目中的Configuration.setUserContext)的響應(yīng)返回的Ticket將用作密碼。
當調(diào)用結(jié)束需要釋放分配給WebService會話的PLM服務(wù)器實例時,客戶機將使用PLM Ticket作為密碼調(diào)用loseSession操作,這將關(guān)閉EDM服務(wù)器實例并釋放服務(wù)器資源。
PLM會話可以提供到PLM服務(wù)器的連接,其中需要用到PLM會話管理器來允許管理PLM會話對象,這些對象用于將現(xiàn)有的連接和用戶內(nèi)容保存到PLM服務(wù)器?,F(xiàn)有PLM會話對象的關(guān)鍵就是由PLM會話管理器生成的會話ID。如果要檢索PLM會話,需要提供PLM Ticket。當創(chuàng)建一個新的PLM會話時,PLM Ticket被設(shè)置為PLM服務(wù)器實例,然后將PLM服務(wù)器實例設(shè)置為客戶端的SOAP消息。PLM會話的生命周期與給定的HTTP會話相同。HTTP會話的超時時間在文件web.xml中可以指定。
3.4.2 本項目WebService訪問過程
1)WebService請求
在本項目的WebService框架中,通過一個properties文件指定要訪問的PLM產(chǎn)品部署到的Weblogic服務(wù)器的WebService, 然后通過XML文件寫明需要訪問的對象請求[6][7],每個操作都有自己的請求數(shù)據(jù)類型,它是從定義好的RequestHeaderType繼承而來。所有請求的RequestHeaderType只有以下元素: messageID (String, optional): ID的默認值是以毫秒為單位的當前系統(tǒng)時間;messageName (String, optional): 消息名的默認值是簡單的類名,如圖3例。
每個WebService調(diào)用獲得的響應(yīng)都包含一個響應(yīng)狀態(tài)代碼,它指示W(wǎng)ebService操作的成功或失敗。響應(yīng)狀態(tài)碼有四種類型: ①success,表示批處理中的所有WebService都已成功執(zhí)行,并且所有操作都按預(yù)期工作;②failure,表示批處理中的所有WebService在執(zhí)行期間都失敗了,即表明沒有執(zhí)行預(yù)期的操作;③warning,表示雖然批處理中的WebService已經(jīng)成功執(zhí)行,但是在執(zhí)行過程中也遇到了某些警告??蛻舳诵枰治鲞@些警告,以驗證所有操作都按預(yù)期工作;④partial_success,表示當一個或多個批處理請求失敗,但不是所有批處理請求都失敗時,批處理Web服務(wù)的執(zhí)行部分成功。即使在一批Web服務(wù)中有一個Web服務(wù)失敗,響應(yīng)狀態(tài)代碼也指示PARTIAL_SUCCESS。
3)WebService訪問結(jié)果
本項目WebService的調(diào)用者必須提供用戶憑證才能訪問應(yīng)用程序。這些憑證的屬性取決于所使用的WebService策略。下面是本項目中的WebService調(diào)用示例:
<?xml version='1.0' encoding='UTF-8'?>
xmlns:ns3="http://xmlns.oracle.com/Agile/e6/plm"
xmlns:ns4="http://xmlns.oracle.com/Agile/e6/HelloWorld/v0" />