Oracle Application Express 3.0 — 构建功能应用程序

目的

本教程将向您介绍如何使用 Oracle Application Express 快速创建应用程序。

所需时间

大约 2 个小时

主题

本教程包括下列主题:

 概述
 从电子表格创建表
 添加主表
 修改表
 使用脚本添加表
 添加约束
 创建应用程序
 添加主从表单
 编辑应用程序对象
 创建值列表 (LOV)
 添加项目验证
 添加 Flash 图表
 添加日历
 更新主页导航列表
 应用新主题
 添加徽标
 创建用户
 限制访问
 总结

查看屏幕截图

 将鼠标置于此图标上 可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以网速较慢时,响应时间可能会比较长。)

注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。可以通过单击各个屏幕截图来将其隐藏。

概述

Oracle Application Express 是什么?

Oracle Application Express 是一个适用于 Oracle 数据库的快速 Web 应用程序开发工具。只需要一个 Web 浏览器和有限的编程经验,您就可以快速、安全地开发和部署专业的应用程序。

Oracle Application Express 由哪些组件组成?

Oracle Application Express 包含以下四个主要组件:

Application Builder

用于构建以数据库为中心的交互式 Web 应用程序。

SQL Workshop 用于访问数据库对象、运行 SQL 语句和 SQL 脚本。
Utilities 用于加载和卸载数据、生成 DDL、运行对象报表以及管理回收站。
Administration 用于管理服务和用户,以及监视活动。

术语

使用 Oracle Application Express 时,了解下面这些概念很重要:

工作区

工作区是一个虚拟专用数据库,允许多个用户在同一个 Oracle Application Express 安装中工作,但保持其对象、数据和应用程序私有。

应用程序

应用程序是一个通过分支连接的页面的集合。其属性包括身份验证方法、默认的 UI 模板以及授权规则。

页面 页面是一个应用程序的基本构建块。若要在 Application Builder 中构建应用程序,您需要创建包含用户界面元素(如选项卡、列表、按钮、项目以及区域)的页面。
区域 内容显示在多个区域中,这些区域是页面的逻辑子部分。每个页面可以包含任意数量的若干不同类型的区域。这些类型包括:HTML 文本、SQL 查询、PL/SQL 生成的 HTML 和图表。每个区域均使用区域模板生成,并由页面模板中定义的显示点来确定在页面上的位置。
项目 项目可以是文本域、文本区域、口令、选择列表、复选框等等。项目属性决定着页面中项目的显示和行为。例如,这些属性可以影响标签显示的位置、项目的大小以及是将项目显示在前一个项目的侧面还是下面。项目的值自动存储在应用程序的会话状态中,可在用户会话内随时进行引用。

体系结构

Oracle Application Express 完全位于 Oracle 数据库内。其中只包含表中的数据和大量 PL/SQL 代码。基本上,Oracle Application Express 包含大约 165 个表和 200 个 PL/SQL 对象(内含 300,000 多行代码)。

无论是运行 Oracle Application Express 开发环境还是运行使用 Oracle Application Express 构建的应用程序,过程是一样的。 浏览器发送一个转换为相应 Oracle Application Express PL/SQL 调用的 URL 请求。 在数据库处理完该 PL/SQL 后,结果将作为 HTML 在浏览器中显示。 这个循环过程在每次请求或提交页面时都会进行。 url 转换背后的方法取决于您的 Oracle 版本。 在 10.2.0.3 之前的 Oracle 中运行 Oracle Application Express,需要 Apache 和 PL/SQL 模块。 在 Oracle 10.2.0.3 以及更高的版本中(包括 Oracle 快捷版 (XE)),Oracle Application Express 可以使用嵌入式 PL/SQL 网关或 Apache。

应用程序会话状态在 Oracle Application Express 内的数据库表中进行管理,而不使用专用的数据库连接。Application Express 环境中消耗的 CPU 资源最少。如果用户请求了一个页面,在接收到返回页面后进行查看时,又没有发出另一个请求,则数据库可能会停止并在用户查看该结果页面期间重启,而用户不会感觉到任何中断。

Oracle Application Express 3.0 有哪些新特性?

该版本包括几个主要的新特性和其他一些节省时间的小改进。

PDF 打印

您可以将报表区域导出到 PDF。单击编辑报表区域时,您会看到一个新的选项卡 Print Attributes。您还可以在 Shared Components 下面定义 Report Queries(报表查询)和 Report Layouts(报表布局)。对于打印,请注意,您可以让用户利用内置链接或通过您自己自定义的按钮访问该功能。

Access 移植

最近,Oracle Application Express 中引入了一个新的应用程序移植工作间。该组件是 Application Express 3.0 的标准组件,详细信息请单击 此处。要访问该新组件,可从 Home 页面选择 Application Migrations。

