码迷,mamicode.com
首页 > 其他好文 > 详细

【Ebs】EBS12.2.7 REST ISG的配置

时间:2020-03-29 13:02:02      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:安装   也会   version   asi   提示   varchar2   成功   操作方法   srv   

1      ISG设置-基础设置

  1. 激活ASADMIN用户:

a)       以SYSADMIN用户登陆EBS, 进入用户管理职责。

b)      进入用户菜单,搜索ASADMIN用户。

c)       点击更新按钮,进入用户更新界面。

 技术图片

d)      清空有效至字段的内容,点击保存

 技术图片

e)       点击重置口令按钮,输入新密码,并保存,用户状态会变成已激活状态。

以上步骤在系统管理员职责下的安全>用户FORM界面也能操作,操作方法类似

注:完成ISG的配置之后,不要修改ASADMIN用户密码,否则还需要再重新配置。

  1. 2.      分配Integration Administrator角色:

a)       点击分配职责按钮,在LOV搜索选择窗口,选择代码,并输入:UMX|FND_IREP_ADMIN

 技术图片

b)      勾选复选框,并点击选择按钮。

c)       在证明字段随意输入内容,点击应用

2      ISG REST services 的配置

  1. 配置ISG_TEMP目录

  在EBS应用服务器上创建一个文件夹,例如:

mkdir $CUX_TOP/soa/

将这个文件夹作为<ISG_TEMP>

:如果是多节点的话,该文件夹需要是一个共享文件夹。

2.  修改$INST_TOP/soa/isgagent.properties文件

<SID>.ISG_TEMP_DIRECTORY_LOCATION=<ISG_TEMP>


修改$INST_TOP/soa/文件夹下isgagent.properties的ISG_TEMP_DIRECTORY_LOCATION属性

<SID>.ISG_LOGGER=FILE

<SID>.ISG_GLOBAL_LOG=true


同时需要新增两个属性来开启ISG的log功能

修改以上配置之后,重启oafm和oacore server之后产生的log文件会产生在配置的<ISG_TEMP>文件夹中。

 

注:多节点情况下,需要更新每个节点上的该文件

  1. 执行 txkISGConfigurator.xml

    ant -f $JAVA_TOP/oracle/apps/fnd/txk/util/txkISGConfigurator.xml ebsSetup -DforceStop=yes

    source /u01/install/VISION/EBSaps.env RUN

l 加载环境变量

source <EBS_INSTALL_BASE>/EBSapps.env RUN

 

l 运行txkISGConfigurator.xml工具

ant -f $JAVA_TOP/oracle/apps/fnd/txk/util/txkISGConfigurator.xml ebsSetup -DforceStop=yes

 

该脚本的执行过程需要提供一下信息:

  • Enter the password for user APPS:

       输入用户APPS的密码.

  • Enter the ASADMIN user name : [ASADMIN]
  • Enter the password for user ASADMIN :

       输入用户ASADMIN的密码

  • The script will forcefully stop the Oracle WebLogic Server now. Do you want to proceed (yes/no)? (yes, no)

       输入 yes 来重启服务。

结果显示

 技术图片

 

 

        生成Authentication Provider

 技术图片

 

技术图片

 

 

注意:

        上述脚本会创建一个“OAEADatasource”的data source,并部署至EBS的WebLogic Admin Server和‘oafm_cluster1‘ server。同时也会创建一个REST services使用的Authentication Provider “IsgAuthenticator”,最后重启weblogic admin server。

        如果OAEADatasource已经创建过了,上述脚本增加参数“-DforceDataSourceExists=true”来替换已有的data source。使用“ -DforceAuthenticationProviderExists=true ”来重新创建Authentication Provider。

以上步骤只要在主节点执行即可

3      验证配置-ISG REST Services

本部分主要介绍通过前台用户界面和后台脚本的方式发布REST Webservice来验证ISG的配置。

3.1  前台界面验证

  1. 以ASADMIN用户登陆EBS,其他包含集成管理员角色的用户也可以。
  2. 进入集成信息库职责的集成信息库功能,点击搜索按钮;
  3. 内部名称字段输入’FND_USER_PKG’并点击开始按钮来执行搜索;
  4. 点击User链接,显示接口的详细信息;

         技术图片

  1. 点击REST Web Service 标签页并输入一下内容:

Service Alias:指明服务的别名【会显示在服务的URI里面,因此取个比较有内涵的,例如:FndUserPkgSrv】;

