ADF CUSTOMIZATION PART 2: PERSONALIZATION

2013年9月21日 JULUREN

ADF应用的客制化包含两个方面,一方面是允许在运行时,由最终用户对应用进行客制化,如针对用户调整表格的显示状态、查询面板的默认查询、PanelBox的展开状态等,即Personialization;另一方面是允许针对已开发完成的应用进行定制,如修改页面模板、修改页面字段显示值、修改页面跳转逻辑等,即Customization。这些客制化内容均不会对已开发完成的应用作出修改,而是存储在MDS中。本文主要介绍如何为ADF应用启用Personialization。

JDeveloper Ver. 11.1.1.2.0

DB Ver. 10g(XE), Schema HR

启用Personialization步骤:

  1. 使用默认角色进入JDeveloper
  2. 设置应用中ViewController项目的属性,在"ADF View"下勾选"Enable User Customizations","Enable Seeded Customizations",并选择"Across Session using MDS"以使客户化可以保存下来。
  3. 在 Appliaction Navigator 的 Application Resources 中,修改adf-config.xml
     在 MDS Configuration 中增加 Customization Classes UserCC,包路径为oracle.adf.share.config.UserCC,以允许针对用户的客制化。
     在 View 中,确认 Tag Library URI 为 http://xmlns.oracle.com/adf/faces/rich,这里是用于配置哪一组标签及其属性将被存储至MDS,这里声明为ADF Rich Components。
    而 Tags 中则可新增允许进行客制化的标签类型及属性。这里增加几种常用标签
  4. 设定页面元素是否允许客制化修改
    为应用完成上述3步骤的配置后,将为整个应用中adf-config.xml中指定的类型控件及属性启用客户化支持。但在实际使用中往往会遇到应用中不同页面同种控件部分需要客制化,部分不允许客制化的情况。则需对页面控件设置 persist 及 dontpersist 属性。
    需要注意的两点:

    • persist 及 dontpersist 属性只对于将客制化信息存入MDS的情况有效。
    • 在任何情况下如果客制化信息保存至MDS失败,则仅将客制化信息保存在当前Session中。
    • 控件默认将所有客制化信息保存至MDS,可以点击persist/dontpersist的edit进行可用属性的编辑。
    • dontpersist的优先级高于persist,即当同一属性被设置入persist及dontpersist,则该属性的客制化信息不会保存入MDS。

至此完成应用的客制化定义部分。

由于本示例为针对用户的客制化定义,因此接下来需要定义应用的安全验证及用户,至少定义两个用户用于验证客制化的定义。

  1. 进入 "Configure ADF Security" (Application -> Secure -> Configure ADF Security),在Step1中选择 "ADF Authentication and Authorization"。
  2. Step2,确认需要应用验证的Web项目,选择HTTP Basic Authentication。这里HTTP Basic Authentication即为最常用的Web验证方式,使用浏览器的弹出窗口进行验证。
  3. Step3,确认选择为 "No Automatic Grants",点击下一步
  4. Step4,确认没有勾选 "Redirect Upon Successful Authentication" ,并点击Finish完成定义。
  5. 进行jazn-data.xml的配置,Application -> Secure -> Application Roles,增加Role,此示例使用DjTestRole
  6. 点击Users,增加两个用户名为user1,user2,密码分别为password1,password2。
  7. 点击Application Roles,为第五步创建的组增加成员user1及user2
  8. 点击左下角ADF Policies,将需要访问的页面/taskflow授权给之前创建的Role,并确认勾选Customize, Grant, Personalize

至此完成应用的配置,运行应用,分别以user1/user2登录,对于表格列的操作,则对于已经定义允许客户化的控件的状态修改将依用户区分保存至MDS。如使用user1登录后修改表格显示的列及列宽,则user1下一次登录将看到本次的修改结果;而user2看到的表格显示状态不随user1的修改而改变。

附注:

对于启用基于MDS的客制化支持后QueryPanel不能保存自定义查询,报出异常

oracle.mds.exception.ReadOnlyStoreException: MDS-01273: 未能对资源 /persdef/dj/demo/model/queries/EmployeesVO.xml 执行操作, 因为映射到名称空间 / BASE DEFAULT 的源元数据存储为只读。

的问题,Oracle官方在JDeveloper 11.1.1.1.0 的
Release Note 中有提到,需要在应用的adf-config.xml中<mds-config>节点下<cust-config>节点后配置如下内容

<mds-config>

……

<cust-config>

……

</cust-config>

<persistence-config>

<metadata-namespaces>

<namespace path="/persdef" metadata-store-usage="MAR_TargetRepos"/>

</metadata-namespaces>

<metadata-store-usages>

<metadata-store-usage id="MAR_TargetRepos" deploy-target="true"

default-cust-store="true"></metadata-store-usage>

</metadata-store-usages>

</persistence-config>

……

</mds-config>

则关于查询面板的客制化信息将存储在MDS目录下的/persdef目录中。详见
ADF Customization part 1: The MDS。