Flash 图表 现在,用户在创建新页面或区域类型的图表时,多了一种新类型 — Flash 图表。受支持的图表类型有 18 种。在创建期间,您可以预览选定的类型,并为设置结果图表的大多数属性。除了创建新的 Flash 图表外,您还可以将现有的 SVG 图表转换为 Flash 图表。您可在 Application Reports > Page Components 下找到移植实用程序,或者,如果编辑的区域包含 SVG 图表,可在 Tasks 下找到该实用程序。
拖放项目布局 在 Page Definition 页面上,Reorder Items 图标右侧新增了一个名为 Drag and Drop 的图标。您可以重新排列当前区域内项目的顺序、更改选择属性(项目名称、标签以及当前项目类型范围内的类型)、删除项目以及快速创建新项目。您可以将项目置于现有项目的左侧或右侧,并可插入新行以在现有表单中部快速添加项目。要删除项目,只需将其拖入底部的回收桶即可。
改善的 Web 服务 Application Express Web 服务引擎支持定义更为宽松的类型和文档样式 Web 服务。这两方面的增强使得支持 JDeveloper 创建的 Web 服务和 Oracle BPEL 同步 Web 服务成为可能。您可以与 SSL (HTTPS) 上的 Web 服务以及需要基本身份验证的 Web 服务进行交互。此外,如果 Application Express 引擎不能针对某个特定服务正确分析 WSDL 文档,您可以手动创建一个 Web 服务引用。您需要在其他有关该 Web 服务的信息中提供 SOAP 请求信封和 URL 端点。
新项目类型 新增了几个项目类型。它们是:
  - Shuttle
  - HTML Editor Minimal — 位于 Textarea 下
  - HTML Editor Standard — 位于 Textarea 下
  - Popup Color Picker — 位于 Popup List of Values 下
  - Date Picker(使用格式掩码)
日历增强功能 创建日历页面或区域时,您将自动获取每月、每周和每天的日历。用户可以使用按钮在他们所需的模式之间切换。
支持对象增强功能 Application Express 2.2 中引入的支持对象特性进行了增强,允许定义升级脚本。因此,您可以将升级发布到在 OTN 上分发的打包应用程序,并且可以使用初始安装时使用的向导来安装升级。还可以使用该特性分发升级。
页面和区域缓存 页面和区域缓存允许您将部分应用程序写入缓存以提高性能。缓存属性在页面和区域属性页面上设置。这对于没有任何条件的静态页面和区域(如列表)以及包含 HTML 文本的区域非常有用。
Item Finder 增强功能 在 Application Builder 中, 新增了两个有关 Item Finder 的选项卡。一个用于 CSS — 这使您无需考虑主题,即可标识可用于任何 Application Express 应用程序的层叠样式表。第二个用于图像 — 它将显示应用程序中使用的一般图标的图库。此外,SQL Workshop 的 Object Browser 和 SQL Commands 组件中还添加了 Table Finder。下一次在 Object Browser 中创建触发器或在 SQL Commands 中编写一些自定义的 SQL 时,如果只是想不起来所需的列名时,可单击手电筒图标。

应用程序和模式比较

新的 Application Comparison 实用程序位于 Application Reports > Cross Application 下,可用于识别两个选定应用程序之间的区别。Schema Comparison 位于 Utilities 下面。它用于标识两个不同模式之间的差异。
友好的 URL 语法简化了收藏 该特性允许公共应用程序的链接的会话 ID 为零。这使得所有的公共页面链接保持一致,从而增强了对搜索引擎和收藏的友好性。实际的会话 ID 存储在 Cookie 中(这不是一个安全问题,因为该特性只适用于公共页面)。
新口令和帐户控制 在实例和工作区级别下,您可以指定口令过期规则、强制使用强口令(最小字符数,包含数字和字母等)、要求首次使用时更改口令(对于系统生成的初始口令非常有用)以及锁定帐户。
改善的工作区管理 除了上述口令控制外,工作区管理还在其他几个方面进行了改进。您可以根据需要定义工作区的大小(面向用户请求显示的选择与默认的选定项),请求告知您工作区名称的电子邮件(适用于在不记得名称但始终知道您的电子邮件地址的情况),以及查看尝试登录的日志。

返回主题列表

从电子表格创建表

要从电子表格加载本教程的数据,执行下列步骤:

1.

输入以下 URL 登录 Oracle Application Express(将 <主机名> 更改为本地主机或指定的主机名)。

http://<主机名>:7777/pls/apex

 

2.

要登录 Oracle Application Express,请输入以下详细信息,然后单击 Login

Workspace: OBE
Username: OBE
Password: oracle

 

3.

要创建表,单击 Utilities > Data Load/Unload > Load 旁的向下箭头。

 

4.

单击 Load Spreadsheet Data

 

5.

确保将导入目标 (Import To) 设为 New table。为 Import From 选择 Upload file (comma separated or tab delimited) 选项。单击 Next >

 

6.

单击 Browse...

 

7.

找到 tasks.txt 文件并单击 Open。由于文本文件中的数据是用制表符分隔的,因此在 Separator 域中输入 \t。单击 Next >

 

8.

Table Information 页面显示表中的列及其格式,以及要在创建表后插入到表中的数据。对于 Table Name,输入 OBE_TASKS, 然后单击 Next >

 

9.

使用 Primary Key 页面,可以向表中添加系统生成的主键并使用一个新序列填充该列。查看默认值,然后单击 Load Data

 

10.

创建表并加载数据后,您将处于 Files 页面上。您可以看到,刚刚上载的包含 16 行的文件已经成功上载。要查看新表,单击 SQL Workshop 选项卡。

 

11.

选择 Object Browser > Browse > Tables 旁的向下箭头。

 

12.

要查看表定义,单击左侧导航器中表列表下的 OBE_TASKS 表。

 

13.

该页面将显示表定义。要查看表中的数据,单击 Data 选项卡。

 

14.

您看到表中的所有数据。您可在此页面中更改表中的任何数据,也可向表中添加行。

 

返回主题列表

添加主表

要使项目名可维护并且能够跟踪有关项目的其他信息,可将项目信息移至单独的表中。执行以下步骤:

1.

单击 Table 选项卡

 

2.

单击 Create Lookup Table 按钮。

 

3.

要指定据以创建主表的列,选择 PROJECT - varchar2,然后单击 Next >

 

