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. RMAN备份之丢失数据文件及控制文件的恢复

    About Recovery with a Backup Control FileIf all copies of the current control file are lost or damag ...

  2. Linux学习3——磁盘文件管理系统与压缩和打包操作

    一.写在前面  本节将对Linux的磁盘文件系统.文件的压缩打包等操作进行简要介绍. 二.完成目标 1.了解磁盘文件系统的接本知识 2.操作文件和目录的相关命令 3.文件系统的简单操作命令 4.Lin ...

  3. asp.net 树形控件 $.fn.zTree.init

    在网页中通过jquery脚本来构筑树形控件将是一个不错的选择,比如有一个文本框,当鼠标点击的时候,像弹出一个下拉框一样弹出一个树形控件,这似乎是一个不错的控制.下面主要讲讲这种树形控件的实现.为了能使 ...

  4. poj3292-类素数筛选法

    #include<iostream>using namespace std;const int N=1000002;int array[N]={0};int main(){ int n;  ...

  5. [Linked List]Palindrome Linked List

    Total Accepted: 29652 Total Submissions: 117516 Difficulty: Easy Given a singly linked list, determi ...

  6. C++_String

    String -String的实现 -String常用操作

  7. 设计模式之适配器模式(Decorator)

    1.意图 动态地给一个对象添加一些额外的功能. 2.适用性 动态.透明的方式给单个对象添加职责. 如果不适合适用子类来进行扩展的时候,可以考虑适用装饰模式. 避免子类数目爆炸性增长. 3.结构 4.参 ...

  8. 在HTML中使用JavaScript需要注意的问题

    1. 通过<script>元素的src属性可以包含来自外部域的js文件,这一点与<img>元素一样,但这让<script>元素倍显强大的同时又受争议,访问外部域js ...

  9. thinkphp批量删除的实现

    今天自己在写后台的时候需要把以前上传的测试文章全部删除掉,但是利用 [操作]里面的一个个删除比较慢,因此想出一个批量删除的解决方案. 首先在前端页面里面建立一个表单,这个表单是把你选中的单选按钮提交到 ...

  10. HTML特殊符号编码大全

    HTML特殊字符编码:往网页中输入特殊字符,需在html代码中加入以&开头的字母组合或以&#开头的数字.下面就是以字母或数字表示的特殊符号大全. ´ ´ © © > > µ ...