实现WebADI输入值列表验证

转自: http://oracleseeker.com/2009/04/12/create_list_of_value_for_webadi_key/
 

图中序号:

  1. LOV窗口标题
  2. LOV表格题头
  3. LOV表格显示记录数
  4. LOV窗口的高度
  5. LOV窗口的宽度

LOV表格中的数据源,目前支持以下几种验证类型:

  1. TABLE
  2. JAVA
  3. KEYFLEX
  4. KEYFLEXSEG
  5. EXPANDEDSQL
  6. DESCFLEX
  7. DESCFLEXSEG
  8. DESCFLEXCONTEXT
  9. GROUP

不过比较失望的是输入值的验证在界面定义中踪影未见,目前要实现这一功能,完全需要从后台插入数据。需要完成如下的工作:

  1. LOV数据源
  2. LOV与Item关联
  3. LOV窗口属性:标题、表格题头、高度、宽度和显示记录数

一,输入值验证后台表结构

同上面一样,要搞清楚WebADI输入值验证的问题,首先还得先弄明白后台的表结构关系,此部分只描述与输入值验证有关的表结构。

数据结构图中只列出了基本信息表,没有列出多语言对应的_TL表,在理解的时候请大家注意。

表简要描述:

  1. bne_integrators_b:存贮WebADI集成器
  2. bne_interfaces_b:存贮集成器对应接口信息
  3. bne_interface_cols_b:存贮接口对应的列信息,包括列的各种验证信息和属性
  4. bne_components_b:OA组件定义,如一个验证的LOV就是一个组件
  5. bne_param_lists_b:参数列表,可以理解为参数的分组。目的是为了实现参数的重用
  6. bne_param_list_items:存贮参数列表和参数的关联信息
  7. bne_param_defns_b:存贮参数定义,包括默认值、验证信息、显示信息等。

从上图中得出:

  1. 一个集成器包含1..N个接口
  2. 一个接口包括0..1个接口列
  3. 一个接口列和0..1个OA组件关联
  4. 一个OA组件对应一个参数列表
  5. 一个参数列表包括1..N个参数项目
  6. 一个参数项目对应0..1个参数定义

二,后台逻辑和相关的表列

  1. 首先后台根据bne_interface_cols_b表中的设置取得验证信息
  2. 根据验证类型和验证对象取得验证数据
  3. 根据OA组件的设置初始化和显示LOV窗口。组件对应的属性都当作参数存贮在bne_param_defns_b表中

列的验证信息存储在表bne_interface_cols_b中,涉及的列为:

  1. VAL_TYPE:验证类型,现在有:TABLE, JAVA, KEYFLEX, KEYFLEXSEG, EXPANDEDSQL, DESCFLEX, DESCFLEXSEG, DESCFLEXCONTEXT, GROUP
  2. VAL_ID_COL:验证列表返回ID,相当于值集定义中的ID
  3. VAL_MEAN_COL:验证列表的显示值,相当于值集定义中的Name
  4. VAL_DESC_COL:验证列表描述,相当于值集定义中的Meaning
  5. VAL_OBJ_NAME:验证列表对应的对象,根据验证类型的不同而不同
  6. VAL_ADDL_W_C:验证列表附加条件,相当于值集定义中的Where条件
  7. LOV_TYPE:LOV的类型,有NONE,STANDRAD,POPLIST

表bne_interface_cols_b中包括了如下两列来实现一个验证值列表与OA组件的关联

  1. VAL_COMPONENT_APP_ID:组建对应的应用ID
  2. VAL_COMPONENT_CODE:组建的代码

三,插入表记录步骤 –> 实现输入值列表验证

  1. 为LOV创建参数一个列表:bne_param_lists_b
  2. 创建参数列表多语言信息:bne_param_lists_tl
  3. 创建参数:bne_param_defns_b
  4. 创建参数多语言信息:bne_param_defns_tl
  5. 将参数和参数列表进行关联:bne_param_list_items
  6. 创建OA组件,并与参数列表关联:bne_components_b ,组件编码一般以“OA_”打头
  7. 创建OA组件多语言信息:bne_components_tl
  8. 更新接口列信息:bne_interface_cols_b

插入表记录步骤 –> bne_param_lists_b表要求

  1. Param_list_code:一般以“COMP_”打头,如COMP_CATEGORY

插入表记录步骤 –> bne_param_defns_b表要求