4.

输入以下值,然后单击 Next >

New Table Name: OBE_PROJECTS
New Sequence: OBE_PROJECT_SEQ

 

5.

单击 Finish

 

6.

注意,新的 OBE_PROJECTS 表包含一个数字主键和 PROJECT 列。

 

返回主题列表

修改表

现在,您已经具有了两个主表,可以添加一些其他的加列来增强 OBE_PROJECTS 表。
为此,执行以下步骤:

1.

确保选中了 OBE_PROJECTS 表。准备向该表中添加列。单击 Add Column

 

2.

输入以下值,然后单击 Next >

Add Column: PROJECT_DEADLINE
Type: DATE

 

3.

单击 Finish

 

4.

您将看到已经增加了新的 PROJECT_DEADLINE 列的修改后的表定义。您希望为 PROJECT_PRIORITY 多创建一列。单击 Add Column

 

5.

输入以下值,然后单击 Next >

Add Column: PROJECT_PRIORITY
Type: NUMBER
Precision: 1

 

6.

单击 Finish

 

7.

PROJECT_PRIORITY 列添加成功。单击 Data 选项卡查看数据。

 

8.

您将看到 OBE_TASKS 表中引用的所有项目。您可以在这里更改数据。单击 Public Website 中 PROJECT_ID 左侧的 Edit 图标 (  )。

9.

对于 Project Deadline,输入从当天日期算起一个月的时间。为 Priority 输入 1。单击 Apply Changes

10.

您将看到您添加的数据。另一种创建数据库对象和加载数据的方法是使用脚本。从下拉列表框中选择 SQL Scripts

返回主题列表

使用脚本添加表

您可能已经注意到 OBE_TASKS.ASSIGNED_TO 列是个数字。在本主题中,您将运行脚本来创建 OBE_EMPLOYEES 表并加载当前员工列表。每个员工都有一个对应于 OBE_TASKS.ASSIGNED_TO 列中的数字的 EMPLOYEE_ID。执行以下步骤:

1.

单击 Upload

 

2.

单击 Browse...

 

3.

选择 employees.sql ,然后单击 Open。为 Script Name 输入 OBE_EMPLOYEES,然后单击 Upload

 

4.

选择 OBE_EMPLOYEES 脚本。

5.

脚本随即显示。单击 Run

6.

单击 Run 确认。

7.

脚本执行完成。要查看结果,单击 View Results 图标。

8.

创建了 OBE_EMPLOYEES 表,其中插入了一些数据。单击 SQL Workshop 路径式导航栏。

返回主题列表

添加约束

现在,您已经具有了由 OBE_TASKS.ASSIGNED_TO 列引用的员工数据,但需要标识两个表之间的外键。该外键确保每个 ASSIGNED_TO 列引用一个有效的员工。它还可确保无法删除已分配有任务的员工。执行以下步骤:

1.

选择 Object Browser > Browse 旁的向下箭头,然后选择 Tables

 

2.

选择 OBE_TASKS 表,然后单击 Constraints 选项卡。

 

3.

单击 Create

 

4.

为 Constraint Type 选择 Foreign Key。为 Foreign Key Column 选择 ASSIGNED_TO,为 Reference Table Name 选择 OBE_EMPLOYEES,以及为 Reference Table Column List 选择 EMPLOYEE_ID。然后,单击 Next >

 

5.

单击 Finish

6.

约束创建成功。您还需要在 PROJECT_PRIORITY 列上创建一个校验约束,以确保在插入或更新数据时对该数据进行验证。选择 OBE_PROJECTS

7.

单击 Create 部分的选项卡。

8.

为 Constraint on Column 域选择 PROJECT_PRIORITY,并为 Constraint Expression 输入 in ('1','2','3') 。确保针对 Constraint Type 选择了 Check。然后,单击 Next >

9.

单击 Finish

10.

该约束创建成功。单击 Home 路径式导航栏。

返回主题列表

创建应用程序

要创建应用程序框架并将几个初始页面设为默认值,执行以下步骤:

1.

在 Oracle Application Express 主页中,单击 Application Builder > Create Application > Create Application 旁的向下箭头。

 

2.

为 Name 输入 Project Tasks Application。保留 Creation Application 的默认值 From Scratch,然后单击 Next >

 

3.

您希望创建的第一个页面是 Home 页面。确保选择了 Blank 页面,将 Name 更改为 Home,然后单击 Add Page

 

4.

为了能够维护加载的员工,您需要创建一个关于员工表的报表和表单。为 Page Type 选择 Report and Form,为 Subordinate to Page 选择 Home (1),然后单击 Table Name 的向上箭头。

 

5.

从表列表中选择 OBE_EMPLOYEES

 

6.

单击 Add Page

 

7.

您可以在创建应用程序时更改页面的名称。单击页面 3 的 OBE_EMPLOYEES 链接。

 

8.

将 Page Name 更改为 Maintain Employee,然后单击 Apply Changes

 

9.

单击页面 2 的 OBE_EMPLOYEES 链接以更改其名称。

 

10.

将 Page Name 更改为 Employee Information,然后单击 Apply Changes

 

11.

单击 Next >

 

12.

选择 No Tabs,然后单击 Next >

 

13.

您不希望从其他应用程序引用任何组件。单击 Next >

 

14.

接受默认值。单击 Next >

 

15 .

选择 Theme 15。单击 Next >

 

16.

检查您的选择。单击 Create

 

17.

这就创建了一个应用程序及其相关页面。要运行该应用程序,单击 Run Application 图标。

 

18.

