Oracle 学习资料库
本教程介绍如何使用 Oracle HTML DB 构建日历页面。此日历将包含一个指向显示详细信息的报表的链接。
大约 30 分钟
本教程将讨论下列主题:
| 概述 | ||
| 前提条件 | ||
| 构建和查看数据库对象 | ||
| 加载数据 | ||
| 构建报表 | ||
| 构建日历 | ||
| 运行日历应用程序 | ||
| 总结 | ||
将光标置于此图标上可以加载和查看本教程的所有屏幕截图。(警告:因为此操作会同时加载所有屏幕截图,所以根据 Internet 连接的不同,响应时间可能会比较慢。)
注意:此外,还可以在下列步骤中将光标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。
HTML DB 为创建以数据库为中心的 Web 应用程序提供了一个声明式开发框架。使用在线服务完成开发。通过下载一个运行时模块和应用程序并将该应用程序运行在您的企业内部来完成部署。
HTML DB 包含三个主要的组件。您将在本教程中用到全部三个组件。
| Application Builder | 使用 Application Builder,您可以构建以数据库为中心的交互式 Web 应用程序。 | |
| SQL Workshop | SQL Workshop 使您可以运行 SQL 语句和 SQL 脚本。 | |
| Data Workshop | 使用 Data Workshop,您可以将数据加载到数据库中以及从数据库中提取数据。 | |
在使用 HTML DB 时,了解下面这些概念很重要:
| 应用程序 | 应用程序是一个通过分支连接的页面的集合。其属性包括身份验证方法、默认的 UI 模板、以及授权规则。 | |
| 页面 | 页面是通过其生成、显示以及处理方式来定义。处理是指提交页面时所发生的事件和逻辑。每个页面在运行时由应用程序开发人员定义的元数据动态生成。页面的外观由页面模板控制。 | |
| 区域 | 内容显示在多个区域中,这些区域是页面的逻辑子部分。每个页面可以包含任意数量的数种类型的区域。这些类型包括:HTML 文本、SQL 查询、PL/SQL 生成的 HTML 和图表。每个区域均使用区域模板生成,并由页面模板中定义的显示点来确定在页上的位置。 | |
| 项目 | 应用程序项目用于生成 HTML 表单元素。应用程序引擎管理 PL/SQL 生成的 HTML,而作为开发人员的您只需选择项目类型即可。应用程序支持支持 50 个以上这样的类型,包括日期选择器、弹出式值列表、具有拼写检查功能的文本区域等。项目的值自动存储到应用程序的会话状态中,可以在用户会话的任何地方引用该值。 | |
在本教程中,您将使用内置的向导来生成日历。一旦指定了日历所基于的表,就可以创建指向存储在特定列中的信息的下钻链接了。
Oracle HTML DB 支持两种日历类型:
| 简易日历:基于您指定的模式、表和列创建日历。向导提示您选择一个日期列和显示列。 | ||
| SQL 日历:基于您提供的 SQL 查询创建日历。您提供的 SQL SELECT 语句必须至少包含两列,一个日期列和一个显示列。您在本教程中创建的日历应用程序即为此类型。 | ||
日期列确定日历上的哪些日期将包含条目。显示列定义一个将显示日历日期的特定行。
对于本教程,您将创建 3 个表:
| 项目 | 该表将跟踪所有当前项目。 | |
| 用户 | 该表将包含有关可以指派谁来处理问题的信息。 | |
| 问题 | 该表将保存有关某个问题的所有信息,包括与该问题相关的项目以及被指派纠正该问题的人。 | |
以下是一个显示这三个表之间相互关系的简单实体关系图 (ERD)。
还将需要其他数据库对象(如序列和触发器)来支持这些表。系统生成的主键将用于所有表,以便无需实施级联更新就可以编辑所有数据。
开始学习本教程之前,您应已经:
| 1. | 完成了 安装并配置 Oracle HTML DB 1.6 教程,或可以使用已经安装的 HTML DB 1.6 安装。
|
| 2. | 将 htmldbcal.zip 下载并解压缩到您的工作目录中。
|
可以通过多种方法使用 Oracle HTML DB 创建对象。它们是 SQL Workshop 的全部功能:
| 1. | 使用主 SQL Workshop 页面中的 Create Object。此功能包含完成创建选定对象类型所必需的所有选择。 | |
| 2. | 使用主 SQL Workshop 页面中的 SQL Command Processor。它运行您键入或粘贴的命令。此处理器一次只能处理一个命令。 | |
| 3. | 使用主 SQL Workshop 页面中的 Scripts 上载脚本。此脚本将包含创建对象的语句。脚本上载后即可运行它。 | |
| 4. | 在线创建脚本。这样,只需几次单击操作便可创建所有对象,而无需先将文件保存到硬盘驱动器上。您将在本文中使用该方法。 | |
要创建此日历应用程序所必需的对象,请执行下列步骤:
要正确查看您将创建的应用程序,需要把数据加载到表中。可以通过 Oracle 导入手动加载数据或使用 Oracle HTML DB Data Workshop 或 SQL Workshop 加载数据。您将使用 Data Workshop 和 SQL Workshop 加载数据。
注意:如果查看 DDL,则将注意到用于主键的序列设置为从 40 开始,这样做是为了为数据留出空间。我们对 before insert 触发器采用了这样的编码 — 仅当在未提供主键的情况下访问序列。这样,在加载数据时将不需要禁用它们。
您需要执行下列任务:
| 加载项目数据 | ||
| 更新项目日期 | ||
| 加载用户数据 | ||
| 加载问题数据 | ||
将使用 Data Workshop 加载项目数据。可以导入文本数据、xml 数据或电子表格数据。您将使用 load_projects.txt 文件中包含的项目数据导入文本数据。执行以下步骤:
| 1. | 从 Data Workshop 选项卡中的 Data Import 下,单击 Import Text Data。
|
| 2. | 导入到 Existing Table 并从 Copy and Paste 导入,然后单击 Next。
|
| 3. | 确保选中 OBE 模式,然后单击 Next。
|
| 4. | 单击此图标搜索表。
|
| 5. | 选择 HT_PROJECTS (table)。
|
| 6. | 单击 Next
|
| 7. | 将位于工作目录中的 load_projects.txt 文件中的文本复制并粘贴到 Data 域中。然后单击 Next。
|
| 8. | 单击 Import Data。
|
| 9. | HT_PROJECTS 表现在包含数据了。您应看到 5 个记录成功,并且没有记录失败。单击 SQL Workshop 选项卡。
|
已经创建了项目,但需要更新日期以使项目处于当前状态。为此,您将创建一个脚本并运行它。执行以下步骤:
| 1. | 在 SQL Scripts 下,单击 Scripts。
|
| 2. | 单击 Create。
|
| 3. | 为 Script Name 输入 Update Project Dates,然后单击 Next。
|
| 4. | 将位于工作目录中的 update_project_dates.sql 文件中的文本复制并粘贴到 Script 域中。然后,单击 Create Script。
|
| 5. | 此时就创建好了脚本。单击 Run。
|
| 6. | 确保为 Parse As 选择了 OBE,然后单击 Run Script。
|
| 7. | 执行您的脚本后即显示 Summary Statistics 窗口。您应看到有 4 个成功信息,并且没有错误。现在,您可以加载用户数据了。单击 Script Repository。
|
您将通过创建脚本并运行它来加载用户数据。您将使用 load_people.sql 文件中包含的用户数据导入文本数据。执行以下步骤:
| 1. | 单击 Create。
|
| 2. | 为 Name 输入 Load People Data,然后单击 Next。
|
| 3. | 将位于工作目录中的 load_people.sql 文件中的文本复制并粘贴到 Script 域中。然后,单击 Create Script。
|
| 4. | 此时就创建好了脚本。单击 Run。
|
| 5. | 确保为 Parse As 选择了 OBE,然后单击 Run Script。
|
| 6. | 执行您的脚本后即显示 Summary Statistics 窗口。您应看到有许多成功信息,并且没有错误。现在,您可以加载问题数据了。单击 Script Repository。
|
您将通过创建脚本并运行它来加载问题数据。您将使用 load_issues.sql 文件中包含的问题数据导入文本数据。执行以下步骤:
| 1. | 单击 Create。
|
| 2. | 为 Name 输入 Load Issues Data,然后单击 Next。
|
| 3. | 将位于工作目录中的 load_issues.sql 文件中的文本复制并粘贴到 Script 域中。然后,单击 Create Script。
|
| 4. | 此时就创建好了脚本。单击 Run。
|
| 5. | 确保为 Parse As 选择了 OBE,然后单击 Run Script。
|
| 6. | 执行您的脚本后即显示 Summary Statistics 窗口。您应看到有许多成功信息,并且没有错误。现在,您就可以创建应用程序了。单击 Workspace OBE。
|
至此,您已经创建了支持应用程序的对象并加载了数据,接下来便可以创建用户界面了。使用 Application Builder 将创建应用程序,然后将创建一个页面以在日历上显示项目任务。
您可以使用 Create Application Wizard 快速设置为默认基于某个模式内的选定表创建报表和为这些表创建数据。或者,可以创建应用程序定义,然后根据需要添加页面。本文将使用后一种方法。执行以下步骤:
| 1. | 在 HTML DB 主页上,单击 Create Application >。
| |||||||||||||||||||||||||||||||||
| 2. | 由于您将从头创建应用程序,因此保留 Creation Method 的缺省值 From Scratch,然后单击 Next >。
| |||||||||||||||||||||||||||||||||
| 3. | 为 Name 输入 Calendar Application。要指定应用程序将包含一个页面,请从 Pages 下拉列表中选择 1。单击 Next >。
| |||||||||||||||||||||||||||||||||
| 4. | 单击 No Tabs,然后单击 Next >。
| |||||||||||||||||||||||||||||||||
| 5. | 为 Page Name 输入 Calendar,然后单击 Next >。
| |||||||||||||||||||||||||||||||||
| 6. | 选择 Theme 10,然后单击 Next >。
| |||||||||||||||||||||||||||||||||
| 7. | 单击 Create Application。
| |||||||||||||||||||||||||||||||||
| 8. | 此时就创建好了您的应用程序。您可以观看应用程序主题的预览。单击 Run。
| |||||||||||||||||||||||||||||||||
| 9. | 为用户名和口令分别输入 obe,然后单击 Login。
| |||||||||||||||||||||||||||||||||
| 10. | 您将看到 Default Home Page。 尽管此页面没有内容,但创建了下列项目:
| |||||||||||||||||||||||||||||||||
至此,已经创建了应用程序结构,接下来便可以添加内容了。您可以从日历开始,但由于日历将链接到一个显示所选问题的所有详细信息的报表,因此您将从报表开始。执行下列任务:
| 创建报表页面 | ||
| 创建查询引用项目 | ||
| 创建 Cancel 按钮 | ||
| 1. | 单击位于页面底部的开发人员链接区域中的 Edit Application。
|
| 2. | 将显示 Application Builder 主页,您的新应用程序在其中处于选中状态。单击 Create Page >。
|
| 3. | 选择 Page with Component 选项,然后单击 Next >。
|
| 4. | 要指定将要添加到页面的组件,请选择 Report 选项。单击 Next >。
|
| 5. | 选择 SQL Report 选项,然后单击 Next >。
|
| 6. | 为 Page 输入 2,并为 Page Name 输入 Issue Details。然后,单击 Next >。
|
| 7. | 选择 Do not use tabs,然后单击 Next >。
|
| 8. | 将位于工作目录中的 issue_details_rpt.sql 文件中的文本复制并粘贴到 SQL SELECT 区域中。然后,单击 Next >。
|
| 9. | 确保将 Region Template 设置为 Reports Region,并将 Report Template 设置为 default:vertical report, look 1 (include null columns)。为 Region Name 输入 View Issue,然后单击 Next>。
|
| 10. | 复查您的选择,然后单击 Finish。
|
| 11. | 已成功创建报表页面。
|
要链接到此报表,需要创建查询所引用的项目。
| 1. | 单击 Edit Page。
|
| 2. | 在 Items 组下,单击 Create 图标 (
|
| 3. | 为 Item Type 选择 Hidden,然后单击 Next >。
|
| 4. | 为 Item Name 输入 P2_ISSUE_ID,然后单击 Next >。
|
| 5. | 调用页面时将设置项目值,因此此页面上没有任何要指定的内容。单击 Create Item。
|
| 6. | 即创建了项目。
|
您需要创建一个将用户返回到日历的按钮或调用页面。
| 1. | 在 Buttons 组下,单击 Create 图标 (
|
| 2. | 选择 View Issue,然后单击 Next >。
|
| 3. | 确保选择了 Create a button in a region position,然后单击 Next >。
|
| 4. | 为 Button Name 输入 CANCEL。这将自动显示为 Button Label。确保为 Button Type 选择了 Template Driven,并为 Action 选择了 Redirect to URL without submitting page。由于此页面仅供查看之用,因此这样做是可以的。由于提交页面不会引发任何进程,因此提交没有必要。然后,单击 Next >。
|
| 5. | 确保为 Button Template 选择了 Button,然后单击 Next >。
|
| 6. | 为 Position 选择 Region Template Position #CLOSE#,然后单击 Next >。
|
| 7. | 为 Page 输入 1。这将把用户重定向到 Calendar 页面。为 Clear Cache 输入 2。每当用户单击 Cancel 按钮时,都将清除第 2 页上的值。这将防止用户从日历之外访问该页面并查看上一个问题。然后,单击 Create Button。
|
| 8. | 即创建了按钮。由于本教程是介绍如何创建日历而不是介绍如何自定义报表,因此您将保留报表的默认状态,但对于实际的应用程序来说,您需要编辑 Report Attributes 以改进列标题。
|
您创建的日历将称作 Target Resolution Dates。它将根据对应于它的目标解决日期显示每个尚未解决的问题,以及此问题指派给的用户和它所属的项目。执行下列任务:
| 创建日历页面 | ||
| 创建指向报表页面的链接 | ||
| 1. | 为 Page 输入 1,然后单击 Go。
|
| 2. | 在 Regions 组下,单击 Create 图标 (
|
| 3. | 为 Region Type 选择 Calendar,然后单击 Next >。
|
| 4. | 选择 SQL Calendar ,然后单击 Next >。
|
| 5. | 为 Title 输入 Target Resolution Dates,然后单击 Next >。
|
| 6. | 将位于工作目录中的 target_resolution.sql 文件中的文本复制并粘贴到 SQL Query 域中,然后单击 Next >。
|
| 7. | 为 Date Column 选择 TARGET_RESOLUTION_DATE,并为 Display Column 选择 DISP。然后,单击 Create Region。
|
| 8. | 已成功创建日历页面。
|
| 1. | 在 Regions 组中,选择 Target Resolution Dates 左侧的 CAL。
|
| 2. | 单击 Column Link。
|
| 3. | 为 Page 输入 2,为 Clear Cache 输入 2,为 Set these Items 输入 P2_ISSUE_ID,并为 With these values 输入 #ISSUE_ID#。然后,单击 Go To Top 图标 (
|
| 4. | 单击 Region Definition 选项卡。
|
| 5. | 单击 Header and Footer。
|
| 6. | 为 Region Header 输入 This excludes Closed issues.,然后单击 Go To Top 图标 (
|
| 7. | 单击 Apply Changes。
|
| 8. | 即更新了该区域。
|
您现在可以运行此应用程序,以查看已经创建的日历应用程序和报表。执行以下步骤:
| 1. | 单击应用程序窗口右上角中的 Run 图标。
|
| 2. | 将显示您的日历。可以使用按钮导航到 Previous Month 或 Next Month。Today 按钮将您转到当前月份。单击针为问题显示的任何文本。
|
| 3. | 将显示包含详细信息的 View Issue 页面。可以单击 Cancel 返回到日历。
|
在本课程中,您学习了如何:
| 构建数据库对象 | ||
| 使用脚本加载数据 | ||
热门下载 | ||
更多融合中间件下载 | ||