APP下载

Oracle云平台的PLM产品WebService访问实现

2019-05-24郑君媛

电脑知识与技术 2019年7期

郑君媛

摘要:Web Service是通过Internet进行基于Http协议的网络应用间的交互,运用WSDL(web服务定义语言)/SOAP(简单请求协议)等规范实现不同语言间的调用,可以通过读写XM文件,使任何两个应用程序在各种硬件平台、操作系统以及软件协议通信之间进行互相通信,进而提供异构平台的无缝衔接技术手段。目前Oracle提供了一套OVS(Oracle VM Server)虚拟机服务器环境,这个环境模拟了真实的OPC(ORACLE public cloud)公有云服务运行环境进行项目开发,PLM产品就是部署在OPC之上。该文主要介绍通过Web Service技术对Oracle云平台上的PLM产品上的数据和信息进行访问的实现过程。

关键词:Web Service;XML;ORACLE云平台;访问实现

中图分类号: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 核心术语概念

1)WSDL—WSDL是一种基于xml的格式,用于描述Web服务的接口。WSDL描述Web服务所有方面的端点、位置、协议绑定操作、参数和数据类型。

2)XML—Web Service交换的消息必须用XML表示。XML模式定义了基于XML的输入输出消息的数据结构, 这些消息由Web服务来交换,XML模式可以直接链接到WSDL定义, 或是嵌入到WSDL定义中[1]。

3)SOAP—SOAP是一种轻量级协议,用于在分散的分布式环境中交换结构化信息。SOAP使用XML定义可扩展的消息传递框架。SOAP消息包括以下内容: 用于包装消息的信封,包括地址和安全信息。一组用XML编码数据类型的序列化规则。过程调用和或响应的约定。

2 背景

ORACLE公司为了方便开发OPC(ORACLE public cloud)公有云服务,提供了一套叫作OVS(Oracle VM Server)虚拟机服务器环境,它模拟了真实的OPC运行环境,可以在OPC上进行云服务开发和测试工作,同时开发完成后可方便地将整个系统打包成为OPC可用的系统镜像文件,并上传部署到OPC[2]。在Oracle Cloud上部署了各种功能的产品,比如PeopleSoft、Fusion HCM, PLM产品等。WebService是一个SOA(面向服务的编程)的架构,基于普遍认可的结构化数据交换、消息传递、服务发现、接口描述和业务流程设计的规范。它是不依赖于语言,不依赖于平台来实现不同的语言间的相互调用。用户可以不通过界面登录产品,直接通过WebService技术实现对Oracle Could上的PLM产品上的数据和信息既方便又安全的访问[3]。

3 具体实现

现有Oracle公司的一套PLM产品,该产品由C++和Java语言混合开发,主要运行在Linux平台和Windows平台,同时也支持Solaris,HPUX和AIX平台。下面笔者结合之前参与的一个项目来进行具体分析如何通过WebService技术访问Oracle Could上的PLM产品上的数据和信息。

3.1 WebService体系结构

本项目使用Web Services构建分布式应用程序的技术,使用标准化的XML消息传递系统,并且不与特定的操作系统或编程语言绑定。通过Web Services封装现有的业务流程,将它们作为服务发布,搜索和订阅其他服务,并在整个企业内外交换信息。使用因特网进行远程过程是使用简单的对象访问协议(SOAP)来传递请求和响应信息[4][5]。项目中WebServices使用行业标准核心技术:1、Web服务描述语言(WSDL)2、XML和XML模式3、简单对象访问协议(SOAP)。

本项目设计的WebService体系结构包含内容如表1,可以根据角色和协议栈查看WebService体系结构:

3.2 WebService访问模块

本项目Web Service公开支持PLM应用程序中的部分模块提供的功能,如项目管理、工程管理和元数据管理等的许多功能。可提供的WebService访问功能模块部署在WebLogic应用程序域中,如图1所示。

3.3 WebService框架组件与实现