由于选择了默认的 Application Express Authentication,因此需要使用开发时使用的登录身份来登录新应用程序。为 User Name 输入 obe,为 Password 输入 obe。然后单击 Login

 

19.

随即显示 Home 页面。显示到报表的 Employee Information 链接。单击 Employee Information

 

20.

将显示员工列表。您可以根据需要单击员工左侧的图标来编辑该员工的信息。

 

21.

显示员工详细信息。单击窗口底部的开发人员链接中的 Application <n> 链接。

 

返回主题列表

添加主从表单

尽管项目和任务存储在两个单独的表中,但在同一个页面上显示其信息却是非常有用的。主/从表单正好可实现此目的。要添加一个主/从表单,执行下列步骤:

1.

单击 Create Page

 

2.

选择 Form 页面,然后单击 Next >

 

3.

选择 Master Detail Form,然后单击 Next >

 

4.

首先选择 Master Table。为 Table/View Name 选择 OBE_PROJECTS,单击 Select All (  ) 图标将所有列移至 Displayed Columns 区域。然后,单击 Next >

 

5.

接下来,选择 Detail Table。为 Table/View Name 选择 OBE_TASKS,单击 Select All (  ) 图标将所有列移至 Displayed Columns 区域。然后,单击 Next >

 

6.

创建了表之后,还创建了一个触发器以调用行插入的序列。接受默认值以使用 Existing Trigger,然后单击 Next >

 

7.

单击 Next > 在上 OBE_TASKS 上使用 Existing Trigger。

 

8.

对于 Include master row navigation,选择 Yes。该选择允许用户在主/从页面上滚动浏览项目。

对于 Master Row Navigation Order,选择 PROJECT。该选择将按项目名称以字母顺序显示下一个项目。如果选择 PROJECT_ID,则下一个记录将由 PROJECT_ID 计算,可能会使用户产生混淆。

对于 Include master report,选择 Yes。该选择将在创建了主/从页面后,再创建一个报告所有项目的页面。该报表还包括到主/从页面的导航。

进行完选择之后,单击 Next >

 

9.

确保选择了 Edit detail as tabular form on same page,然后单击 Next >

通过选择在同一页面上将细节编辑为表格化表单,主/从页面上的任务报表将可编辑。如果选择在单独页面上编辑细节,则任务报表将只是个报表,只能在单独页面上逐条编辑记录。

 

10.

在 Create Breadcrumb Entry 部分下面,将 Entry Name (Master Report) 更改为 Projects,将 Entry Name (Master Detail Page) 更改为 Projects and Tasks。然后,单击 Home 链接将新 Projects 报表的父路径式导航栏设为 Home。该选择将使用户可以从 Home 页面中导航到该报表。

 

11.

单击 Next >

 

12.

接受默认设置 Do not use tabs,然后单击 Next >

 

13.

单击 Create 创建主/从表单。

 

14.

单击 Run Page 图标。

 

15.

将自动创建一个包含项目列表的报表。选择其中一个项目旁的 Edit (  ) 图标以查看主/从表单。

 

16.

显示主/从表单。通过该页面,用户可以编辑项目的详细信息以及与项目关联的任务的详细信息。通过它,用户还可以向当前项目中添加新任务。

在详细信息区域中,您将看到 Add Row 按钮。此按钮保存任何未决更改,然后再添加一行,以便可以将新任务添加到项目中。您还应拥有一个 Delete 按钮。此按钮与每个任务左侧的复选框配合使用。标题行中的复选框用于选择显示在该页面上的所有任务。单击 Delete 按钮时,将删除任何已被“选中”的任务。如果使用该特性,您将注意到其中已经内置了一个删除确认。它要求您在继续操作之前确认删除。

此外,您还将在表单上看到每个区域有一个 Previous 和 Cancel 按钮。上面的一组按钮对应于项目信息,下面的一组按钮对应于任务。 Previous 按钮的出现是因为选择了包括主行导航。 Cancel 按钮可使用户返回 Projects 报表。

更改项目名并单击 Apply Changes

 

17.

更改完成。单击开发人员工具栏中的 Application <n> 链接。

 

返回主题列表

编辑应用程序对象

尽管主/从表单功能齐备,但外观还可进一步改善。在本主题中,您将更改页面标题、区域标题的名称,并更改项目在主报表上的格式。此外,您还将以 PDF 格式打印 Projects 报表。最后,使用拖放功能更改项目在 Projects and Tasks 页面上的顺序。执行以下步骤:

1.

选择 4 - OBE PROJECTS

 

2.

选择 Regions 下的 Report 链接。

 

3.

单击 PROJECT_DEADLINE 旁的 Edit (  ) 图标。

 

4.

在 Column Formatting 下,在 Number/Date Format 域中输入 MM/DD/YYYY 并单击 Apply Changes

 

5.

单击 Apply Changes

 

6.

单击 Page 4 的 Edit (  ) 图标。

 

7.

在 Name 部分中,为 Name 输入 Projects。在 Display Attributes 部分中,为 Title 输入 Projects。然后单击 Apply Changes

 

8.

单击 Run

 

9.

注意,浏览器中的标题设为 Projects,PROJECT_DEADLINE 的格式已更改。您将注意到,区域标题仍然为 OBE_Projects。单击开发人员链接区域中的 Show Edit Links

 

10.

单击 Obe 项目区域标题旁的 Edit (  ) 图标。

 

11.

将标题更改为 Projects,然后单击 Apply Changes

 

12.

单击 Cancel 关闭 Page Region 窗口。

 

13.

