* 本文仅供交流分享,不作为专业指导
最近研究了一下WEBADI文档下载的参数,由于网上这块资料较少,所以专意分享下我的笔记。
集成器:BHSC_EMP_ADI
表值集:BHSC_DEPT_LOV(值:dname,标识:deptno)
供下载内容的视图:BHSC_EMP_V
路径:桌面集成管理器/定义参数
1、如图选择应用,要和集成器保持一致
2、在这个页面,点击放大镜的话是查找已有的参数列表,带出信息以修改的,我们这一步骤是新建参数列表,故直接填写信息即可
在定义集成器的上传模板时,系统实际上也会创建一个对应的参数列表,代码一般为XXX_UPL,所以下载的参数列表建议保持一致,命名为XXX_DPL,本例取名为BHSC_EMP_ADI_DPL
3、保存后可在下面增加参数(点绿色加号),这个参数又分为两层结构Parameter和Definition,Parameter是参数列表的元素,但它相当于是一个壳子,它并不定义比如值列表、显示格式等信息,这些具体的信息是在Definition里定义。可以理解为Definition是实际的参数,但它是独立的,也是可供共享的,最终它将使用在哪个WEBADI的下载页面,这要看谁的参数列表里引用了它。
至于创建两者的顺序,孰先孰后都是可以的,本例先创建Definition
4、系统为集成器加载模板创建的Definition一般名为XXX_UPL1/2/3,所以我们也可照顾这个传统取名为“参数列表名1/2/3”,本例取名BHSC_EMP_ADI_DPL1
Source填写WEBADI:Download,Category选择Data,这俩不知道都是干啥的
Data Type根据实际情况选择
Default Required -- 是否必需
Default Visible -- 是否显示
Default User Modifiable -- 是否允许用户更改
Validation Type可以选择快速代码、值集等,本例选择值集,相应的Validation Value就填写值集名
Maximum Size和Display Size受值集限制,不能超过其最大长度
Display Type有List Box、Check Box、Text Field等选项,根据实际情况酌选,本例选择下拉列表
Prompt Left/Above是参数显示在页面的标题
点击保存,将转回到定义Parameter界面
5、点击放大镜,将上一步创建的Definition信息带出来,这里的Name可改可不改,这个Name将在后面SQL中使用,本例稍作调整,以明示Parameter和Definition的不同
6、自动返回到参数列表界面,点击保存,便创建好了一个参数,如果还想要更多参数,再点击绿色加号继续创建即可。
路径:桌面集成管理器/管理集成器
更新WEBADI,到第三步骤“内容”-->创建内容(SQL查询)
本例SQL语句为
SELECT t.empno,
t.ename,
t.job,
t.mgr,
t.hiredate,
t.sal,
t.comm,
t.deptno,
t.row_id,
t.mgr_name,
t.dname,
t.hiredate_str
FROM bhsc_emp_v t
WHERE t.deptno = nvl($PARAM$.P_DEPTNO, t.deptno)
其中,$PARAM$.P_DEPTNO就是取参数的值,这里使用参数列表里定义的参数名
接下来选择前面创建的参数列表到内容上,这样内容的参数就设置好了,后面定义映射等常规操作此处不作赘述。
开发过程中我发现,尽管参数定义为非必需的,但对于值列表的情况,页面上总会默认选择第一个值,且列表中并没有空白选项,也不能删除参数的值,这将导致非必需参数也变成了必需的。
如果在值集的视图里UNION ALL一行空值,那么页面上就可以选择到空选项了,但如果参数为空值又将报错“验证失败”,我猜测系统会用所选的参数值代入到值集中去检查,而空值不能通过等号比较。我想出的解决办法是,加的这行空值,应当具有一个别致的非空标识,例如dname是NULL,但deptno是-9999,这样内容的SQL语句中将不是用NVL处理,而是观察$PARAM$.P_DEPTNO是否为-9999。
这个解决方法只是将计就计,是否能从参数本身的设置上解决,尚不得知,请大家指教。
参考链接:
WebADI_案例实施06_创建SQL Query Content结合参数选择(案例)https://www.cnblogs.com/eastsea/archive/2012/12/06/4793134.html
WebADI_配置设定08_设定参数WebADI Parameters List(案例)https://www.cnblogs.com/eastsea/p/4767857.html