经实际部署发现,11.1.1.2.0版本中,服务器MDS分区名称必须为persdef,否则查询面板的个性化保存会报错。应该是Oracle开发人员尚未完善该功能。关于应用的部署,见ADF Customization part 4: Deploy.

ADF CUSTOMIZATION PART 2: PERSONALIZATION相关推荐

  1. 生产力 生产关系 生产工具_我的9个最喜欢的生产力工具

    生产力 生产关系 生产工具 重点 (Top highlight) From cold showers to waking up at 4 AM every day - I've done it all ...

  2. 增强迪基-福勒检验(ADF检验、augmented Dickey-Fuller test)是什么?解决了什么问题?

    增强迪基-福勒检验(ADF检验.augmented Dickey-Fuller test)是什么?解决了什么问题? 目录 增强迪基-福勒检验ÿ

  3. python使用statsmodels包中的adfuller函数执行增强迪基-福勒检验(ADF检验、augmented Dickey-Fuller test)、判断时间序列数据是否平稳

    python使用statsmodels包中的adfuller函数执行增强迪基-福勒检验(ADF检验.augmented Dickey-Fuller test).判断时间序列数据是否平稳(station ...

  4. oracle adf 使用,ORACLE ADF 问题总结

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1. 现象:Lov或者页面ADF Table 数据显示有重复行,或者当前行用鼠标无法选择: 解决:检查vo上是否有主键 2. 现象:页面字段出现无法更新 ...

  5. ADF Jar包循环引用会出问题

    2019独角兽企业重金招聘Python工程师标准>>> 举例有两个ADF应用app1和app2,app1中taskflow1,app2中有taskflow2.打包app2.jar,t ...

  6. junit5_使用JUnit对ADF应用程序进行单元测试

    junit5 JUnit是Java语言的单元测试软件包,由于ADF构建在J2EE框架之上,因此可以用来测试Oracle ADF应用程序. 单元测试基本上是根据某些定义的测试标准来验证最小的可测试模块的 ...

  7. docker安装_以简便的方式监控Docker容器中的ADF应用程序

    docker安装 在这篇简短的文章中,我将展示一种简单的方法来确保在Docker容器中运行的ADF应用程序在内存利用率方面是健康的Java应用程序. 我将使用标准工具JConsole,它是计算机上JD ...

  8. adf4351_使用ADF BC管理保存点

    adf4351 在使用ADF BC时,我们通常依赖于在数据库中执行DML操作的框架. 该框架在DBTransaction提交周期内正确地在数据库中进行了所有必要的更新. 很酷的事情是,在这种情况下,数 ...

  9. adf4351_在ADF实体PK属性中使用MySQL自动增量PK列

    adf4351 大家好. 继续进行ADF + MySQL解决方法系列,今天我们将看到需要做些什么才能将MySQL PK自动增量列与ADF实体PK属性一起使用. 如果我们使用的是Oracle数据库,则可 ...

最新文章

  1. gridview、datalist、repeater、FormView、DetailsView的区别详解
  2. window 命令行大全
  3. __doPostBack实现updatepanel的局部更新
  4. 【网络流24题】No.7 试题库问题 (最大流,二分图多重匹配)
  5. 计算机等级考试java题型_计算机等级考试报考建议
  6. URL转码escape() encodeURI() encodeURIComponent()
  7. layUI 选中表格 checkbox
  8. 计算机文化基础清华大学出版社,清华大学出版社-图书详情-《计算机基础》
  9. Spring揭秘 读书笔记
  10. IBM Rhapsody 报错找不到 VC11 目录的解决方法
  11. 计算机键盘上的符号英语怎么说,电脑键盘上特殊符号和标点符号名称的输入方法汇总...
  12. erlang 解决socket 数据粘包问题
  13. IDEA2018最新激活方式(可激活到2100年)
  14. 鸿蒙系统能把游戏窗口化吗,家里装上华为智慧屏S系列,这三个功能,让我爱不释手!...
  15. Types of Data
  16. 制作公司组织结构图的案例
  17. @Autowired注解详解
  18. 《div图层被鼠标划过时其背景色变色的五种方式》
  19. 天地图 android studio,AndroidStudio 加载 天地图 (2019年后开发授权申请)
  20. pebble刷android wear,Pebble智能手表刷官方中文固件教程

热门文章

  1. [CentOS Python系列] 二.pscp上传下载服务器文件及phantomjs安装详解
  2. 学生成绩管理系统/学生信息管理系统
  3. 去应聘担心自己实力不够???看这里!
  4. 【九度 03】两个日期之间的天数
  5. linux移动硬盘unmount报错处理
  6. 第七章 数据库设计 E-R模型
  7. ABAP RSA方式调用工行银企直联API
  8. 微信小程序(JAVAScript)实现饼图
  9. 数商云供应链集采管理系统解决方案:集采系统管理模式,数字化管控企业物资
  10. iOS实现HTTPS访问