刷新浏览器以显示刚做的更改。单击开发人员链接中的 Hide Edit Links

 

14.

单击开发人员工具栏中的 Edit Page 4 链接。

 

15.

单击 Projects 区域旁的 Report 链接。

 

16.

单击 Print Attributes 选项卡。

 

17.

在 Enable Report Printing 下拉菜单中选择 Yes,在 Page Attributes 下的 Orientation 下拉菜单中选择 Portrait。然后单击 Page Header 选项卡。

 

18.

为 Page Header 输入 Project Report,并将 Alignment 设为 center。单击 Apply Changes

 

19.

注意,由于您现在启用了 Report Printing,因此 Print 出现在 Report 链接右侧。单击 Run

 

20.

注意报表底部的 Print 链接。单击 Print 链接。

 

21.

单击 Open with 单选按钮,然后单击 OK 以 PDF 格式查看报表。

 

22.

Projects 报表以 PDF 格式显示。

 

23.

单击开发人员工具栏中的 Edit Page 4 链接。

 

24.

单击 > 箭头导航至 Projects and Tasks 页面 (Page 5) 的页面定义。

 

25.

显示 Page 5 的页面定义。要重新排列该页面中的项目序列,单击 Items 选项卡。

 

26.

单击 Items 部分中的 Drag and drop 图标。

 

27.

显示 Drag and Drop Layout。您可以使用这个直观的图形布局来编辑、创建或删除该页面中的项目。

 

28.

为了让 Page 5 中的 Project Priority 项显示在 Project Deadline 项之上,可将 P5_PROJECT_ PRIORITY 项拖放到 P5_PROJECT_ DEADLINE 项之上,然后单击 Next>

 

29.

单击 Apply Changes

 

30.

单击 Run

 

31.

注意 Project Priority 域现在是如何显示在 Project Deadline 域上方的。单击开发人员工具栏中的 Application <n> 链接。

 

返回主题列表

创建值列表 (LOV)

另一种改善应用程序外观方法是创建值列表。在本主题中,您将创建以下 LOV:

EMPLOYEES 显示员工列表的动态 LOV。然后,该 LOV 与任务列表中的 Assigned To 列关联。
STATUSES 显示状态列表的静态 LOV。然后,该 LOV 与任务列表中的 Status 列关联。
PRIORITIES 显示优先级列表的静态 LOV。然后,该 LOV 与 Projects Master 区域中的 Priority 列关联。

执行以下步骤:

1.

单击 5 - Master Detail 页面。

 

2.

在 Shared Components 栏中,单击 List of Values 下的 Create (  ) 图标。

 

3.

对于 Create List of Values,保留默认值 From Scratch,然后单击 Next >

 

4.

为 Name 输入 EMPLOYEES。对于 Type,将类型更改为 Dynamic。然后,单击 Next >

 

5.

对于动态 LOV,您需要输入希望在显示页面时执行的 SQL。要找出列的名称,您可以选择 Item Finder (  ) 图标。

 

6.

单击 Tables 选项卡。

 

7.

选择 OBE_EMPLOYEES 表链接。

 

8.

注意列名称。您可以选择显示的 SQL 语句并将其复制到剪贴板。退出 Item Finder 窗口。

 

9.

将 SQL 语句更改为以下内容,然后单击 Create List of Values。动态值列表中的第一列是显示给用户的列。第二列是要存储在数据库中的相应值。在适当的时候,它们可以是相同的值。

                                select FIRST_NAME||', '||LAST_NAME d,     EMPLOYEE_ID r from OBE_EMPLOYEES order by 1
                            

 

10.

您的 LOV 创建成功。注意,该 LOV 没有列在 List of Values 区域中,因为您尚未将其与该页面关联。您希望再创建 2 个静态 LOV。再次单击 Create (  ) 图标。

 

11. 对于 Create List of Values,保留默认值 From Scratch 并单击 Next >

 

12.

对于 Name 输入 STATUSES,并确保为 Type 选择了 Static,然后单击 Next >

 

13.

对于 Display Value 和 Return Value,输入下列值:

Display Value Return Value
Closed closed
Open open
On Hold on-hold

单击 Create List of Values。

 

14. 创建了 STATUSES LOV。还要再为表单的 Master 部分创建一个 LOV,即 Priorities。单击 Create

 

15. 对于 Create List of Values,保留默认值 From Scratch 并单击 Next >

 

16.

对于 Name 输入 PRIORITIES,并确保为 Type 选择了 Static,然后单击 Next >

 

17.

对于 Display Value 和 Return Value,输入下列值:

Display Value Return Value
High 1
Medium 2
Low 3

单击 Create List of Values

 

18. 创建了 PRIORITIES LOV。现在,可将这些 LOV 与该页面关联。单击 Edit Page 5 (  ) 图标。

 

19. 单击 Show All 图标显示所有页面组件。

 

20.. 在 Regions 区域中,单击 Report 链接。

 

21.

单击 ASSIGNED_TO 列前面的 Edit (  ) 图标。

 

22.

单击 Tabular Form Element 部分按钮。

 

23.

将 Display As 更改为 Select List (named LOV) 并单击 List of Values 部分按钮。

 

24.

为 Named LOV 选择 EMPLOYEES,为 Display Null 选择 YES,并为 Null display value 输入 - None Assigned -。单击 Apply Changes

 

25.

单击 STATUS 列前面的 Edit (  ) 图标。

 

26.

List of Values 部分按钮应已选定。为 Named LOV 选择 STATUSES,为 Display Null 选择 YES,并为 Null display value 输入 - No Status -。然后,单击 Tabular Form Element 部分按钮。

 

