目前分類:EBS - OAF (3)

瀏覽方式: 標題列表 簡短摘要

環境:

EBS : R11.5.10

JDeveloper: p8751878_GENERIC.zip 解壓至 D:\OAF_R11i

實作:

Step 01: 準備好程式檔案:HelloWorldPG.xml & HelloWorldMainCO.java

OAF_R11_Hello_01  

HelloWorldPG.xml

<?xml version = '1.0' encoding = 'UTF-8'?>
<!-- dbdrv: exec java oracle/jrad/tools/xml/importer XMLImporter.class java &phase=dat+24 checkfile:~PROD:~PATH:~FILE &fullpath:~PROD:~PATH:~FILE -username &un_apps -password &pw_apps -dbconnection &jdbc_db_addr  -userId "1" -rootPackage /oracle/apps/~PROD  -rootdir &fullpath:~PROD:mds:directory  -->
<page xmlns:jrad="http://xmlns.oracle.com/jrad" xmlns:oa="http://xmlns.oracle.com/oa" xmlns:ui="http://xmlns.oracle.com/uix/ui" version="9.0.3.8.13_1579" xml:lang="en-US" xmlns:user="http://xmlns.oracle.com/jrad/user" xmlns="http://xmlns.oracle.com/jrad" file-version="$Header$">
   <content>
      <oa:pageLayout id="PageLayoutRN" windowTitle="Polin-Demo: Hello World Window Title" title="Polin-Demo:Hello World Page Header" amDefName="oracle.apps.fnd.framework.server.OAApplicationModule">
         <ui:corporateBranding>
            <oa:image id="corporateBrandingImage" source="/OA_MEDIA/FNDSSCORP.gif"/>
         </ui:corporateBranding>
         <ui:contents>
            <oa:messageComponentLayout id="MainRN" controllerClass="polin.oracle.apps.ak.demo.webui.HelloWorldMainCO">
               <ui:contents>
                  <oa:messageTextInput id="HelloName" prompt="Name" columns="20" maximumLength="50"/>
                  <oa:messageLayout id="ButtonLayout">
                     <ui:contents>
                        <oa:submitButton id="Go" use="/oracle/apps/fnd/attributesets/Buttons/Go"/>
                     </ui:contents>
                  </oa:messageLayout>
               </ui:contents>
            </oa:messageComponentLayout>
         </ui:contents>
      </oa:pageLayout>
   </content>
</page>

HelloWorldMainCO.java

/*===========================================================================+
 |   Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA    |
 |                         All rights reserved.                              |
 +===========================================================================+
 |  HISTORY                                                                  |
 +===========================================================================*/
package polin.oracle.apps.ak.demo.webui;

import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import oracle.apps.fnd.framework.OAException;

/**
 * Controller for ...
 */
public class HelloWorldMainCO extends OAControllerImpl
{
  public static final String RCS_ID="$Header$";
  public static final boolean RCS_ID_RECORDED =
        VersionInfo.recordClassVersion(RCS_ID, "%packagename%");

  /**
   * Layout and page setup logic for a region.
   * @param pageContext the current OA page context
   * @param webBean the web bean corresponding to the region
   */
  public void processRequest(OAPageContext pageContext, OAWebBean webBean)
  {
    super.processRequest(pageContext, webBean);
  }

  /**
   * Procedure to handle form submissions for form elements in
   * a region.
   * @param pageContext the current OA page context
   * @param webBean the web bean corresponding to the region
   */
  public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
  {
    super.processFormRequest(pageContext, webBean);
    if (pageContext.getParameter("Go") != null)
      {       
     String userContent = pageContext.getParameter("HelloName");  
     String message = "Hello, " + userContent + "!";
          throw new OAException(message, OAException.INFORMATION);
                  }
  }

}

 

Step 02:  Import OA Page to MDS

R11i 的 import.bat 是在目錄 D:\OAF_R11i\jdevbin\jdev\bin 下:

D:\OAF_R11i\jdevbin\jdev\bin\import.bat D:\OAF_R11i\jdevhome\jdev\myprojects\polin\oracle\apps\ak\demo\webui\HelloWorldPG.xml -rootdir D:\OAF_R11i\jdevhome\jdev\myprojects -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=erpdb.polin.com)(PORT=1522))(CONNECT_DATA=(SID=TEST)))"

 

