语义层会话变量的使用
会话变量是用来存取用户名、岗位、部门、职位、角色等用户信息的变量,用户在登录报表系统时,系统会读取该用户的会话变量,并且传递给语义层,当用户基于语义层设计报表时,系统会利用会话变量生成一些过滤条件,并把这些过滤条件强制叠加到报表中,这些过滤条件可以过滤掉这个用户不该看到的数据。于是,多个不同的用户基于同一个语义视图设计报表,却能够保证不同的人看到不同的数据。
下面我们就基于语义层设计报表,使用会话变量做数据过滤,做一张简单的网格是报表吧!
一.语义层文件设置
1. 在设计器中打开语义层编辑器
2. 在语义层设计器中打开要编辑的语义文件,本例使用润乾\reportHome\webapps\demo\WEB-INF\ runqianSemanticFile.xml制表(该文件为只读文件,设计时需将其只读属性去掉)
3. 定义会话变量:编辑器左侧的窗口中选中外部参数,点击工具栏上的”追加”按钮,会添加一个默认名为arg2的普通参数,将其的参数类型修改为会话变量。
4. 选中”视图”–SQL查询–员工信息,选中其属性标签,在其中的SQL语句后添加”where EMPLOYEE.SEX=?“,这样参数标签窗口中就自动增加了一个参数。
5.编辑参数如下图所示,然后将修改后的语义层文件保存。
7.在语义层中预览数据。
(1)弹出选择条件对话框,因为在参数设置的时候将其选出方式设置为必须选出,所以在该窗口中条件的选出方式默认被选中,点击确定。
(2)在语意层浏览窗口中,点击预览,输入相应的参数值,进行数据查询。
(3)在浏览窗口中过滤出员工性别为2的数据。
二.报表设计
1. 在润乾报表设计器界面的右下方面板,选择“语义层“标签页,切换到语义层面板。在面板中右键,在弹出的菜单中打开刚才编辑好的语义层文件。
2. 从面板中选中员工信息视图中的字段拖拽到报表中,设计报表如下图所示。
3. 配置–参数,在参数编辑窗口红定义一个名为arg2的会话变量。
三.发布报表的JSP中存会话变量值,为方便测试,我们直接在showReport.jsp中给会话变量存一个固定值,如session.setAttribute(“arg2″,”2″)。
四.发布报表,看是否能查出性别为2的员工信息。
实例概述:
会话变量主要应用于语义层的权限控制,当用作权限控制时,会话变量的选出方式被设置为“必须选出“,获取当前用户的相关会话信息(用户名、密码、所属用户组等等)为参数值,以根据用户身份进行权限控制,使得用户只能进行属于自己权限范围内的相关操作;所谓的权限控制,也就是对于数据进行过滤查询,所以本例与权限控制本质是相同的,使用语义层做表,实现权限控制的你,还在等什么,不防也试一下!