ADF新手入门_应用程序样例
ADF检验

继续讨论:
对GDP的一阶差分进行检验
在10%的显著性水平下,单位根检验的临界值为 -3.2602,上述检验统计量值-3.62511小于相应DW临界值, 从而拒绝H0,表明我国1978——2003年D(GDP)序 列是平稳序列.
年度数据一般选择1或2年,月度数据一般选择6个月、12个月或者18个月, 季度数据一般4或者8。
ˆ ˆ ˆ
ˆ ˆ ˆ ... 0.786011
或
在1%、5%、10%三个显著性水平下,单位根检验的临界值分
别为- 4.4167、-3.6219、-3.2474,显然,上述
检验统计量值大于
相应DW临界值,从而接受 H 0 ,表明我国1978——2003年度GDP 序列存在单位根,是非平稳序列。
GDP序列,检验其是否为平稳序列。
方法1: 用时序图判断
由GDP的时序图初步判断序列是不平稳的(可以看出该序列可能 存在趋势项,若需用ADF检验则选择第三种模型进行检验)。
方法2: 用自相关系数图判断
中国GDP时间序列的自相关系数不是很快地(如滞后期K=2,3
趋于零,即缓慢下降,再次表明序列是非平稳的.
• 我们老师说样本较大时,选用bic ,较小 时用aic • 先找出最小的AIC和SIC(不是绝对值), 在此基础上看ADF检验是否通过,即判 断是否是平稳序列。 • 我一般是根据VAR模型的最优滞后阶 数-1作为协整的最优滞后阶数
• 根据赤池信息准则或舒瓦茨信息准则 • adf检验是在残差存在自相关时用的,滞 后阶数可以根据序列自相关和偏自相关 图确定
• 单位根是否应该包括常数项和趋势项可 以通过观察序列图确定,通过Quickgraph-line操作观察你的数据,若数据随 时间变化有明显的上升或下降趋势,则 有趋势项,若围绕0值上下波动,则没有 趋势项;其二,关于是否包括常数项有 两种观点,一种是其截距为非零值,则 取常数项,另一种是序列均值不为零则 取常数项。
ADF 入门第一步系列

用一种初学者的思维来介绍ADF,一步一步地深入下去,有助于正确地认识ADF和使用ADF。
可能在开始学习时有些迷惑,一个一个问题的来解决,由易到难。
思维的方式是:是什么--->为什么--->做什么---->怎么做,逐步来分析和学习。
一、什么是ADFADF 的全称是 Application Development Framework,任何东西把握了它的含义,其实也理解了一半的东西,从英语的翻译来看,它是一种应用程序开发的框架,有一个关键词是Framework,这个对于软件开发人员来讲是不陌生的,如果有Spring或者学习其它开源框架的人来讲,更容易了,换言之ADF是一种框架,有助于开发人员更好的开发软件。
至于它有什么样的特点,后面随着学习的深入,相信有一定的了解。
现在你只需要了解ADF只是一种框架,它用于软件开发。
二、再进一步了解ADF上面的解答或许你不满意,那么我们再进一步来讨论下ADF的话题,在讨论这之前,有必须提一下MVC(model--view---controller),这个其实也不难理解,主要是解决软件开发过程的耦合性、重用性、可维护性等。
现在可以告诉你的是ADF遵循MVC的设计原则,那么你现在需要掌握的是ADF的结构是什么,对应于MVC的各个部分又是什么,这样对于整个结构图而言是十分有用的。
直接给oralce官方的图。
Destop现在你不需要了解,直接从Browser-Base来看,大部分的软件现在是WEB的,它的view是JSF,ADF Mobile现在也跳过,现在很简单了,View就是展示给用户的,在web中就是页面。
用户不光要浏览页面,也需要操作页面,Ok,问题来了,为了解耦,有一层是控制层,把JSF跳过,剩下ADF Controller,在ADF中控制层主要使用Task Flow,这也很好理解,非常类似Struts,确认好初始页面要到哪个目的地去,很简单吧,就是定义导航的规则,按照这个规则进行相应的跳转。
ADF框架介绍

5
Oracle ADF分为以下四层: 分为以下四层: 分为以下四层 业务服务层( 业务服务层(Business Services) ) 提供对不同的源的数据访问, 提供对不同的源的数据访问,处理 业务逻辑 模型层( 模型层(Model) ) 提供业务服务层之上的抽象层, 提供业务服务层之上的抽象层,使 视图和控制器层能以一致的方式与 不同实现的业务服务层共同工作 视图层( 视图层(View) ) 处理应用的用户界面 控制器层( 控制器层(Controller) ) 提供控制Web应用流程的机制 提供控制 应用流程的机制
9
控制器层管理应用的流程和响应用户的 事件。 事件。 Oracle ADF支持以下控制器: 支持以下控制器: 支持以下控制器
ADF Controller JSF Struts
Oracle ADF Controller提供 提供Task flow 提供 减小了应用流程的颗粒度, 减小了应用流程的颗粒度,并支持流程 重用, 重用,还支持流程中的非可视组件使用 如方法调用),以及将task flow创建 ),以及将 (如方法调用),以及将 创建 成页面中的一个region的功能。 的功能。 成页面中的一个 的功能
25
ADF用户界面
26
• Page – Web页面,JDeveloper可以创建 页面, 可以创建JSF页面 页面(*.jsp)和ADF Faces 页面 可以创建 页面 和 页面(*.jspx) 页面 • Page Fragment – 提供简单的方法重用页面内容 • Page Template – 能被 能被pages和page fragments重用的模板 和 重用的模板 • Region – 类似于 类似于portlet功能,将task flow嵌入页面中 功能, 功能 嵌入页面中 • ADF Rich Client控件 – 用来构成 控件 用来构成page或page fragment的元素 或 的元素 • Declarative Component – 基于现有控件来创建新的可重用控件
ADF软件初学者使用指南