OAF_R11_Hello_02  

檢查 MDS 是否有此筆資料

SET serveroutput ON;
BEGIN
  jdr_utils.printdocument('/polin/oracle/apps/ak/demo/webui/HelloWorldPG');
EXCEPTION
WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;

 若要刪除此筆 MDS,則可以用 jdr_utils.DeleteDocument 的函數

begin
  jdr_utils.DeleteDocument( '/polin/oracle/apps/ak/demo/webui/HelloWorldPG' ) ;
end ;
/

 

Step 03: FTP Upload class file to $JAVA_TOP

利用 FTP 工具將開發好所有 Package 的 class files,從開發本機目錄:D:\OAF_R11i\jdevhome\jdev\myclasses\polin\oracle\apps\ak\demo\webui,上載到 EBS 主機上的 $JAVA_TOP 相對應的目錄下,因為撰寫 Java 程式的 Package 為 polin.oracle.apps.ak.demo.webui ,所以 EBS 主機相對應的目錄為 $JAVA_TOP/polin/oracle/apps/ak/demo/webui

OAF_R11_Hello_03  
  

Step 04: Configure the Funtions

先規劃 Funtions 的相關屬性再作設定,HTML Call 則是 Step03 中,class file 上載到 EBS 主機上的 $JAVA_TOP 相對應的目錄下,此例為/polin/oracle/apps/ak/demo/webui/HelloWorldPG,所以HTML Call:OA.jsp?page=/polin/oracle/apps/ak/demo/webui/HelloWorldPG

Function User Function Name Description Function Type HTML Call
POLIN_OAF POLIN_OAF Polin OAF Demo SSWA jsp function

OA.jsp?page=/polin/oracle/apps/ak/demo/webui/HelloWorldPG

 

Step 05:Configure Menu

先規劃 MENU 的相關屬性再作設定

Menu Header

Menu User Menu Name Menu Type Description
POLIN_MENU POLIN_MENU Standard Polin OAF Menu

Menu Detail

Seq Prompt Submenu Function Description
10 Polin_OAF_HelloWorld   POLIN_OAF Polin_OAF_HelloWorld

 

Step 06:Configure Responsibility

OAF_R11_Hello_04  

 

這樣就可以測試正常了

 

 

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

整合環境:

JDeveloper OAF in Windows 8:
Patch 17888411 for Oracle EBS R12.2.3
PC IP: 192.168.3.116

CVS Server in Oracle Linux:
R6.4 Kernel: 2.6.39-400.17.eluek.x86_64
Server IP: 192.168.3.50
HostName: oradb12clinux

一、安裝CVS

一般 Oracle Linux 已經內含 CVS 的套件[ cvs-1.11.xx(x86_64) & cvs-inetd-1.11.x(noarch) ],在安裝時記得勾選即可,若忘記勾選,等系統安裝完再從光碟安裝也可以。

csv_install  
  

1.先查看是否安裝 cvs,一般安裝在 /usr/bin/cvs

# which cvs
/usr/bin/cvs

# rpm -qa | grep cvs
cvs-1.11.23-15.el6.x86_64
cvs-inetd-1.11.23-16.el6.noarch

二、建立 Users and Groups

1. 建立cvs user group,便於管理cvs User
#groupadd cvs

2. 建立cvsroot User,屬於 cvs 群組,根目錄為/opt/cvs,不允許 login
# useradd -M -g cvs -s /sbin/nologin cvs <- 建立 cvs 的帳戶, 不建立 User Home: /home/cvs

3. 若需要建立 anonymous 帳號
# useradd -M -s /sbin/nologin anonymous

4. 將系統內其他會使用到 cvs 的 User 加入到 cvs 的 Group 中
# vi /etc/group
cvs:x:501:polinwei,anonymous,cvs

三、設定環境變數
# vi /etc/profile.d/cvs.sh 
export CVSROOT=/opt/cvs_root
export CVS_RSH=ssh (為了在 Windows 平台上的 JDeveloper 連入, 使用 SSH 連結較安全)

立即生效此環境變數
1) 重新登入
2) # export CVSROOT=/opt/cvs_root

