標籤:blog http 使用 os strong io 檔案 for
http://blog.csdn.net/pan_tian/article/details/10159935
Oracle EBS如何與第三方系統相整合?比如這樣的需求,X系統知道物料編碼,需要從EBS系統裡讀取具體物料資訊,或者X系統想把自己的人員資訊同步到EBS,這類整合問題你就可能需要用到Oracle EBS Integrated SOA Gateway。
Integrated SOA Gateway是EBS裡的一個職責,分配給使用者後就能看到 ,進入職責(如)後,就能看到所有Oracle EBS可以(只是可以,真正放開需要發布和部署的動作)對外開發的介面。
(當然如果這些系統內建介面還不能滿足你的整合需求的話,那麼你就需要自訂客戶化介面了)
首先分享一些收集到的文檔,後續有需要可以再詳細閱讀:
Oracle® Integration Repository User‘s Guide
Oracle E-Business Suite Integrated SOA Gateway User‘s Guide
Oracle E-Business Suite Integrated SOA Gateway Implementation Guide R12.1
Oracle E-Business Suite Integrated SOA Gateway Developer‘s Guide
20 Minute Guide to Oracle Integration Repository
Enable Oracle E-Business Suite Integrated SOA Gateway
Oracle Integration Repository
Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User‘s Guide
Securing E-Business Suite Web Services with Integrated SOA Gateway
Using SOA Gateway in EBS 12
Enable Oracle E-Business Suite Integrated SOA Gateway
要使用Integrated SOA Gateway,首先要打一些補丁,具體方法可以參見Note 556540.1 或者 我的另一篇文章。
普通的使用者只能查看EBS的介面資訊,但並不能發布介面,以及部署,只有sysadmin賬戶有這個許可權。(註:預設情況下,絕大多數的介面是沒有發布及部署的,只有需要sysadmin發布後,第三方系統才能調用。)
如果不想使用sysadmin這個賬戶來管理介面,那麼就要給目標使用者指派三個角色,才能做sysadmin同樣的事情,這三個角色是:
* Irep Administrator(中文:Irep 管理員)
* System Integration Developer(中文:系統整合開發員)
* System Integration Analyst(中文:系統整合分析專家)
每一個角色都有著對介面庫不同的許可權,如
sysadmin預設是具有上述三個角色的,所以不需要特別設定。其他使用者就需要設定了,如何給使用者指派角色可以參見Note:861982.1
Interfaces
接下來會以系統預設提供的一個介面為例,示範一下,如何放開介面,允許外部程式調用的一個過程。
以sysadmin賬戶登入,然後路徑:Integrated SOA Gateway > Supply Chain Management > Inventory > Inventory Organization Setup,可以看到兩個介面,其中的一個叫Locator Maintenance API,這個介面允許使用者建立,修改,刪除Locator。
(如果介面的Internal Name為User_XXX_XXX的話,比如USER_PKG_LOT,USER_PKG_SERIAL,表示這個介面是需要使用者自訂介面,需要自己實現背景業務處理邏輯)
再點進去就能看到介面的詳細資料。你能看到這個介面是一個PL/SQL介面,後台對應的Package叫INV_LOC_WMS_PUB,這個介面包含四個Locator處理的方法。如果你有興趣,你可以開啟INV_LOC_WMS_PUB這個Package,就能看到具體的實現邏輯。
每一個方法能點進去,就是這個介面方法的描述以及介面參數。
產生WSDL
這裡需要把PL/SQL的Package以Webservice方式發布,就需要把這個介面產生WSDL。(如何你自己的客戶化PL/SQL註冊到Integrated SOA Gateway,見這篇文章)
WSDL: Web服務定義語言(Web Service Definition Language),用來定義服務介面。實際上,它能描述服務的兩個不同方面:服務的簽名(名字和參數),以及服務的綁定和部署細節(協議和位置)。
WSDL產生後,Web Service Status就變成了‘Generated‘。並且你可以查看WSDL
‘View WSDL‘就能看到WSDL資訊
Deploy Webservice
產生了WSDL後,外部系統還不能調用它,你需要把產生的WSDL部署到應用伺服器上,這一步還會安裝一些必要的Webservice檔案到應用伺服器上。這裡需要對Webservice的安全類型做一個勾選:Username Token、SAML Token。
關於這兩個安全類型,可以詳細閱讀下Securing E-Business Suite Web Services with Integrated SOA Gateway ,裡邊有詳細的解釋。
Create Grant
部署完後,Webservice狀態變為了Deployed。這之後還有一步- 授權,你是希望所有使用者都能提供者,還是只是特定使用者。
Test Web service
WSDL的地址是http://[host]:[port]/webservices/SOAProvider/plsql/inv_loc_wms_pub/?wsdl
那麼Oracle內建測試web service的地址是上邊WSDL的地址,但是去掉‘?wsdl‘ (主要不要去掉斜杠/,否則會報No WebService Provider is registered at this URL)
http://[host]:[port]/webservices/SOAProvider/plsql/inv_loc_wms_pub/
Invoke後,就把HTML表單上的資訊組成Soap報文,發送到應用伺服器,伺服器會把返回資訊也以Soap報文的形式返回給用戶端。
下為SOAP請求報文範例:
- <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
- <soap:Header xmlns:ns1="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/">
- <ns1:SOAHeader>
- <ns1:Responsibility>INVENTORY</ns1:Responsibility>
- <ns1:RespApplication>CUX</ns1:RespApplication>
- <ns1:SecurityGroup>STANDARD</ns1:SecurityGroup>
- <ns1:NLSLanguage>SIMPLIFIED CHINESE</ns1:NLSLanguage>
- <ns1:Org_Id>0</ns1:Org_Id>
- </ns1:SOAHeader>
- <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" soap:mustUnderstand="1">
- <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
- <wsse:Username>ESB_TEST</wsse:Username>
- <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">1234567890</wsse:Password>
- </wsse:UsernameToken>
- </wsse:Security>
- </soap:Header>
- <soap:Body xmlns:ns2="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokews/">
- <ns2:InputParameters>
- <ns2:P_IFACE_CODE>XXX</ns2:P_IFACE_CODE>
- <ns2:P_BATCH_NUMBER>1234567654323</ns2:P_BATCH_NUMBER>
- <ns2:P_REQUEST_DATA>32424</ns2:P_REQUEST_DATA>
- </ns2:InputParameters>
- </soap:Body>
- </soap:Envelope>
(請求報文頭中的Responsibility,RespApplication,SecurityGroup,NLSLanguage,Org_Id節點都是Oracle EBS系統要求的SOAP頭資訊,用於賬戶驗證)
SOAP響應報文範例:
- <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
- <env:Header/>
- <env:Body>
- <OutputParameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokews/">
- <X_RETURN_CODE xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokefmsws/">ERROR001</X_RETURN_CODE>
- <X_RETURN_MESG xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokefmsws/">輸入的請求報文格式不正確</X_RETURN_MESG>
- <X_RESPONSE_DATA xsi:nil="true" xmlns="http://xmlns.oracle.com/apps/cux/soaprovider/plsql/cux_0_ws_server_prg/invokews/"/>
- </OutputParameters>
- </env:Body>
- </env:Envelope>
除了這個標準的測試方法外,也可以使用SoapUI這樣的專業工具來測試Webservice,見這篇文章。
SOA Monitor
可以在SOA Monitor中監視用戶端調用EBS的Webservice的執行的效果。
路徑:Integrated SOA Gateway –> SOA Monitor
如果調用失敗,可以從詳細資料或者日誌裡查看具體內容。
------
怎樣為一個使用者賦予User Management職責
參考Note:734280.1 UMX Error: ‘There are no functions available for this responsibility‘ And/Or ‘There are no valid navigations for this responsibility‘ when Accessing ‘User Management‘ Responsibility.
To implement the solution, please execute the following steps:
1. Log into the applications as SYSADMIN User.
2. Choose User Management responsibility.
3. Navigate to Users web page.
4. Search and find the user you want to inherit the Security Administrator and Customer Administrator Roles.
5. Click on Update Icon.
6. Click on Assign Roles button.
7. Find and choose ‘Security Administrator‘ Role.
8. Apply.
9. Repeat the Steps (6-8) for ‘Customer Administrator‘ Role.
10. Log as the user who was assigned User Management Responsibility and facing the issue.
11. Retest the issue.
12. Migrate the solution as appropriate to other environments.