ORACLE WEB ADI支持的值列表有两种形式:下拉式菜单(POPLIST)和标准值列表(STANDARD弹出窗口即LOV),本章介绍下拉式菜单的设置方法。
WEB ADI表结构(只列出了基本信息表,没有列出多语言对应的_TL表):
bne_integrators_b:存贮定义的WebADI集成器
:存贮集成器对应接口信息
bne_interface_cols_b:存贮接口对应的列信息,包括列的各种验证信息和属性
bne_components_b:OA组件定义,如一个验证的LOV就是一个组件
bne_param_lists_b:参数列表,可以理解为参数的分组,目的是为了实现参数的重用
:存贮参数列表和参数的关联信息
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,重新下载文档录入表单,就可以看到变化了。