四、建立目錄,改變/opt/cvs_root 的目錄屬性
# mkdir /opt/cvs_root
# chmod 775 /opt/cvs_root

五、初始化 Repository
# cvs init ( 或 # cvs -d /opt/cvs_root init ) <- 此指令會呼叫 $CVSROOT 環境變數,並在目錄 /opt/cvs_root 下建立目錄 CVSROOT
# chown -R root:cvs /opt/cvs_root
 
若是沒有指定 $CVSROOT 環境變數則使用下列參數
# cvs -d :localhost:/opt/cvs_root init

因為用 local 的模式在用 cvs,所以不用登入(login)
-d 是指定 CVSROOT 路徑,如果沒設環境變數就要使用此參數
init 代表要初始化 /opt/cvs 這個目錄

六、設定 xinetd
1) 在 /etc/xinetd.d/ 內已有 cvs 的設定檔
# vi /etc/xinetd.d/cvs
service cvspserver
{
        disable = no
        port                    = 2401
        socket_type       = stream
        protocol              = tcp
        wait                    = no
        user                    = root
        passenv              = PATH
        server                 = /usr/bin/cvs
        env                     = HOME=/opt/cvs_root
        server_args        = -f --allow-root=/opt/cvs_root pserver
        bind                    = 192.168.3.50
}
紅色的部份要注意,env 參數必須跟你所放置 CVS 目錄的位置一樣,server_args為登入時會用到的目錄名,bind 的 IP 改成您 Linux Server 的 IP。

2) 重新啟動 xinetd 並啟動 CVS Server
# service xinetd restart
# chkconfig cvs on

3) 檢查cvspserver服務是否已經啟動
# netstat -l |grep cvspserver

其結果如下:
tcp   0  0 oradb12clinux:cvspserver  *:*    LISTEN 

七、登入
若要使用其它使用者的話,指令: cvs -d :pserver:user_name@ip_address:/opt/cvs login

# cvs -d :pserver:polinwei@localhost:/opt/cvs_root login
Logging in to :pserver:cvs@localhost:2401/opt/cvs
CVS password:
cvs [login aborted]: connect to [localhost]:2401 failed: Connection refused

# cvs -d:pserver:polinwei@oradb12clinux:/opt/cvs_root login
Logging in to :pserver:polinwei@oradb12clinux:2401/opt/cvs_root
CVS password:
[root@oradb12clinux CVSROOT]#
若正確則會直接回到 # 提示符號,表示 CVS Server 已正常運作

八、Windows Client 程式端 JDeveloper 的設定

1) 設定CVS連結

01_cvs_conn02_cvs_ssh

注意: Repository Path 是設定 Linux 主機端上的目錄,為 /opt/cvs_root

03_cvs_root04_cvs_test  

 

2) 將 oracle 的 workplace 當作 CVS 的 module 滙入 (import) 及 匯出 (Checkout)

cvs_import_01.png

cvs_import_02.png

cvs_import_03.png

CVS 的匯入其實是將整個目錄下的資料 import 進來

cvs_import_04.png

選擇那些檔案不要匯入

cvs_import_05.png

滙入完後是否執行 checkout

cvs_import_06.png

cvs_import_07.png

輸入Linux主機上此帳號的密碼

cvs_import_08.png  

因在 import 後有執行 Checkout,發現在 JDevloper 上的 程式架構都亂七八糟了。沒關係,先將這些都移除

cvs_checkout_remove.png  
  

3) 將 CVS 的 Module: toolbox 滙出至 %JDEV_USER_HOME% 目錄下

 cvs_checkout_01.png

cvs_checkout_02.png  

將這些再從 JDeveloper 中再移除一次, 將檔仍會留在 %JDEV_USER_HOME%/toolbox 目錄下

cvs_checkout_remove.png

從目錄 %JDEV_USER_HOME%/toolbox 再將 toolbox.jws 加入

cvs_checkout_03.png

就可以看到已有 CVS 程式序號控制了.

cvs_checkout_04.png  

可以發現為何 test_fwktutorial.jsp 沒有序號控制呢? 那是因為這些共用程式是放在 %JDEV_USER_HOME%/myhtml 下的.