为值列表LOV定义参数的目的是将LOV窗口的一些属性当作参数来处理,因此一般一个LOV窗口需要创建如下的6个属性参数:

  1. TABLE_SELECT_COLUMN
  2. TABLE_COLUMNS
  3. WINDOW_WIDTH:LOV参数窗口宽度
  4. WINDOW_HEIGHT:LOV参数窗口高度
  5. TABLE_BLOCK_SIZE:LOV结果记录数
  6. OA__WIN_CAP:LOV参数窗口标题
  7. OA__TAB_HDR:LOV参数表格题头

param_list_code

Param_name

Data_Type

Default_string

Default_string_trans_flag

Default_number

Display_type

Display_style

TABLE_COLUMNS

table-columns

1

N

4

1

TABLE_SELECT_COLUMN

table-select-column

1

N

4

1

WINDOW_HEIGHT

window-height

1

450

N

4

1

WINDOW_WIDTH

window-width

1

350

N

4

1

TABLE_BLOCK_SIZE

table-block-size

2

N

25

4

1

OA__TAB_HDR

Web ADI Components: OA_ table-headers

1

Y

4

1

OA__WIN_CAP

Web ADI Components: OA_ window-caption

1

Search and Select –

Y

4

1

说明:

  1. 上面表格中底色为浅红色行中的param_list_code和param_name必须和表格中保持一致
  2. 底色为浅红色的参数可以在多个LOV中引用,只要将这些参数赋给不同的参数列表项就可以
  3. 如果Default_string_trans_flag为Y的必须在表bne_param_defns_tl中定义多语言信息

具体例子可以看系统标准的定义:

?[Copy to clipboard] View Code SQL
1
2
3
4
5
6
7
8
SELECT *
  FROM bne_param_defns_vl d
 WHERE d.application_id = 231
   AND d.param_defn_code IN
       (SELECT t.param_defn_code
          FROM bne_param_list_items t
         WHERE t.application_id = 231
           AND t.param_list_code = 'COMP_CATEGORY');

插入表记录步骤 –> bne_components_b表要求

要求:

  1. Component_code:一般以“OA_”打头,如OA_CATEGORY
  2. Component_java_class:oracle.apps.bne.integrator.component.BneOAValueSetComponent(还有其他值,各位可以研究一下)

插入表记录步骤 –> 更新表bne_interface_cols_b表要求

根据验证类型的不同,更新列差距比较大,需要关注的列:

  1. INTERFACE_COL_NAME
  2. VAL_TYPE
  3. VAL_ID_COL
  4. VAL_MEAN_COL
  5. VAL_DESC_COL
  6. VAL_OBJ_NAME
  7. VAL_ADDL_W_C
  8. VAL_COMPONENT_APP_ID
  9. VAL_COMPONENT_CODE
  10. LOV_TYPE
  11. OFFLINE_LOV_ENABLED_FLAG
  12. GROUP_NAME
  13. OA_FLEX_NUM
  14. OA_FLEX_APPLICATION_ID
  15. OA_FLEX_CODE
  16. OA_CONCAT_FLEX

本文以验证类型为Table做个示例,请看下面2个图:

其它很多的验证类型各位可以参考系统的General Ledger – Journals,其中实现了很多种验证类型

?[Copy to clipboard] View Code SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT infc.interface_col_name,
       infc.val_type,
       infc.val_id_col,
       infc.val_mean_col,
       infc.val_desc_col,
       infc.val_obj_name,
       infc.val_addl_w_c,
       infc.val_component_app_id,
       infc.val_component_code,
       infc.lov_type,
       infc.offline_lov_enabled_flag
  FROM bne_integrators_vl    ingr,
       bne_interfaces_vl     inf,
       bne_interface_cols_vl infc
 WHERE ingr.application_id = inf.integrator_app_id
   AND ingr.integrator_code = inf.integrator_code
   AND inf.interface_code = infc.interface_code
   AND inf.application_id = infc.application_id
   AND infc.display_flag = 'Y'
   AND ingr.integrator_code = 'JOURNALS_120' – ‘GL_BUDGET_INTERFACE_115’
   --AND ingr.user_name = 'General Ledger - Journals'
   AND infc.VAL_TYPE is NOT NULL ;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24627116/viewspace-769123/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24627116/viewspace-769123/

你可能感兴趣的:(java,数据库)