OAFCRUD开发.docx
《OAFCRUD开发.docx》由会员分享,可在线阅读,更多相关《OAFCRUD开发.docx(86页珍藏版)》请在冰豆网上搜索。
OAFCRUD开发
OAFramework基于MVC设计模式
浏览器发送HTTP请求到控制器,控制器响应浏览器端输入,创建并设置模型,当模型发生变化时,视图得到通知,刷新界面显示。
OAFramework应用开发结构
1、应用模块拥有视图对象(数据)
2、根应用模块拥有事务对象(调用存储过程)
3、页面的pageLayout拥有根应用模块
4、业务组件重用,各层调用关系Client->AM->VO->EO
OAFramework开发步骤
1、创建业务组件
1)业务组件包
2)实体对象(实体关联)
3)基于实体对象(或SQL)建立视图对象(视图连接)
4)应用模块对象,把视图对象实例添加到应用模块中
2、以声明方式定义页面(Region和Item)
3、为需要的Region设置控制器类
4、编写应用模块代码和控制器类代码
配置开发环境
1、解压缩JavaDeveloper10OAExtension压缩文件至硬盘目录(解压目录不要包含空格和中文)。
2、添加系统环境变量JDEV_USER_HOME,指定一个目录,此目录作为程序开发和本机运行时的主目录,如下图所示,从图中可以看出,第一步文件的解压目录为D:
\Oracle\JDeveloper。
3、从服务器下载dbc文件,dbc文件放在JDEV_USER_HOME指定路径的子目录下,dbc文件必须放在secure目录下。
(即D:
\Oracle\JDeveloper\jdevhome\jdev\dbc_files\secure)
4、在jdevbin(D:
\Oracle\JDeveloper\jdevbin)中找到jdeveloper.exe文件,点击右键建立桌面快捷键,双击jdeveloper桌面快捷键。
5、创建(或打开)项目。
6、使用jdeveloper建立数据库连接,用于设计时访问数据库。
7、测试连接。
建立连接和测试连接
1、选择File>New打开新建对话框,选择General>Connections>DatabaseConnection,如图:
2、点击确定,跳过欢迎页面,进入下图界面,修改ConnectionName,如图:
3、下一步,输入数据库的用户名,密码,如图:
4、下一步,输入数据库IP地址,端口号,数据库名称,如图:
5、下一步,点击TestConnection,如果在Status输出文本框中输出Success!
,即为连接成功。
如图:
*项目程序包整体结构
oracle.apps.应用产品简称.功能简称(业务简称(notice))
(eg:
inv库存管理系统,oracle.apps.inv.notice)
包路径
说明
命名规则
oracle.apps.inv.notice.server
项目的私有组件所在包,包含:
AM应用模板,VO视图对象,VL视图连接。
AM:
XxAM
VO:
XxVO
VL:
XxVL
oracle.apps.inv.notice.webui
项目的私有页面PG,控制器(CO)所在包
BbPG
页面名称+CO
oracle.apps.inv.schema.server
实体对象EO和实体联系对象AO所在的包。
(公用部分)
EO:
XxEO
AO:
XxAO
oracle.apps.inv.lov.server
值列表(listofValues)LOV视图,LOV应用模板AM,LOV的Java控制文件。
(公用部分)
XxLOVVO
XxLOVAM
oracle.apps.inv.lov.webui
LOV页面(LOVRegion)
XxLovRN
oracle.apps.inv.poplist.server
poplist下拉框(MessageChoice)视图VO
XxListVO
在建立新增页面的前面,先建立一个查询页面,在查询页面添加一个新增按钮,点击新增按钮弹出新增页面。
创建OA工作台和OA项目
选择File>New打开新建对话框,如图:
从新建对话框中选择General>WorkspaceConfiguredforOracleApplications,确定,进入NewOracleApplicationsWorkspace窗口,输入文件名(工作台名称),并选择AddaNewOAProject,如图:
确定后进入OracleApplicationsProjectWizard对话框,第一步更改FileName和DefaultPackage分别为:
CRUDDemo和oracle.apps.ak.create。
第二步选择DatabaseConnection,选择开始建好的数据库连接(也可以自己重新新增一个数据库连接),如图:
第三步,指定DBC文件路径,Application用户名(sysadmin)和密码(sysadmin),如图:
点击完成按钮完成工程的创建。
设置项目的运行选项
选择CRUDDemo.jpr项目,右键>ProjectProperties进行选项设置。
选择OracleApplicatons>RunOptions设置页,选择OADeveloperMode和OADiagnostic项到SelectedOptions中。
在运行期间OADeveloperMode提供了额外的代码检测和标准检测;OADiagnostic使运行出来的页面顶部有全局按钮Diagnostics按钮,这个选项覆盖了其他几个对应的预制文件。
如图:
查询
1、创建根UI应用模块(AM)
为页面创建一个应用模块(AM),使其成为页面的根节点。
在导航栏中右键点击CRUDDemo.jpr,通过菜单选择New,在弹出的对话框中选择BusinessTier>ADFBusinessComponents>ApplicationModule,如图:
点击确定,跳过欢迎页,在Package中指定包名为:
oracle.apps.ak.create.server,在Name中指定AM名称为CreateAM,如图:
选择下一步到第四步Java页中选择GenerateJavaFile(s),点击下一步,完成。
如图:
2、为根应用模块(AM)启用钝化功能
钝化功能对所有的根UI应用模块(AM)使用,详细内容请参考OAFramworkDeveloper’sGruide。
从导航栏中选择CreateAM应用模块,右键从菜单中选择EditCreateAM(或者双击CreateAM),在弹出的对话框中选择CustomProperties节点:
在Name字段中输入RENETION_LEVEL,
在Value字段中输入MANAGE_STATE,
选择Add按钮增加,如图:
点击确定按钮,设置成功退出向导。
3、创建实体对象(EO)
为FWK_TBX_EMPLOYEES表创建一个实体对象(EO)
1)在导航栏中右键点击CRUDDemo.jpr,新建New弹出对话框,BusinessTier>ADFBusinessComponents>选择EntityObject,如图:
2)确定,跳过欢迎页面,在Name中输入EmployeesEO,设置Package为oracle.apps.ak.create.schema.server,选择DataBaseSchema为AK,在SchemaObject中输入AK.FWK_TBX_EMPLOYEES,如图:
3)选择下一步到第三步AttributeSettings,确保EmployeeId的PrimaryKey的复选框选中,不改变其他任何值。
4)选择下一步,在java页面中,为EntityObjectClass:
EmployeesEOImpl选择GenerateJavaFile选择框,在GenerateMethods区域选择Accessors、CreateMethod、RemoveMethod、ValidationMethod,点击ClassExtends按钮,确保基类为oracle.jbo.server.EntityImpl,如图:
5)选择下一步,在Generate页,确保GenerateDefaultViewObject选项框没有被选中,如图:
6)选择下一步,点击完成按钮创建EO。
7)选择EmployeesEO,双击,在弹出的对话框中,选择Tuning,勾选UseUpdateBatching,设置文本框值为100,如图:
4、创建视图对象EmployeeSumsVO(VO)
在导航栏中右键点击CRUDDemo.jpr,新建New弹出对话框,BusinessTier>ADFBusinessComponents>选择ViewObject,如图:
确定,跳过欢迎页,修改Package和Name,如图:
下一步,设置视图对应的EO,选择前面建立的实体EmployeesEO,添加到Selected中,如图:
点击下一步,选择用户所需要的字段,如图:
选择下一步到第七步Java页面,仅仅勾选ViewRowClass下的两个选项,如图:
点击下一步,完成按钮。
5、添加视图对象(VO)到根应用模块(AM)
选择CreateAM,双击弹出对话框,选择DataModel,选择新建的视图EmployeesSumVO到CreateAM下面,确定完成。
6、创建初始查询页面
简单查询
1.在导航栏中右键点击CRUDDemo.jpr,新建New弹出对话框,WebTier>OAComponents>选择Page,如图:
2.选择确定,在NewPage对话框中,输入Name和Package的值,如图:
选择确定,创建页面。
3.更改页面布局
1)在结构窗口中,选择EmployeesSumPG中的region1,设置其以下属性,如图:
属性
值
ID
PageLayoutRN
AMDefinition
oracle.apps.ak.create.server.CreateAM
WindowTitle
员工信息查询
Title
员工信息
2)在新增页面添加查找区域
选择PageLayout区域,点击右键“New>Region”,创建一个新的区域。
设置新创建区域的属性:
属性
值
ID
MainRN
RegionStyle:
Query
Construction
resultsBasedSearch
IncludeSimplePanel
True
IncludeViewsPanel
True
IncludeAdvancedPanel
True
3)添加查询结果表到MainRN
在结构窗口中选择MainRN区域,右键从上下文菜单中选择New>RegionUsingWizard,按下一步跳过欢迎页,在BC4JObjects页中,在ApplicationModules选择对应的AM下的视图。
如图:
下一步,在RegionProperties页中设置RegionID的值为EmployeesTable,RegionStyle的值为Table,如图:
下一步,在ViewAttributes中,选择查询表格中要显示的字段列,如图:
下一步,设置对应的列显示的名称以及字段控件类型(比如可以编辑输入或者不可编辑等),如图:
(这里是查询显示,因此所有列都设置为messageStyledText)
点击完成,完成表格的创建。
在页面中选择创建的表格EmployeesTable,设置其属性:
属性
值
Width
75%
Text:
员工列表
AdditionalText
员工列表
在界面上设置查询项,选择表格EmployeesTable中的需要设置查询的字段,设置其属性为:
这里设置EmployeeId和FullName为查询项。
(可以根据需要设置不同的查询列)
属性
值
SearchAllow
True
4.运行程序,界面如下:
运行错误解决办法
1、500InternalServerError
如果运行界面报如下错误,如图:
则需要配置如下:
在系统盘(C盘),目录“C:
\WINDOWS\system32\drivers\etc”下面找到文件hosts,复制粘贴到桌面,用记事本打开,添加Host信息。
其中,10.10.198.158为数据地址,为host地址,根据需要修改。
修改之后,保存,然后复制粘贴到之前的目录“C:
\WINDOWS\system32\drivers\etc”中,进行替换,再重新运行页面。
如图:
2、Youhaveinsufficientprivilegesforthecurrentoperation
如运行时报如下错误:
解决办法:
JDeveloper-tools-EmbeddedOC4JServerpreferences
弹出框中查看Startup中的属性设置,如图:
将其中的HostNameOrIpAddressUsedToRefertoEmbeddedOC4J选择为DefaultLocalIPAddress.
客户化查询
1、新增查询页面CustomSearchPG
1)选择工程CRUDDemo,右键>New>WebTier>OAComponents>Page,确定,弹出如图:
修改Name:
CustomSearchPG,选择(修改)包路径(Package):
oracle.apps.ak.create.webui。
2)选择CustomSearchPG,在结构窗口中修改region1的属性,如下:
属性
值
ID
PageLayoutRN
AMDefinition
oracle.apps.ak.create.server.CreateAM
WindowTitle
客户化查询
Title
客户化查询
3)页面中增加查询区域(Region)
选择PageLayoutRN区域,右键New>Region,新建查询区域,设置区域属性如下:
属性
值
ID
MainRN
RegionStyle
query
ConstructionMode
autoCustomizationCriteria
IncludeSimplePanel
True
IncludeAdvancedPanel
True
4)查询区域增加查询表格(table)
选择查询区域(MainRN),右键>New>RegionUsingWizard,跳过欢迎页,如图:
选择对应的AM下的所需的视图(没有则建立相应的视图,再新增查询表格,视图的建立请参考前面章节)
下一步,输入表格名称(SearchTable)和类型(table),如图:
下一步,选择视图中字段,用于页面表格显示,如图:
下一步,修改显示字段的名称和控件类型,如图:
下一步,完成,即完成表格的创建。
5)修改表格属性
在页面(CustomSearchPG)中选择新建的表格(SearchTable),修改其属性,如下:
属性
值
Width
75%
Text
员工列表
AdditionalText
员工列表
6)查询区域(MainRN)创建查询条件
a.简单查询
1)页面中选择查询区域(MainRN),右键New>simpleSearchPanel,创建简单查询条件,系统会自动创建一个header区域和一个messageComponentLayout区域。
选择header区域,设置其属性如下:
属性
值
ID
SimpleSearchHdr
Text
简单查询
选择messageComponentLayout区域,设置其属性如下:
属性
值
ID
SimpleSearchRN
2)选择messageComponentLayout区域,右键New>messageTextInput,反复执行此操作,新增两个messageTextInput控件,作为两个查询条件,设置其属性如下:
属性
值
ID
SearchEmpID
MaximumLength
30
Prompt
员工ID
属性
值
ID
SearchFullName
MaximumLength
30
Prompt
员工名称
3)选择查询区域(MainRN),右键New>simpleSearchMappings,系统会自动创建一个simpleSearchMappings控件和一个queryCriteriaMap1控件。
选择queryCriteriaMap1控件,设置其属性:
属性
值
ID
SearchIDMap
SearhItem
SearchEmpID
ResultsItem
EmployeeID
选择simpleSearchMappings,右键New>queryCriteriaMap,设置其属性如下:
属性
值
ID
SearchNameMap
SearhItem
SearchFullName
ResultsItem
FullName
b.高级查询
根据a中建立简单查询,建立高级查询的panel和Mappings。
1)页面中选择queryComponents,右键New>AdvanceSearchPanel,创建简单查询条件,系统会自动创建一个header区域和一个messageComponentLayout区域。
选择header区域,设置其属性如下:
属性
值
ID
AdvanceSearchHdr
Text
高级查询
2)选择AdvanceSearchHdr,右键New>advanceSearch,系统会自动创建一个AdvanceSearch区域,Criteria,CriteriaRow1以及两个Item:
Item1和Item2。
选择AdvanceSearch区域,设置其属性ID:
AdvanceSearchRN。
选择CriteriaRow1,设置其属性ID:
AdvanceSearchEmpID。
选择Item1,设置其属性Prompt:
员工ID。
选择Item2,设置其属性如下:
属性
值
ID
AdvanceSearchID
MaximumLength
30
AdditionalText
员工ID高级查询条件
选择Criteria,右键New>CriteriaRow,创建一个CriteriaRow控件。
选择新创建的CriteriaRow控件,设置其属性ID:
AdvanceSearchName。
选择Item1,设置其属性Prompt:
员工姓名。
选择Item2,设置其属性,如下:
属性
值
ID
AdvanceSearchFullName
MaximumLength
30
AdditionalText
员工姓名高级查询条件
3)页面中选择queryComponents,右键New>AdvanceSearchMappings,系统会自动创建一个advanceSearchMappings控件和一个queryCriteriaMap1控件。
选择queryCriteriaMap1控件,设置其属性:
属性
值
ID
AdvanceSearchIDMap
SearhItem
AdvanceSearchID
ResultsItem
EmployeeID
选择advanceSearchMappings,右键New>queryCriteriaMap,设置其属性如下:
属性
值
ID
AdvanceSearchNameMap
SearhItem
AdvanceSearchFullName
ResultsItem
FullName
2、运行结果
简单查询页面
高级查询页面:
新增
1、创建新增页面视图EmployeesVO
创建视图步骤如前面所示,只是第七步Java页面,默认选择,不做任何处理。
创建视图之后,添加视图对象EmployeesVO(VO)到根应用模块CreateAM中(AM),方法如上所示。
2、基于EmployeesVO创建新增页面
1)选择工程CRUDDemo.jpr,点击右键“New>WebTier>OAComponente>Page”,创建一个页面。
在弹出框中,设置界面名称和所在程序包:
Name:
NewEmployeePG
Package:
oracle.apps.ak.create.webui
2)点击完成。
3)对新增页面NewEmployeePG进行设置
选择新增页面NewEmployeePG中的“PageLayout”区域,点击右键“New>RegionUsingWizard”,根据向导创建一个表格。
在弹出框的,BC4JObject页面中,在“ApplicationModule”选择当前对应的AM:
oracle.apps.ak.create.server.CreateAM,并选择所对应的VO,如图:
点击下一步,设置控件的属性:
属性
值
RegionID
EmployeesTable
RegionStyle:
defaultSingleColumn(也是一中表格,但是是单表的)
如图:
点击下一步,在ViewAttributes页面,选择所需要在界面上显示的字段。
点击下一步,在RegionItems页面分别设置每一个字段的属性,如图:
其中,字段EmployeeID的属性设置如下:
属性
值
Prompt
ID
Style:
MessageStyledText
设置其他字段属性值的Style类型为MessageTextInput,即可输入的。
点击完成,完成表格的创建。
4)在页面中选择EmployeesTable,设置其属性RegionStyle:
MessageComponentLayout。
5)对新增页面NewEmployeePG中增加按钮
选择新增页面NewEmployeePG中的“PageLayout”区域,点击右键New>Region,创建一个按钮区域,设置新增区域的属性:
属性
值
RegionStyle
pageButtonBar
ID
ButtonRN
选择新增的按钮区域“ButtonRN”,点击右键“New>Item”,重复执行此步操作,创建两个控件,分别按照下表设置其属性:
属性
值
ItemStyle
submitButton
ID
Apply
Prompt
保存
属性
值
ItemStyle
submitButton
ID
Cancel
Prompt
取消