当前位置: 首页 > news >正文

Oracle Apps R12——报表入门:如何定义一个Concurrent Program(请求)

1 简介

        Concurrent Program指的是一种可以在后台异步运行的程序,通常用于执行批处理任务、报表生成、数据同步等。

        另外,定义一个Concurrent Program,实际上就是在系统中定义一个“请求”(Request),然后通过权限配置,允许特定用户或用户组去调用(提交)这个请求。

换句话说:

  • Concurrent Program = 一个可执行的请求
  • 你先定义这个请求(包括程序、参数、执行方式等)
  • 然后把这个请求分配给用户或请求组,赋予他们调用权限
  • 用户通过提交请求来执行对应的程序
  • 这样的请求是可以多个请求并发异步执行的,且可以被系统实时监控。

        另外,这里还有一些简单但可能有用的概念: 

名称含义备注
Oracle Applications-SITOracle Applications系统的集成测试阶段不是产品名称,是测试阶段描述
Oracle E-Business SuiteOracle的企业管理软件套件(ERP系统)产品套件名称,包含多个版本和模块
Oracle Apps R12Oracle E-Business Suite的第12版EBS的一个具体版本,功能更完善

2 Oracle Apps R12下如何定义一个简单的Hello World的Concurrent Program

2.1 第一步:PLSQL Developer数据库后台定义一个可执行的“Procedure”

       “Procedure”在数据库和编程领域中,通常指的是存储过程,它是一段预先编写并存储在数据库中的可执行代码块。

        在PLSQL Developer运行下列代码:(登录的数据库需要和Oracle Apps R12一样) 

create table ptian_table
(message_text VARCHAR2(100)
,creation_date DATE
) ;CREATE OR REPLACE PROCEDURE PTIAN_HELLO (errbuf OUT VARCHAR2, retcode OUT VARCHAR2) IS
BEGININSERT INTO ptian_table VALUES ('Hello World' ,SYSDATE);
END PTIAN_HELLO;
--两个参数用于concurrent program和pl/sql Program的交互
参数名类型作用说明
errbufOUT VARCHAR2用于返回错误信息或提示信息,程序执行中如果有错误,可以通过这个参数传递错误描述给Concurrent Manager。
retcodeOUT VARCHAR2用于返回执行状态码,通常用数字表示执行结果(如0表示成功,非0表示失败),Concurrent Manager根据这个值判断程序执行是否成功。

        Oracle Concurrent Manager调用PL/SQL程序时,要求程序必须有这两个OUT参数,作为标准接口。

        这样,Concurrent Manager可以:

  • 通过retcode判断程序执行是否成功。
  • 通过errbuf获取错误信息,方便日志记录和用户提示。

2.2 第二步:定义Executable(可执行文件/程序)

        Executable是Oracle EBS中对“可执行程序”的抽象定义。

        它告诉系统,某个Concurrent Program背后实际运行的是哪个程序或过程(比如一个PL/SQL存储过程、一个操作系统脚本、一个Java程序等)。

        通过Executable,系统知道如何调用具体的代码来执行请求。Execution File Name这里需要为我们刚刚写入数据库的Procedure的名字:

  • 这里的“Procedure”指的是数据库中的存储过程(PL/SQL Procedure)。
  • 你把Execution File Name设置成存储过程的名字,意味着这个Executable对应的就是调用这个存储过程来完成任务。
  • 当用户提交对应的Concurrent Program请求时,系统会执行这个存储过程。

具体操作:Application Developer职责下: Concurrent > Executable,定义一个新的Executable,Execution File Name为Procedure的名字 

 2.3 第三步:定义Concurrent Program(并发程序)

         通过定义Concurrent Program,系统知道用户提交的请求是什么,如何执行,执行时需要哪些参数。它是用户提交请求的“入口”,用户通过它来调用后台程序。

        Concurrent Program是Oracle EBS中一个“业务请求”的抽象表示。它定义了用户可以提交执行的具体任务,包括:

  • 关联的Executable(即实际执行的程序或存储过程)
  • 传入的参数(参数名称、类型、默认值等)
  • 运行方式(同步或异步)
  • 输出格式(如报表格式PDF、Excel等)
  • 其他属性(如请求优先级、日志级别等)

 具体操作:切换到Concurrent > Program下,定义Program

 2.4 第四步:绑定Concurrent Program到Request Group

        Request Group是Oracle EBS中管理请求(Concurrent Program)的权限集合。

        通过把Concurrent Program添加到Request Group,系统将该程序纳入该组的权限范围内。只有拥有该Request Group权限的用户或职责(Responsibility)才能看到并提交这些请求。