A. 額外進階設定:pserver (Password Server) 帳號/密碼設定

1) 為避免其它人經由 cvs 來 try password,建議可以 cvs 帳號和系統帳號分開。
# vi /opt/cvs/CVSROOT/passwd <- 該檔原本並不存在
格式為:帳號:密碼:系統帳號
ex: jdev_user:xxxxxx:usercvs

a. jdev_user 為登入 cvs 的帳號,/etc/passwd 內不需要有這個帳號
b. xxxxxx 為登入的密碼,經由 md5 編碼過,由此密碼可以建立 /opt/cvs/passwdgen.pl 來產生,如果需要密碼為:123456,則敲入# /opt/cvs/CVSROOT/passwdgen.pl "123456" ,回傳即可得到加密密碼,用其替換 passwd 檔中的 xxxxxx
c. cvs 登入後對應到 /etc/passwd 內這個帳號的權限

/opt/cvs/passwdgen.pl 檔案建立:

# su - cvs
> vi /opt/cvs/passwdgen.pl
#!/usr/bin/perl
srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);
print "${crypttext}\n";

改變權限及owner
#chmod 755 passwdgen.pl
#chown cvs:cvs passwdgen.pl

2) 編輯 /opt/cvs/CVSROOT/config
將 #SystemAuth=no 前的注解拿掉,該行的意思是登入的帳號不在 cvs 的 passwd 裡時,是否要對應到系統帳號。

設定 CVS 執行時所需的 lock 的目錄:LockDir=/opt/cvs_root/lock,並建立及改變此目錄權限
# pwd
/opt/cvs_root
# mkdir lock
# chmod -R 775 lock
# chown -R root:cvs lock
# service xinetd restart

3) 增加 anonymous 登入
新增 anonymous:md5密碼:nobody 至 /opt/cvs/CVSROOT/passwd 中
表示 anonymous 登入的權限是 nobody
若新增此行則 /cvs 需修改權限
#chmod o+rx /cvs

4) 設定 anonymous 權限為唯讀
# vi /opt/cvs/CVSROOT/readers
anonymous <- 新增 anonymous,該檔列表內所有帳號都只有唯讀權限,格式為一行一個帳號。

B. 指令模式
 cvs -d "CVSROOT" command
 若有用環境變數指定 CVSROOT,則可省略 -d "CVSROOT" 的參數
 CVSROOT 通常為 ":pserver:user_name@ip_address:cvs_path" 的格式,如:# export CVSROOT=:pserver:jdev_user@localhost:/opt/cvs

 cvs -d "CVSROOT" login:登入
 cvs -d "CVSROOT" import profile:將 profile 這個專案新增到 server 上
 cvs -d "CVSROOT" checkout profile:將 server 上 profile 專案整個抓下來
 cvs -d "CVSROOT" logout:登出
 cvs status <project>:列出該 project 內每個檔案的記錄
 cvs history <project>:列出該 project 內每個檔案的修改歷史記錄
 cvs annotate <pooject>:列出該 project 內每個檔案最後一次修改的記錄 

參考:

http://hsinichi.pixnet.net/blog/post/4524770-cvs-server-for-linux-%E5%AE%89%E8%A3%9D%E6%AD%A5%E9%A9%9F

http://blog.yam.com/gavint/article/2590383

http://forums.gentoo.org/viewtopic-t-55659-start-0.html

http://www.chedong.com/tech/cvs_card.html

http://www.crazysquirrel.com/computing/debian/servers/cvs.jspx

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

環境:

EBS : R12.2.2
Package:oracle.apps.ak.hello

 

實例:

step 01: Import OA Page to MDS

使用 jdevbin/oaext/bin/ 將 Page 的 XML 檔導入 EBS 資料庫的 MDS ( Metadata Services ) 裡

cd C:\p17888411_R12_GENERIC\jdevbin\oaext\bin

C:\>import.bat %JDEV_USER_HOME%/myprojects/oracle/apps/ak/hello/webui/HelloWorldPG.xml -rootdir %JDEV_USER_HOME%/myprojects -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gued02-vip.globeunion.com)(PORT=1533))(CONNECT_DATA=(SID=VIS)))"