a)       在Service Operations表格里面,选择至少一个method来以REST service operation的方式暴露出来。

  1. 点击部署按钮来部署该REST service,如果部署无误,REST Service Status字段会显示已部署

 技术图片

 

 

  1. 点击取消部署按钮来取消已部署的service,Rest Service Status字段会显示Not Deployed

 

3.2  后台脚本验证

例如,我们要将一个PL/SQL类型的接口 FND_USER_PKG(并暴露TESTUSERNAME这个method) 部署为REST Service,则我们可以再应用服务器上执行下述脚本:

ant -f $JAVA_TOP/oracle/apps/fnd/isg/ant/isgDesigner.xml -Dactions=deploy -DserviceType=REST -DirepNames=FND_USER_PKG[{TESTUSERNAME:SYNC:POST}] -Dverbose=ON -Dalias=FndUserPkgSvc

 如果上述部署操作成功,即代表我们的配置无误。

技术图片

 

 

界面查看该方法是否配置成功

 技术图片

 

 

4      客户化接口—配置

 

4.1  概述

Oracle EBS ISG支持客户化接口开发并且可以发布到Oracle Integation Repository。支持客户化开发的接口类型有:XML Gateway Map,Business Event, PL/SQL, Concurrent Program, Business Service Object, Java APIs, Java Bean Services和BPEL Composite Service。

 技术图片

 

 

客户化开发ISG web service流程:

  1. 按照Integration Repository注释标准给客户化API添加注释;
  2. 执行IREP Parser工具来验证注释好的文件,生成Integration Repository loader文件(iLDT);
  3. 上传iLDT文件至Oracle Integration Repository;
  4. Integration Repository职责查看客户化接口详细信息;
  5. 为接口相关方法创建安全授权;
  6. 生成web services;
  7. 部署web services;

                             注意下图中SOAP与REST两种服务方式部署的不同。

 技术图片 

 

4.2  配置Integration Repository Parser(IREP Parser)

IREP解析器是集成管理员用于按照注释标准对客户化接口添加的注释验证的独立设计时工具,验证完成之后生成iLDT文件,该文件被上传到集成信息库里,然后用于生成服务、发布服务。

1.      安装Perl模组

a)       通过运行EBSapps.env脚本建立运行文件系统APPL_TOP环境。

b)      定位Perl配置文件Config.pm并备份这个文件

cd $FMW_HOME/webtier/perl/lib/5.10.0/x86_64-linux-thread-multi

cp Config.pm Config.pm_bak20200320

c)       修改Config.pm文件

<FMW_HOME>是$ FMW_HOME的绝对路径。

archlibexp =>relocate_inc(‘<FMW_HOME>/webtier/perl/lib/5.10.0/sun4-solaris-thread-multi-64‘)

privlibexp =>relocate_inc(‘<FMW_HOME>/webtier/perl/lib/5.10.0‘)

sitearchexp =>relocate_inc(‘<FMW_HOME>/webtier/perl/lib/site_perl/5.10.0/sun4-solaris-thread-multi-64‘)

sitelibexp =>relocate_inc(‘<FMW_HOME>/webtier/perl/lib/site_perl/5.10.0‘)

 技术图片

 

 d)      创建Perl安装目录

mkdir $APPL_TOP_NE/perl

chmod 755 $APPL_TOP_NE/perl

e)       在APPL_TOP环境中设置以下环境变量

export PERL5LIB=$FND_TOP/perl:$APPL_TOP_NE/perl:$PERL5LIB

export LIBPATH=$LIBPATH:$FMW_HOME/webtier/lib

export ORACLE_HOME=$FMW_HOME/webtier

LD_LIBRARY_PATH=$ORACLE_HOME/lib32:$ORACLE_HOME/lib:$LD_LIBRARY_PATH

export JAVA_HOME=/prod/EBS122/fs1/FMW_Home/jdk

这里JAVA_HOME 可以通过运行 which java来获取

f)        下载patch 13602850 (p13602850_R12_GENERIC.zip)并上传、解压

Patch 13602850 contains the following Perl modules:

Compress-Raw-Zlib-2.009

Compress-Zlib-2.009

Class-MethodMaker-1.12

按照上面的顺序安装Perl模组

安装命令:

cd $APPL_TOP_NE/perl

cp -r /temp/Compress-Raw-Zlib-2.009

cd Compress-Raw-Zlib-2.009

perl Makefile.PL

make

make install

2.      验证

如果上述步骤无误的话,执行以下脚本:

$IAS_ORACLE_HOME/perl/bin/perl $FND_TOP/bin/irep_parser.pl

               若结果是如下提示则说明我们的Integration Repository Parser配置成功:

 技术图片

 

 

