《Oracle之APEX深入开发指南》.docx

上传人:b****1 文档编号:14386440 上传时间:2023-06-23 格式:DOCX 页数:12 大小:25.39KB
下载 相关 举报
《Oracle之APEX深入开发指南》.docx_第1页
第1页 / 共12页
《Oracle之APEX深入开发指南》.docx_第2页
第2页 / 共12页
《Oracle之APEX深入开发指南》.docx_第3页
第3页 / 共12页
《Oracle之APEX深入开发指南》.docx_第4页
第4页 / 共12页
《Oracle之APEX深入开发指南》.docx_第5页
第5页 / 共12页
《Oracle之APEX深入开发指南》.docx_第6页
第6页 / 共12页
《Oracle之APEX深入开发指南》.docx_第7页
第7页 / 共12页
《Oracle之APEX深入开发指南》.docx_第8页
第8页 / 共12页
《Oracle之APEX深入开发指南》.docx_第9页
第9页 / 共12页
《Oracle之APEX深入开发指南》.docx_第10页
第10页 / 共12页
《Oracle之APEX深入开发指南》.docx_第11页
第11页 / 共12页
《Oracle之APEX深入开发指南》.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《Oracle之APEX深入开发指南》.docx

《《Oracle之APEX深入开发指南》.docx》由会员分享,可在线阅读,更多相关《《Oracle之APEX深入开发指南》.docx(12页珍藏版)》请在冰点文库上搜索。

《Oracle之APEX深入开发指南》.docx

《Oracle之APEX深入开发指南》

《Oracle之APEX深入开发指南》

OracleERPAPEX开发指南Author:

刘俊杰CreationDate:

April10,20__LastUpdated:

November29,20__DocumentRef:

Version:

1.0Approvals:

DocumentControlChangeRecord4DateAuthorVersionChangeReference10-Apr-13Junjie.liu1.0NoPreviousDocumentReviewersNamePositionDistributionCopyNo.NameLocation1234NoteToHolders:

Ifyoureceiveanelectroniccopyofthisdocumentandprintitout,pleasewriteyournameontheequivalentofthecoverpage,fordocumentcontrolpurposes.Ifyoureceiveahardcopyofthisdocument,pleasewriteyournameonthefrontcover,fordocumentcontrolpurposes.ContentsDocumentControlii1.APEX之系统探究21.1.APEX简介21.2.环境搭建31.3.APEX账户管理61.4.待定82.APEX–开发92.1.开发概要92.2.页面布局、美化102.3.APEX控件132.4.Report常用增删改162.5.文件上传下载192.6.使用CSS与JS252.7.图表、报表282.8.ApplicationExpressFreePlugins352.9.APEX部署373.APEX之调试、常用技巧、API394.APEX–EBS集成404.1.EBS中配置APEX页面调用405.Reference436.OpenandClosedIssuesforthisDeliverable44OpenIssues44ClosedIssues441.APEX之系统探究1.1.APEX简介1.1.1.概述1)OracleApplicationExpress是基于Web浏览器的网络即时开发、部署、运行。

2)OracleApplicationExpress所有页面都是存储于数据库,类似于EBS的Form个性化。

3)OracleApplicationExpress具有易用性、灵活性及Web的安全性、集成性、可伸缩。

1.1.2.体系结构ApplicationExpress使用用户计算机上的Web浏览器通过Web监听程序与Oracle数据库通信。

开发,部署或运行时不需要浏览器之外的任何其他客户机软件。

ApplicationExpress页使用浏览器中的HTML来呈现。

页请求和提交发送到Oracle数据库中的ApplicationExpress引擎。

1.1.3.运行环境1)浏览器要求Web浏览器必须支持Java脚本和HTML4.0和CSS1.0标准。

OracleApplicationExpress建议使用以下浏览器进行开发或查看应用程序:

l微软InternetExplorer7.0或更高版本lMozillaFirefox3.6或更高版本l谷歌Chrome4.0或更高版本l苹果Safari4.0或更高版本2)数据库及HTTP服务器要求1)OracleDatabase11grelease1or2,自带pl/sql网关配置比较简单,能够直接提供HTTP服务器的功能。

2)OracleDatabase10g,必须使用mod_plsql插件或是OracleApplicationExpress监听器来连接专业的HTTP服务器。

1.1.4.运行机制ApplicationExpress完全驻留在Oracle的数据库中,它是由存储在数据表中的数据和大量的pl/sql对象组成.对于客户浏览器发送的URL请求解析成pl/sql调用,数据库处理pl/sql调用,并将结果以HTML形式返回浏览器(sys.htp.p)。

