EBS OAF中如何在多行表中实现附件功能
EBS OAF中如何在多行表中实现附件功能
(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)
在OAF中使用附件功能之前,要先明白Entity(实体)的概念。一个Entity是Oracle E-BussinessSuite的一个数据对象,比如一个物料,一个订单或者一个订单行。(这里的实体和BC4J中Entity(实体)对象没有关系).在用户可以链接附件到实体之前,必须先启用实体的附件功能。在附件上下文中,一个实体可以认为是一个基础实体或者是相关实体。一个基础实体是一个区域的主要实体,一个相关实体通常是由外键关系关联到这个区域的实体。
一个实体是由一组属性名组成(通过OAExtension区域items声明),这些属性是关联到这个区域的View Obect的主键.当保存一个附件的时候,这些主键的值和实体ID也会一块存储,那么附件就可以被唯一识别和提取。几个区域可以访问同一个实体,在你的整个应用中就可以提供一致的附件外观。
OA Framework也支持多个实体关联到同一个区域item,这个和Oracle E-BussinessSuite 基于Forms的附件功能是相似的。
比如,一个采购订单有一个订单头和多个订单行,在行级别上,你可以添加附属于实体PO_LINES的附件。注意你经常在PO行上输入物料号。当你在主物料form上创建物料的时候,你可以添加一个附件,比如一个存储在其它实体上的物料图片,比如MTL_SYSTEM_ITEMS。有了多实体支持,当你查看PO行上的附件的时候,你可以查到两个实体上的附件,就是PO_LINES和MTL_SYSTEM_ITEMS。
为物料启用附件功能
声明实现
附件页是由OA Framework的标准组件生成的。启用附件是不需要编程的.你只需要简单定义你的区域的附件ITEM,和通过OA Extension 建立的item和实体的关系。确认依照 OA Framework 命名标准来定义你的OAExtension组件。
步骤1:定义你的应用的VO和PG,并且做好基本的功能,这个这里就不再介绍,具体看OAF相关文档。我做好的界面如下
所有需要额外加的控件如下图中的红框部分。
步骤2:在Table中添加一个attachmentImage类型item,这样将在table中创建一个附件列。在附件列,选择附件图标将打开附件页,或者选择Add图标将打开增加附件页。
步骤3:为刚才创建的附件区域item指定下面的属性
l ID –附件区域item的唯一ID.
l View Instance-启用了附件功能的实体的Viewinstance的名字
l Rendered –设成true.
l Enable Document Catalog-设成True来启用从document catalog添加附件功能,设成False以禁止访问document catalog,默认值是True。参考AttachmentsPage 和Adding Attachments 部分得到更多的细节。
l Render SearchRegion–设置成True来为附件页/区域生成Search 区域.Search区域允许你查找特定一组附件。
步骤3:默认地,对附件表或附件页做的修改都是自动保存到数据库的,不需要用户选择主页面的Apply,你可以通过设置”Automactic Save”属性为True为附件链接,附件表,附件图像item 启用”auto-commit”.
如果设置了”auto-commit”,用户在附件表或附件页面的每个操作(“Add”, “Update”,”Detach”)都会自动保存到数据库。
我们这里设置成true来简化处理。
步骤4:在结果面板,选择在区域附件item下创建的默认entityMap,在OA Extension 属性面板上,输入一个唯一的ID标示,对于”Entity”属性,你可以输入一个唯一的任意值。如果你要和Form进行附件共享的话,这里就需要额外的设置,将在另一篇文章中介绍。
在结构面板选择上面的Entity Map,在上下文中的New菜单下,选择primaryKeys为Entity Map创建一个命名的主键.在结构面板中选中命名的primaryKey,在OA Extension属性面板中为主键输入一个VO主键属性名,如果是多个属性构成主键,就要新建多个primaryKey.
注意:多个区域可以共享一个实体;事实上,如果你想在不同的区域查看同一个附件,那么这些区域必须共享同一个实体。另外,这些不用区域的附件items必须拥有相同VO属性名并且引用的是同一个VO实例。
步骤10:创建一个category map来指明哪种类型的文档可以关联附件。在结构面板,选择你刚才定义的Entity Map,然后从上下文菜单选择New>categoryMap来创建一个命名的Category Map.并指定相应的Category 属性,所有的Category可以通过Application Developers->Attachments->Document Categories得到所有Category的名称,但那只是显示名称,需要通过Help->Examine得到相应的名称,或者使用下面的SQL在后台得到相应的名称,可以也可以自己建立Category.
SELECT name FROM FND_DOCUMENT_CATEGORIES_V1 WHERE user_name='Miscellaneous';
比如,这里我只加了Miscellaneous这一个Category.
运行时的情况如下
选择用户2,点击Add图标来为其新增一个附件
点击Apply,可以看到附件添加成功了
点击查看,可以看到新加的附件信息
点击Title对应的链接,我们可以查看或者下载附件的内容,我们这里因为是文件,所以是下载
这样一个简单的附件功能就是实现了。
EBS OAF中如何在多行表中实现附件功能的更多相关文章
- OAF_文件系列3_实现OAF多行表中附件功能AttachmentImage(案例)
20150727 Created By BaoXinjian
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- mssql字符串分割后的值,把表中不存在的插入表中
字符串分割后的值,把表中不存在的插入表中 --供大家参考 使用场景,自行思考…… --创建表tb1 Create table tb1 ( cola int, colb ) ) --插入数据 inser ...
- SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)
1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- 尚硅谷面试第一季-11MyBatis中当实体类中的属性名和表中的字段名不一样怎么办
问题: MyBatis中当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 解决方案: 1.写sql语句时起别名 <!-- id属性:必须是接口中方法的方法名 resultType属性:必须是 ...
- B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序
B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序 select a.*,count(*) as c from a left join b on a.id=b.ai ...
- 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)
/* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...
- mysql--对行(表中数据)的增删改查
一.插入数据(增加)insert 1.插入数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); #指定字段来插入数据,插 ...
随机推荐
- Tsinghua dsa mooc pa1
第一题Range 关键:二分查找,查找不大于一个数的最大下标. #include <cstdlib> #include <cstdio> 4 int compare (cons ...
- 实现DataGridView和DevExpress.GridControl表头全选功能
1)DevExpress控件的GridView的实现多选操作 先讲DevExpress控件的GridView的实现,要实现的功能基本上是处理单击全选操作.重新绘制表头等操作,首先在加载第一步实现相关的 ...
- 第003篇 深入体验C#项目开发(二)
下半本的5个项目也看完了,还是跳着看,只看大概! 第6章 企业交互系统 作者入职一年,开始带新的2个实习生的项目!一个外资企业内部的OA交互系统,这次又是一个基于w ...
- RDLC报表系列(四) 矩阵
继续接上一篇的内容,本文主要是讲矩阵的内容 用到的数据源如下: DataTable dt = new DataTable(); dt.Columns.Add("FiscalYear" ...
- Oracle游标cursor1基础和隐式游标
--指向表行的指针,一次一行,一般向前移动 Resultset --游标永远代代表的是一行数据. /* 使用步骤 第一步:声明游标,就像是声明一个变量样. 游标的关键字就是cursor. Declar ...
- JS判断终端浏览器类型
根据终端浏览器类型不懂加载不同的JS或CSS文件 <script> var browser = { versions: function () { var u = navigator.us ...
- c#中的数据类型简介
一.C#中的变量和常量 C#中用于定义常量的方式有两种一个使用const关键字,一个是用readonly关键字.使用const定义的常量叫静态常量(compile-time constant),用re ...
- HDU 1829 - A Bug's Life
Problem Description Background Professor Hopper is researching the sexual behavior of a rare species ...
- Eclipse使用git 上传代码至github
右击项目,选择Team->Share Project,弹出如下窗口. 选择git,next,在弹出的界面上,①先勾选Use or create……,②createrepository,③勾选工程 ...
- FreeRTOS 中断优先级嵌套错误引发HardFault异常解决
最近在使用FreeRTOS的时候,突然发现程序在运行了几分钟之后所有的任务都不再调用了,只有几个中断能正常使用,看来是系统挂掉了,连续测试了几次想找出问题,可是这个真的有点不知所措. ...