4.3  注册客户化产品

  1. 创建客户化prodcut family

    BEGIN

      -- create the custom product family

      ad_pa_insert_package.insert_ad_pm_product_info(x_product_abbreviation        => ‘cux_pf‘

                                                    ,x_pseudo_product_flag         => ‘N‘

                                                    ,x_product_family_flag         => ‘Y‘

                                                    ,x_application_short_name      => NULL

                                                    ,x_product_name                => ‘CUX Product Family‘

                                                    ,x_product_family_abbreviation => NULL

                                                    ,x_product_family_name         => NULL

                                                    ,x_aru_update_date             => to_char(SYSDATE,‘YYYY-MM-DD‘)

                                                    ,x_currdate                    => to_char(SYSDATE,‘YYYY-MM-DD‘)                                 ,x_last_updated_by             => -1

                                                    ,x_created_by                  => -1);

      COMMIT;

    END;

     



  1. 创建客户化product

BEGIN

  -- create the custom product

  ad_pa_insert_package.insert_ad_pm_product_info(x_product_abbreviation        => ‘cux‘

                                                ,x_pseudo_product_flag         => ‘N‘

                                                ,x_product_family_flag         => ‘N‘

                                                ,x_application_short_name      => ‘CUX‘

                                                ,x_product_name                => ‘CUX Product‘

                                                ,x_product_family_abbreviation => NULL

                                                ,x_product_family_name         => NULL

                                                ,x_aru_update_date             => to_char(SYSDATE,‘YYYY-MM-DD‘)

                                                ,x_currdate                    => to_char(SYSDATE,‘YYYY-MM-DD‘)

                                                ,x_last_updated_by             => -1

                                                ,x_created_by                  => -1);

  COMMIT;

END;


  1. 创建family与product的联系

    BEGIN

      -- create the relationship between family and product

      ad_pa_insert_package.insert_ad_pm_prod_family_map(x_product_abbreviation        => ‘cux‘

                                                       ,x_product_family_abbreviation => ‘cux_pf‘

                                                       ,x_aru_update_date             => to_char(SYSDATE,‘YYYY-MM-DD‘)

                                                       ,x_currdate                    => to_char(SYSDATE,‘YYYY-MM-DD‘)                                                   ,x_last_updated_by             => -1

                                                       ,x_created_by                  => -1);

      COMMIT;

    END;



  1. 增加客户化BUSINESS_ENTITY:
    在LOOKUP_TYPE=BUSINESS_ENTITY中增加一个CODE:CUX_SERVICE

 技术图片

 

 

 

4.4 编写并注释PL/SQL接口代码(服务端代码)

CREATE OR REPLACE PACKAGE cux_fnd_ws_test_pkg AS

  /* $Header: cux_fnd_ws_test_pkg.pls 12.0.1 $ */

  /*#

  * This package using provide import po receive service

  * @rep:scope public

  * @rep:product cux

  * @rep:lifecycle active

  * @rep:displayname   cux_fnd_ws_test_pkg

  * @rep:compatibility S

  * @rep:category BUSINESS_ENTITY CUX_SERVICE

  */

  /*===============================================================

         Copyright (C) xxx Co., Ltd.   All Rights Reserved

  ===============================================================*/

 

  /*===================================================================

  --  Program Name  : cux_fnd_ws_test_pkg

  --  Purpose       : webservice测试包

  --  Reference     :

  --  Scope         :

  --*******************************************************************

  --  Date         Version      Author           Description

  --  2020-03-26   1.00         lingchao.sun     Initial Version

  ===================================================================*/

  --===================================================================

  --Procedure Name  : process

  --Description     : 处理流程

  --Note            :

  --Parameters      : p_id    : id 

  --                  p_name : name

  --                  p_age :age

  --                  p_birth_date :birth_date

  --                  esb_flag : ESB标识

  --                  esb_return_code : ESB返回代码

  --                  esb_return_message : 系统返回消息

  --History         : 1.00 2020-03-26 lingchao.sun Creation

  --====================================================================

  /*#

  * process

  * @param p_id  id

  * @param p_name  name

  * @param p_age  age

  * @param p_birth_date  birth_date

  * @param esb_flag esb flag

  * @param esb_return_code esb return code

  * @param esb_return_message esb return message

  * @rep:scope public

  * @rep:lifecycle active

  * @rep:displayname process

  */

  PROCEDURE process(p_id               IN VARCHAR2,

                    p_name             IN VARCHAR2,

                    p_age              IN NUMBER,

                    p_birth_date       IN VARCHAR2,

                    esb_flag           OUT VARCHAR2,

                    esb_return_code    OUT VARCHAR2,

                    esb_return_message OUT VARCHAR2);

