OAF_开发系列26_实现OAF中Java类型并发程式开发oracle.apps.fnd.cp.request(案例)-阿里云开发者社区

开发者社区> 东方瀚海鲍> 正文

OAF_开发系列26_实现OAF中Java类型并发程式开发oracle.apps.fnd.cp.request(案例)

简介: 20150730 Created By BaoXinjian 一、摘要 并发程序调用Java类型的Concurrent Program 主要实现类 1. runProgram(CpContext cpContext):并发程序导入接口 2.
+关注继续查看

20150730 Created By BaoXinjian

一、摘要


并发程序调用Java类型的Concurrent Program

主要实现类

1. runProgram(CpContext cpContext):并发程序导入接口

2. cpcontext.getParameterList():获取参数Parameters Hashtable

3. cpContext.getReqCompletion(): 获取并程序运行状态设定

4. cpContext.getLogFile():输出日志

5. cpContext.getOutFile():输出报表

 

二、实现分析


1. 开发Java ConcProg的实例应用

package bxj.oracle.apps.ap.java;

import java.util.Hashtable;

import oracle.apps.fnd.cp.request.CpContext;
import oracle.apps.fnd.cp.request.JavaConcurrentProgram;
import oracle.apps.fnd.cp.request.LogFile;
import oracle.apps.fnd.cp.request.OutFile;
import oracle.apps.fnd.cp.request.ReqCompletion;
import oracle.apps.fnd.cp.request.ReqDetails;
import oracle.apps.fnd.util.NameValueType;
import oracle.apps.fnd.util.ParameterList;

public class runEmpConcProg implements JavaConcurrentProgram{

    private LogFile mLogFile;
    private OutFile mOutFile;
    
