通过角色控制单元格可写属性

有许多客户提出需求,希望能够通过集智平台使用报表实现权限控制的功能,想实现不同角色不同ID的人访问同一张报表的时候,能够有不同的可写权限,看见的可写内容也不一样,下面我们就来制作一个简单的例子,来实现不同角色通过不同的url来访问报表时,看到的报表可写权限不同效果。

第一步,制作一张填报表。

首先连接demo数据源,并新建一张空白的填报表,内建一个数据集,内建数据集的字段以及报表的样式如下图所示:

然后添加一个参数,参数名为userID,这个参数的作用是用来判断访问的角色,进而决定单元格的可写属性,参数的具体形式和设置内容如下图所示:

第二步,设置可写表达式,实现可写属性的判断。

先在F2单元格的显示值表达式写入:map(list(“1″,”0″),list(““,”“)),然后在A2单元格的填报属性-可写表达式里面写入如下表达式:if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false),具体的样式如下图所示:

同理,我们在B2,C2,D2,E2,F2单元格中也分别写入如下内容:

B2if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)

C2if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)

D2if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)

E2if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)

F2if(@userID==ds1.录入人 && ds1.是否审批==’0′,true,false)

第三步:发布报表。

用自带的tomcat发布上面的报表,将报表的名字存为testRole.raq,然后我们分别通过下面的两个url访问这张报表:

1. http://127.0.0.1:6001/demo/reportJsp/showReport.jsp?raq=/testRole.raq&userID=11

2. http://127.0.0.1:6001/demo/reportJsp/showReport.jsp?raq=/testRole.raq&userID=22

这两个报表后面&userID=11&userID=22的作用是传递参数userID的值,当用第一个url访问这张报表的时候,我们可以看到录入人为11的是可写的,而录入人为22的则不可写,具体的情况如下图所示:

同理,输入url为:http://127.0.0.1:6001/demo/reportJsp/showReport.jsp?raq=/testRole.raq&userID=22的时候,我们可以看到,录入人为22的单元格都是可写的,而录入人为的单元格都是不可写的。如下图所示:

这样我们就实现了通过不同的角色,传递不同的参数,来控制单元的可写属性了,客户也可以根据自己的需求,设置不同的登陆角色名,类似于例子中的userID,访问报表的时候就可以自由控制权限了。