1. 描述
一般在公司的系统中会有工资选项,在月底的时候就可点击查看当月的工资信息,即定时的在每个月月底,将当前用户当月的工资信息挂载在指定的工资节点上,这个该如何实现呢?
2. 解决方案
在定时任务的本地任务中,有一个选项“除通用结果外,根据默认用户组内的用户单独生成结果”,可以在此处勾选,在执行定时任务时,会根据参数$fine_username、$fine_role、$fine_position进行数据过滤,则在 schedule 文件夹的用户文件夹下生成的 cpr 文件内容是相应用户的工资信息。
3. 示例
在系统虚拟目录树 FRTest 下面有个工资表的节点,每个月月底的时候,可查看当前用户该月的工资信息。
3.1 模板准备
1)数据准备
在设计器中点击服务器>服务器数据集,新建一个内置服务器数据集 staff,其内容如下图:
注:由于需要将该用户信息同步到数据决策系统中,故只能使用服务器数据集。
2)模板制作
新建一张模板,将服务器数据集 staff 中的数据列拖曳至单元格中,并给 name 数据列添加过滤条件,如下图:
注:此处也可以通过过滤用户的角色和职务来实现,分别使用对应的参数$fine_role、$fine_position。
已完成模板请参照%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\定时任务权限控制.cpt
3.2 用户配置
点击管理系统>用户管理,导入 staff 数据集中的用户,如下图:
用户导入详细请查看 导入用户。
3.3 新建定时任务
用户配置好之后,点击管理系统>定时调度,第一步——基本设置,新建一个定时任务工资表,默认用户组选择“用户-平台”,勾选全部用户,如下图:
第二步——调度周期,调度周期为每个月的最后一天 12 点执行,如下图:
注:为了测试方便,这里将执行频率设为“只执行一次”。
具体添加过程请查看 定时生成日报。
第三步——本地文件,模板为上面新建的模板定时任务权限控制.cpt,勾选“除通用结果外,根据默认用户组内的用户单独生成结果”,这里的用户组就是第一步里设置的默认用户组,如下图:
注:若勾选“除通用结果外,根据默认用户组内的用户单独生成结果”,那么模板类型只支持“预览”
这样上面的模板,有过滤条件name=$fine_username,那么在保存 cpr 文件时,会根据用户名来存档,并实现过滤,定时任务执行完成之后,在%FR_HOME%\webapps\webroot\WEB-INF\schedule\文件名称\日期\时间 会生成用户文件夹,文件夹名称分别为默认用户组里的用户名,如,Anna 文件夹下的 cpr文件在保存之前就会先将$fine_username赋值为 Anna,实现过滤之后再保存,这样就保证,该 cpr 文件中只有 Anna 的信息,当 Anna 登录系统的时候,挂载在FRTest 下面的工资表节点就指向该 cpr 文件,那么 Anna就只能看到自己的工资信息了。
第四步——文件处理,勾选“挂载平台”,在挂载平台标签页,挂载目录选择 FRTest,挂载名称填写每月薪资,如下图:
点击提交即可,定时任务执行完成之后,在系统的虚拟目录树 FRTest 下面显示用户的工资表节点,当员工登录系统之后,点击工资表节点,即可看到自己的工资信息。
3.4 cpr 节点权限分配
定时任务执行完成之后会生成 cpr 文件,cpr 文件挂载的虚拟目录 FRTest 下面,那么用户登录系统查看该 cpr 文件工资表的时候,首先需要有该节点的查看权限。
点击管理系统>权限管理-报表权限快捷配置,将 FRTest 整个文件夹的权限分配给技术支持整个部门,如下图:
详细的配置过程请查看 根据部门职位分配权限。
注:给用户配置虚拟目录树的权限,如果将某个文件夹的权限分配给用户角色,那么之后添加在该文件夹下的新模板均会自动分配给该用户角色。
3.5 效果查看
cpr 节点效果查看
用 Anna 的账号登录系统,可以看到
目录下面有一个工资表的节点,点开节点,可以看到模板中只显示了 Anna 的工资信息。同理,用其他几个用户的账号登录后,点开工资表,均只能看到该用户的工资信息。