每个页面的结果都在新的会话中,因此当ApplicationExpress引擎处理或者呈现一个页面的时候才会消耗数据库资源ApplicationExpress引擎包括:

1)异步会话状态管理2)认证服务3)授权服务4)页面流控制5)验证处理6)页面渲染和处理1.1.5.学习基础1)SQL、PL/SQL基础(必须)2)HTML基础深入开发的时候对html,javascript,css还是蛮重要的。

1.2.环境搭建1.2.1.环境准备操作系统、数据库、安装文件我这边使用的是RedHat4.2.1+Oracle11g+Vmware8.0安装文件使用最新的Apex_4.2.5.zip可在网上下载安装方式可以采用嵌入式SQL网关来监听或使用APEXListener基于Apatch的mod_plsql来安装。

本文使用嵌入式SQL风关来安装。

安装OK后当需要关闭虚拟机时把虚拟机的状态置为挂起状态,这样下次再打开时就不需要再重新去配置参数。

下面的安装都是使用系统的DB用户操作安装有问题可联系作者jjl.soft@1.2.2.OracleApplicationExpress安装stepbystep1)由于oracle11g自带Apex3.0,因此在本次安装的时候我们首先要卸载掉3.0版本2)上一步全部运行OK后,在apex目录下执行rm–rf*.*创建一个TableSpace:

Apex01,CREATETABLESPACEapex01DATAFILE'/d01/oracle/[SID]/db/apps_st/data/apex01.dbf'SIZE100MAUTOEXTENDONNEXT100MMAXSIZE1000M;3)把之前下载的Apex4.2.5安装文件上传至$ORACLE_HOME下,然后解压至/apex目录下4)开始安装5)更改Admin用户,并解锁APEX_PUBLIC_USER,其中Admin用户密码要设置得比较复杂,必须包含大写、小写字母+特殊的符号+数字ALTERUSERANONYMOUSACCOUNTUNLOCK;6)上述步骤全部OK后,可选安装中文语言7)配置嵌入式pl/sql网关8)GrantconnectprivilegestoanyhostfortheAPEX_040200databaseuser9)更改参数值10)以上全部OK后,APEX安装完成,可通过http:

//server:

8888/apex/apex_admin来管理,若出现HTTP404错误后,请执行如下命令,若没开则把它启起来11)成功后则可访问访URLhttp:

//server:

8888/apexhttp:

//server:

8888/apex/apex_admin安装到此,貌似都解决了,打开管理员网址,输入用户名、密码:

ADMIN/….后发现无法通过登录授权认证,怎么解决呢?

难道密码不对,于是再次更改ADMIN的密码,重启数据库,发现问题依旧,这样排除了ADMIN密码不对的可能,APEX授权的登录连接只有APEX_04002,这个也是没有问题的,也就是说本次的安装都是OK的,毕竟系统都启起来了,这时候联想到是不是这个授权验证是否还走的是之前的3.0版本的校验,执行了如下这段SQL发现确实还存在之前3.0版本的遗留用户,果断的把这些用户全部drop掉。

后面不小心把APEX_04002也drop了,因此只好又重装,重装后一切OK。

Dropuser……cascade;1.3.APEX账户管理1.3.1.APEX账户关系图1.3.2.ADMIN1)ADMIN是OracleApplicationExpress的超级管理员2)ADMIN可以创建、删除、修改WorkSpace及Workspace的管理员创建一个WorkSpace名为jjl,Schema为oracleebs的apps,同时创建该workspace的管理员名为jjl1.3.3.WorkSpace的Admin,Developer,AppEndUser1)使用刚创建好的WorkSpace【jjl】以管理员jjl登录2)登录之后为该workspace创建开发用户与app最终用户3)后续就可以用使用developer登录workspace【jjl】进行开发1.4.待定1.4.1.待定2.APEX–开发2.1.开发概要2.1.1.理解WorkSpace、ApplicationWorkSpace:

工作空间,一个WorkSpace对应Oracle数据库的一个Schema,形象的理解我们可以认为它就是一个工程,这个工程里面有很多的子项目Application.在与EBS的集成开发中,我们认为每个Application可以类似于EBS中的一个Form,该Form里包含多个窗口.本文有些截图是基于OracleApplicationExpress4.2.5版本。

在APEX中的页面布局、各种OBJECT的属性控制都是可以通过配置来解决的,对于这种声明式的开发(不需要编译)它需要的是少量的Coding,主要是偏向于pl/sal编程.OracleApplicationExpress可以创建DatabaseApplications,WebsheetApplications,PackagedApplication本文对应的开发都是DatabaseApplication.2.1.2.Application授权登录机制每个Application都可以为其设置安全认证,创建Application的时候会让你三选一。

