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 - 鲍新建
相关文章
|
13天前
|
Java API Maven
如何使用Java开发抖音API接口?
在数字化时代,社交媒体平台如抖音成为生活的重要部分。本文详细介绍了如何用Java开发抖音API接口,从创建开发者账号、申请API权限、准备开发环境,到编写代码、测试运行及注意事项,全面覆盖了整个开发流程。
56 10
|
19天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
38 4
|
20天前
|
缓存 监控 Java
如何运用JAVA开发API接口?
本文详细介绍了如何使用Java开发API接口,涵盖创建、实现、测试和部署接口的关键步骤。同时,讨论了接口的安全性设计和设计原则,帮助开发者构建高效、安全、易于维护的API接口。
50 4
|
25天前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
60 3
|
26天前
|
SQL Java 程序员
倍增 Java 程序员的开发效率
应用计算困境:Java 作为主流开发语言,在数据处理方面存在复杂度高的问题,而 SQL 虽然简洁但受限于数据库架构。SPL(Structured Process Language)是一种纯 Java 开发的数据处理语言,结合了 Java 的架构灵活性和 SQL 的简洁性。SPL 提供简洁的语法、完善的计算能力、高效的 IDE、大数据支持、与 Java 应用无缝集成以及开放性和热切换特性,能够大幅提升开发效率和性能。
|
20天前
|
安全 Java 测试技术
Java开发必读,谈谈对Spring IOC与AOP的理解
Spring的IOC和AOP机制通过依赖注入和横切关注点的分离,大大提高了代码的模块化和可维护性。IOC使得对象的创建和管理变得灵活可控,降低了对象之间的耦合度;AOP则通过动态代理机制实现了横切关注点的集中管理,减少了重复代码。理解和掌握这两个核心概念,是高效使用Spring框架的关键。希望本文对你深入理解Spring的IOC和AOP有所帮助。
31 0
|
24天前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
WK
|
26天前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
45 0

推荐镜像

更多