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); #指定字段来插入数据,插 ...
随机推荐
- javascript设计模式——Publish/Subscribe
推荐阅读http://dev.housetrip.com/2014/09/15/decoupling-javascript-apps-using-pub-sub-pattern/ 我们先引出问题的所在 ...
- 总结一下.net framework适合装在哪些系统中
最近在客户这部署,环境是windows server2003 service pack2.因为vs2012开发环境是.net framework4.5,所以发布iis的时候,尝试在sever2003上 ...
- error: undefined reference to `XXX::XXX(type1, ypte2)
moc_fortunethread.cpp:100: error: undefined reference to `FortuneThread::GetToParentThread(QString, ...
- 卸载cloudera manager
卸载Cloudera-Manager sudo /usr/share/cmf/uninstall-cloudera-manager.sh 一直选择Yes 就好 卸载完成后,它会问你是否要将databa ...
- WPF那些事儿
概述 感觉学习的东西必须做个记录,不然很快就忘掉了.现在把WPF学习过程中一些零碎的东西记录在下面,没有具体的主题,想到啥.看到啥都写在这里,算是复习一下并做个备忘吧. 1. 等待对话框 看到同事做的 ...
- (转)解决JSP路径问题的方法(jsp文件开头path, basePath作用)
在JSP中的如果使用 "相对路径" 则有可能会出现问题. 因为 网页中的 "相对路径" , 他是相对于 "URL请求的地址" 去寻找资源. ...
- html5重力感应事件
if (window.DeviceMotionEvent) { window.addEventListener('devicemotion',deviceMotionHandler, false); ...
- QFN和QFP的区别
QFN(quad flat non-leaded package)四侧无引脚扁平封装.多称为LCC. 陶瓷QFN :基本上都是LCC 标记. 塑料QFN 也称为塑料LCC.PCLC.P-LCC 等. ...
- Delphi 实现无窗口移动(发WM_NCHITTEST消息计算,然后再发WM_SYSCOMMAND消息,带参数SC_DRAGMOVE)
procedure imgListMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) ...
- [Daily] 2014-4-22
KEEP GOING Think more product when face difference Check value null when insert/remove/update/add ch ...