EBS中Java并发程序笔记(1)
????? 在Oracle EBS中的Java并發(fā)程序(Java Concurrent Program)是系統(tǒng)功能中的一個亮點,它的出現(xiàn)使得用戶可以在ERP系統(tǒng)中運行自己定義的Java程序。本文為學習筆記,所以不會介紹太多背景知識。
???? 使用Java并發(fā)程序的好處:
???? 當遇到如下2種情況的時候,用PLSQL程序包來完成將無比麻煩:
???? 1、將服務器上的文件通過FTP安全有效的導入到apps環(huán)境下
???? 2、使用JDBC連接一個非Oracle的數(shù)據(jù)庫,并獲取里面的數(shù)據(jù),通過驗證和轉換導入到apps下的客制化表。對于上述假定,需要DBA建立透明網(wǎng)關,對于如此簡單的需求將會做復雜的設置。
????? 綜上所述,可以在EBS中使用Java并發(fā)程序來解決這些事情。
????? 如下為一個簡單的例題并做簡單說明:
import oracle.apps.fnd.cp.request.*;
import oracle.apps.fnd.util.*;
//如果是測試Java并發(fā)程序,則新建一個class實現(xiàn)JavaConcurrentProgram 這個interface
public class MainTest implements JavaConcurrentProgram {
??? //實現(xiàn)interface中的runProgram方法
??? public void runProgram(CpContext ctx) {
??????? //取得并發(fā)程序傳入的參數(shù)列表
??????? ParameterList lPara = ctx.getParameterList();
??????? ReqCompletion lrc = ctx.getReqCompletion();
??????? try
??????? {
??????????? //把參數(shù)名字和參數(shù)的值分別在log和output中打印出來
??????????? while(lPara.hasMoreElements())
??????????? {
??????????????? NameValueType nvt = lPara.nextParameter();
??????????????? ctx.getOutFile().writeln(nvt.getName() + ":" + nvt.getValue());
??????????????? ctx.getLogFile().write(nvt.getName() + ":" + nvt.getValue(), LogFile.STATEMENT);
??????????? }
???????????? //完成打印的步驟后,設置程序的結束狀態(tài)為Normal,如果這個步驟不做,雖然程序沒有錯誤,但是執(zhí)行結果還是會報錯的
??????????? lrc.setCompletion(ReqCompletion.NORMAL, "Normal Ending");
??????? }
??????? catch(Exception e)
??????? {
??????????? //如果程序出現(xiàn)異常,設置程序的執(zhí)行結果,本來是應該設置ERROR的
??????????? ctx.getLogFile().write(e.toString(), LogFile.STATEMENT);
??????????? lrc.setCompletion(ReqCompletion.WARNING, "Exception Occurs!!!");
??????? }
??? }
}?
把程序掛到EBS中后,執(zhí)行結果如下圖所示:
log中顯示如下(因為log中程序沒有換行,所以寫到了一行里面):
output中因為換行的原因,格式與log中的有一點不同,如下所示(左半部分為輸入的參數(shù)的說明,右半部分則為程式打印的output):
轉載于:https://www.cnblogs.com/echochen/archive/2011/11/17/2253148.html
總結
以上是生活随笔為你收集整理的EBS中Java并发程序笔记(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 正则表达式测试工具
- 下一篇: cad放大_dwg文件怎么打开?CAD看