可见性文件可以使用DQL元数据层设计器编辑,存为vsb格式的文件,可以和查询控件一起部署在web服务器上,对于不同的用户可以配置不同的可见文件,使他们在登录web后拥有不同的访问权限。
可见性设定的结构如下:
可以在菜单中执行系统>导入元数据,将元数据文件中的表导入。
Ø 表可见性
对于每个表,均可以设定为可见、不可见或者条件可见。
当表可见时,可以在DQL中正常查询该表的数据。当表不可见时,在DQL中查询该表数据时会报错。
表设为条件可见时,将根据设定的条件,在查询表的数据时强制过滤。这样,通过使用不同的可见性配置文件,可以使得不同的用户浏览到的记录不同。
如将销售表的表可视属性设为条件可见:
则此时对销售表用DQL查询: SELECT * FROM 销售,相当于SELECT * FROM 销售 WHERE 雇员ID=1。
Ø 字段可见性
在每个表中均可以设定不可视字段名称列表,不可视字段名称与元数据中的字段名相对应,但是不包括测度名、广义外键名及广义字段名等。
设定为不可视的字段,在DQL的查询中将不允许使用。
知识点:
和字典不同,可见性设定会影响DQL的执行结果;而字典通过web应用分析,与DQL的执行无关。
Ø 导入可见性
引用外部可视文件,将可视文件中的表引入到当前可视文件中,可对所选择的文件进行重新加载或编辑操作。导入完成后新引入的可视文件中的表会添加显示在右侧表项列表中,如下图所示:
知识点:
和系统->合并可视文件使用不同,合并可视文件是将两个可视中的表合并在一个可视文件中,合并后的所有表都会添加到当前字典文件中,合并时如有表重名会提示是否覆盖或替换。导入可视文件是将选择的可视文件引入到当前可视文件中,如有表重名会直接提示”该表项已存在”。
官方界面只是查询工具,不具备用户权限系统,客户把查询页面引入到自己的系统后,需要在jsp上部的java代码处根据当前用户准备不同的Tag属性值,达到权限控制的目的。Tag属性详细介绍请参考《程序员参考》查询分析控件。
示例:
假如客户系统中有两个用户root和guest。root用户权限最大,可以查询全部指标;guest用户只有部分权限:只能查看个别表的指标。那么我们就可以通过使用变量传递不同的Tag属性值达到权限控制的目的。
java代码判断,如果当前用户是root则通过Tag属性传递如下值:
String visibility= request.getParameter( " visibility" );
visibility = "root.vsb";//root.vsb:对元数据中的所有表都可见
如果当前用户是guest则通过Tag属性传递如下值:
String visibility = request.getParameter( " visibility" );
visibility= "guest.vsb";//guest.vsb:仅对元数据中的订单表、产品类别和产品表可见
<raqsoft:detailQuery
qyx="<%=qyx %>"
dataSource="<%=dataSource %>"
dictionary=""
visibility="<%=visibility %>"
/>
root用户的查询页面demo如下图:
guest用户的查询页面demo如下图: