EBS 并发程序配置

本文详细介绍EBS系统中并发程序的配置流程,包括可执行、并发程序与参数的设置,并介绍如何将并发程序配置成功能,便于菜单直接调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文档描述了EBS系统中的并发程序(即请求)和可执行程序的配置步骤,简要的介绍了如何配置一个简单的并发程序的过程。

一般的并发程序配置主要包含以下几个方面:

可执行(非必须)、并发程序、参数(非必须)

其中的并发程序是必须有的,而可执行是可以根据并发程序的不同类型来分别对待的,参数是根据并发程序的实际情况进行配置即可,有就配置,没有就不需要配置了。

本文档通过配置一个PLSQL类型的并发程序来演示可执行、并发程序以及参数的配置步骤,来演示一个并发程序(请求)的配置过程。

同时,还会介绍如何将一个请求配置成功能,以便于菜单直接调用。 

EBS 系统的并发程序配置,主要是在“应用管理员”职责下完成的:


可执行的配置

通过“可执行”菜单,进入可执行配置界面,录入相关的可执行信息进行保存即可完成可执行的配置:


注意:

a. 可执行的简称必须是唯一标识的英文,如果有模板的话,简称需要和模板的编码一致;

b. 执行文件需要与对应的执行方法类型匹配,否则容易出错;

c. 应用产品需要与后边配置的请求组处于同一应用下即可,本文档以“CUX”应用为例进行演示  

并发程序配置

通过“程序”菜单进入到并发程序的配置界面,输入相关的并发程序信息以及调用的可执行配置信息,然后保存即可:

说明:

a. 并发程序的简称和应用程序配置一般和可执行一致;

b. 输出格式根据需要进行配置,常用的是文本、XML、HTML三种类型,其中的XML类型主要是和模板一起结合使用的,文本和HTML这两种类型的并发程序可以不需要模板文件;

c. 如果并发程序有参数信息,则可以通过点击“参数”按钮继续进行配置

 

参数配置

通过点击并发程序配置页面的“参数”按钮进行参数信息的配置:

本示例中只有一个参数,因此配置一个即可。

该演示并发程序的目的就是输出用户提交并发请求的时候填写的参数信息。

到此该并发程序的配置基本完成了,只需要在把该并发程序配置到对应的并发请求组里边即可使用了。    

2.      功能调用并发程序

一般的并发程序是通过提交请求来执行的,有的时候需要通过点击某个菜单直接调用某个并发程序,因此就需要将对应的并发程序配置成功能,以便于前台菜单进行调用。

并发功能配置

调用并发程序的功能配置和普通的功能配置基本类似,只是参数部分略有不同而已,因此功能的配置不在此处过多描述了,直接配置即可:



说明:

a.调用并发程序的功能特性类型为“FORM”,调用的表单为“运行报表”

b.表单页签的参数信息为

CONCURRENT_PROGRAM_NAME="并发程序简称" PROGRAM_APPL_SHORT_NAME="并发程序应用简称"SUBMIT_ONCE="Y"

以上即配置了一个 CUX_报表配置演示方法 的功能,直接调用之前配置的“CUX_报表配置演示方法”并发程序

3.      菜单配置及演示

将上边的功能配置到对应的应用的某个职责下即可进行演示。

菜单配置

此处的菜单配置与一般的菜单配置一致

 

功能演示

菜单配置完成之后便可以在前台看到新配置的菜单了:


直接点击菜单,即可调用之前的并发程序:

 

### 解决EBS并发程序不兼容的配置方法 在Oracle EBS环境中,解决并发程序不兼容的问题通常涉及通过自定义逻辑实现互斥机制。以下是具体的解决方案: #### 1. **使用FND_CONCURRENT_PROGRAMS表中的MUTEX_FLAG** Oracle EBS提供了一个内置字段`MUTEX_FLAG`,可以用于标记某些特定条件下的互斥行为。如果两个并发请求之间存在冲突,则可以在设计阶段将其中一个程序设置为互斥模式。这可以通过修改程序注册时的相关属性完成[^1]。 #### 2. **手动实现逻辑上的互斥锁** 当标准功能无法满足需求时,开发者可以选择在业务逻辑中加入互斥处理代码。例如,在执行全量计算之前,先检查是否存在针对某个子集正在进行的操作;如果有,则暂停当前请求直到前一任务结束。这种做法可通过数据库级锁定或者标志位来实现: ```sql -- 创建一个临时表存储状态信息 CREATE TABLE CONCURRENCY_LOCK ( LOCK_NAME VARCHAR2(50), STATUS CHAR(1), -- 'Y'表示已占用,'N'为空闲 EXPIRE_AT DATE -- 锁定过期时间 ); BEGIN UPDATE CONCURRENCY_LOCK SET STATUS='Y', EXPIRE_AT=SYSDATE+NUMTODSINTERVAL(30, 'MINUTE') WHERE LOCK_NAME='FULL_CALCULATION'; IF SQL%ROWCOUNT = 0 THEN INSERT INTO CONCURRENCY_LOCK (LOCK_NAME, STATUS, EXPIRE_AT) VALUES ('FULL_CALCULATION','Y', SYSDATE+NUMTODSINTERVAL(30, 'MINUTE')); END IF; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE_APPLICATION_ERROR(-20001, 'Error acquiring lock'); END; ``` 上述脚本展示了如何利用一张简单的表格管理不同类型的作业之间的竞争关系[^1]。 #### 3. **捕获并妥善处理运行期间可能出现的各种异常** 开发者还需要注意潜在的风险点,比如重复值插入失败等问题。对于这些情况,应该提前编写好相应的错误处理器件以便及时反馈给最终用户。例如,当尝试向具有唯一约束的数据列添加相同记录时触发ORA-00001错误,此时可借助`fnd_message.get_string()`函数读取具体描述并向外部传递更多信息[^2]: ```plsql DECLARE l_error_msg VARCHAR2(4000); BEGIN EXECUTE IMMEDIATE 'INSERT INTO UNIQUE_TABLE(COLUMN_A) VALUES(:val)' USING p_input_value; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN SELECT fnd_message.get_string('FND', 'ERROR_DUPLICATE_VALUE') INTO l_error_msg FROM DUAL; dbms_output.put_line(l_error_msg); -- 或其他方式通知前端界面显示提示语句 END; ``` #### 4. **合理运用日志工具辅助诊断问题根源** 日志记录在整个过程中扮演着重要角色,它不仅有助于定位故障位置还能作为后续优化依据之一。推荐采用官方提供的`fnd_file`接口而非传统文件流操作手段因为后者容易受到权限限制影响正常运转效果[^4]: ```plsql PROCEDURE log_info(p_text IN VARCHAR2) IS BEGIN FND_FILE.PUT_LINE(FND_FILE.LOG, TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') || ': ' || p_text); END; ``` --- ### 总结 综上所述,要有效应对Oracle EBS平台下因并发请求引起的资源争用现象可以从以下几个方面入手:一是充分利用现有框架内的选项如mutex flag设定;二是引入额外的安全防护措施像定制化事务型加解锁协议;三是强化整个生命周期里的监控力度从而快速发现纠正偏离预期的行为轨迹。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值