• 1. Oracle ADF 入门教程ADF 概念介绍
  • 2. ADF 11G是基于Oracle Jdeveloper 开发工具,运行在J2EE1.5 平台以上的开发框架,目前只支持Oracle Weblogic 服务器得到认证. 下面网址是开发各种程序的入门教程: http://www.oracle.com/technetwork/developer-tools/jdev/overview/index-100269.html
  • 3. DBEntity ObjectView ObjectApplication ModelData ControlTask FlowFaces FlowManage BeanModel : BC4JController UnboundBoundJSPView JSPXJSFFADF Faces Region调用与Table 进行影射针对EO的操作,可以多个VO影射一个EO,也可以SQL直接生成VO容器,可以进行事务控制,BC4J对外接口
  • 4. ADF 定义: Application Development Framework 是Oracle 开发的一个基于Jdeveloper 的界面化操作MVC开发框架,它依赖于大量XML进行数据影射和配置.实现客户端控件进行“拖拽”数据绑定,大大简化基于MVC的WEB开发. ADF几个关健概念: 1: BC4J: (Business Components for JAVA)这是一个可绑定多层数据、事务控制、可灵活控制访问的瘦客端组件. 2:Data Control: 它是BC4J组件发布给客户端调用的接口,它包含三种元素:Value : 前端 显示的数据,注要包括: (Attribute 、List、Graph 等) Method Action:( 主要是客户自定义方法) Action: (指内置方法 : CURD, commit,rollback ) 2: Task Flow: 它是由视图(view)、方法(Moth Call)等组成的可重复调用任务连,类型为二种:
  • 5. 1):Bounded(有界限的) : 作为一个有开始有结束,它可以传递参数和被Unbounded任务链调用,但不能调用Unbounded任务链. 2):Unbounded(无界限的): 有开头没结尾的任务链. adfc-config.xml 为默认Unbounded任务链 4: ADF Page: ADF 是一个富客户端开发框架,它的页面有二种表现形式: 1):Fusion Page(融合页面):(*.jspx): 是碁于jsf页面的扩展,可以单独运行。 2):Fragment Page (片断页面):(*.jsff): 是基于域的方式用行在jspx中。
  • 6. BC4J 详细介绍DBEntity ObjectView ObjectApplication ModuleData ControlBC4J 容器*: Application Module是一个View Object集合和BC4J对外接品,BC4J里面可以设置多个Application Module . 在ViewRowImpl 类中实现View Object 的基础CURD方法。数据库连接由BC4J完成(bc4j.xcfg).
  • 7. BC4J 详细介绍Entity Object: 针对表、视图进行压缩的业务逻辑,可以理解为一个数据接收器。 View Object: 是一个含有对数据查询、过滤等操作的数据源。 Application Module: 含有View Object、View Link 和事务控制的组件。一个Application 可以有多个 Application Module, 它可以通过Data Control 和 WebService 二种形式访问. View Link: 应用于View Object 这间关链和交互。 ViewRow : 对应表里面的单行操作,他的实现类:oracle.jbo.server.ViewRowImpl。ViewObject 中 create、delete、update基础操作在本类中实现。
  • 8. BC4J: 作为一个轻量级应用组件,可以Main方法测试。下面是测试示例代码://Application Model 所在的路径 String amDef = "com.bean.service.EditRoleModule"; //配置信息名称: EditRoleModule->Configurations 下面 String config = "EditRoleModuleLocal"; ApplicationModule am = Configuration.createRootApplicationModule(amDef,config); EditRoleModuleImpl service = (EditRoleModuleImpl)am;
  • 9. ADF XML 配置文件介绍: 1: adfm.xml: DataBindings.cpx 注册器, 系统初始化时加载adfm.xml下 DataBindingRegistry (.cpx),DataControlRegistry (.dcx) ,BusinessComponentServiceRegistry (.xcfg),BusinessComponentProjectRegistry (.jpx) 2: bc4j.xcfg : bc4j 容器配置文件,发布对外:Application Model 和数据连接信息. 3: DataBindings.cpx: 定义整个项目 的page、pageDef.xml和DataControl 绑定. 4: pageNamePageDef.xml: UI 和 DataControls 绑定配置文件 6:adfc-config.xml : 系统默认的Unbound Task Flow,用户创建Manage Bean 默认 会存放在此 7: task-flow-definition.xml: 用户创建 任务链文件 。 8:adf-settings.xml:ADF监听器配置文件 9: janz-data.xml:安全认证配置文件。 10: logging.xml: 日志配置文件 11: trinidad-config.xml: 页面样式,可以通过(trinidad-skins.xml)实现用户自定义样式
  • 10. (本页无文本内容)
  • 11. 1:用户第一次发送请求, web.xml 中注册的ADFBindingFilter 会创建一个空的Binding Context 2:Binding Context 加载请求页面,为它创建Binding Container. 3: adfm.xml 加载DataBindings.cpx, 查找请求页面对应的pagenamePageDef.xml. 4:Binding Container 准备相关的可执行文件 。 5:DataControls 迭代器查找 pagenamePageDef.xml 里面对应的方法和数据。 6:Binding Container 根据pagenamePageDef.xml中< bindings>定义bindings 自定义标签. 7: Web Page 通过 #{bindings} 查找Binding Container 对应的数据和方法。 8:Web Page 拖放有效数据进行显示。
  • 12. Manage Bean 生命周期:
  • 13. 注意:1:除Application scope 和 Session scope外,Manage Bean 都应存放在页面所在的任务链,Backing Bean Scope 只针对于片断页面,生命周期为request 生成至发送到后端处理。 2: Manage Bean 不应在faces-config.xml中定义.只是官方建议。
  • 14. ADF Task FlowTask Flow 作为ADF的控制层,所有的JSF Page都应在Task Flow中进行控制。Unbounded 与Bounded 区别:UnboundedBoundedControllerContext.getInstance().getGlobalViewActivityURL(view)指点进行活动含有唯一入口,可指定默认入口不可以指定参数进行传递 可以传递参数和带有返回值 是一个全局的任务指定,默认为: adfc-config.xml有自己的生命周期和Manage Bean 进行跟踪Unbounded 可能调用BoundedBounded 不可以调用 Unbounded*:在非片断Bounded Task Flow,默认的Method Call 不能指定Data Controls 里面的方法。
  • 15. ADF Task Flow 与 JSF Page Flow 区别ADF task flow是ADF框架Controller层的重要技术,它提供一种模块化的方式来定义application中的页面控制流,扩展了JSF page flow的功能。task flow具有更好的可重用性和封装性,它和JSF page flow的主要区别如下: 1,JSF page flow的全部页面都集中在一个JSF page flow页面faces-config.xml中; 而ADF task flow的页面可以模块化成多个task flows,并且task flow之间可以相互调用。 2,JSF page flow中节点都是JSF页面; 而ADF task flow的节点可以是views,method calls,task flows call。 3,JSF page flow的页面跳转在页面间 ;而ADF task flow的跳转可以是页面,以及其他的activities(View,method call等等)。 4,JSF page flow不支持重用 ;而ADF task flow可以在相同或不同的application中重用。 5,JSF page flow不支持shared memory scope; 而ADF task flow支持在同一个task flow的不同节点间传递数据,例如page flow scope变量可以在同一个绑定task flow作用域内保持值的一致性。
  • 16. ADF Task FlowADF task flow包含绑定task flow和非绑定task flow,通常我们只需要定义一个非绑定的task flow,尽管可以定义多个,但是application在运行的时候还是会合并他们;ADF task flow的模块化和可重用性是靠绑定task flow来实现的,我们可以将JSF page flow中的页面节点分解到绑定task flow中。 下图是支持ADF faces 平台:
  • 17. ADF 11g applications require a Java EE 5 container. To date, only Oracle WebLogic Server 10g (10.3) is certified, and we plan to support JBoss and Tomcat as well. Note, OC4J 10.1.3 and/or OAS 10.1.3 is not fully Java EE 5 compliant, and ADF 11g applications will not work in that environment. However, a generic Java EE application can be migrated to JDeveloper 11g and deployed (outside of JDeveloper) to Oracle's 10.1.3 Application Server, provided you have not included anything that would preclude running on the 10.1.3 Application Server.