END cux_fnd_ws_test_pkg;



 

4.5  解析、上传

  1. 上传cux_fnd_ws_test_pkg.pls文件至’$CUX_TOP/soa/’目录下;
  2. 进入目录’ $CUX_TOP/ soa/’;
  3. 运行irep_parser.pl工具来解析并验证pls文件是否声明正确:

命令的格式如下:

$IAS_ORACLE_HOME/perl/bin/perl $FND_TOP/bin/irep_parser.pl -g -v -username=<a fnd username> <product>:<relative path from product top>:<fileName>:<version>=<Complete File Path, if not in currect directory>

  本例中实际执行如下命令:

 $IAS_ORACLE_HOME/perl/bin/perl $FND_TOP/bin/irep_parser.pl -g -v -username=sysadmin cux:patch/115/sql:cux_fnd_ws_test_pkg.pls:12.0.1=cux_fnd_ws_test_pkg.pls

结果如下(看到‘Done all files’表示验证成功):

 技术图片

 

 

成功后,会在当前目录下生成一个ildt文件:cux_fnd_ws_test_pkg_pls.ildt

 

 

 技术图片

 

 

  1. 上传cux_fnd_ws_test_pkg_pls.ildt至Integration Repository;

执行upload命令上传iLDT文件,命令格式如下

$FND_TOP/bin/FNDLOAD <APPS username>/<ORACLE Password> 0 Y UPLOAD $fnd/patch/115/import/wfirep.lct <ildt file>

 技术图片

 

 UPLOAD脚本执行完成后,检查当前目录下的log文件,看到“Concurrent request completed successfully”表示上传成功:

 

 技术图片

 

 

4.6  授权、部署

4.6.1        授权

创建授权即对接口中的methods的执行权限分配给某一个特定的用户/用户组/所有用户,以保证服务的访问安全性;在授权 TAB页,勾选要创建授权的method,点击创建授权;反之撤销授权则是回收权限。

 技术图片

 

 

4.6.2        部署

 

l  进入REST Web 服务 TAB页;

l  勾选需要部署的methods;

l  在服务别名处填写服务别名;

l  点击部署按钮;

 技术图片

 

 

部署成功之后,REST 服务状态变为已部署,同时出现查看WADL取消部署按钮

 技术图片

 

 

同时服务器上<ISG_TEMP>目录中也会生成REST文件夹

 

 技术图片

 

 

4.7  版本升级

当我们更改了包头中的参数时,需要重新发布服务做版本升级。

需要注意的是:生成iLDT文件的IREP命令版本号要升版,同时需要清除高速缓存、重启OAFM

l   $ADMIN_SCRIPTS_HOME/admanagedsrvctl.sh stop oafm_server1

l   $ADMIN_SCRIPTS_HOME/admanagedsrvctl.sh start oafm_server1

 

 

 

5      客户化接口服务-客户端调用

 

5.1  通过WADL获取请求报文的程序包

 

 

DECLARE

  x_request     VARCHAR2(32767);

  l_url         VARCHAR2(1000);

  l_method_code VARCHAR2(100);

  l_mode_type   VARCHAR2(30);

  l_length      NUMBER;

BEGIN

  l_url         := ‘http://cheng.erptest.com:8000/webservices/rest/CuxWsTestSrv?WADL‘;

  l_method_code := ‘process‘;--method方法

  l_mode_type   := ‘XML‘;--XML/JSON

  cux_fnd_isg122_utl.get_model(p_wadl_url       => l_url,

                               p_method_code    => l_method_code,

                               p_model_type     => l_mode_type,

                               x_req_model_data => x_request);

  SELECT lengthb(x_request)

    INTO l_length

    FROM dual;

  --dbms_output.put_line(l_length);

  --dbms_output.put_line(substr(x_request, 1, 500));

  --dbms_output.put_line(substr(x_request, 501, 1000));

  --dbms_output.put_line(substr(x_request, 1000, l_length));

END;


 

5.2  调用REST Service – Soap UI

6.1.1 方式1:XML

  1.  新建WADL项目

 技术图片

 

 

 

  1. 获取服务的WADL,并导入WADL

输入请求编码:UTF-8

输入方法授权的用户名和密码

指定报文的格式为XML或者JSON

输入请求报文

 技术图片

 

 

  1. 发送报文获取相应报文

XML类型报文

 技术图片

 

JSON类型报文

 技术图片

 

 

 

5.3  调用REST Service – PLSQL

6.2.1 方式1:XML

 REQUEST:

