文档介绍:利用开源报表FineReport实现定时任务的权限控制1、描述定时任务生成的cpr文件和邮件附件内容可根据用户的不同而不同,实现向不同用户分发相应用户数据的报表。2、实现原理如果数据决策系统中创建的定时任务执行之后,系统会在工程文件夹%FR_HOME%\WebReport\WEB-INF下面新建一个schedule,如下图:schedul文件夹中保存的定时任务根据定时任务名称,执行日期和执行时间的不同分三级目录保存,如下图:如果创建定时任务的时候如果勾选了根据用户显示不同内容或根据收件人不同发送不同附件这两项,那么在执行定时任务的时候,会在定时任务模板中实现勾选的用户过滤,保存结果是,在时间文件夹下面增加以及目录—用户名称,定时任务执行后生成的cpr文件以及导出的附件均保存在用户名称文件夹下,如下图:在用户名称文件夹下的所有文件的内容均只有与相应用户相关的内容,而挂载在虚拟目录下的cpr文件根据系统登录用户不同到不同文件夹下去拿cpr文件,故可以实现不同用户在cpr中只能看到自己的信息,同理,根据收件人不同发送不同附件在发送附件的时候去相应文件夹下拿取附件并发送出去。(一)定时任务cpr文件内容权限控制1、描述一般在公司的系统中会有工资选项,在月底的时候就可点击查看当月的工资信息,即定时的在每个月月底,将当前用户当月的工资信息挂载在指定的工资节点上,这个该如何实现呢?2、解决方案在定时任务的输出设置的挂载虚拟目录中,有一个选项根据用户选择不同的内容,可以在此处选择不同的用户,在执行定时任务时,会根据参数$fr_username进行数据过滤,根据用不选择不同的内容选项后面的下拉框中的值相当于给$fr_username赋值,则在schedule文件夹的用户文件夹下生成的cpr文件内容是相应用户的工资信息,3、示例在系统虚拟目录树FRTest下面有个工资表的节点,每个月月底的时候,可查看当前用户该月的工资信息。?数据准备在设计器中点击服务器>服务器数据集,新建一个内置服务器数据集staff,其内容如下图:注:由于需要将该用户信息同步到数据决策系统中,故只能使用服务器数据集。?模板制作新建一张模板,将服务器数据集staff中的数据列拖曳至单元格中,并给name数据列添加过滤条件,如下图:已完成模板请参照%FR_HOME%\WebReport\ReportServer\reportlets\doc\SpecialSubject\>用户管理,导入staff数据集中的用户,如下图:用户导入详细请查看导入用户。,点击管理系统>定时调度,新建一个定时任务工资表,,调度周期为每个月的最后一天12点执行,如下图:具体添加过程请查看定时生成日报。,在系统的虚拟目录树FRTest下面显示用户的工资表节点,当员工登陆系统之后,点击工资表节点,即可看到自己的工资信息。?根据用户选择不同的内容点击下一步进入定时任务输出设置界面,文件名称为工资表,挂载虚拟目录为FRTest,附件类型选择excel,勾选根据用户选择不同的内容,并在下拉框中选择全部用户,此时虚拟目录上的cpr节点就会根据下拉框中的数据进行过滤,比如说