后期创建好后我们是可以对其登录机制进行修改。

具体的APEX自带的授权登录机制有7种。

在目前的开发中我们可以选择ApplicationExpressAccounts与HTTPHeaderVariable.前者必须输入APEX用户名密码才可登录,后者2.1.3.Page0Page0是该Application的一个全局页,比如某些全局变量,全局常量都可以在该页去设置,为了方便管理我们把不同类型的变量放在不同的区域,这些区域是不显示在界面上的类似于HTML的HIDDEN.2.1.4.待定2.2.页面布局、美化ApplicationExpress提供了20个主题。

每个主题由定义应用程序外观的组件模板组成。

OracleApplicationExpress4.0提供的这些现代化主题都符合XHTML和CSS标准。

XHTML页面可移植性更强、呈现时间更短。

在项目上开发的使用的是APEX4.1.1版本,在网页布局这块比较郁闷,创建Region的Column属性是在某个Body内是全局的,在APEX4.2.5版本中,就变得相当的Easy,可以对子子….区域的重新布局,其子子区域都会有对应的GridLayout可以配置。

2.2.1.页面区域展现APEX的页面在选定主题后,其页面的布局与CSS基本上已确定,基本上符合DIV+CSS来布局,然后把某几个常用的DIV【Body1、Body2、Body3、Postion1、Position2、Position3、Position4】放开给Developer开发使用。

其中Body区域在HTML中是以

展现,Position区域在HTML中是以
展现其中我们常用的区域为红色标记的区域。

实例创建区域的布局如图:

如何实现以上布局呢?

在这里首先还是得明白HTML中的基本元素

及这些元素附带的一些属性.上图相信对TABLE能一目了然了。

那这些HTML的标签是如何对应APEX中的配置呢?

请看下图来自APEX的GridLayout的配置StartNewGrid:

意为着当前的Object是否采用新的网格布局,即是否采用一个新的

展现,不基于上一个
的布局展现(比如可以重新定义列数,…)StartNewRow:

意为着当前的Object是否换行显示,即

展现Column:

意为着当前的Object是在该

的当前行的第几列展现.那么像上面布局图中的Search3的区域布局配置为:

Newsearch1的区域布局配置为:

Newsearch3的区域布局配置为:

同理要实现更复杂的布局基于上述原则也是实现起来比较简单的。

配配就OK了2.2.2.标题待定2.3.APEX控件APEX作为一个强大的快速开发工具,当然少不了一些常用的控件,下拉框Commbox,值列表Lov,文本框Text,日历DataPick,报表Report,…。

这些控件的基本使用可参考我们知道控件都是可以有很多属性、事件、校验、DynamicAction。

其中DynamicAction是可以做很多操作的,比较重要的是执行pl/sql时类似于Ajax的无刷新控件属性:

lFormElementWidth:

控件的宽度lHorizontal/VerticalAlignment:

控件的显示位置还有Label显示位置。

lValueRequired:

是否必输入。

lConditionType:

控件显示的条件,只有满足了才显示。

lReadOnlyConditionType,:

控件只读的条件,只有满足了才只读。

lDefaultvalue:

设置控件的默认值。

lFormatMask:

控件值的格式掩码事件:

事件定义也是有属性可配置的:

lConditionType:

执行事件的前提条件lTrueActions:

事件发生后,对应控件的校验条件为真时执行的动作。

lFalseActions:

事件发生后,对应控件的校验条件为假时执行的动作。

lWHENCondition:

事件发生后,执行相应的动作的判断条件。

校验属性:

lWhenButtonPressed:

触发校验的ButtonlConditionType:

触发校验的前提条件lConditionExpression:

校验表达式lValidation:

执行相应的校验lErrormessagedisplaylocation:

错误信息显示方式lAssociatedItem:

错误信息关联到指定的Object下面做个具体的实例使用这些属性、事件、校验1、点击Button:

Search2Btn时校验X_Text1值是否为空,满足校验的前提条件是jjl_test表中存在记录user_id=’123’;2、当页面加载完,DatePick:

Datainit值赋值为当前日期3、当X_text2值不为空时,Region:

newsearch2隐藏,否则显示最终效果图:

StepByStep操作1、创建一个页面命名为Page22、Pl/sqlapps登录创建table:

jjl_test(user_idvarchar2(50),resp_idvarchar2(50),resp_appl_idvarchar2(50),login_namevarchar2(50),login_countnumber,login_datedate);insertintojjl_testvalues(‘123’,’’,’’,’’,’’);3、在Page2中创建六个htmlregion,对应的ParentRegionn选择PageTemplateBody