27.

为 Display As 选择 Select List (named LOV) 并单击 Apply Changes

 

28.

现在,可以再次运行该页面查看结果。单击 Run Page 5 (  ) 图标。

 

29.

选择 Assigned To 的下拉列表。您将看到显示执行的动态 LOV 和员工列表。

 

30.

选择 Status 的下拉列表。您将看到显示静态 LOV 值。

 

31.

接下来,您需要将 PRIORITIES LOV 指派给该页面 Master 区域中的 Priority 项。单击 Edit Page 5

 

32.

在 Page Rendering 下单击 item (  ) 图标。

 

33.

选择 P5_PROJECT_PRIORITY

 

34.

选择 Display As 域下的 Radio 链接,然后单击 LOV 部分按钮。

 

35.

为 Named LOV 选择 PRIORITIES,为 Number of Columns 输入 4,为 Display Nulls 选择 Yes,并为 Null display value 输入 None。单击 Apply Changes

 

36.

单击 Run

 

37.

Priority 域现在是一个由 LOV 值填充的单选按钮组。单击开发人员链接中的 Edit Page 5

 

返回主题列表

添加项目验证

您不希望用户输入当天日期之前的日期。该类型的检查可通过项目验证实现。执行以下步骤:

1.

单击 Page 5 的 Validations 部分中的 Create (  ) 图标。

 

2.

接受默认值,创建一个 Item level validation 并单击 Next >

 

3.

选择项目 P5_PROJECT_DEADLINE 并单击 Next >

 

4.

为 Validation Method 选择 SQL,然后单击 Next >

 

5.

由于您希望指定 PROJECT_DEADLINE 不正确时的条件,因此单击 SQL Expression,然后单击 Next >

 

6.

输入 P5_PROJECT_DEADLINE 作为 Validation Name,然后单击 Next >

 

7.

为 Validation 输入 TO_DATE(:P5_PROJECT_DEADLINE,'MM/DD/YYYY') >= SYSDATE ,并为 Error Message 输入 Date needs to be greater than today,然后单击 Next >

 

8.

为 Condition Type 选择 Request Is Contained within Expression1,并为 Expression1 输入 SAVE,CREATE。然后单击 Create

 

9.

验证创建成功。单击 Run

 

10.

将日期更改为当前日期之前的某个时间,然后单击 Apply Changes

 

11.

注意,您将收到一条项目(或域)错误消息以及一个页面通知消息。这是因为您在创建验证时指定了需要这两种形式。

 

12.

单击开发人员工具栏中的 Application <n> 链接。

 

返回主题列表

添加 Flash 图表

您希望创建一个 flash 图表。您需要创建一个按项目显示任务数量的 2D 饼图。执行以下步骤:

1.

在 Project Tasks Application home 页面中,单击 Create Page >

 

2.

选择 Chart 作为页面类型,然后单击 Next >

 

3.

选择 Flash Chart 单选按钮,然后单击 Next >

 

4.

为 Page Name 输入 Tasks per Project Chart,接受其他默认值,然后单击 Next >

 

5.

选择 Do not use tabs 选项,然后单击 Next >

 

6.

选择 2D Pie 作为 Chart Type,输入 Tasks per Project 作为 Chart Title,然后单击 Update 按钮刷新图表预览。

 

7.

显示 Tasks per Project Flash 图表预览。单击 Next >

 

8.

将以下查询复制并粘贴到查询域中。单击 Next >

                                        select null link,        p.project label,        t.task_count value   from (select project_id,                count(*) task_count           from obe_tasks          group by project_id) t,        obe_projects p  where t.project_id = p.project_id
                                    

 

9.

单击 Finish 创建图表。

 

10.

Flash 图表已创建。单击 Run Page 图表查看该 Flash 图表。

 

11.

该 Flash 图表显示了每个项目的任务数量。每块饼的第一个数是项目,第二个数是任务数量。单击开发人员工具栏中的 Application <n> 链接。

 

返回主题列表

添加日历

您希望添加一个日历以显示每个项目的最后期限,然后在 Projects 报表上添加一个按钮以链接到日历。执行以下步骤:

1.

在 Project Tasks Application home 页面中,单击 Create Page >

 

2.

选择 Calendar 作为页面类型,然后单击 Next >

 

3.

选择 Easy Calendar 单选按钮,然后单击 Next >

 

4.

为 Page Name 输入 Project Tasks Calendar,然后单击 Next >

 

5.

选择 Do not use tabs 选项,然后单击 Next >

 

6.

为 Table/View Name 选择 OBE_PROJECTS,然后单击 Next >

 

7.

确保为 Date Column 选择了 PROJECT_DEADLINE,为 Display Column 选择了 PROJECT。然后,单击 Next >

 

8.

单击 Finish 创建日历。

 

9.

日历已创建。单击 Run Page 图表查看该日历。

 

10.

该日历根据到期日期显示项目。您还可以每天或每周模式查看日历。单击 Weekly

 

11.

显示周日历模式。您可前进至下一周。单击 Next

 

12.

您希望从 Projects 报表创建一个到该日历的按钮。向下滚动至周日历底部,单击开发人员工具栏中的 Application 链接。

 

13.

单击 Projects 页面。

 

14.

在按钮区域中,单击 Create (  ) 图标。

 

15.

选择第二个 Projects (10) 区域,然后单击 Next >

 

16.

选择 Create a button in a region position,然后单击 Next >

 

17.

输入 View Calendar 作为 Button Name,然后单击 Next >

 

18.

接受默认值,然后单击 Next >

 