    // 主程序处理Employee信息
    public void processEmpInform(CpContext cpContext) {
       
        String strUserId;
        String strLoginId;
        String strRespId;
        String strRespApplId;
        String strOrgId;
        String strBeginDate;
        String p_employee_id;
        String p_country;
        ReqCompletion reqc;
        ReqDetails reqd;
       
        Hashtable hashtable = new Hashtable();
        collectParameters(cpContext, hashtable);
        
        ReqDetails mReqDetails = cpContext.getReqDetails();
        int lp_requestID = mReqDetails.getRequestId();
        try
        { 
          collectParameters(cpContext, hashtable);
          if ((hashtable.get("USERID") != null & ("".equals(hashtable.get("USERID")) ^ true)))
            strUserId = (String)hashtable.get("USERID");
          else {
            strUserId = String.valueOf(cpContext.getUserId());
          }

          if ((hashtable.get("LOGINID") != null & ("".equals(hashtable.get("LOGINID")) ^ true)))
          {
            strLoginId = (String)hashtable.get("LOGINID");
          }
          else strLoginId = String.valueOf(cpContext.getLoginId());
        
          if ((hashtable.get("RESPID") != null & ("".equals(hashtable.get("RESPID")) ^ true)))
            strRespId = (String)hashtable.get("RESPID");
          else {
            strRespId = String.valueOf(cpContext.getRespId());
          }
          if ((hashtable.get("RESPAPPLID") != null & ("".equals(hashtable.get("RESPAPPLID")) ^ true)))
            strRespApplId = (String)hashtable.get("RESPAPPLID");
          else {
            strRespApplId = String.valueOf(cpContext.getRespApplId());
          }
          strOrgId = (String)hashtable.get("ORGID");
          strBeginDate = (String)hashtable.get("BEGINDATE");
          
          if ((hashtable.get("EMPLOYEE_ID") != null & ("".equals(hashtable.get("EMPLOYEE_ID")) ^ true)))
            p_employee_id = (String)hashtable.get("EMPLOYEE_ID");
          else {
            p_employee_id = null;
          }
          
          if ((hashtable.get("COUNTRY") != null & ("".equals(hashtable.get("COUNTRY")) ^ true)))
            p_country = (String)hashtable.get("COUNTRY");
          else {
            p_country = null;
          }

          System.out.println("Parameters:" + strUserId + "/" + strLoginId + "/" 
+ strRespId + "/" + strRespApplId + "/" + strOrgId + "/" + strBeginDate); System.out.println("p_employee_id=" + p_employee_id ); System.out.println("p_country=" + p_country ); reqc = cpContext.getReqCompletion(); reqd = cpContext.getReqDetails(); cpContext.getReqCompletion().setCompletion(ReqCompletion.NORMAL, ""); } catch(Exception ex) { cpContext.getLogFile().writeln("Concurent Program Exception: " + ex.getMessage(), 1); cpContext.getReqCompletion().setCompletion(ReqCompletion.NORMAL, ""); ex.printStackTrace(); } } //获取并发程序参数 private void collectParameters(CpContext cpcontext, Hashtable hashtable) { ParameterList parameterlist = cpcontext.getParameterList(); while (parameterlist.hasMoreElements()) { NameValueType namevaluetype = parameterlist.nextParameter(); String s = namevaluetype.getName(); String s1 = namevaluetype.getValue(); this.mLogFile.writeln(s + ": " + s1, 3); if ((s1 != null) && (s1.length() > 0)) hashtable.put(s, s1); } } // 并发程式调用该Java包的接入程序RunProgram public void runProgram(CpContext cpContext) { mLogFile = cpContext.getLogFile(); mOutFile = cpContext.getOutFile(); mLogFile.writeln("Start runProgram", 0); processEmpInform(cpContext); mLogFile.writeln("END runProgram", 0); mOutFile.writeln("gavin test outfile"); } public runEmpConcProg() { } public static void main(String[] args) { System.out.println("main(String[] args"); runEmpConcProg runEmpConcProg = new runEmpConcProg(); } }

 

2. 将编译后的class包上传到应用服务器

 

 

3.1 注册可执行程序

3.2 注册并发程序,并定义参数

 

三、运行测试


1. 调用并发程序,并输入参数

 

2. 查看并程序的Output和Log

 

3. 查看并程序的View Log

 

3. 查看并程序的View Output

 

Thanks and Regards

参考: 豆丁文库 - http://www.docin.com/p-373932599.html

ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
OAF_开发系列16_实现OAF与XML Publisher整合
http://wenku.baidu.com/link?url=y2SFKHP5qqn4bl_iNeqLGjXsTvhyFuhkMraIbWZdTXbzcv0vTefrZFFBDWie0cAAKuTwgwhrMAVvTjAo_f1mH1CdAPhhl_JCLeb3BuVTYaSERP技术讨论群: 2...
530 0
OAF_开发系列15_实现OAF组件重用和继承(案例)
20150717 Created By BaoXinjian 一、摘要 组件的重用和继承 如果你想包含共享对象到你的页面中,你可以简单继承它们。 比如,在OAFToolBox Sample Library/Tutorial中,我们创建了一个通用区域(名为OrganizationRN),因此同样的内容不需要编码就可以包含在多个页面中。
719 0
04.Eclipse下Ndk开发(以文件拆分合并为例模拟一下开发过程,参考文件加密的过程)
(创建于2017/12/6) 1.工具类PatchUtils package com.ren.ndk_file_patch; public class PatchUtils { static{ System.
826 0
OAF_开发系列14_实现OAF代码动态新增控件
dERP技术讨论群: 288307890 技术交流,技术讨论,欢迎加入 Technology Blog Created By Oracle ERP - 鲍新建
664 0
你用.NET开发APP时,在云平台打包APP要填个“包名”的含义
很多人在使用Smobiler Cloud打包时,会对Cloud上要填写的“包名”产生疑惑,不知道这是什么,或者为什么要这么写。
1256 0
OAF_开发系列07_实现OAF下拉菜单的上下联动Poplist Synchor(案例)
20150706 Created By BaoXinjian 一、摘要 下拉列表的级联显示是非常常用的一种界面显示效果,在FORMS中我常作,作法也很简单,可OAF中显然有点麻烦了 现假定有张表,里面有两个字段,一个是Province(省),一个是City(市) 现需要在页面上放置两个下拉列表字段,一个选择省,一个选择市,当然,选择市的下拉列表值需要根据省的下拉列表的选择进行筛选。
1438 0
Java 并发/多线程教程(三)-多线程的开销
        本系列译自jakob jenkov的Java并发多线程教程,个人觉得很有收获。由于个人水平有限,不对之处还望矫正!     应用程序由单线程到多线程,不仅仅给我带来了便利,同时也也带来了一些开销。
878 0
OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)
2014-06-26 Created By BaoXinjian 一、摘要 在OAF的开发中,可能有这样的需求,在选择保存按钮时,如果存在改动的数据,则提交事务,保存到数据库中; 如果不存在改动的数据,就提示用户当前没有数据可更改; 解决时需要判断页面中所使用的视图对象是否发生过改动,存在多种方法   1. 调用OADBTransaction.isDirty()方法 此方法用于判断当前事务中,视图对象是否发生过变更。
932 0
OAF_开发系列04_实现OAF查询4种不同的实现方式的比较和实现(案例)
2014-06-02 Created By BaoXinjian 一、摘要 OAF实现查询功能或需求,一般都会采用以下四种方式 (1). ResultBasedSearch 最简单的实现方式,将结果中某些栏位需要查询的栏位的属性search设定为true即可 (2).
1458 0
518
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载