DECLARE

  l_url      VARCHAR2(100) := ‘http://cheng.erptest.com:8000/webservices/rest/CuxWsTestSrv/process/‘;

  l_request  utl_http.req;

  l_response utl_http.resp;

 

  l_req_data VARCHAR2(32767) := ‘<?xml version="1.0" encoding="UTF-8" ?>

<PROCESS_Input xmlns="http://xmlns.oracle.com/apps/cux/rest/CuxWsTestSrv/process/">

<RESTHeader xmlns="http://xmlns.oracle.com/apps/fnd/rest/header">

<Responsibility></Responsibility>

<RespApplication></RespApplication>

<SecurityGroup></SecurityGroup>

<NLSLanguage>SIMPLIFIED CHINESE</NLSLanguage>

<Org_Id>0</Org_Id>

</RESTHeader>

<InputParameters><P_ID>5</P_ID><P_NAME>plsql</P_NAME><P_AGE>33</P_AGE><P_BIRTH_DATE>2020-02-01</P_BIRTH_DATE></InputParameters>

</PROCESS_Input>

 ‘;

 

  l_resp_data         VARCHAR2(32767);

  l_http_auth_encoded VARCHAR2(100);

BEGIN

  l_request := utl_http.begin_request(l_url, ‘POST‘, utl_http.http_version_1_1);

  utl_http.set_header(l_request,

                      ‘Content-Type‘,

                      ‘application/xml; charset=utf-8‘);

  l_http_auth_encoded := utl_raw.cast_to_varchar2(utl_encode.base64_encode(r => utl_raw.cast_to_raw(‘SYSADMIN:sysadmin‘)));

  utl_http.set_header(l_request,

                      ‘Authorization‘,

                      ‘Basic ‘ || l_http_auth_encoded);

  utl_http.set_header(l_request,

                      ‘Content-Length‘,

                      to_char(lengthb(l_req_data)));

  utl_http.write_text(l_request, l_req_data);

  l_response := utl_http.get_response(l_request);

  utl_http.read_text(l_response, l_resp_data);

  dbms_output.put_line(l_resp_data);

  utl_http.end_response(l_response);

END;

 

 

6.2.2 方式2:JSON

REQUEST:

DECLARE

  l_url      VARCHAR2(100) := ‘http://cheng.erptest.com:8000/webservices/rest/CuxWsTestSrv/process/‘;

  l_request  utl_http.req;

  l_response utl_http.resp;

 

  l_req_data          VARCHAR2(32767) := ‘{

    "PROCESS_Input": {

        "@xmlns": "http://xmlns.oracle.com/apps/cux/rest/CuxWsTestSrv/process/",

        "RESTHeader": {

            "@xmlns": "http://xmlns.oracle.com/apps/fnd/rest/header",

            "Responsibility": "",

            "RespApplication": "",

            "SecurityGroup": "",

            "NLSLanguage": "SIMPLIFIED CHINESE",

            "Org_Id": "0"

        },

        "InputParameters": {"P_ID":"5","P_NAME":"json","P_AGE":"22","P_BIRTH_DATE":"2020-01-02"

        }

    }

}‘;

  l_resp_data         VARCHAR2(32767);

  l_http_auth_encoded VARCHAR2(100);

BEGIN

  l_request := utl_http.begin_request(l_url, ‘POST‘, utl_http.http_version_1_1);

  utl_http.set_header(l_request,

                      ‘Content-Type‘,

                      ‘application/json; charset=utf-8‘);

  l_http_auth_encoded := utl_raw.cast_to_varchar2(utl_encode.base64_encode(r => utl_raw.cast_to_raw(‘SYSADMIN:sysadmin‘)));

  utl_http.set_header(l_request,

                      ‘Authorization‘,

                      ‘Basic ‘ || l_http_auth_encoded);

  utl_http.set_header(l_request,

                      ‘Content-Length‘,

                      to_char(lengthb(l_req_data)));

  utl_http.write_text(l_request, l_req_data);

  l_response := utl_http.get_response(l_request);

  utl_http.read_text(l_response, l_resp_data);

  dbms_output.put_line(l_resp_data);

  utl_http.end_response(l_response);

END;

 



 

5.4  分析webservice调用报错的方法

cd $EBS_DOMAIN_HOME/servers/oafm_server1/logs

tail -f oafm_server1.out

然后调用服务,看日志的内容。

【Ebs】EBS12.2.7 REST ISG的配置

标签:安装   也会   version   asi   提示   varchar2   成功   操作方法   srv   

原文地址:https://www.cnblogs.com/sunlingC/p/12591462.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!