ADF软件初学者使用指南一、安装运行ADF客户端软件1.用户下载ADF客户端软件,即ADF应用模型设置、前处理、结果分析软件。
2.下载地址:中国矿业大学主页之现代分析与计算中心网站,注册后,常用下载栏目之“ADF客户端软件之windows (32-bit)”3.在用户的PC机的windows操作系统中安装下载的ADF客户端软件:adf2012_windows.exe4.安装license许可:将license.txt文件放入ADF的安装目录(ADF2012版即adf2012.01目录中)。
5.运行ADF客户端软件:如果正常,则会出现ADF的图形界面。
如果你的这台计算机没有被收录在license许可里,软件会出现如下图,请其中最后二行的内容并发送至662@,软件管理员将回复用户一个新license文件。
二、在ADF客户端软件进行前处理工作1.建立模型设置参数等,保存,会产生一个${JOBNAME}.run文件。
如示例AgI_asoexcit.run2.编辑作业脚本:使用纯文本编辑软件(如记事本)编辑脚本文件,如示例adf_test.pbs。
可以做一个范本,以后要计算不同的任务的时候,只需拷贝到对应目录,稍作修改即可。
具体内容如下:#PBS -j oe#PBS -N M3_2x12_2012#PBS -q adf#PBS -l nodes=2:ppn=12###Apply for the use of two compute nodes, each node of 12 nuclear#PBS -Vcd $PBS_O_WORKDIR### ---------------------------------------### PLEASE MODIFY YOUR JOBNAME### ---------------------------------------JOBNAME=AgI_asoexcit###The name of the job, corresponding to the ‘*’ of *.run### ---------------------------------------### BEGINNING OF EXECUTION### ---------------------------------------export ADFHOME=/public/software/adf2012.01###The root directory of ADFexport SCMLICENSE=$ADFHOME/license.txt###The path of ADF license fileexport SCM_TMPDIR=/public/home/test/adf_tmpe### Make sure you have right to write into this directory. ADF will generate scratch in this ###directory, for this reason, you’d better cleanthis directory termly.export ADFBIN=$ADFHOME/bin###Directory for ADF executable filesexport ADFRESOURCES=$ADFHOME/atomicdata###Basis file and force field file directoryexport PATH=$ADFBIN:$PATH###Add adf executable file derectory into PA THNP=`cat $PBS_NODEFILE|wc -l`###PBS finds appropriate nodes from nodes list to run this job/public/home/test/test/${JOBNAME}.run > ${JOBNAME}.out###${JOBNAME}.run is generated by ADFinput, while ${JOBNAME}.out is output of this job in ###text format. logfile will be generated automatically. After you submit this job, type tail –f ###logfile, you can monitor the task.注意:其中红色字的内容,用户自己根据自己不同的作业修改为相应的内容。
基于Oracle-ADF的应用程序开发

