OAF 初学者教程
本教程概述并讨论了 Oracle 应用程序框架的基础知识。Oracle Application Framework (OA Framework) 是用于基于 HTML 的业务应用程序的 Oracle 应用程序开发和部署平台。
简单的 Web 应用程序架构(Servlet/JSP):
最初,Web 应用程序非常简单(开发于 1990 年代)
应用层包含一个 Web 服务器,它维护着 Servlet、JSP 等组件
零件:
组件是一段代码,它实现了定义良好的接口。
单个组件不是应用程序。
一个应用程序由许多没有组成。一起工作的组件。
该组件处理完整的任务,例如业务逻辑、数据库事务逻辑和表示逻辑。
缺点:
1. 只有一个应用程序开发人员必须开发完整的组件
2. 应用程序开发人员必须专注于业务逻辑、数据库事务逻辑以及表示逻辑。
3. 应用程序开发人员必须具备多种技能
4. 开发时间更长
5. 与业务逻辑、数据库事务逻辑和表示逻辑有很多混淆,因为它们是作为单个组件开发的。
为了克服上述缺点,引入了 MVC1 架构
MVC1 架构:
M ⇒ 模型 V ⇒ 视图 C ⇒ 控制器
.png)
模型: 模型表示数据对象。模型是被操纵并呈现给用户的东西
视图: 用作模型的屏幕表示。它是呈现数据对象当前状态的对象。
控制器: 定义用户界面对用户输入的反应方式。Controller 组件是操作模型或数据对象的对象。
在 MVC1 架构中
→ Servlet / JSP 作为视图和控制器。
→ Java Bean 充当模型组件。
缺点:
- 只有一名应用程序开发人员必须使用业务逻辑和表示逻辑来开发组件。
- 应用程序开发人员必须专注于业务逻辑和表示逻辑。
- 应用程序开发人员必须具备多种技能
- Java开发者、Web开发者等资源无法有效利用
- 开发时间更长
- 与业务逻辑、表示逻辑有很多混淆,因为它们是作为单个组件开发的。
为了克服上述缺点,引入了 MVC2 架构
MVC2 架构:
Struts 框架遵循 MVC2 架构
.png)
→ Servlet 充当控制器
→ JSP 充当视图
→ Java Bean 充当模型
控制器:
它是一个名为 Action Servlet 的 java Servlet。它接收来自 Web 客户端的请求并将数据存储到称为 Form Bean(模型)的 Java Bean 中,并从 Form Bean 接收响应(成功/失败)。根据来自 Form Bean 的响应,Action Servlet 决定将哪个页面(视图)呈现给客户端。
模型:
它是称为Form Bean 的Java Bean。它将通过 Controller 接收客户端数据并执行数据验证或数据库事务,例如 DML 和 DQL 操作。在执行数据库事务后,它为视图提供数据。
看法:
它是一个 JSP。它从 Form Bean ( Model ) 填充数据并呈现给用户。
Oracle 应用框架工作架构:
Oracle Application FrameWork 的体系结构与 Struts FrameWork 相似,但存在一些差异。
.png)
AM ⇒ 应用模块 VO ⇒ 视图对象 EO ⇒ 实体对象
控制器:
→ 它是一个 Java 类。
→ OAControllerImpl 是所有控制器类的父级。
→ 控制器通过应用模块接口执行数据库事务。
→ 它将通过应用程序模块获取数据并推送到视图中。
看法:
→ 它是带有 GUI 组件的 JSP。
→ 它将数据从 VO 填充到其 GUI 组件中。
模型:
→ 通过 BC4J 组件与数据库交互。
→ 它是应用模块、视图对象和实体对象的组合。
应用模块:
- 它是给控制器类的接口。
- OAF 应用程序是强制性的
- 它可以由多个控制器共享。
- 它通过 View Object 执行 DQL 操作
- 它通过实体对象执行 DML 操作。
- OAApplicationModuleImpl (Generic AM) 是应用程序模块类的父级。
- 对于所有应用程序都是强制性的
SQL 查询(SELECT 语句将数据投射到表格中)查看对象:
- 它应该存储在 .server 包中
- View Object 可以手动开发或 BC4j 向导
- OAViewObjectImpl:是所有视图对象的父级
- 所有 API 都以 OA 开头
实体对象:
- 它是一个数据库对象,例如表、视图等
- DML 操作将在实体对象上执行
- 它应该存储在 schema.server 包中
- OAEntityImpl:是所有实体对象的父对象
OA框架的洋葱架构
- OA Framework 可以像洋葱一样被提取成一系列同心层。
- 每一层都与它的顶层和底层通信。
.png)
MVC 架构的主要特点:
- 集成开发环境
- 持久的个性化和扩展
- 一致且引人注目的用户界面
- 用户界面交互性
- 面向对象的重用
- Oracle 门户互操作性
- 内置安全性
- 部署环境
D2k、OAF 和 ADF 的比较
| D2k | OAF | ADF |
| 桌面应用程序 | 它是带有 MVC 架构的框架 | 它是一个具有 MVC 架构的框架 |
| 它是一个客户端和服务器架构 | 它是一个 3 层架构 | 它是一个 N 层架构 |
| 来自用于开发应用程序的 Builder | JDeveloper 用于开发应用程序 | JDeveloper 用于开发应用程序 |
| PL/SQL | JAVA | JAVA |
| 拖放功能 | 没有拖放功能 | 拖放功能 |
| 客户端和服务器应用程序 | Web应用程序 | 企业应用 |
JDeveloper 安装设置环境
1. 获取 JDeveloper 软件(ZIP 文件:p4141787_11i_GENERIC.zip)
2.复制到所需的驱动器(文件夹)/(C:)
例如:C:JDEV(在 C 盘创建 JDEV(名称可以是任何人)文件夹
3.解压ZIP文件名 p4141787_11i_GENERIC.zip )
右键单击⇒ WinZip ⇒ ExtractToHere
解压后生成如下
.png)
4.取C:JDEVjdevbinjdevbin jdevW.exe的快捷方式到桌面
5. 将 dbc 文件从 Oracle Apps Server 复制到 JDeveloper
源 Oracle 应用程序路径:D:oraclevisapplfnd11.5.0secureVIS_appsvis.dbc
JDevelopre 路径:C:JDEVjdevhomejdevdbc_filessecure
6.设置O/S的环境变量
我的电脑 → 高级 → 环境变量 → 新建 →
变量名称:JDEV_USER_HOME
变量值:C:JDEVjdevhomejdev
好的→好的→好的
测试 Jdeveloper 的功能
1.转到连接à右键à新建数据库连接à下一步à
连接名称:test(根据需要)
连接类型:Oracle(JDBC)
下一个 :
2. 用户名:apps
密码:应用程序
下一个
3.驱动器:瘦
主机名:localhost(如果数据库在本地系统上,否则数据库服务器的 URL)
JDBC 端口:1521
SID:可见光
有关详细信息,请参阅文件夹中的 vis.dbc:
D:oraclevisapplfnd11.5.0secureVIS_apps
APPS_JDBC_URL=jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=YES)(FAILOVER=YES)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=APPS.ora.com)(PORT=1521)))( CONNECT_DATA=(SID=VIS)))
下一个
4. 测试连接
结果:成功
下一个
5. 完成
在 OA 框架应用程序中使用的包。
OA 框架工作应用程序中使用了六个包。
1) <3rd 方标识符 > .oracle.apps...[] .webui
2) <3rd 方标识符 > .oracle.apps...[] lov.webui
3) <第 3 方标识符 > .oracle.apps...[] .server
4) <第 3 方标识符 > .oracle.apps...[] lov.server
5) <第 3 方标识符 > .oracle.apps...[] poplist.server
6) <第 3 方标识符 > .oracle.apps...[] Schema.server
开发应用程序的步骤
例如:
你好页面
1.创建工作区
2.创建项目
3. 创建包
4.创建应用模块
5.创建页面
6.设置页面的属性
AM 定义
窗口标题
标题
1) 工作空间的创建
工作区 → 右键单击 → 新建 OA 工作区
目录名称: C:JDEVjdevbinjdevmyprojects
文件名: xxclinet.jws ( jws → Java Work Space )
选择添加新的 OA 项目
2)创建项目
目录名称: C:JDEVjdevbinjdevmyprojects
项目名称: First.jpr
包名: first.oracle.apps.po.hello.WebUI
语法:用于包名称
<第 3 方标识符 > .oracle.apps...[].webui
在上述
<第 3 方标识符 > → mycompany
→ 宝
→ 申请
[] → 它是可选的(根据需要)
下一个
使用设计时的责任
提供连接名称:test
Here New → 创建一个新的连接
编辑 → 更改连接名称
下一个
DBC 文件名: C:JDEVjdevhomejdevdbc_filessecurevis.dbc
用户名:操作(前端用户)
密码:欢迎
申请简称: PO
责任键: PURCHASING_OPERATIONS
下一步 - 完成
3) 创建一个包
右键单击 .jpr 文件 → 新建业务组件包 → 下一步
包名: first.oracle.apps.po.hello.server
(选择映射到数据库模式对象的实体对象)
下一个 →
连接名称:测试
SQL风格: oracle
类型映射: oracle
下一个 →
用户名: apps
密码:应用程序
下一步 → 完成
注意:它会生成测试连接
4) 创建应用模块
右键单击包→新建应用程序模块→下一步→
名称: TestAM
包: first.oracle.apps.po.hello.server
下一步 → 下一步 → 下一步 → 下一步 → 完成
注意:它会生成以下文件
1) 测试AM.xml
2)TestAMImpl.java
5) 创建页面
右键单击 .jpr 文件 → 新建 → Web 层 → OA 组件 → 页面 → 确定
名称: HelloPG
包: first.oracle.apps.po.hello.WebUI
注意:它会生成名为:HelloPG.xml 的文件
6)设置页面的属性
选择页面 → 结构 →
区域1
特性 :
编号: mainRN
AM定义:点击列表框并选择AM(TestAM)
窗口标题:你好页面
标题: 你好这是我的第一页
(以上两项中至少一项 1)窗口标题 2)标题为必填项)
7) 构建应用程序
右键单击.jpr → 重新构建
8)运行页面转到XML→右键单击→运行页面
将项目添加到区域处理项目:
在创建项目之前获取标题区域(根据需要)
区域命名约定:
名称以目的开头
名称以 RN 结尾
右键单击 Region1(RootRN)/(HeaderRN) → 项目
文本域:
特性:
标识:用户标识
项目样式: messageTextInput
提示:用户名
数据类型: VARCHAR2(根据需要)
评论:为登录用户 ID 创建
必填:是(是→必填字段,否→可选)
只读:真(要使其成为只读文件,我们不能编辑该文件)
False → 我们可以编辑归档。
(用于Id自动生成,与数据库序列一起使用)
禁用: true(避免光标焦点进入文本字段)
最大长度:可以输入到文本字段的最大值。
初始值:默认值
附加文本:在项目上沉思时要显示的文本。
Rendered : false → 向用户隐藏提交的文本。
CSS 类:设置背景颜色。
长度:文本字段的宽度,用户可以看到
高度: 1(不会产生多行)
> 1 自动生成多行
垂直对齐:上/中/下(提示对齐)
提示类型:在文本字段下方显示一些提示消息
Access Key :快捷键 ( Alt + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 )
秘密:真(密码*****)
要创建下一个项目,请单击任何项目 → 新建 → 项目(或)右键单击区域
提交按钮:
ID Card:去
项目样式: submitButton(它将具有默认操作)
提示:去
复位按钮:
编号:清除
项目样式: resetButton(清除表单)
文字:清除(提示)
访问键(快捷键)
普通按钮:
ID Card:去
商品款式:纽扣
提示:根据需要
动作类型: fireAction(类似于触发器获取动作)
它将在控制器类内部处理。
图片:
将所需的图像复制到
C:JDEVjdevhomejdevmyhtmlOA_MEDIA
商品样式:图片
图片 URI : (imagefile.gif)
附加文本:鼠标悬停在消息上。
关联:
标识: lnk
商品款式:链接
文本: Oracle 应用主页
目标 URI:HTTP: //APPS.ORA.COM :8000
要连接到 Gmail 站点,请使用:HTTP: //WWW.GMAIL.COM
复选框:
ID Card:工作
商品样式: messageCheckBox
检查值:经理
未选中值:
初步检查:真
复选框和单选按钮之间的区别在于,复选框只允许单选,而单选按钮允许多选。
单选按钮:
首先创建 RadiGroup
接下来创建单选按钮
无线电集团
ID Card:性别
项目风格: messageRadioGroup
数据类型: VARCHAR2
单选按钮
ID Card:男
物品样式: messageRadioButton
组名:性别
初始值:男性
检查值:男性
提示:男性
Spacer:提供两个组件之间的空间
标识:空间
高度/宽度(根据需要)
原始文本:→ 显示一些文本
ID:
项目样式: rawText
文本: Oracle 应用程序框架(根据需要)
分隔符:在组件之间放置分隔符
文本编辑器:
ID Card:地址
项目样式: richTextEditor
垂直对齐:顶部
Spacer: → 提供两个组件之间的空间
日期:
编号:雇用日期
项目样式: messageTextInput
数据类型:日期
提示:加入日期
提示类型:日期格式
TipMessage(提示消息):首先在应用程序前端的帮助下将消息存储到名为:FND_NEW_MESSAGES 的数据库表中。
导航:
应用程序开发人员 → 应用程序 → 消息
原文标题:Oracle Application Framework(OAF) Tutorial
原文链接:https://mindmajix.com/oracle-oaf-tutorial