(1)4、Search1,search2,search3属于同一个TABLE,属性Column依次为1,2,2.属性StartNewGrid依次为Yes,No,No.属性StartNewRow依次为Yes,No,Yes.5、NewSearch1,newsearch2,newsearch3属于同一个TABLE,属性Column依次为1,2,3.属性StartNewGrid依次为Yes,No,No.属性StartNewRow依次为Yes,No,No.6、在search1中创建TextField:

P1_X_TEXT,P2_X_TEXT,search2中创建Button:

SEARCH2_BTN,search3中创建DatePick:

DATA,newsearch2中创建子区域:

newsearch_subpage1,new_search3_subpage2,new_search3_subpage3,属于同一个TABLE,属性Column依次为1,2,1.属性StartNewGrid依次为Yes,No,No.属性StartNewRow依次为Yes,No,Yes7、P1_X_TEXT鼠标右键创建相应的Validation:

Name:

X_TEXT1ISNOTNULLWhenButtonPressed:

SEARCH2_BTN.ConditionType:

Exists(SQLqueryreturnsatleastonerow)ConditionExpression1:

select1fromjjl_testjtwherejt.user_id=’123’;ValidationType:

FunctionReturningBooleanValidatoinExpression:

beginif:

P1_X_TEXTisnotnullthenreturntrue;endif;returnfalse;end;Errormessage:

X_TEXT1can’tbenull;8、P2_X_TEXT鼠标右键创建相应的DynamicActions:

Name:

Dynamic_action1;ConditonType:

Always;WhenEvent:

ChangeWhenSelectionType:

Item(s)WhenItem(s):

P2_X_TEXTWhenCondition:

isnotnullTrueActions:

HideRegion(newsearch2)FalseActions:

ShowRegion(newsearch2);9、创建PageLoad型的DynamicActionName:

page_load_set_date;ConditionType:

DynamicActoinNotconditionalWhenEvent:

PageLoadWhenConditionNoConditionTrueActions:

SetValueSetValue/Settings/SetType:

SQLStatementSetValue/Settings/SQLStatement:

selectsysdatefromdual;SetValue/AffectedElements/SelectionType:

Item(s)SetValue/AffectedElements/Item(s):

DATA2.4.Report常用增删改通常在APEX中对于记录的增删改是通过链接到新的页面去实现单条数据的更改。

本节主要介绍如何在一个TabularForm中不链接实现多行数据的增删改和客户化逻辑。

APEX的TablularForm开发类似于EBSForm开发,也是基于视图去开发。

下面实例开发一个Form,当更改用户的class_name与login_name时,更新用户的login_name,然后在另一张表校验class_name是否存在,若不存在报错,若存在则把当前勾选的记录插入另一张表jjl_test31、数据库中先创建APEX页面的TabularForm的View,同时创建一个APEX页面并创建TabularForm2、createtablejjl_class(class_idnumber,class_namevarchar2(50));createorreplaceviewjjl_class_test2asSELECTjt.user_id,jt.resp_id,jt.resp_appl_id,jt.login_name,jc.class_nameFROMjjl_test2jt,jjl_classjcWHEREjc.class_id=jt.class_id;3、配置页面TabularForm数据源4、创建一个RegionButton:

ApplyChange5、为ApplyChange创建Process:

6、运行效果如图:

当class_name不存在于jjl_class表中时当输入的classname存在时,运行的效果与结果如图:

把BBB更改为DDD点击ApplyChange后2.5.文件上传下载真是麻雀虽小,五脏俱全,上传下载在Apex里的实现是非常easy.下面的例子实现文件上至数据库--Createtable1、createtableJJL_FILE(idNUMBER,file_nmaeVARCHAR2(50),file_memetypeVARCHAR2(50),file_blobBLOB,file_commentsVARCHAR2(200),file_charsetVARCHAR2(20),last_update_dateDATE)2、创建Page:

updownloadfile,在该page中创建html区域:

uploadfile由于数据文件是上传至数据库表,需要在页面上传文件之前,可以在加载完head后去表里FetchRowfromjjl_file,然后在页面上创建相应的hidden项与表jjl_file中相字段相应。

就像在pl/sql中要往表里插一行记录时,可以先定义该表的Rowtype类型的变量,然后再做赋值与Commit;创建相应的regionitem,type:

hidden分别为p_file_id,p_file_name,p_file_charset,p_file_memetype创建processes:

fetchrowfromjjl_file;上图中的tablename要大写.双击之前hidden项,配置每项的Source属性,保持与jjl_file的列名一致。

如P_FILE_ID对应JJL_FILE中的ID。

展开阅读全文
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2