ORACLE WEB ADI支持的值列表有两种形式:下拉式菜单(POPLIST)和标准值列表(STANDARD弹出窗口即LOV),本章介绍下拉式菜单的设置方法。
WEB ADI表结构(只列出了基本信息表,没有列出多语言对应的_TL表):
- bne_integrators_b:存贮定义的WebADI集成器
- bne_interfaces_b:存贮集成器对应接口信息
- bne_interface_cols_b:存贮接口对应的列信息,包括列的各种验证信息和属性
- bne_components_b:OA组件定义,如一个验证的LOV就是一个组件
- bne_param_lists_b:参数列表,可以理解为参数的分组,目的是为了实现参数的重用
- bne_param_list_items:存贮参数列表和参数的关联信息
- bne_param_defns_b:存贮参数定义,包括默认值、验证信息、显示信息等
(一)做一个方便开发的WEB_ADI_DEPLOY(即一个UPDATE类型的ADI)
1)定义VIEW:用于方便我们管理与设置WEB ADI的参数,其实直接用SQL修改也是一样的
CREATE OR REPLACE VIEW WEB_ADI_DEPLOY_V AS
SELECT INTG.APPLICATION_ID
,INTG.INTEGRATOR_CODE
,INTG.USER_NAME
,INTG.DATE_FORMAT
,INTC.INTERFACE_CODE
,INTC.SEQUENCE_NUM
,INTC.DISPLAY_ORDER
,INTC.INTERFACE_COL_NAME
,INTC.REQUIRED_FLAG
,INTC.DISPLAY_FLAG
,INTC.READ_ONLY_FLAG
,INTC.NOT_NULL_FLAG
,INTC.DATA_TYPE
,INTC.FIELD_SIZE
,INTC.DEFAULT_TYPE
,INTC.DEFAULT_VALUE
,INTC.VAL_TYPE
,INTC.VAL_ID_COL
,INTC.VAL_MEAN_COL
,INTC.VAL_DESC_COL
,INTC.VAL_OBJ_NAME
,INTC.VAL_ADDL_W_C
,INTC.VAL_COMPONENT_APP_ID
,INTC.VAL_COMPONENT_CODE
,INTC.LOV_TYPE
,INTC.OFFLINE_LOV_ENABLED_FLAG
,INTC.USER_HINT
,INTC.PROMPT_LEFT
,INTC.PROMPT_ABOVE
FROM BNE_INTERFACE_COLS_vl INTC
,BNE_INTERFACES_VL INTF
,BNE_INTEGRATORS_VL INTG
WHERE INTC.INTERFACE_CODE = INTF.INTERFACE_CODE
AND INTF.INTEGRATOR_CODE = INTG.INTEGRATOR_CODE;
2)定义一个PACKAGE,专用于修改WEB ADI的设置变量
CREATE OR REPLACE PACKAGE WEB_ADI_DEPLOY_PKG IS
-- Author : AHUNGHUO+ZUIBUNAN
-- Created : 2007-9-15 16:26:50+2009-10-9
-- Public type declarations
--############################################################################
procedure pop_interface_cols(
P_APPLICATION_ID NUMBER
,P_INTEGRATOR_CODE VARCHAR2
,P_USER_NAME VARCHAR2
,P_DATE_FORMAT VARCHAR2
,P_INTERFACE_CODE VARCHAR2
,P_SEQUENCE_NUM VARCHAR2
,P_INTERFACE_COL_NAME VARCHAR2
,P_REQUIRED_FLAG VARCHAR2
,P_DISPLAY_FLAG VARCHAR2
,P_READ_ONLY_FLAG VARCHAR2
,P_NOT_NULL_FLAG VARCHAR2
,P_DATA_TYPE VARCHAR2
,P_FIELD_SIZE VARCHAR2
,P_DEFAULT_TYPE VARCHAR2
,P_DEFAULT_VALUE VARCHAR2
,P_VAL_TYPE VARCHAR2
,P_VAL_ID_COL VARCHAR2
,P_VAL_MEAN_COL VARCHAR2
,P_VAL_DESC_COL VARCHAR2
,P_VAL_OBJ_NAME VARCHAR2
,P_VAL_ADDL_W_C VARCHAR2
,P_VAL_COMPONENT_APP_ID VARCHAR2
,P_VAL_COMPONENT_CODE VARCHAR2
,P_DISPLAY_ORDER VARCHAR2
,P_LOV_TYPE VARCHAR2
,P_OFFLINE_LOV_ENABLED_FLAG VARCHAR2
,P_USER_HINT VARCHAR2
,P_PROMPT_LEFT VARCHAR2
,P_PROMPT_ABOVE VARCHAR2
);
END WEB_ADI_DEPLOY_PKG ;
CREATE OR REPLACE PACKAGE BODY WEB_ADI_DEPLOY_PKG IS
--############################################################################
PROCEDURE web_adi_deploy_p(
P_APPLICATION_ID NUMBER
,P_INTEGRATOR_CODE VARCHAR2
,P_USER_NAME VARCHAR2
,P_DATE_FORMAT VARCHAR2
,P_INTERFACE_CODE VARCHAR2
,P_SEQUENCE_NUM VARCHAR2
,P_DISPLAY_ORDER VARCHAR2
,P_INTERFACE_COL_NAME VARCHAR2
,P_REQUIRED_FLAG VARCHAR2
,P_DISPLAY_FLAG VARCHAR2
,P_READ_ONLY_FLAG VARCHAR2
,P_NOT_NULL_FLAG VARCHAR2
,P_DATA_TYPE VARCHAR2
,P_FIELD_SIZE VARCHAR2
,P_DEFAULT_TYPE VARCHAR2
,P_DEFAULT_VALUE VARCHAR2
,P_VAL_TYPE VARCHAR2
,P_VAL_ID_COL VARCHAR2
,P_VAL_MEAN_COL VARCHAR2
,P_VAL_DESC_COL VARCHAR2
,P_VAL_OBJ_NAME VARCHAR2
,P_VAL_ADDL_W_C VARCHAR2
,P_VAL_COMPONENT_APP_ID VARCHAR2
,P_VAL_COMPONENT_CODE VARCHAR2
,P_LOV_TYPE VARCHAR2
,P_OFFLINE_LOV_ENABLED_FLAG VARCHAR2
,P_USER_HINT VARCHAR2
,P_PROMPT_LEFT VARCHAR2
,P_PROMPT_ABOVE VARCHAR2
) IS
BEGIN
UPDATE BNE_INTERFACE_COLS_B b
SET B.REQUIRED_FLAG=P_REQUIRED_FLAG
,B.DISPLAY_FLAG=P_DISPLAY_FLAG
,B.READ_ONLY_FLAG=P_READ_ONLY_FLAG
,B.NOT_NULL_FLAG=P_NOT_NULL_FLAG
,B.DATA_TYPE=P_DATA_TYPE
,B.FIELD_SIZE=P_FIELD_SIZE
,B.DEFAULT_TYPE=P_DEFAULT_TYPE
,B.DEFAULT_VALUE=P_DEFAULT_VALUE
,B.VAL_TYPE=P_VAL_TYPE
,B.VAL_ID_COL=P_VAL_ID_COL
,B.VAL_MEAN_COL=P_VAL_MEAN_COL
,B.VAL_DESC_COL=P_VAL_DESC_COL
,B.VAL_OBJ_NAME=P_VAL_OBJ_NAME
,B.VAL_ADDL_W_C=P_VAL_ADDL_W_C
,B.VAL_COMPONENT_APP_ID=P_VAL_COMPONENT_APP_ID
,B.VAL_COMPONENT_CODE=P_VAL_COMPONENT_CODE
,B.DISPLAY_ORDER=P_DISPLAY_ORDER
,B.LOV_TYPE=P_LOV_TYPE
,B.OFFLINE_LOV_ENABLED_FLAG=P_OFFLINE_LOV_ENABLED_FLAG
WHERE B.INTERFACE_CODE = P_INTERFACE_CODE
AND B.SEQUENCE_NUM = P_SEQUENCE_NUM;
UPDATE BNE_INTERFACE_COLS_TL T
SET T.USER_HINT=P_USER_HINT
,T.PROMPT_LEFT=P_PROMPT_LEFT
,T.PROMPT_ABOVE=P_PROMPT_ABOVE
WHERE T.INTERFACE_CODE = P_INTERFACE_CODE
AND T.SEQUENCE_NUM = P_SEQUENCE_NUM;
COMMIT;--此处COMMIT可以不要,ADI有默认的COMMIT在最后执行完后
END;
begin
null;
END WEB_ADI_DEPLOY_PKG ;
3)注册集成器:使用WEB ADI职责中的CREATE DOCUMENT,选择“HR 集成器设置”...最后在打开的EXCEl中参数设置如下:
元数据类型 | UPDATE |
应用简称 | XYZ(例如:XYZ客户化应用,即20003) |
集成器用户名 | WEB_ADI_DEPLOY |
视图名称 | WEB_ADI_DEPLOY_V |
表单名 | GENERAL |
API 程序包名 | WEB_ADI_DEPLOY_PKG |
API 过程名 | web_adi_deploy_p |
界面用户名 | WEB_ADI_DEPLOY_INTF |
界面参数列表名 | WEB_ADI_DEPLOY_PARALIST |
API 类型 | PROCEDURE |
API 返回类型 |
|
4)在系统中挂表单功能,并将该功能挂在职责“Oracle Web ADI“对应的菜单下、在职责“Oracle Web ADI“下,用‘HR 维护集成器表单功能关联’进行集成器与表单功能的关联,用‘HR 创建集成器责任限制’分配权限(详细步骤略)
5)设置独立查询:使用WEB ADI职责中的CREATE DOCUMENT,选择“HR 维护独立查询”...参数设置如下:
应用简称 | XYZ |
集成器用户名 | WEB_ADI_DEPLOY |
SQL WHERE 子句 | WHERE USER_NAME LIKE $PARAM$.XYZ:UserNameLike |
第 1 个参数名 | XYZ:UserNameLike |
第 1 个参数类型 | Varchar2 |
第 1 个参数提示 | 集成器用户名 |
6)设置Layout,显示全部列(略),任意挑选需要显示和更改的字段。如果VIEW有这个字段而Procedure的参数没有,则仅作为显示内容,不允许修改。
7)设置mapping,特别是VIEW的字段名和Procedure的参数名不一致的时候,必须手工制定。系统自动把Procedure的全部参数(裁剪前2位字符)与VIEW的字段名向匹配,如果有不一致或者需要特殊映射的地方,需要手工指定。
在本例子中由于VIEW字段名和PROCEDURE参数名完全一致,所以不用更改默认设置。
8)完成创建“WEB_ADI_DEPLOY”集成器的文档,就可以开始设置值列表了。
(二)下拉式菜单的设置(实现)
通过(一)的WEB_ADI_DEPLOY在你创建的ADI中将需要设置值列表的字段,配置以下参数(也可以通过SQL):
参数名 | 参数说明 | 例子 |
VAL_TYPE | 值列表数据来源 | TABLE |
VAL_ID_COL | 传递给程序参数的字段 | USER.user_id |
VAL_MEAN_COL | 在EXCEL中显示的字段 | USER.user_name |
VAL_DESC_COL | 说明的字段(POPLIST时,没有必要填) | USER.description,...等等 |
VAL_OBJ_NAME | 值列表所在的表名(可以多表及别名) | USER_T USER,...等等 |
VAL_ADDL_W_C | WHERE语句 | |
VAL_COMPONENT_APP_ID | 组件的应用ID,如对格式没有严格要求,可选择任一个通用的组件。例如231(注:POPLIST时,可为空) | |
VAL_COMPONENT_CODE | 组件名,如对格式没有严格要求,可选择任一个通用的组件。例如OA_REVERSE_JOURNAL(注:POPLIST时,可为空) | |
LOV_TYPE | 值列表类型,统一选择:POPLIST | POPLIST |
OFFLINE_LOV_ENABLED_FLAG | 离线编辑EXCEL表格时是否可用 | Y |
修改后上传即可。然后重启APACHE,重新下载文档录入表单,就可以看到变化了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15725751/viewspace-615299/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15725751/viewspace-615299/