(1)实现权限控制和访问管理

  • 控制哪些用户能执行哪些Concurrent Program,防止未经授权的访问。
  • Request Group与Responsibility关联,用户通过职责获得对应的请求权限。
  • 这样可以根据业务角色、部门、岗位等灵活分配权限。

(2)简化权限管理

  • 把多个相关的Concurrent Program组织到一个Request Group中,方便统一管理。
  • 例如,财务相关的报表和程序放在“财务报表”Request Group,采购相关的放在“采购请求”组。
  • 通过分组管理,权限配置更清晰、易维护。

(3)实现职责与请求的映射

  • 用户登录系统时,系统根据其职责加载对应的Request Group,显示该组内的请求。
  • 用户只能看到和提交自己职责范围内的请求,保证业务隔离和安全。

(4)支持灵活的业务流程设计

  • 不同职责可以绑定不同的Request Group,实现多角色、多业务线的请求访问控制。
  • 方便企业根据组织架构和业务需求调整权限。

具体操作步骤:然后切换到System Admin职责,Security > Responsibility > Request,把刚定义好的Program绑定到一个Request Group里。

具体绑定到的Request Group信息如下:

  • Group Name(请求组):INV reports
  • Application(应用):Bills of Material
  • Code(代码):CST_INV_REPORTS
  • Description(描述):INV reports

        把Concurrent Program绑定到了名为 “INV reports” 的Request Group里,这个Request Group属于 Bills of Material 应用模块,代码是 CST_INV_REPORTS。这个Concurrent Program现在成为了 INV reports 这个请求组的一部分。

        只有拥有包含该Request Group的职责(Responsibility)的用户,才能看到并提交这个Concurrent Program。现在,我们假设有一个职责叫“Inventory Manager”,它绑定了Request Group “INV reports”,那么:

  • 拥有“Inventory Manager”职责的用户登录后,系统会加载“INV reports”请求组中的所有Concurrent Program。
  • 这些用户就可以看到并提交你刚绑定的Concurrent Program。

 2.5 第五步:运行Program

        接下来就可以执行了,切换到刚刚绑定了请求组"INV reports"的职责下,运行Program:

 运行完毕,EBS顶部的侧边栏找到”查看“,选择”请求(R)“,打开后界面如下:

         我们的请求名字是”PTIAN Hello World“,选择”特定请求“,之后可以填入到”名称“的字段,然后直接查找即可。或者使用模糊查询直接”%P“。

用SQL:SELECT * FROM ptian_table;来查看测试表的数据 

相关文章:

  • 【Tauri2】046—— tauri_plugin_clipboard_manager(一)
  • RVTools 官网遭入侵,被用于分发携带 Bumblebee 恶意软件的篡改安装包
  • SUI批量转账几种方法介绍
  • 谈谈对《加密算法》的理解
  • PyTorch中单卡训练、DataParallel(DP)和DistributedDataParallel(DDP)
  • 如何自己建设网站?
  • 第6章 C控制语句:循环
  • Java转Go日记(四十三):Gorm事务
  • 反射在spring boot自动配置的应用
  • HTML应用指南:利用POST请求获取全国申通快递服务网点位置信息
  • 基于Java的校园失物招领系统【附源码】
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月20日第83弹
  • Python----循环神经网络(WordEmbedding词嵌入)
  • Java中的ImageIo支持webp解析
  • java中的Filter使用详解
  • Leetcode 01 java
  • 预先学习:构建智能系统的 “未雨绸缪” 之道
  • 杰发科技AC7840——如何把结构体数据写到Dflash中
  • 【NLP 76、Faiss 向量数据库】
  • 珈和科技贺李德仁院士荣膺国际数字地球学会会士:以时空智能赋能可持续发展目标 绘就数字地球未来蓝图
  • 第九届非遗节首设主宾国主宾城机制,非遗品牌IP授权获关注
  • 嘴巴总是发干,喝水也不管用?小心是这几种疾病的警报
  • 印度空军为“阵风”战机换装国产导弹,以增强作战能力推动国防自主
  • 河北6人在河道倒污泥被控污染环境案撤诉后,已拿到国赔决定书
  • 特朗普与普京就俄乌问题通话
  • 花旗回应减员传闻:持续评估人力资源战略,将为受影响的个人提供支持