在oracle中建立下拉框,WEB ADI中创建下拉式菜单的设置方法(转/编)

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,重新下载文档录入表单,就可以看到变化了。

你可能感兴趣的:(在oracle中建立下拉框)