摘要:介绍了ADF的特点和结构,描述了使用ADF开发J2EE应用程序的过程。
关键词:ADF ORACLE J2EE MVCADF简介ADF(Application Development Framework)是Oracle公司为简化J2EE 程序开发的复杂性专门开发的一种解决方案,ADF通过减少实现设计模式和应用程序框架的代码量,简化了J2EE的研发难度。
其优点主要体现在以下四个方面:(1) 开发环境:大部分J2EE框架都没有与之配套的开发工具,ORACLE为ADF提供了JDEVELOPER开发工具,它和ADF实现了完美的结合,方便了程序的开发。
(2) 平台独立:ADF能够运行在任何符合J2EE标准的应用服务器上。
(3) 技术选择:对于应用程序的不同层,开发人员可以使用自己擅长的技术进行开发。
(4) 端到端的解决方案:ADF不只关注应用程序的某一层,而是对应用程序的每一层,都提供了完整的解决方案。
Oracle ADF的架构Oracle ADF的架构是基于MVC设计模式的,其架构如图1所示。
从图1我们可以看出,ADF把应用程序分成了四层,下面我们分别介绍:1)Business Service 层Business Service 层包括三个小层(见图1),分别是持久层(Persistent Business Objects),数据访问层(Data Access)和接口层(ADF Application Module)。
这三层建立的顺序是这样的,先建立持久层的实体对象(Entity Object),然后建立数据访问层的视图对象(ViewObject),最后建立接口层。
其中建立持久层的实体对象主要是和数据库的表或者同义词对象建立关联,数据访问层的视图对象(ViewObject)是基于实体层的实体对象建立的,主要是进行数据库的访问,而接口层是整个Business Service 层和Model层的接口,在数据访问层建立的视图对象需要注册到接口层中,这样在Model层中才可以访问。
ADF2009培训讲义-3

