⑴ 以sysadmin的身份進入ebs中,怎麼沒有找到 「成本管理器」
1.創建Proct Family
Proct Family用於管理幾個功能相近的Proct(也可以立即為模塊),統一管理客戶化的Webservice介面
begin
-- Call the procere
ad_pa_insert_package.insert_ad_pm_proct_info(x_proct_abbreviation => 'os_xxx',
x_pseudo_proct_flag => 'N',
x_proct_family_flag => 'Y',
x_application_short_name => NULL,
x_proct_name => 'Oracle Xxx Suite',
x_proct_family_abbreviation => NULL,
x_proct_family_name => NULL,
x_aru_update_date => to_char(SYSDATE,'yyyy-mm-dd
hh24:mi:ss'),
x_currdate => to_char(SYSDATE,'yyyy-mm-dd
hh24:mi:ss'),
x_last_updated_by => -1,
x_created_by => -1);
COMMIT;
end;
2.注冊Proct,即注冊Xxx University(cux)應用到產品家族中
begin
ad_pa_insert_package.insert_ad_pm_proct_info(x_proct_abbreviation => 'cux',
x_pseudo_proct_flag => 'N',
x_proct_family_flag => 'N',
x_application_short_name => 'CUX',
x_proct_name => 'Xxx University',
x_proct_family_abbreviation => NULL,
x_proct_family_name => NULL,
x_aru_update_date => to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),
x_currdate => to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),
x_last_updated_by => -1,
x_created_by => -1);
COMMIT;
end;
3.關聯Xxx University應用到產品家族Oracle Xxx Suite下
begin
-- Call the procere
ad_pa_insert_package.insert_ad_pm_prod_family_map(x_proct_abbreviation => 'cux',
x_proct_family_abbreviation => 'os_xxx',
x_aru_update_date => TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),
x_currdate => TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),
x_last_updated_by => -1,
x_created_by => -1);
COMMIT;
end;
4.增加一個BUSINESS_ENTITY的lookup code(應用開發員職責->應用產品 -> 代碼->Oracle Application Object),這個Lookup會用在下
一步的API中的@rep:category BUSINESS_ENTITY
這里增加的code為ORACLESEEKER
5.編寫PL/SQL API Specification
CREATE OR REPLACE PACKAGE CUX_SUPPLIER_PKG AS
/* $Header: $ */
/*#
* This package using maintain the supplier information
* @rep:scope public
* @reproct CUX
* @rep:lifecycle active
* @rep:displayname Supplier Approve result
* @rep:compatibility S
* @rep:category BUSINESS_ENTITY ORACLESEEKER
*/
/*#
* insert approve result
* @param apply_id apply id
* @param node_id node id
* @param node_name node name
* @param approver_id approver id
* @param approver_name approver name
* @param approve_result approve result
* @param approve_opinion approve opinion
* @param approve_date approve date
* @return a varchar
* @rep:scope public
* @rep:lifecycle active
* @rep:displayname insert supplier approve result Webservice
*/
FUNCTION f_insert_approve_result(apply_id IN NUMBER,
node_id IN NUMBER,
node_name IN VARCHAR2,
approver_id IN NUMBER,
approver_name IN VARCHAR2,
approve_result IN NUMBER,
approve_opinion IN VARCHAR2,
approve_date IN DATE) RETURN VARCHAR2;
END CUX_SUPPLIER_PKG;
需要注意Package中的注釋並不是隨便填寫的,每一個注釋都會對應到Oracle Integration Repositoy介面的說明上去,對於要注冊成
Webservice的PL/SQL API必須按照要求來填寫。
注釋標簽具體的含義需要參考《Oracle E-Business Suite Integrated SOA Gateway Developer's Guide》
6.驗證PLSQL介面文件,並生成ildt文件
將編寫好的PLSQL聲明定義保存為.pls文件(PAUL_ITEM_PKG.pls),並將其上傳到伺服器應用$CUX_TOP/patch/115/sql目錄下,然後執行下
邊的命令生成ildt文件
/usr/bin/perl $FND_TOP/bin/irep_parser.pl -g -v -username=sysadmin
cuxatch/115/sql:CUX_SUPPLIER_PKG.pls:12.0=CUX_SUPPLIER_PKG.pls
7.將iLDT文件上傳到Oracle Integration Repositoy
FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/wfirep.lct CUX_SUPPLIER_PKG_pls.ildt
8.在對應的Proct Family和Proct下就能看到你的介面
9.在Web服務調用的時候,需要有一個應用資料庫用戶來連接EBS資料庫,因此需要創建一個具備一定許可權的用戶,而為了簡化設置的麻煩
,Oracle提供了一個內建的用戶 ASADMIN ,只要啟用它並重置密碼就可以了。
以sysadmin登錄Oracle EBS,切換到 User Management 職責,進入Users頁面,查找出asadmin用戶,通過修改密碼的方式激活asadmin,
並確保此用戶擁有Apps Schema Connect Role職責。
由於asadmin的密碼已經被重置,因此中間伺服器的文件配置$INST_TOP/ora/10.1.3/j2ee/oafm/config/system-jazn-data.xml 中對應的
密碼也需要修改,由於配置中的密碼已被加密,我們無法提供加密後的密碼,使用過OC4J的同事應該都知道,Oracle提供了一種重置這里
密碼的方便方法,就是採用明文密碼,在密碼前添加一個警號(!),然後重啟應用伺服器後自動會重新加密。打開system-jazn-data.xml
文件後, 找到
<user>
<name>ASADMIN</name>
<display-name>Default Apps SOA User</display-name>
<description>Used by SOAProvider for DB connection</description>
<credentials>{903}</credentials>
</user>
只要將credentials的值更改為自己的密碼,如我的密碼設置為11111,就設置為 <credentials>!11111</credentials>。修改完成後重啟
oamf,簡單的方法就是重啟Oracle EBS應用服務。
附重啟命令:
cd $INST_TOP/admin/scripts
01、關閉應用 sh adstpall.sh apps/apps
02、重啟應用 sh adstrtal.sh apps/apps
03、關閉DB
04、重啟DB
05、啟動並發管理器 adcmctl.sh start apps/apps
10.為集成介面創建授權
發布到Oracle Integration Repositoy中的Web服務能夠被訪問必須有相應的許可權才可以,這也是受到AOL安全模型限制的一個體現。
登錄EBS後切換到Integrated SOA Gateway職責,在 Integration Repositoy 中找出已經上傳好的客戶化集成介面,選擇介面過程和方法
後點擊Create Grant 按鈕
選擇授權類型:All Users、Group of Users 和 Specific USer,下面設置為最後一種方式
11.完成以上工作後,點擊Generate WSDL按鈕來生成集成介面對應的Web服務WSDL信息
成功完成後可以看到如下Web服務的狀態為:Generated
點擊 Deploy 按鈕來發布Web服務到中間伺服器中,發布後Web服務的狀態為: Deployed
-----------------------------------------------
12.如果在測試中報java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: For input
string: ""
執行以下操作:
cd $ORA_CONFIG_HOME/10.1.3/j2ee/forms/config/oc4j.properties
注釋代理服務
#http.proxyHost=
#http.proxyPort=
重啟服務
13.如果填寫信息提交後會報出 wsse:FailedAuthentication 這樣的錯誤信息,這是由於提交的Soap消息中並沒有包括Oracle
Integration Repository要求的AOL安全認證,即沒有Oracle EBS系統要求的用戶、職責、安全組和語言信息,也就是沒有進行Oracle
EBS的環境初始化
wsdl文件路徑/ebsr12/test/inst/apps/TEST_scmdev/soa/PLSQL/4343
此問題可以通過修改wsdl文件來解決
01刪除CUX_SUPPLIER_PKG_soap.wsdl中
<element name="SOAHeader">
<complexType>
<sequence>
<element name="Responsibility" minOccurs="0" type="string"/>
<element name="RespApplication" minOccurs="0" type="string"/>
<element name="SecurityGroup" minOccurs="0" type="string"/>
<element name="NLSLanguage" minOccurs="0" type="string"/>
<element name="Org_Id" minOccurs="0" type="string"/>
</sequence>
</complexType>
</element>
02刪除CUX_SUPPLIER_PKG_soap_http.wsdl中
<element name="SOAHeader">
<complexType>
<sequence>
<element name="Responsibility" minOccurs="0" type="string"/>
<element name="RespApplication" minOccurs="0" type="string"/>
<element name="SecurityGroup" minOccurs="0" type="string"/>
<element name="NLSLanguage" minOccurs="0" type="string"/>
<element name="Org_Id" minOccurs="0" type="string"/>
</sequence>
</complexType>
</element>
修改後點擊invoke,如出現「處理服務時出錯」,進行如下處理
/ebsr12/test/inst/apps/TEST_scmdev/soa/PLSQL/4343/F_INSERT_APPROVE_RESULT.wsdl
查看這個文件的內容
<jcaperation
PackageName=」ORACLESEEKER_DEPT_PKG」
ProcereName=」ADD_DEPARTMENT」
IRepInternalName=」PLSQL:ORACLESEEKER_DEPT_PKG:ADD_DEPARTMENT」
IRepOverloadSeq=」1〃
InteractionSpec=」oracle.tip.adapter.apps.」 >
</jcaperation>