PLM产品的WebService框架包括以下内容: 1.WebService wrapper,支持来自产品定义的LogiView过程的出站WebService调用。2.Core Web Services,以支持映射到PLM产品的ECI-API调用的入站Web服务调用。具体框架组件以及实现过程请见图2。

WebService框架是PLM产品之上的另一层,它支持基于标准WebService技术的入站和出站通信。它提供了从PLM产品内部的 LogiView进程(出站方向)内部调用外部WebService的方法。此外,它允许外部应用程序(WebService客户端)通过Web服务调用PLM产品的API。WebService框架附带了一组预定义的核心Web服务,这些服务立即即用,支持最常见的集成场景,如创建PLM对象或获取PLM对象。

3.4 WebService访问过程实现与实例

3.4.1 本项目产品WebService会话处理

本项目产品核心WebService的每次调用都需要一个PLM产品服务器实例,所以限制服务器实例的数量以减少服务器上的资源负载非常重要。根据这个原则制定了以下处理机制来共享产品服务器实例。Oracle PLM引入了Ticket的概念,PLM Ticket是一种可在后续调用中使用的响应字符串。这个Ticket使调用者可以访问上次请求中使用的PLM服务器实例。此Ticket仅在服务器实例运行时有效。获取Ticket后,客户机代码需要通过将Ticket字符串设置为密码来配置端口。PLM Ticket提高了WebService的性能并简化了会话管理。如果在usecase流中使用不同的WebService,那么当客户端调用另一个服务操作(例如本项目中的BusinessObject.getObjects)时,一个服务操作(例如本项目中的Configuration.setUserContext)的响应返回的Ticket将用作密码。

当调用结束需要释放分配给WebService会话的PLM服务器实例时,客户机将使用PLM Ticket作为密码调用loseSession操作,这将关闭EDM服务器实例并释放服务器资源。

PLM会话可以提供到PLM服务器的连接,其中需要用到PLM会话管理器来允许管理PLM会话对象,这些对象用于将现有的连接和用户内容保存到PLM服务器。现有PLM会话对象的关键就是由PLM会话管理器生成的會话ID。如果要检索PLM会话,需要提供PLM Ticket。当创建一个新的PLM会话时,PLM Ticket被设置为PLM服务器实例,然后将PLM服务器实例设置为客户端的SOAP消息。PLM会话的生命周期与给定的HTTP会话相同。HTTP会话的超时时间在文件web.xml中可以指定。

3.4.2 本项目WebService访问过程

1)WebService请求

在本项目的WebService框架中,通过一个properties文件指定要访问的PLM产品部署到的Weblogic服务器的WebService, 然后通过XML文件写明需要访问的对象请求[6][7],每个操作都有自己的请求数据类型,它是从定义好的RequestHeaderType继承而来。所有请求的RequestHeaderType只有以下元素: messageID (String, optional): ID的默认值是以毫秒为单位的当前系统时间;messageName (String, optional): 消息名的默认值是简单的类名,如图3例。

每个WebService调用获得的响应都包含一个响应状态代码,它指示WebService操作的成功或失败。响应状态码有四种类型: ①success,表示批处理中的所有WebService都已成功执行,并且所有操作都按预期工作;②failure,表示批处理中的所有WebService在执行期间都失败了,即表明没有执行预期的操作;③warning,表示虽然批处理中的WebService已经成功执行,但是在执行过程中也遇到了某些警告。客户端需要分析这些警告,以验证所有操作都按预期工作;④partial_success,表示当一个或多个批处理请求失败,但不是所有批处理请求都失败时,批处理Web服务的执行部分成功。即使在一批Web服务中有一个Web服务失败,响应状态代码也指示PARTIAL_SUCCESS。

3)WebService访问结果

本项目WebService的调用者必须提供用户凭证才能访问应用程序。这些凭证的属性取决于所使用的WebService策略。下面是本项目中的WebService调用示例:

<?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" />