我的DBA之路 2013-02-17
简要说明:
应用开发员>附件
定义文档实体Document Entities,将要加附件中的表在这里注册
定义单据分类Document Categories,将单据做一个分类
定义附件功能Document Function,将要加附件的FORM窗口在这里进行定义,并规定要加入附件的分类,指定在FORM中哪个块加入附件就可以了
详细说明:
Attachements
Oracle的附件给我们提供了一个方便的功能,只要定义定义,不需要任何代码就可以实现附件功能,比弹性域还方便(当然功能没有弹性域强)
定义Attachements比较容易,遵循115devg中的Attachements章节即可完成。
fnd_attached_*****系列的表保存我们在开发员职责里面的附件定义
fnd_documents_****系列的表保存最终用户的具体的附件业务数据,file类型的附件存储在fnd_lobs表中
fnd_documents_tl.media_id可以关联到fnd_lobs.file_id、fnd_documents_long_text.media_id、fnd_documents_shot_text.media_id取得相应的附件内容
定义过程如下
1、定义Entity实体,其实就是表,必须的
Table 输入表名即可
Entity ID 输入表名即可,如果在同一个标定义多个实体,可以用“表名_N”的形式,随便
Entity Name 输入一个比较友好的名字,这个名字要显示给用户看
Prompt 没什么用
Application 就是我们的应用;如果是定义在Oracle标准表上,最好也用我们自己的应用名,否则升级的时候会丢失
2、定义Document Categories,其实就是定义一个类别或者说一个标志,可以直接用系统的Miscellaneous这个类别,可选的
Category 输入任意一个名字即可
Default Datatype 随便选一个,最好选会应用这个Category最常用的类型,比如文件
Effective Date 默认,不填即可
Assinments按钮 这里不用管
3、定义Attachement Function,必须的
Type 一个Form可能关联几个Function(进一步关联几个菜单),如果附件在不同的Function下可能不同,比如Category不同(从而可以过滤附件,这就是所谓的安全性),这里选Function;如果附件不需要区分Function,这里就选Form
Name Form或者Function的名字
User Name 自动出来
Session Context 我没用它
Enabled 打勾
4、点击Category按钮,为上面定义的Attachement Function选择刚才定义的Category,或者选择Miscellaneous,可以选择任意个,必须的
**Category的工作原理:Category本身仅仅是一个标志,就像我们部门字典表一样;一个Form(或者其Function)会关联到一个或多个Category(就是在这里定义);最终用户在把一个附件添加到这个Form上的一条记录上时,必定会指定属于某个Category,可选范围就是这里定义的;到这里Category还没有显示出什么作用,也就是如果仅仅一个地方会用到这个附件,Category就没什么用。如果同一个实体的附件会在其他Form上出现,就像115devg文档所说的,一个Product的附件可以在Order Line上被显示出来,假如用户上传了一个图片作为附件,并分配Category为xxxxx,如果Order Form的Category没有包含xxxxx,在Order Line上将看不到那个附件。按我的理解,就这样。
5、定义Attachement Function Block,定义我们Form上包含附件的数据块,每个块都可以定义,必须的
Block Name 输入块名,不要告诉我你不知道!
Method 一般Base Entity选Allow Change,如果是引用的选Query Only
Secured By 这个可以进一步限制安全性,可以不定;这里我不多说,如果不清楚再找我
6、定义Block-Entity关系,必须的
Entity 选择上面定义的实体,一行一个
Display Method 基础实体选择Main Window,引用实体选择Related Window
Include in Indicator 基础实体打勾,引用实体不选;这个选项其实就是用来初始化工具栏上的图标,选不选都不影响功能
Indicator in View 我没选
操作许可 分别定义Query/Insert/Update/Delete,基础实体一般允许全部操作,引用对象不能有Insert,其他的看需要
定义条件 根据条件更加灵活的定义“操作许可”范围;这里我不多说,如果不清楚再找我
7、定义关键字段,一般是主键,这里指块上的Item而非表里面的,所以需要用“块名.Item名”,必须的
按顺序定义,如果基础块的实体不定义主键,仍然可以工作,但在引用块将看不到,这是我碰到的问题
8、定义SQL Statement,附加的限制条件,就像我们在Form开发时定义的Where Clause一样,一般没用,可选的
使用过程如下
1、打开我们的Form,查询记录或者输入新记录
2、注意工具栏上的Attachment按钮时可用的,点击
3、出来附件窗口,想怎么玩都行
最好用IE浏览器打开Oracle Application,有些基于IE内核的浏览器可能无法打开附件上传窗口
后续关注:
默认方式下附件存放进数据库,会影响性能,正在研究是否能改成放到文件目录中,待续。
-------------------------------------------------------------------
来自ORACLE 的回复:Note:294525.1
In Oracle Applications 11.0, file attachments were stored using the 'Attachment File Directory' system profile option. In 11i, File type attachments went from being stored on the filesystem to being stored in the db in FND_LOBS alone.
也就是11i不能把文件附件放进目录,要放进目录只能做开发了。
ORACLE EBS中附件功能的使用-上传用户操作文档