ORACLE R12中与二次开发相关技术的探讨与研究.ppt_第1页
ORACLE R12中与二次开发相关技术的探讨与研究.ppt_第2页
ORACLE R12中与二次开发相关技术的探讨与研究.ppt_第3页
ORACLE R12中与二次开发相关技术的探讨与研究.ppt_第4页
ORACLE R12中与二次开发相关技术的探讨与研究.ppt_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

oracle r12中与二次开发相 关技术的探讨与研究 1 内容安排 oracle r12 综述 oaf综述 oaf界面上的字段查询 r12安全性新特性 r12功能模块的变化 r12其它细节性变化 2 oracle r12综述 oracle r12整套服务体系组成结构 oracle自带组件(oracle home路径下) 其它组件(appl_top下) 第三方组件(appl_top下) 下图展示的是oracle r12版本中涉及的一些主要应用技术层的组件,图中红 色高亮部分涉及到与之前版本的差异,将在综述中被介绍 3 r12 应用技术 - 总体变化 数据库层 oracle database 9i oracle database 10g 应用层 application server: 1.0 10.1 oracle http server/apache: 1.3.19 10.1.3* oracle developer: 6i 10g 技术组件 servlet container : jserv oc4j 核心文件系统 11i 的文件系统被替代成新的版本 4 r12 应用技术 - 高层分级结构 common_top appl_top apache 1.3 oc4j rsf 10.1 as 10.1.3 java oracle home reports 10 forms 10 rsf 10.1 developer 10.1.2 c oracle home rdbms components rsf 10.2 database oracle home 5 r12 应用技术 - 应用层自带组件 oracle database as client libraries .2 oracle developer client libraries .2 oracle jdeveloper 10.1.3 oracle as discoverer 10g .2 ojsp 10.1.3 oracle http server/oracle http client 10.1.3 (基于 apache 1.3) 6 r12 应用技术 - 应用层附带组件 business intelligence (bi) beans 3.1 java database connectivity (jdbc) 10.2 bi beansbi beans jdbcjdbc 7 r12 应用技术 - 第三方组件 jdk for web tier 5.0 jdk for concurrent processing tier 5.0 sun java plug-in 5.0 8 r12 应用技术 - 非嵌入式技术 oracle as 10g portal 10.1.4 oracle as 10g single sign-on and oracle internet directory .2 oracle collaboration suite 10g release 1 oracle enterprise manager 10g release 1 portalportal ocsocsoemoem ssosso 9 r12 应用技术 - 优点 精简了一些比较旧版本的产品的使用率 提高了业务相关组件的利用率 第三方组件与之前版本相比,更加规范和完整 10 r12 应用技术 - 参考文献 更多产品信息 /products/ 更多教科信息 http:/www.oracle/com/education/ 更多技术支持 /support/ metalink信息 / 产品文献 /technology/documentation /applications.html 11 r12 开发机制 开发工具由develop 向 jdevelop 缓慢过渡 form、report、java并存 r12大多数功能沿用原来的form机制,也有很多地 方采用新的oracle oaf开发技术。 form 界面和web界面并存 oaf的开发 oracle jdeveloper9.0.3 oracle jdeveloper10g oracle 产品发展方向 平稳中慢慢变化,大方向坚定 12 oaf简介 - 总体架构层次 pg(page region)层 co(controller)层 am(application module)层 vo(view object)层 eo(entity object)层 13 oaf简介 - pg(pageregion)层 与form比较 pg canvas 在ie上显示的最终用户图形界面 通过jdeveloper10g来开发xml文件 不是像vb那样去拖拉控件 也不是全部手写的xml文件 一种基于两者之间,在jdeveloper10g中会出现xml的层次 构架 可以在每个节点下添加控件 设置控件属性来控制web控件的显示格式和显示位置 page上用的都是oracle封装过的控件 有些功能很容易实现 但有的功能无法实现 14 oaf简介 - co(controller)层 与from比较 co form触发器和程序单元 oaf通过co控制页面,页面的任何动作都会在这里 进行 ,包含两个method processrequest: initialize pre-form触发器 processformrequest: event 各种block和item层 触发器 不能在触发submit请求后直接更改webbin属性 15 oaf简介 - am(application module)层 与form比较 am 联系form中各种组件的枢纽和机制 am层是中间控制层 只能通过co调用 可以在am层对db端进行调用(vo) 缺点:oracle不让在这里写太多的验证逻辑 16 oaf简介 - vo(view object)层 与form比较 vo block 基于数据库的字段 web界面上的取数来源 可以通过vo读取数据库里的数据并放到缓存或eo中 17 oaf简介 - eo(entity object)层 与form比较 eo block所基于的视图或基表 归根到底是一段sql 取自数据库中的表,试图或者同义词等对象 在这里直接与db数据进行交互 18 oaf简介 - 最简单的oaf应用开发过程 开发工具: jdeveloper10g 第一步 在jdeveloper中,创建一个 工作区,工作区的名字取为 testproject,在应用程序模板一项 中,选择web application (default),确认后的工作区如图 所示,我们先建立business service 层的持久层对象。 19 oaf简介 - 最简单的oaf应用开发过程 在model这个工程上边,右键单击新建,然后选择business tier 下的business component ,选择entityobject,然 后出现如图所示 schema object是让我们选择数据库中的表或者同义词等对 象,name 是我们建立的持久层对象的名字,这里我们把 name命名为cdtequipmenteo,package指定这个对象放 在什么包下面。 20 oaf简介 - 最简单的oaf应用开发过程 第二步 建完持久层的实体对象后,我们就需要建立数据访问层的视 图对象(viewobject)。右键单击model,新建选择 viewobject出现图,左边是供我们选择已经存在的持久层的 实体对象(entityobject),这里面我们选择刚建好的 cdtequipmenteo这个实体对象。 21 oaf简介 - 最简单的oaf应用开发过程 第三步 需要建立接口层(applicationmodule),将数据访问层的视 图对象(viewobject)注册到applicationmodule中,如图所 示,我们选择cdtequipmentview1这个视图对象,并把它 添加到appmodul1中。 22 oaf简介 - 最简单的oaf应用开发过程 第四步 按照oaf架构,model层我们基本不需要作什么工作,那么 我们下面开始建立controller层,首先需要建立datapage, 可以是uix格式的也可以是jsp,这里我们用uix格式。在 struts-config.xml中,从右侧的component中,可以直接 选择datapage,拖拽过来,listequipment是我们给定的名 字。 23 oaf简介 - 最简单的oaf应用开发过程 第五步 建完controller层,需要建立展现层(view),在 listequipment.uix页面中设置页面布局,可以对 datacontrol中的view进行拖拽,如图所示,我们选择data control 面板中的cdtequipmentview1,这就是我们刚才 建立的view,下面的拖拽类型选择只读表就可以了。 24 oaf简介 - 最简单的oaf应用开发过程 第六步 我们单击listequipment.uix这个文件,选择运行(如下面左 图所示),就可以直接得出所有设备的数据了,运行的效果( 如下面右图所示)。 25 oaf简介 - 总结 优点 在jdeveloper10g中结合oaf框架,使开发人员能够 从零开始构建j2ee应用程序和web服务。因为oracle oaf的高度结合性,以及它里面提供的优秀技术,使 得开发应用变得十分简单方便,从而大大提高了应用程 序的开发效率,具有很高的应用价值。 缺点 oaf架构层次与form相比过于复杂,紧密,拘束 类似于ejb,虽然有着非常完美的模型层次结构,在复 杂的业务逻辑开发上更具大局观,但在一些需要快速完 成的业务开发上反受其累。 26 oaf界面上的字段查询 对于传统的form ,当我们需要知道其后台对应的表的 时候,可以通过菜单栏上 的”帮助”来获得。 疑问: 如果是一张web界面,我们又该 如何取得db端的数据呢? web界面和form界面到底有何 异同? r12的web界面11i界面相 比较,有哪些新增功能? 27 oaf界面上的字段查询 路径:om_订单管理系统超级用户-客户-标准 视觉效果 head body foot 28 oaf界面上的字段查询 接下来我们要做一个简单的查询,并对查询到的内容 进行诊断以确定其数据库来源 第一步 键入查询条件 进入选中记录 29 oaf界面上的字段查询 查询得到的界面如下 主体字段 弹性域字段 30 oaf界面上的字段查询 第二步 诊断主体字段 点击”关于此页”进入诊断界面 “关于此页” “帮助” 31 oaf界面上的字段查询 第三步 点击”全部展开”,展现页面层次结构 stacklayout - tablelayout - rowlayout - celllayout 类似于html标签中的 - - - ,相信 做过html网页的朋友应该不会感到陌生 明细行附带co,am,vo信息,察看属性这一栏位表示当前字段的 字段名 “关于此页”-”视图对象” “帮助”-”历史记录” 32 oaf界面上的字段查询 第四步 点击进入”客户类型”所对应的vo对象 可以看到”客户类型”所对应的基表和字段名 33 oaf界面上的字段查询 第五步 诊断弹性域字段 方法一:沿用主体字段的诊断方法 我们可以看到,出于安全性的考虑,弹性域字段所对应的vo无 法点击进入 记录vo name = hzpuicrupcustactvo,点击进入”客户类 型”所对应的vo 34 oaf界面上的字段查询 在” select a view object ”下拉框选择” hzpuicrupcustactvo”即可得到完整的sql查询语句 35 oaf界面上的字段查询 方法二:使用oracle r12新增的弹性域参考 返回诊断界面,最底下有个”弹性域参考”的栏位,点击”显示全 部详细资料”,我们可以看到跟该界面相关的弹性域参考的详细 信息都在这里显示。 36 oaf界面上的字段查询 由于这是一个说明性弹性域,我们可以找到与此非常相 似的form界面 37 oaf界面上的字段查询 知道了弹性域的名称,我们可以通过下面的sql来获得其更 详细的信息 查询得到的结果如下,其中application_table_name 代表其所对应的基表,从而可以由此获取最详细的弹性域信 息 38 oaf界面上的字段查询 回到我们刚点击进入”关于此页”的位置(红字部分为 oracle r12新增功能) 页 个性化 页上下文 技术组件 java系统属性 配置文件 patch 39 oaf界面上的字段查询 个性化 “关于此页”-”个性化” “帮助”-”诊断”-”自定 义代码”-”个性化” 40 oaf界面上的字段查询 页上下文 记录了数据库存储路径 记录了当前用户,当前职责,当前模块名 组织,语种,时区,默认时区等信息 41 oaf界面上的字段查询 技术组件 记录了oa结构及其所使用的组件,包括一些第三方组 件(如jdbc驱动程序) 42 oaf界面上的字段查询 java系统属性 记录了一些常用环境变量名及其所对应的值,可以查到 如class_path,fnd_top等常用环境变量的值 43 oaf界面上的字段查询 配置文件 本页关联的所有profile 44 oaf界面上的字段查询 patch 这是oracle r12新增的功能,显示已经打过的所有 patch的记录 45 oaf界面上的字段查询 另一种诊断字段的方法 - oaf trace 将“fnd:诊断“这个预置文件针对用户设成“y“ 进入页面后点击右上方的“诊断” 在下拉框中选择“set trace level”,点击开始 选择单选框后,按“保存”,会给出文件号。就回到操作 页面操作 操作完后再进入诊断,可能会给出多个文件名,将所有 文件下载下来看trace信息 将trace失效掉 46 r12安全性新特性 场景 po_lines指向po.po_lines_all 对po_lines求count 对po.po_lines_all求count 47 r12安全性新特性 po_lines和po.po_lines_all应该是同一个对象,但是 为什么从同义词上求count时没数据而从基表上求 count时有数据呢?原因就在下面的sql上,简单 的说就是r12中的vpd特性,因为同义词po_lines 上有一个策略函数mo_global.org_security 48 r12安全性新特性 moac(multi-org access control) r12中,同一个职责的同一个界面,可以操作多个ou 的数据。而11i只能操作一个ou的数据。 什么是moac? 所谓moac就是多组织访问控制,通过moac,可以在同一个 职责下操作操作多个ou的数据,比如,我们可以在ar超级用 户下,操作整个集团的所有公司的数据。而且moac是一个组 织控制概念,不只是控制ou,还可以控制库存组织等其他用途 ,也就是说,只要是在通过 /设置/组织 这个地方定义的所有组 织都应该可以起用moac特性,目前我只知道ou和库存组织是 可以的。不过我们最关心的是ou的控制。 49 r12安全性新特性 如何启用moac 路径:全局 hrms 管理员/安全性/配置文件 我们可以在这里定义一个业务组 50 r12安全性新特性 提交并发请求 路径:全局 hrms 管理员/请求/维护安全性清单 51 r12安全性新特性 在职责或用户层设置安全性配置文件 路径:系统管理员/配置文件/系统 52 r12安全性新特性 几个moac相关的重要profile mo: 安全性配置文件 这个是定义安全性配置文件的profile,定义这个 profile,这个职责或用户就可以同时访问多个组织 。 mo: 默认业务实体 如果定义了mo: security profile,则可以选择一个默 认的ou,当用户进入某个应用时,默认ou就是这个 profile的值。 mo:业务实体 这是11i的参数,如果设置了mo:安全性配置文件 , 则这个profile不生效,反之,这个profile生效 。 53 r12安全性新特性 哪些模块可以使用moac 由于moac特殊的控制结构,需要应用程序做支持才能启用 ,因此在启用moac之前,有必要清楚哪些应用支持moac 特性。 我们使用如右图所示脚本进行检查 使用fnd_mo_product_init_pkg. register_application 注册moac支持 使用fnd_mo_product_init_pkg. remove_application 取消moac支持 54 r12安全性新特性 两张重要的moac表 mo_glob_org_access_tmp 记载了当前session所能访问的组织,对写程序有比较大的用处 fnd_mo_sp_preferences 记录了用户,职责和安全配置文件的组合,用以计算默认ou,不过写 程序很少用到 form中如何控制moac 标准form 进入form时,执行 mo_global.init(p_appl_shortname); 当选择某个ou时,执行: mo_global.set_policy_context(s, 56 r12安全性新特性 多组织并发请求 通过启用moac控制并发请求所能访问的数据 如果安全性配置文件可以访问5个ou的话,那么并发请求就可 以同时访问5个ou的数据 虽然前文已经提到如何模拟form从客户端取数据,理论上来 说只要起用了moac特性,默认情况下就应该可以取到5个ou 的数据 事实上,如果不启用多组织并发请求特性,将取不出任何数据 从底层看,多组织并发请求在表fnd_concurrent_programs中 加了个字段multi_org_category 57 r12安全性新特性 为了让并发请求具有moac特性,需要到如下截面设 置“业务实体模式” 路径:系统管理/并发/程序 58 r12安全性新特性 提交并发请求的form多出一个字段“业务实体”,控 制这个字段是否可用的字段是multi_org_category, 当为s时,则这个字段为必须录入的字段,如果为空 或m时,则这个字段为不可维护的字段,见下图 59 r12安全性新特性 11i升级到12i moac过程 对这个特性一般不会使用,但是我们可以从转换的脚本 了解moac的本质,转换脚本见ad_mo_util_pkg,注 意看一下脚本就知道有五个操作,这五个操作体现了 moac的本质。总结来说就是如下几个步骤 删除视图(只是那些组织屏蔽的视图,比如(po_vendor_sites) 修改基表中org_id的默认值为null 新建同义词指向基表 从fnd_view中删除视图fnd_dictionary_pkg.removeview 为同义词增加策略(vpd)dbms_rls.add_policy 60 r12安全性新特性 oracle vpd简介 虚拟专用数据库 (vpd) 也称为细粒度访问控制,它提 供强大的行级安全功能。它是在 oracle8i 中推出的, 已经受到广泛的欢迎,并且在从教育软件到金融服务等 各种应用程序得到采用。 vpd 的工作方法 通过透明地更改对数据的请求,基于一系列定义的标准向用户 提供表的局部视图 在运行时,所有查询都附加了谓词,以便筛选出准许用户看到 的行 ,例如,如果只允许用户查看帐户管理员 scott 的帐户 ,则 vpd 设置自动地将查询: select * from accounts; 重写为: select * from accounts where am_name = scott; 61 r12安全性新特性 dba 在表 accounts 上设置了一项安全策略。该策略具有一 个相关函数,称为policy function,它返回一个用作谓词的字 符串 where am_name = scott。 你在sql窗口执行的是select * from accounts,而实际上执行 的是select * from accounts where am_name = scott, 那么它是怎么实现这个技术的呢? 要了解这个问题,我们需要重新回到vpd的核心: application context:应用程序上下文 policy function:策略函数 policy type:策略类型 62 r12安全性新特性 application context:应用程序上下文 应用程序上下文简单通俗的说,就是个环境变量,也就 是全局变量,在session的生命周期内有效。其目的 就是要让策略函数取得这个值。从而返回正确的谓词( 其实也就是where 条件字符串) 使用以下语句创建应用程序上下文: create context cux_context_name using apps.cux_vpd_global cux_context_name 是应用程序上下文的名称(namespace ) apps.cux_vpd_global是可以对这个namespace进行变量的创 建和删除的package 63 r12安全性新特性 使用以下语句检查上下文: 检查应用程序上下文名称 检查应用程序上下文中的变量名称及值 12i moac使用的应用程序上下文 multi_org,multi_org2 到这里,我们已经很清晰的知道,应用程序上下文的用途 是什么,怎么检查应用程序上下文。 64 r12安全性新特性 policy function:策略函数 策略函数是作用在对象上(表,视图,同义词等),根据应用程序 上下文返回一个特定的谓词 也就是where条件字符串,从而使得查询表,视图时自动给查询 加上一个where条件 什么时候策略函数会执行? 当查询对象时会执行策略函数,条件是先使用 dbms_rls.add_policy将对象和策略函数绑定在一起。 12i moac使用的策略函数 65 r12安全性新特性 policy type:策略类型 生成谓词所需的重复分析是一种在某些情况下可以进行修整的开销 。例如,在大部分实际情况中,谓词并不象 am_name = scott 那样是静态的 它基于用户的身份、用户的权限级别、用户向哪个帐户管理员进行 报告等情况,可能更具有动态性 由策略函数创建并返回的字符串可能会具有很强的动态性,而为了 保证其结果,oracle 必须每次重新执行策略函数,既浪费资源又 降低性能 在这种类型的策略中,谓词每次执行时可能会有很大的差别,该策 略称为“动态”策略,在 oracle9i 数据库以及以前的版本中已经提 供了这种策略 除了保留动态策略之外,oracle 数据库 10g 还基于谓词的构造推 出了几种新类型的策略,为提高性能提供了更好的控制 context_sensitive shared_context_sensitive shared_static 和 static 66 r12安全性新特性 从上面可以知道,oracle 10g一共提供了五种策略 类型:dynamic、context_sensitive、 shared_context_sensitive、shared_static 和 static。moac中,重点使用的是dynamic, shared_context_sensitive 如何设置策略函数的策略类型 dbms_rls.add_policy(policy_type = dbms_rls.shared_context_sensitive ); shared_context_sensitive 是 constant类型的变量 67 r12安全性新特性 启用vpd特性的步骤 创建应用程序上下文 参考create context cux_context_name using apps.cux_vpd_global 创建策略函数 参考:mo_global.org_security 为对象添加策略函数 参考:dbms_rls.add_policy 68 r12安全性新特性 在12i中给客户化表启用vpd特性 创建表(cux_vpd_tests_all),org_id默认为空 创建同义词cux_vpd_test指向cux_vpd_tests_all 为同意词添加策略函数 12i中moac最重要的package mo_global 69 r12业务模块的变化 12i在功能模块上的变化很多,比如,基本每个模块 都启用了moac特性,新增加了子帐模块,税模块等 等很多新的模块,opm库存和离散库存集成了。总的 来说变化最大的是gl模块和om模块 新增子账模块。 所有的子模块会计分录都可以使用特定的公式配置出来 但是对技术而言,我们不太关心如何配置生成会计分 录,我们只关心子模块的会计分录和gl的会计分路之 间的关联性 ,以方便我们做子模块和gl的对应报表 要做对应的报表,必须要了解子账 70 r12业务模块的变化 sla(subledger accounting) 概念 子帐是子分类帐会计的简称,字面上的含义就是子分类帐会计分录 子分类帐会计其实就是连接子模块会计和gl凭证之间的桥梁,更简单 的说,就是子模块和gl之间的桥梁。所有子模块(包括fa)产生的会 计分录都是使用sla产生的,存放在sla的表中,然后通过过帐程序过 帐到gl。有点类gl_interface表的功能。 子分类帐会计的第二层意思:在各个子模块都有一套独立的会计分录, 看起来跟gl其实没太大区别,这就意味着在子模块其实就可以计算科 目余额了。只是可惜,到目前为止我还没有类似gl_balance的表来存 放科目余额。 各子模块目前还是可以有自己的分配帐户(就是以前查看会计科目看到 的东西),分别存放在自己的分配表中,比如,ap还是存放在 ap_invoices_distributions中,引入sla后,把这个功能称为“事物处 理会计”,和子分类帐会计的不同点在于,事物处理会计是通过自动会 计或分配产生,而子分类帐会计是根据定义会计事件等公式产生的,分 别存于不同的地方。 71 r12业务模块的变化 子帐架构

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论