类型为会话变量的参数的使用方法
会话变量是指和用户个人信息相关的一些变量,比如用户名、岗位、部门、职位、角色等等,有了会话变量,就可以识别这个人的身份,知道这个人拥有哪些权限。用户在登录报表设计系统时,系统会读取该用户的会话变量,并且传递给语义层,当用户基于语义层设计报表时,系统会利用会话变量生成一些过滤条件,并把这些过滤条件强制叠加到报表中,这些过滤条件可以过滤掉这个用户不该看到的数据。于是,多个不同的用户基于同一个语义视图设计报表,却能够保证不同的人看到不同的数据。
会话变量主要应用于语义层的权限控制。
会话变量是语义层外部参数的一种,它可以在语义层编辑器的“外部参数“中定义,并可以在语义层内所有的视图中使用,使用方法与普通参数无异。
用作权限控制时,会话变量的选出方式被设置为“必须选出“,获取当前用户的相关会话信息(用户名、密码、所属用户组等等)为参数值,以根据用户身份进行权限控制,使得用户只能进行属于自己权限范围内的相关操作。
设置会话变量的步骤和设置普通参数类似。在语义层设计器中,选择“外部参数“,右边就可以看到所有该语义层中包含的参数。点击工具栏中的“追加“按钮,新建一个变量,将“参数类型“选择为“会话变量“,这样就定义了一个会话变量。
回到报表设计器,刷新语义层面板,在语义层面板中点右键-会话变量,可以输入会话变量的值,这里输入的会话变量的值只用于测试使用,报表发布后运行的会话变量的值不能由用户自己输入,而是由系统自动的从用户的session中获得的。
举例:由会话变量控制用户的权限
假如定义了一个会话变量sessionPr,用于用户远程登录到报表设计器时的权限控制。
如果王伟是销售员,他输入正确的用户名和密码登录到远程设计器后,系统会自动的从seesion里面获取王伟的身份标识信息,然后把标识信息赋给会话变量sessionPr,当王伟打开销售报表时,他只能看自己的销售记录,系统利用会话变量生成一些过滤条件,并把这些过滤条件强制叠加到报表中,这些过滤条件可以过滤掉其他销售员的销售记录,只留下王伟的销售记录,从而达到权限控制的目的。王伟看到的销售报表如下:
如果王伟是销售经理,那么他可以查看所有销售员的销售记录,他输入正确的用户名和密码登录到远程设计器后,系统会自动的从seesion里面获取王伟的销售经理身份标识信息,然后把标识信息赋给会话变量sessionPr,当王伟打开销售报表时,系统读取会话变量的值,看到是销售经理那么就不再叠加强制的过滤条件到报表中,这时王伟可以看到所有销售员的销售记录。销售经理看到的销售报表如下:
会话变量用于权限控制时用户不能自己输入会话变量的值,会话变量的值是由系统自动的从用户的session中获取的。