Importing file "C:\Oracle\EBS_R12_JDEV\jdevhome\jdev\myprojects\oracle\apps\ak\hello\webui\HelloWorldPG.xml" as "/oracle/apps/ak/hello/webui/HelloWorldPG".

Import completed.

或者在 EBS AP 主機上執行,但 XML 檔案 HelloWorldPG.xml 需先上載到 EBS AP 主機上

$ adjava oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/oracle/apps/ak/hello/webui/HelloWorldPG.xml -username APPS -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gued02-vip.globeunion.com)(PORT=1533))(CONNECT_DATA=(SID=VIS)))" -rootdir $JAVA_TOP/ ;

或是


$ java oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/oracle/apps/ak/hello/webui/HelloWorldPG.xml -username APPS -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=gued02-vip.globeunion.com)(PORT=1533))(CONNECT_DATA=(SID=VIS)))" -rootdir $JAVA_TOP/ ;


Importing file "/u01/oracle/VIS/fs1/EBSapps/comn/java/classes/oracle/apps/ak/hello/webui/HelloWorldPG.xml" as "/oracle/apps/ak/hello/webui/HelloWorldPG".
Import completed.

檢查 MDS 是否有此筆資料

SET serveroutput ON;
BEGIN
  jdr_utils.printdocument('/oracle/apps/ak/hello/webui/HelloWorldPG');
EXCEPTION
WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;

 若要刪除此筆 MDS,則可以用 jdr_utils.DeleteDocument 的函數

begin
  jdr_utils.DeleteDocument( '/oracle/apps/ak/hello/webui/HelloWorldPG' ) ;
end ;
/

 

 

Step 02: FTP Upload class file to $JAVA_TOP

利用 FTP 工具將開發好所有 Package 的 class files,從開發本機目錄:/jdevhome/jdev/myclasses/oracle/apps/ak/hello,上載到 EBS 主機上的 $JAVA_TOP 相對應的目錄下,因為撰寫 Java 程式的 Package 為 oracle.apps.ak.hello ,所以 EBS 主機相對應的目錄為 $JAVA_TOP/oracle/apps/ak/hello,若 Package 為 wei.oracle.apps.ak.hello,則程式應上傳到 $JAVA_TOP/wei/oracle/apps/ak/hello

classUpload  

 

 Step 03: Configure the Funtions

先規劃 Funtions 的相關屬性再作設定,HTML Call 則是 Step02 中,class file 上載到 EBS 主機上的 $JAVA_TOP 相對應的目錄下,此例為/oracle/apps/ak/hello/webui/HelloWorldPG,所以HTML Call:OA.jsp?page=/oracle/apps/ak/hello/webui/HelloWorldPG

Function User Function Name Description Function Type HTML Call
POLIN_AK_HELLO POLIN_AK_HELLO Hello World SSWA jsp function

OA.jsp?page=/oracle/apps/ak/hello/webui/HelloWorldPG

 

Hello_Function_Description

 

Hello_Function_Properties

Hello_Function_WebHTML  

HTML Call:OA.jsp?page=/oracle/apps/ak/hello/webui/HelloWorldPG

 

Step 04:Configure Menu

先規劃 MENU 的相關屬性再作設定

Menu Header

Menu User Menu Name Menu Type Description
POLIN_TEST_MENU POLIN_TEST_MENU Standard Polin Testing Menu

Menu Detail

Seq Prompt Submenu Function Description
10 Hello World   POLIN_AK_HELLO POLIN_AK_HELLO

Polin_Test_Menu  

 

 Step 05:Configure Responsibility

先查出 Responsibility Name:OA Framework ToolBox Tutorial 掛的 Menu Name:OA Framework ToolBox Tutorial

OA_Responsibility_Name  

再將剛設定好的 Menu:POLIN_TEST_MENU 掛到 Menu Name:OA Framework ToolBox Tutorial 這個的下面

FWK_TBX_TUTORIAL_MENU  

 

Step 06: Restart Apache Server

login as app user

$ cd $INST_TOP/admin/scripts
$ sh adapcctl.sh stop
$ sh adapcctl.sh start [forcepatchfs]

 

 

文章標籤

MIS 發表在 痞客邦 留言(1) 人氣()