附录II:操作指南Tutorial1:乙烯的激发能量1、构建乙烯分子,并对构型做初步优化;2、填写Title,选择预置方案“Geometry Optimization”,其它参数不变;保存,运行;3、新建文档,从上一步的t21文件中导入原子坐标;4、在‘Main Option’里填写Title,选择预置方案“Single Point”;5、在‘Excitations,CD’选择激发类型为“Singlet and Triplet”,其它参数不变;保存,运行;6、打开ADFlevels,观察HOMO和LUMO轨道;在ADFspectra里观察激发谱,以及跃迁发生于哪两个轨道之间;7、转到ADFview,打开t41文件,添加等势面,从Transition Density选择1B3U Fitdensity,修改等势面值为0.003;8、转到ADFbob,点击菜单'Response Properties'->'Excitations Energies (Davidson)',浏览数据;Tutorial2:乙醇分子的构型优化1、启动ADFjobs,建立一个文件夹,然后启动ADFinput;2、构建乙醇分子C2H5OH,并做初步的构型优化;3、鼠标控制如下:选择左键单击旋转左键拖动在当前平面旋转Ctr-左键拖动平移Alt-左键拖动,或者中键拖动选区Shift-左键拖动快捷菜单右键单击放大/缩小右键拖动(鼠标放在所选原子上拖动,平移和旋转只针对所选原子) 4、常用快捷键:选择所有原子Ctr-a选择原子所在的整个分子Ctr-m选择与所选原子相连的原子Ctr-d删除所选原子Del或者Backspace取消上一步操作Ctr-z5、改变某个原子的种类:先选择元素工具,然后双击目标原子;6、改变某个键的种类:先选择键,然后用修改工具更改;7、根据个人习惯定义元素的颜色,并保存为默认设置;8、修改结构参数:键长、键角以及二面角;利用Coordinates面板直接修改原子坐标;9、准备优化构型:选择预设的“Geometry Optimization”;10、选择SCF后的XC方式为“LDA+GGA+METAGGA”;为了缩短演示时间,修改基组为“SZ”,积分精度为“3.0”;11、保存,运行;12、计算结束后用ADFBob观察数据,用ADFMovie观察优化过程,用ADFlevels观察能级;13、用ADFview观察轨道和等势面;Tutorial3:乙烷分子的振动频率1、启动ADFjobs,新建文件夹,转到ADFinput;2、构建乙烷分子,并优化构型;3、新建文档,从上一步计算的t21文件中导入优化好的分子构型;4、选择预置方案'Frequencies',其它参数不变,保存,运行;5、转到ADFspectra,观察所得IR谱图,以及某个频率所对应的振动模式;导出谱图数据为x-y格式;Tutorial4:构建分子的技巧a)基本操作a1、打开ADFinput,显示坐标轴,先画一个甲烷分子;a2、从Structure Tool中选择“Alkyl Chains/Methyl”,替换图中某一个氢原子(双击),得到乙烷分子;a3、选择O,替换图中某一个氢原子;接着从Structure Tool中选择乙基,点在氧原子附近,此时其中CH2上的碳原子会处于被选择状态;a4、Shift-单击氧原子将其也选上,Ctr-l成键并预优化,得到乙醚分子;b)构建肽链b1、删除全部原子;从Structure Tool中选择“Amino Acids/AA Backbone”,画一个短肽链;b2、按空格键,选择上次用的工具(AA Backbone),延长肽链;Reset View;c)构建配合物c1、删除全部原子;从Structure Tool中选择“Metal Complexs/ML6 Octahedral”,画一个六配位的正八面体;c2、右键选择图中所有六个虚原子(Xx),右键添加配体“Ligands/CN”,将虚原子全部替换;d)构建多齿配合物d1、删除全部原子;放置一个Fe原子,从Structure Tool中选择“Ligands/Bidentates/Ethylenediamine”,双击Fe原子,构建双齿配位;d2、按空格键,选择上次用的工具,双击Fe原子,构建四齿配位;d3、调整两个平面的角度:依次从图中选择两个N原子、Fe原子、另两个N原子,分别修改为0度、60度、90度,观察效果;e)预定义茂环配体e1、删除全部原子;设置视角为“Along Z-axes”,从Structure Tool中选择咪唑环贴上,将其改为茂环;e2、在环中间添加一个虚原子(Xx),分别与5个C原子分别连接成键,然后修改虚原子的坐标使其离茂环平面约2埃;H-C-Xx x e3、利用点群工具定义体系对称性为C5v,选择虚原子定义C5轴,选择H-C-X 三个原子定义垂直对称面,点击Symmetrize使体系对称;e4、设置虚原子为原点,保存.adf文件并复制到$SCM_STRUCTURES所在的目录下;关闭ADFinput然后重新打开,调用茂环构建二茂铁;(如果预定义结构中定义的连接原子是虚原子,当双击图中原子时将用现有原子替换虚原子;)Tutorial5:TlH自旋轨道耦合1、构建TlH分子,设定键长为1.87埃(实验值);2、设定体系对称性为“Clin”(C∞v),同时选定两个原子设为“C axes”,点击Symmertrize调整坐标;3、同时选定两个原子,右键菜单“New Fragment...”,输入碎片名称为“TlH_SR”;4、在‘Main Options’面板设置参数如下:Preset:'FragmentAnalysis'XC potential in SCF:'GGA-BP'Relativity:'Spin-Orbit'Basis set:'TZ2P'Core Type:'None'5、保存后点击“Preset”右侧的“...”打开“Task:FragmentAnalysis”面板,点击“Open”检查计算碎片时的参数;6、刚才保存的时候生成两个.run文件;点击菜单运行,将会先后出现两个“logfile”窗口;7、转到ADFlevels,观察纵坐标(-0.7,-0.5)范围内的耦合情况,然后再打开“TlH_SO.TlH_SR.t21”观察(HOMO-4,LUMO+4)范围;8、转到ADFview,设置Grid为Fine,添加“Spinor:spin magnetization density”,观察轨道“SCF_J1/2:122:1.0”;9、添加“Isosurface:Double”,观察轨道“SCF_J1/2:118:1.0”;同时也观察这个轨道的旋量(Spinor);Tutorial6:1、启动ADFjobs,新建文件夹,启动BANDinput;2、在设置面板里选择“Coordinates”,将periodicity设置为“Bulk”;3、取消多晶格视图;4、设置三个向量,分别为(0,2.75,2.75),(2.75,0,2.75),(2.75,2.75,0);5、添加一个Na原子,并将其置于原点处;6、添加一个Cl原子,将其座标改为(2.75,2.75,2.75);7、修改Cl原子的颜色,打开多晶格视图;8、填写Title,保存,运行;9、打开Band Structure观察计算结果;10、打开ADFview,观察轨道和形变密度(deformation density);11、打开ADFbob,检查Hirshfeld电荷;Tutorial7:a1、新建文档,选择“Coordinates”面板,设置编辑模式为Builder;a2、设置Bravais lattice为“Soldium Chloride”,元素分别为Na和Cl,晶格参数为5.64,构建晶体;观察原子坐标;b1、设置periodicity为“Slab”,进入Builder模式;b2、设置Bravais lattice为“Face-Centered Cubic”,元素为Cu,晶格参数3.61,Miller indices为(1,1,1),厚度为3;b3、构建晶体,观察原子坐标,取消透视后分别从三个轴向观察体系结构;b4、在Super cell栏选择预置参数“sqrt(3)×sqrt(3)”,重新构建晶体,分别从三个轴向观察体系;Tutorial8:碎片分析a1、构建Ni(CO)4,并作构型优化;a2、新建文档,导入优化后的构型,将Ni原子和四个CO分别定义成碎片,选择预置方案“Fragment Analysis”;保存,运行;a3、打开ADFlevels检查碎片之间的轨道相互作用;b1、构建PtCl4H2(2-),并作构型优化;在“main options”设置计算参数如下,然后保存,运行;Preset:'Geometry Optimization'Total charge:-2Relativity:Scalarb2、删掉当前图中分子,导入优化好的构型,分别定义PtCl4和H2为碎片,并在“Task:FragmentAnalysis”的选项中设置PtCl4的电荷为-2;b3、预置方案改为“Fragment Analysis”;另存,运行;b4、打开ADFlevels检查碎片之间的轨道相互作用;为了计算H2片段时未曾考虑体系所带负电荷,需要将H2的能级整体上调0.28(hatree);附录III:ADF远程提交任务的配置ADF支持Client-Server模式,可以在本地widows上建模,然后通过ssh连接提交到远程Linux 服务器上进行计算。
Oracle ADF例子

