参考资料:
1. http://blog.csdn.net/tavor/article/details/18790729
1. http://www-apps.us.oracle.com/fwk/fwksite/jdev1223/doc/devguide/feat/feat_flexfields.htm#DFFDeclarative
2. https://blogs.oracle.com/manojmadhusoodanan/entry/creating_descriptive_flex_field_dff
3. https://blogs.oracle.com/manojmadhusoodanan/entry/adding_descriptive_flex_field_dff
第一个资料是翻译的文档, 内容全但是没有实例.
第二个资料有详细的步骤和截图, 教你怎样在 OAF 开发的界面设置 DFF
第三个资料教你怎样直接在界面上设置, 而不是在 OAF 开发界面设置. 我自己没试过, 仅供参考.
---------------------------------------------------------------------------------------------------------------------
下面以我自己做的实例截图, 记录做 DFF 的步骤:
1. 首先看下效果
这三个字段分别对应 RCV_TRANSACTIONS 表上的 ATTRIBUTE1, ATTRIBUTE2, ATTRIBUTE3
页面提交的时候, 会执行对应 AM 里面 apply() 方法. 以我们的为例:
在 RcvTransactionsPG 上面加一个 messageComponentLayout 的item, 在它下面加一个 messageLayout 的item, 再在它下面新建一个 flex 的item.
View Instance: 选择 DeliverVO1, 我们的DFF 加到这个 VO 里面, 这个 VO 在上面的 AM 里面.
Appl Short Name: PO, 因为我们的表是 Purchasing 下的.
Name: RCV_TRANSACTIONS, 这是 DFF 的名字
Segment List: 可以不填, 会把定义的所有的 segment 显示出来. 如果要指定显示哪些 segment, 那么按照下面的格式填:
Global Data Elements|Asset Tag Number|yuTest1|yuTest2||...
用单竖线分隔各个 attribute, 用双竖线分隔各个 Context Field.
定义好运行就可以看见上面的例子了.
2. 怎样查看代码运行时的值
代码里面有获取 VO 行的代码:
OAViewObjectImpl viewObject = this.getVO(); RowSetIterator iter = viewObject.getRowSetIterator(); OAViewRowImpl row = (OAViewRowImpl)iter.first();
row.getAttribute("Attribute1")
3. DFF 的定义和使用在我之前的一篇博客里面写了, 这里简单的截图
这是注册 DFF 的界面, 包括 Application: Purchasing, 因此上面的 Appl Short Name 是 PO
DFF 的 Name 也是上面 OAF 设置使用的 Name
Table Name 是 DFF 使用的表
Title 是 Form 上弹出 DFF 窗口上显示的 Title, 但是 OAF 界面没有 DFF 弹出窗口, 这个也就没什么用.
Context Field Values 里面有一条记录 Global Data Element, 可以在里面定义 Segment. 也可以建立其他的Value Set, 参考资料2.
这个也就是 OAF 界面上 Segment List 里面, 单竖线前面的字段.
单竖线后面的字段就是下面定义的, 可以通过设置 Segment List 选择性的显示
4. 这里的这个例子只是简单的展示了在 OAF 页面上设置静态的 DFF 字段, 如果想要运行时确定, 那么需要写代码, 参考资料1.
如果想要设置多个 value set, 参考资料2, 可以用于 PPR 事件.