使用Bpel调用IREP中发布的Web Service

十二月 30, 2009 in Oracle EBS二次开发

Oracle EBS R12中提供了将系统接口和客户化接口发布成Web Service的功能,下面将尝试使用Oralce SOA Suite 11g中的Bpel对其进行调用。

 

一、开发以及测试环境

EBS R12.1.1

Weblogic 10.3.1

Oracle SOA Suite 11.1.1.2

Jdeveloper 11.1.1.2.0

二、前提设置

本文描述如何建立一个调用IREP中WEB SERVICE的BPEL流程。在开始之前,必须对一些环境进行安装和设置。涉及到的内容有:

1. 为EBS R12做最基本的设置(设置到OU)

2. 按照本站中的文章《使用Integration Repositoy Parser(IREP)的前提设置》,对R12中的IREP进行设置。

3. 按照本站中的文章《发布客户化PLSQL API到Oracle Integration Repositoy(IREP)》,发布测试用的客户化API到IREP中,以供Bpel调用。

三、搭建以IREP中的Web Service为PartnerLink的BPEL流程

在前提设置做好之后,IREP中已经发布成Web Servcie的API就和一般的Web Service没有什么区别了。不过要注意的是,因为访问IREP中的WebService需要进行安全验证。所以相应的,BPEL中调用时也应该加入安全验证信息。

1,创建PartnerLink以及BPEL流程

进入EBS的Integration Repository中,“前提设置”第3步事先设定好的接口,找到已经发布好的客户化API的WSDL地址。 

接着在Jdeveloper的Bpel设计器中,添加一个PartnerLink,WSDL的位置填入上面复制下来的WSDL地址。这里用的是把上面的WSDL文件导入本地BPEL工程后直接调用的方式,如图:

 b

引入的WSDL代码片段如下:

<binding name=”STANLEY_EMP_PKG_Binding” type=”tns:STANLEY_EMP_PKG_PortType”>
        <soap:binding style=”document” transport=”http://schemas.xmlsoap.org/soap/http”/>
        <operation name=”CREATE_EMPLOYEE”>
            <soap:operation soapAction=”http://erpprod.oracle.com:8000/webservices/SOAProvider/plsql/stanley_emp_pkg/”/>
            <input>
                <soap:header message=”tns:CREATE_EMPLOYEE_Input_Msg” part=”header” use=”literal”/>
                <soap:body use=”literal” parts=”body”/>
            </input>
        </operation>
</binding>

可以看到,该WEB SERVICE需要传进去的参数有头和消息体,header中就是SOAHeader标签的内容了,包括Responsibility,RespApplication,SecurityGroup,NLSLanguage,Org_Id。这个和手工调用IREP中API需要输入的内容是一致的。这里使用一个Assign节点给header赋值。如图:

 c

然后使用一个Transform节点,把BPEL流程的输入参数传到Body中,完成后整个BPEL流程如图:

 d

这个时候就已经可以把BPEL发布到Weblogic中了,但是运行的时候会报错:SEVERE: An error occurred for port: FabricProvider: javax.xml.rpc.soap.SOAPFaultException: Missing <wsse:Security> in SOAP Header.原因很明显,我们在调用WebService的时候,没有提供必要的WS-Security验证信息。下面我们去设置这个验证信息的值。

2,提供WS-Security验证信息

打开Bpel工程中的composite.xml文件:

 e

点击PartnerLink节点,在Property Inspector窗口中可以看到该节点的属性信息。添加一条Policies。在新增界面的Security中,添加oracle/wss_username_token_client_policy,并保证在CheckBox中已经勾选上:

 f

OK后,再回到Property Inspector窗口,添加Binding Properties。分别增加oracle.webservices.auth.username和oracle.webservices.auth.password两条记录,值为在IREP相应的API中授权的EBS用户的账户和密码。这里为SYSADMIN用户。 设置好之后,Property Inspector窗口如图:

 g

做完以上设置之后,BPEL流程就可以发布到weblogic上进行测试了。

顺利调用IREP客户化API成功:

h

相关文章:

  1. WebService系列:Office VBA调用Web Service
  2. WebService系列:Office VBA调用已安全性认证的Web Service
  3. Oracle Integration Repositoy(IREP)中发布客户化集成接口为Web Service
  4. IREP: 测试Integration Repository客户化Web服务的调用

1 response to 使用Bpel调用IREP中发布的Web Service

  1. 感谢Stanley.liu将IREP和BPEL串联起来,期待更多关于BPEL的精彩文章。

Leave a reply

You must be logged in to post a comment.