Oracle ADF应用开发实例本文档主要完成以下工作:1. jdeveloper连接数据库。
2. 使用ADF BC建立和定制数据模型,编辑数据模型的字段属性,为字段添加约束,添加临时字段。
根据数据模型生成业务模型。
3. 用JSF工具建立JSP页面,并将业务模型与JSP绑定。
1. Jdeveloper连接数据库1.1 启动jdeveloper找到Jdeveloper的安装目录,双击jdeveloper.exe。
角色选择Default Role即可,点击OK 按钮进入到jdeveloper工作台。
1.2 新建应用单击New Application连接,弹出创建应用的对话框,输入应用名称Application Name 为DBModeling,选择Application Template为Generic Application。
点击Next,Project Name中输入Model,在Project Technologies--Available选项卡中选择Database(offline)单击图标,点击Finish结束。
1.3 连接数据库在Application Resources面板中,右击Connection,从New Connection中选择Database 选项,弹出数据库连接配置的对话框,设置连接数据库的各项参数后点击Test Connection 按钮进行测试,如果成功会显示success!字样,成功后点击OK。
2. 建立数据模型、业务模型2.1 根据数据表生成数据模型右击model,点击New,弹出New Gallery对话框。
在Categories中选择ADF Bussiness Components,并在右侧Items中选择Bussiness Components from Tables,点击OK。
在Entity Objects对话框中,package处填写model.entities,Schema选择FOD,点击Auto-Query复选框,将自动查询数据库FOD中的表显示在Available栏的左侧,我们选择orders和order_items两个表添加到右侧,点击Next。
ADF500W 系列电源模块 应用指导书说明书

