發佈PL/SQL API成Webservice,並註冊到IR(Oracle Integration Repositoy)中

轉自:http://blog.csdn.net/pan_tian/article/details/11257993

1.創建Product Family

Product Family用於管理幾個功能相近的Product(也可以立即爲模塊),統一管理客戶化的Webservice接口

BEGIN
  -- Call the procedure
  AD_PA_INSERT_PACKAGE.INSERT_AD_PM_PRODUCT_INFO(X_PRODUCT_ABBREVIATION        => 'pc_pf',
                                                 X_PSEUDO_PRODUCT_FLAG         => 'N',
                                                 X_PRODUCT_FAMILY_FLAG         => 'Y',
                                                 X_APPLICATION_SHORT_NAME      => NULL,
                                                 X_PRODUCT_NAME                => 'Paul Custom Application Product Family',
                                                 X_PRODUCT_FAMILY_ABBREVIATION => NULL,
                                                 X_PRODUCT_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.註冊Product

BEGIN
  -- Call the procedure
  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                => 'My Custom Application',
                                                 X_PRODUCT_FAMILY_ABBREVIATION => NULL,
                                                 X_PRODUCT_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.關聯Product:cux到Product Family:pc_pf

BEGIN
  -- Call the procedure
  AD_PA_INSERT_PACKAGE.INSERT_AD_PM_PROD_FAMILY_MAP(X_PRODUCT_ABBREVIATION        => 'cux',
                                                    X_PRODUCT_FAMILY_ABBREVIATION => 'pc_pf',
                                                    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 


5.編寫PL/SQL API Specification,這裏以一個物料服務爲例

CREATE OR REPLACE PACKAGE PAUL_ITEM_PKG AS
  /* $Header: $ */
  /*#
  * This package using create the item information
  * @rep:scope public
  * @rep:product CUX
  * @rep:lifecycle active
  * @rep:displayname Paul Item Maintainance Service
  * @rep:compatibility S
  * @rep:category BUSINESS_ENTITY PAUL_BUSINESS_ENTITY
  */
  /*#
  * Create an Item
  * @param p_itemno Item Number
  * @param p_itemdesc Item Descripiton
  * @param p_itemqty Item Quantity
  * @rep:scope public
  * @rep:lifecycle active
  * @rep:displayname Create Item Webservice
  */
  PROCEDURE CREATE_ITEM(P_ITEMNO   VARCHAR2,
                        P_ITEMDESC VARCHAR2,
                        P_ITEMQTY  VARCHAR2);
END PAUL_ITEM_PKG;


需要注意Package中的註釋並不是隨便填寫的,每一個註釋都會對應到Oracle Integration Repositoy接口的說明上去,對於要註冊成Webservice的PL/SQL API必須按照要求來填寫。註釋標籤具體的含義需要參考《Oracle E-Business Suite Integrated SOA Gateway Developer's Guide

Required Class-level Annotations

Optional Class-level Annotations

Required Method-level Annotations

Optional Method-level Annotations

6.驗證PLSQL接口文件,並生成ildt文件

將編寫好的PLSQL聲明定義保存爲.pls文件(PAUL_ITEM_PKG.pls),並將其上傳到服務器應用$CUX_TOP/patch/115/sql目錄下,然後執行下邊的命令生成ildt文件

[plain] view plain copy
 print?
  1. perl $FND_TOP/bin/irep_parser.pl -g -v -username=sysadmin cux:patch/115/sql:PAUL_ITEM_PKG.pls:12.0=PAUL_ITEM_PKG.pls  
  2.   
  3. # Interface Repository Annotation Processor, 12.0.0  
  4.   
  5. #  
  6. # Generating annotation output.  
  7. # Processing file 'PAUL_ITEM_PKG.pls'.  
  8. # Using YAPP-based parser.  
  9. #  Found a package-level annotation for 'PAUL_ITEM_PKG'.  
  10. #  Found a detail-level annotation...  
  11. # Found a procedure named 'CREATE_ITEM'.  
  12. # Done all files.  

7.將iLDT文件上傳到Oracle Integration Repositoy

[plain] view plain copy
 print?
  1. FNDLOAD apps/password 0 Y UPLOAD $FND_TOP/patch/115/import/wfirep.lct PAUL_ITEM_PKG_pls.ildt  
  2. Log filename : L5750778.log  
  3.   
  4.   
  5. Report filename : O5750778.out  

8.在對應的Product Family和Product下就能看到你的接口


接下來如果和其他系統集成的話,可以參見另外一篇文章


Reference:http://docs.oracle.com/cd/E18727_01/doc.121/e12065/T511473T545912.htm#5466320

https://blogs.oracle.com/integration_repository_customization/entry/integration_repository_customization



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章