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。参考AttachmentsPageAdding 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中如何在多行表中实现附件功能的更多相关文章

  1. OAF_文件系列3_实现OAF多行表中附件功能AttachmentImage(案例)

    20150727 Created By BaoXinjian

  2. CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  3. mssql字符串分割后的值,把表中不存在的插入表中

    字符串分割后的值,把表中不存在的插入表中 --供大家参考 使用场景,自行思考…… --创建表tb1 Create table tb1 ( cola int, colb ) ) --插入数据 inser ...

  4. SQL SERVER 使用BULK Insert将txt文件中的数据批量插入表中(1)

    1/首先建立数据表 CREATE TABLE BasicMsg( RecvTime FLOAT NOT NULL , --接收时间,不存在时间相同的数据 AA INT NOT NULL, --24位地 ...

  5. Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

    应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...

  6. 尚硅谷面试第一季-11MyBatis中当实体类中的属性名和表中的字段名不一样怎么办

    问题: MyBatis中当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 解决方案: 1.写sql语句时起别名 <!-- id属性:必须是接口中方法的方法名 resultType属性:必须是 ...

  7. 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 ...

  8. 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)

    /* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...

  9. mysql--对行(表中数据)的增删改查

    一.插入数据(增加)insert 1.插入数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n); #指定字段来插入数据,插 ...

随机推荐

  1. SSCTF-Final-Re-Play

    SSCTF-Final-Re-Play  比赛时花了一晚上搞定了,结果写脚本的时候发送的内容忘记base64加密然后异或8了,手动测试的时候当然是这样做了,写脚本的时候脑抽了.这个题只有forx做出来 ...

  2. 【枚举+贪心】【TOJ3981】【ICPC Balloons】

    给你N种不同颜色气球,每种气球有个数目 count[i],给的同种颜色气球可能是L尺寸,或M尺寸. M个问题,每个问题有个解决人数ac[i]. 每个问题 要分配一种颜色的气球,尺寸要一样 现在 这些气 ...

  3. 【部分枚举】【3-21个人赛】ProblemH

    Problem H Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Sub ...

  4. web api (.NET 4.5)

    摘自http://blog.csdn.net/fangxing80/article/details/7318289 在刚刚发布的 ASP.NET MVC 4 中,有一个值得注意的新特性——Web Ap ...

  5. javascript模式——Facade

    Facade模式为许多代码提供一个方便的接口,不现实代码实现的复杂性,这样,使用者只需要关心他的使用接口就可以使用. 下面来看一段Facade模式的运用,绑定事件在浏览器之间是不一样的,利用Facad ...

  6. SVN(一次检出&二次检出)

    一次检出: >进入经历文件夹 >输入svn checkout指令 >输入电脑密码 >输入用户名 >输入密码 >检出成功 第二次检出: >进入小涛文件夹 > ...

  7. CentOS 6 安装 python and pip

    yum update yum list python*     //查看可安装python包 yum install python34.i686_64 wget https://bootstrap.p ...

  8. 用邻接表实现DFS和BFS

    #include <stdio.h> #include <stdlib.h> #define MAXVERTEX 10 typedef char VertexType; //顶 ...

  9. vc++ internet

    1.用VC开发ActiveX文档服务器 MFC 4.2不支持开发ActiveX容器,但支持ActiveX服务器.只要在使用MFC AppWizard生成应用程序框架时选择支持Active Docume ...

  10. 点击上下页,实现图片滚动的jquery代码

    <!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content=&q ...