ADF500W 系列电源模块应用指导书文档版本 02 发布日期2015-11-30华为技术有限公司版权所有© 华为技术有限公司2015。
保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
商标声明和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。
除非合同另有约定,华为公司对本文档内容不做任何明示或默示的声明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。
除非另有约定,本文档仅作为使用指导,本文档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
华为技术有限公司地址:深圳市龙岗区坂田华为总部办公楼邮编:518129网址:客户服务邮箱:******************客户服务电话:4008302118前言概述本文档详细的描述了ADF500W系列的原理、使用方法以及具体的操作指导,同时提供了常见的问题解答及故障处理方法。
读者对象本文档主要适用于以下工程师:●硬件工程师●软件工程师●系统工程师●技术支持工程师符号约定在本文中可能出现下列标志,它们所代表的含义如下。
修改记录修改记录累积了每次文档更新的说明。
最新版本的文档包含以前所有文档版本的更新内容。
文档版本02(2015-11-28)增加滤波电路文档版本01(2015-09-28)第一次正式发布应用指导书目录目录前言 (ii)1 概述 (1)2 模块结构........................................................................................................ 错误!未定义书签。
2.1 结构图 (3)2.2 引脚说明 (5)3 模块时序 (8)3.1 开机时序特性 (8)3.2 关机时序特性 (9)3.3 停机、待机、保护及恢复特性 (10)4 推荐电路 (13)4.1 ADF10S48B推荐电路 (13)4.1.1 输入滤波电路 (14)4.1.2 防护电路 (14)4.1.3 PFC母线电路 (15)4.1.4 输出滤波电路 (17)4.2 ADF18S28B推荐电路 (19)4.2.1 输入滤波电路 (19)4.2.2 防护电路 (20)4.2.3 PFC母线电路 (21)4.2.4 输出滤波电路 (22)4.3 ADF42S12B-A推荐电路 (24)4.3.1 输入滤波电路 (24)4.3.2 防护电路 (25)4.3.3 PFC母线电路 (26)4.3.4 输出滤波电路 (27)4.4 并机运行推荐电路 (28)5 热评估和散热器选择 (30)6 故障处理 (32)1 概述ADF500W系列全砖电源模块包含三款产品,输出电压涵盖48V、28V和12V,输出功率500W,输出效率高;支持宽范围交直流输入,支持贴壳和散热器散热,支持多模块并机,并具备PMBus通信及相关保护功能,浪涌防护满足IEC/EN61000-4-5标准。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ADF应用程序样例本文档写的内容基础,大侠勿批,新手勿嫌,专门针对不想看英文文档的筒子们在开始写样例之前,先简单的了解一些ADF框架的基本知识ADF框架简要说明一、ADF的架构ADF也是用的MVC的分层模式,如下图所示:Model层代理数据服务将数据关联在View层,用户则是在View层的UI界面上的操作来更改Model层代理的数据,Controller控制层执行用户的输入和控制页面的导航, business service则是负责处理数据访问和封装业务逻辑。
下面为详细图解:二、ADF的业务组件(ADF BC)1.Entity object(EO)EO代表了数据库表中的一行,它简化了你通过DML来处理的数据操作,EO是允许重复在项目中使用的。
2.View object(VO)VO就是单纯的操作通过SQL查询出来结果集,你可以在里面使用所有的SQL语言,如果想通过对VO的操作来影响数据库的话,则VO必须关联EO。
3.Application module(AM)简单的说AM就是VO或者可能是其它AM的容器,也管理事务。
通过AM可以拿到已经关联上的VO的实例。
ADF应用实例下面通过写一个简单的样例应用,来理解ADF框架。
1.File→new→General→Applications→Fusion Web Application(ADF)2.Application 名称3.模型层工程4.设置model层默认包名5.设置viewController名称及默认包名6.这时,我们可以在工程结构图中看到如下图所示的一个ADF应用Adfc-config.xml可用于注册manageBean及管理无界界面流,现在不理解不要紧,后面会有说明的。
7.应用已经搭建起来了,接下来要做的则是创建应用的ADF BC(业务组件)了。
8.选择ADF Business Components Business Components from Tables9.接下来便弹出创建Business Components的向导,点击“+”10.创建一个数据库连接11.选择刚刚创建的数据库连接,点击OK12.进入创建EO对话框,修改包名,点击Query查询出数据库中所有的table,然后选择Dept及Emp两张表,点击“>”将两张表拖至右边。
13.可以修改对应EO的名称,我在相应EO后面加上了EO字样。
14.进入创建可更改VO页面,修改包名,将两个EO点击“>>”选择上15.修改VO的名称16.此为创建只读VO界面,我们在这先不做详细介绍,直接next17.创建AM18.此为生成对应的业务组件设计图,在此也不做详细介绍19.在此页面可以检查相关的将要创建的业务组件信息,然后点击finish.并且在DataControls里头也显示了相应的VO。
21.现在我们就基于DemoApp来做几个最简单的增,删,改,查。
做这些操作则是都使用ADF已经给我们提供好的一些操作及方法,这些方法都在Data Controls中的VO中22.创建一个JSPX页面,这里简单提一下,jsff和jspx页面都是ADF框架基于jsf页面的拓展页面23.对新创建的页面进行命名,然后将*.jspx左侧的复选框选择上24.简单分析一下TestDemoPage1.jspx如上图所示,一个jspx页面必须包含root\view\document \form等标签25.我们将Data Controls中的DeptVO1拖入至页面中,创建一个ADF Table26.创建ADF Table选项27.点击OK后,我们将会看到,页面上自动生成了<af:table>标签及里面有对应的<af:clumn>等标签,而且在对应的viewController工程的默认包下自动生成了DataBindings.cpx文件及在pageDefs包下生成了对应TestDemoPage1.jspx对应的页面定义文件28.到现在为止,我们做的应用可以说已经告一小段落了,我们运行一下TestDemoPage1.jspx页面看看效果。
29.你可以发现,现在的VO仅仅支持查询及修改功能,接下来我们给他添加上添加及修改的功能,将button拖放到页面30.将button改名为创建,然后将DeptVO1中option目录下的createInsert方法拖放至button上31.代码便自动生成为下图所示32.创建功能至此就完成了,从右边的组件面板中再拖一个commandButton至创建按钮的下方,改名为删除。
33.将DeptVO1中的删除功能拖放至删除按扭中34.点击OK,则会出现如下代码,然后我们再次运行TestDemoPage1.jspx35.可看到运行效果图示如下,当我们点击创建按钮的时候,会在选择中那一行的上方,创建一条空记录,并且将空记录也变成了选择中的状态,然后我们便可以在其中输入需要的数据了。
36.然后我们再选择Deptno为99的那一行,再点击删除按钮37.会发现数据则被删除了,这时,其实存在着一个问题,你可以去数据库中查询对应的Dept表,在这里顺便讲一下在Jdeveloper中怎么连接数据库和操作数据库,在Jdeveloper 中使用DataBase Navigator进行查看38.打开后能在这看到所有应用程序的数据库连接39.打开连接,会多一个名为DemoApp的文件,在这文件里你可以书写任何SQL语句40.我们这只查看Dept表中的数据,可以在以上文件中写SQL,也可以双击Dept表,我们会发现,Dept表中并没有我们刚才加入的Deptno为21的数据,并且Deptno为99的数据还存在于数据库中。
造成这个问题的原因很简单,那是因为我们刚才的那些对DeptVO1的操作都还只是存在于缓存当中,并还未真正将事务提交,所以数据未持久化到数据库中。
41.解决这个问题的办法很简单,我们只需要通过AM将事务提交则可。
创建提交按钮,将AM下Operations下的commit操作与按钮关联42.代码如下图所示:43.再次运行TestDemoPage1.jspx页面,在没进行任何操作之前,我们会发现提交按钮是灰色的44.现在我们将Deptno为99的记录删除,删除后发现提交按钮变为可操作按钮了:45.点击提交按钮,再查看数据库,我们会发现Deptno为99号的则没有了46.至此,一个最简单基本的增、删、改查的最简单样例了。
我们会发现,一点代码都没写,就完成了,是不是会觉得ADF功能封装的强大,只是简单的拖拖拽拽就完成了对数据库表的基本操作。
47.接下来我们再以代码的形式写一个用户登陆样例,首选分别创建login.jspx及error.jspx两个页面48.然后打开login.jspx页面,开始制作一个简单的登入页面,分别拖入页面两个<inputText>,并将其label属性改成用户名及密码,再拖入一个Button作为登入按钮,改名为登入49.这样的话登入页面的前台显示的内容就简单的完成了,再看error.jspx页面,我们就加入一个简单的outputText来显示一条信息50.然后将其value改成相应内容,并设置这个组件的inlinStyle属性为显示红色51.然后我们打开pageFlows目录下的adfc-config文件52.将login.jspx,error.jspx和TestDemoPage1.jspx都拖入adfc-config文件中53.然后再使用Control flow case将login.jspx与error.jspx连接起来,54.再将login.jspx与TestDemoPage1.jspx连接起来55.在ADF中,我们叫在adfc-config文件中的jspx页面的导航为无界限的界面流,一个项目中有且只有一个。
后面会常用的task flow内的页面导航则称为有界限的界面流,在项目中允许出现多个,并且是允许重复利用的。
在这先不作详细介绍。
56.接下来我们再打开login.jspx,将鼠标光标点在commandButton代码中的任意一个位置,再看中对应commandButton的action属性,填入success57.运行login.jspx页面,查看效果,当我们点击登入的时候,页面将会跳转到TestDemoPage1.jspx页面中58.当然,这是最简单的一个页面跳转的例子,真正的登入页面是不可能这么简单的,我们需要给页面加入用户验证,加入用户的登入验证功能则是需要在java代码中做一些简单的业务逻辑处理了,那如何让页面与java代码进行关联上呢,这里则需要引入一个managebean的概念了,首先我们得先了解,什么是managebean,59.参考链接:http://218.57.204.54:81/forum.php?mod=viewthread&tid=11&extra=page%3D160.了解了相关managebean的概念后,我们便开始创建对应jspx页面的managebean吧,首先我们需要创建一个java类,名为LoginBean61.如果不修改包名的话则java类是生成在默认包下的62.此时java类只是一个单纯的java类,并未将其注册进入adfc-config文件中,只有将其注册到adfc-config文件后,他才是一个managebean,注册managebean的话需要先打开adfc-config文件的overview视图状态,再选择managebean标签属性63.点击添加按钮后输入相应注册managebean的信息第一列为给managebean命名,第二列则是指定managebean的类,第三列则为managebean的作用域,相关managebean作用域的参考资料可以查看如下网站,http://218.57.204.54:81/forum.php?mod=viewthread&tid=18&extra=page%3D1或者参考官方说明文档,64.只要managebean在adfc-config文件中注册成功之后,我们在页面中便可以任意使用了,首先我们先将login页面,将两个输入框进行组件邦定,就是将login页面中的两个输入框分别邦定在managebean中,即与managebean中的属性关联上,65.我们会发现,用户名的input框中的binding属性出现了如图所示效果#{ername}viewScope是指managebean的作用域,loginBean是managebean的名称,username则是我们刚才创建的input框对应在managebean中的属性,由此我们可以知道,在managebean中肯定是创建了一个叫做username的属性,66.我们可以打开loginBean对应的java类进行查看,可以看到多了username的属性及对应的get/set方法,并且类型为RichInputText67.同理将密码input框也进行组件邦定至loginbean中68.我们可以看到LoginBean中也多了相应的password属性,类型同样为RichInputText69.原来我们是让点击登入按钮的时候直接通过action跳转到TestDemoPage1.jspx页面的,现在我们则是需要在其跳转之前做一个用户的登入验证,解决方案则是将action与managebean进行相应的方法邦定,70.操作完成后,则会发现登入按钮的action属性也自动生成了与loginBean的一个方法邦定的EL表达式下图则为在loginBean中自动生成的登入方法(当然,注释是我加的)71.我发会发现,此方法是会有返回值的,刚开始我们也是直接在action属性中写success便可以使得页面流转,所以说,这里便可以让我们通过返回值,来控制页面的流转72.首先,我们得得到用户输入的信息,也就是前台页面中用户名及密码输入框中的值,拿值其实很简单,直接通过我们之前与前台页面所邦定的input框在managebean中的属性中,就已经提供了拿值的方法,如下图所示,73.我们现在再将项目重新运行一下,74.点击登入,我们会发现在控制台里打印出了用户名及密码75.现在我们能得到用户所输入的值了,接下来便是需要做相应的登入验证了,我们便以emp表中的数据作为用户的登入信息,以ename为用户名,job为密码。