19.

接受默认值,然后单击 Next >

 

20.

单击向上箭头选择要作为分支的页面。

 

21.

选择 Project Tasks Calendar

 

22.

单击 Create Button

 

23.

单击 Run 查看带有按钮的报表。

 

24.

单击 View Calendar

 

25.

显示日历。单击开发人员工具栏中的 Application <n> 链接。

 

返回主题列表

更新主页导航列表

至此,您已经完成了主/从表单和 Flash 图表,接下来需要将它们添加到主页导航列表。执行以下步骤:

1.

单击 Home 页面。

 

2.

选择 Regions (  ) 图标。

 

3.

在 Regions 区域中,单击 List 链接。

 

4.

单击 Create List Entry >

 

5.

为 Sequence 输入 20,在 List Entry Label 域中输入 Manage Projects and Tasks。确保在 Target type 中选择了 Page in this Application,然后单击 Page 旁的向上箭头。

 

6.

选择 4 Projects

 

7.

单击 reset pagination for this page,然后单击 Create and Create Another。通过选择重设标记页数,该链接将在用户单击链接时始终显示第一组记录,无论他们上次访问该页面时查看的是哪组记录。

 

8.

为 Sequence 输入 30,在 List Entry Label 域中输入 View Tasks per Project Chart。确保在 Target type 中选择了 Page in this Application,然后单击 Page 旁的向上箭头。

 

9.

选择 8 Tasks per Project Chart

 

10.

单击 reset pagination for this page,然后单击 Create

 

11.

您的条目已添加至该列表。单击 Run Page 1 (  ) 图标。

 

12.

注意两个新条目。单击 Manage Projects and Tasks

 

13.

显示 Projects 报表。单击 Home 路径式导航栏。

 

13.

单击 View Tasks per Project Chart

 

13.

列出页面。单击开发人员工具栏中的 Application <n> 链接。

 

返回主题列表

应用新主题

您在创建应用程序时,选择了主题 15。您可以通过更改主题来更改应用程序外观。您首先将通过从 Oracle Application Express Repository 中选择一个主题来创建一个新主题。要应用一个新主题,执行下列步骤:

1.

单击 Shared Components > User Interface > Themes 旁的向下箭头。

 

2.

要创建一个新主题,单击 Create

 

3.

接受默认值 From the Repository,然后单击 Next >

 

4.

在 Theme 选项中,选择 Theme 14 选项。单击 Next >

 

5.

单击 Create

 

6.

要转换到 Modern 主题,单击 Switch Theme

 

7.

要切换主题,确保选中 14. Modern。单击 Next >

 

8.

注意,此页面显示两个主题间的相容性。此实用程序检查在新的主题中是否有模板来替换当前主题中的每一个模板。Status 列中的对号指示出这些模板是兼容的。单击 Next >

 

9.

要确认主题转换,单击 Switch Theme

 

10.

要查看新主题,单击页面右上方的 Run Page 图标 (  )。

 

11.

您会注意到应用程序的整个外观都已经改变了。配色方案已经改变。单击开发人员工具栏中的 Application <n> 链接。

返回主题列表

添加徽标

您可以非常轻松地向应用程序添加文本或图像徽标。在本例中,您将添加一个文本徽标。执行以下步骤:

1.

选择 Shared Components 旁的向下箭头并选择 Application > Definition

 

2.

单击 Logo 选项卡。

 

3.

选择 Text 作为 Logo Type。输入 Project Tracker 作为 Logo,输入 style="font-family:Arial; color:#000000; font-size:18; white-space:nowrap; font-weight:bold;" 作为 Logo Attributes。然后单击 Apply Changes

 

4.

要查看该徽标,单击页面右上方的 Run Page图标 (  )。

 

5.

显示文本。单击开发人员工具栏中的 Application <n> 链接。

 

返回主题列表

创建用户

如前面提到的,这个应用程序使用 Oracle Application Express 身份验证。要创建新用户,您可以使用 Oracle Application Express 中已经有的功能。您将创建一些新用户,然后在下一个主题中限制某些人对应用程序的某些区域的访问。为此,执行以下步骤:

1.

单击路径式菜单中的 Home 链接。

 

2.

在右侧的 Administration 框中,选择 Manage Application Express Users

 

3.

单击 Create End User

 

4.

输入如下信息,然后单击 Create and Create Another

User Name: Brad.Knight
Password 和 Confirm Password: welcome1
Email Address: brad.knight@oracle.com
Default Schema: OBE
User is a developer: No
User is a Workspace Administrator: No

 

5.

输入如下信息,然后单击 Create and Create Another

User Name: Susie.Parker
Password 和 Confirm Password: welcome1
Email Address: susie.parker@oracle.com
Default Schema: OBE
User is a developer: No
User is a Workspace Administrator: No

 

6.

输入以下信息,单击 Create User

User Name: John.Bell
Password 和 Confirm Password: welcome1
Email Address: john.bell@oracle.com
Default Schema: OBE
User is a developer: No
User is a Workspace Administrator: No

 

7.

您会注意到已经创建了三个用户。现在您将设置管理员对应用程序的访问权限。单击 Application Builder 选项卡。

 

返回主题列表

限制访问

现在,您已经定义了用户,可以开始限制对应用程序的特定部分的访问了。在本主题中,您将只允许特定用户编辑任务。为此,执行以下步骤:

A 添加访问控制页面
B. 标识特权用户
C. 对应用程序组件应用授权模式

返回主题列表

A. 添加访问控制页面

要保护应用程序以便只有特权用户才可以执行特定操作,您需要创建一个访问控制页面来定义哪些用户可以访问应用程序的哪些部分。执行以下步骤:

1.

单击 Project Tasks Application

 

2.

单击 Create Page

 

3.

选择 Access Control 页面类型,然后单击 Next >

 

4.

接受默认页面值 9 并单击 Next >

 

5.

确保选择了 Do not use tabs,然后单击 Next >

 

6.

单击 Finish

 

7.

单击 Run Page

 

8.

您将看到刚才添加到该应用程序的访问控制页面。该页面分为两个区域,Application Model 的默认设置为 Full Access。在本例中,您希望限制某些用户访问应用程序的特定部分。选择 Restricted Access 并单击 Set Application Mode

 

9.

应用程序模式已设定。在下一个主题中,您将标识特权用户。单击 Add User

 

返回主题

B. 标识特权用户

在前一个主题中,您创建了 3 个用户:Brad.Knight、John.Bell 和 Susie.Parker。在本主题中,您将标识 Brad.Knight 以允许他编辑应用程序,但不能更改任何用户访问权。John.Bell 只可查看应用程序中的信息,不能进行任何更改。而 Susie.Parker 是应用程序的管理员,除了可更改用户权限外,还可更改应用程序中的任何内容。执行以下步骤:

1.

输入 john.bell 作为 Username,并为 Privilege 选择 View,然后再次单击 Add User

 

2.

输入 brad.knight 作为 Username,并为 Privilege 选择 Edit,然后再次单击 Add User

 

3.

输入 susie.parker 作为 Username,并为 Privilege 选择 Administrator,然后单击 Apply Changes

 

4.

接下来,您可以定义限制应用程序的哪些区域。单击开发人员工具栏中的 Application <n> 链接。

 

返回主题

C. 对应用程序组件应用授权模式

创建了授权模式后,具有 View 权限的用户可查看员工信息,但不能对其进行更改。具有 Edit 权限的用户可对员工信息进行更改,但不能更改访问控制列表。具有 Administrator 权限的用户可更改任何内容,包括访问控制列表。执行以下步骤:

1.

选择 Shared Components 旁的向下箭头并选择 Application > Definition

 

2.

单击 Security 选项卡。

 

3.

在 Authorization 下,将模式更改为 access control - view 并单击 Apply Changes

 

4.

现在,您已为具有查看权限的用户授予了访问应用程序的权限,您可以限制只有具有编辑权限的用户可以访问员工信息。单击 2 - Employee Information

 

5.

在 Regions 区域中,单击 Report 链接。注意,您可能需要单击 Page Rendering 下的 Regions (  ) 图标。

 

6.

单击 Edit (  ) 图标(位于 EMPLOYEE_ID 之前)。

 

7.

单击 Authorization 选项卡。

 

8.

为 Authorization Scheme 选择 access control - edit 并单击 Apply Changes

 

9.

单击 Apply Changes

 

10.

因为只希望 Create 按钮在用户具有 Edit 或 Administrator 权限时出现,所以需要设置授权模式。单击 Page Rendering 下的 Button (  ) 图标。

 

11.

单击 Create 链接。

 

12.

单击 Authorization 部分按钮。

 

13.

选择 access control - edit 授权模式并单击 Apply Changes

14.

您还希望保护页面不受直接访问。因此,尽管限制了不具备编辑权限的用户在页面 2 上编辑或创建用户,但他们仍可在输入了正确的 URL 后访问页面 3。要防止此种的情况的发生,您需要将页面 3 限制为仅编辑用户可访问。单击页面的 > 前进至 Page 3。

 

15.

单击 Show All (  ) 图标

 

16.

在 Page 部分中,单击 Authorization Page Attribute 的 No 链接。

 

17.

对于 Authorization Scheme,选择 access control - edit。单击 Apply Changes。单击 Run Page 图标。

 

18.

单击开发人员工具栏中的 Application <n> 链接。

 

19.

由于只允许具有管理员权限的用户更改访问控制列表,因此您需要为页面 9 设置授权模式。单击 9 - Access Control Administration Page

 

20.

单击 Authorization 的 No 链接。

21.

为 Authorization Scheme 选择 access control - administrator,然后单击 Apply Changes。现在可以准备运行应用程序了。

22.

在 Page 中输入 1,然后单击 <</strong>。

 

23.

单击 Run

 

24.

如果您已作为 OBE 登录,则单击 Logout。输入 brad.knightwelcome1 作为用户名和口令。然后单击 Login

 

25.

选择 Employee Information

 

26.

注意 Brad 可编辑员工。单击 Logout

 

27.

输入 john.bellwelcome1 作为用户名和口令。然后单击 Login

 

28.

选择 Employee Information

 

29.

John 只有查看权限,因此不能编辑员工。他还看不到 Create 按钮显示。

 

30.

在 URL 中更改页面编号并尝试访问页面 3。

示例 url    /f?p=426:2:2101953412249296357::NO
更改为    /f?p=426: 3:2101953412249296357::NO

按下键盘上的 Enter 键。注意,您将收到一条拒绝您访问该页面的消息,因为页面 3 只对具有编辑权限的用户开放。

 

返回主题

 

总结

 

在本教程中,您学习了如何:

 创建并修改表
 创建应用程序
 添加和修改报表、表单、图表和日历
 创建 LOV 和验证项目
 更新导航列表
 应用新主题
 创建用户并限制用户的访问权限

返回主题列表

 将鼠标置于该图标上可以隐藏所有的屏幕截图。

 

 

 

 

 

 

 

false ,,,,,,,,,,,,,,,,