Web报表工具FineReport定时器使用说明
本书介绍了报表工具FineReportV6.5定时器功能的相关参数及配置说明,本书最后详细列举了几个使用定时器功能的模板制作示例。
6.5定时器配置简要说明……………………………………………… 2
6.5定时器参数专题……………………………………………………10
6.5定时器填报…………………………………………………………15
6.5定时器日报专题……………………………………………………19
6.5定时器月报专题……………………………………………………24
6.5定时器年报专题……………………………………………………29
6.5定时器邮件专题……………………………………………………33
6.5配置简要说明
在制作报表中,您可能需要面临定期产生,定期发布等问题,FineReport提供了定时器这个功能,对于6.5版本,在6.2的基础上进行了扩充 ,可在页面直接进行操作,下面就简单介绍一下。
1. 配置环境
此环境是自在tomcat环境中配置的,因此需要把FineReport6.5安装目录下的WebReport文件拷贝到%Tomcat_HOME%/webapps/下
1.1 整合web.xml
打开%Tomcat_HOME%/webapps/WebReport/WEB-INF目录下的web.xml, 将
ScheduleServer
com.fr.schedule.ScheduleServlet
1
ScheduleServer
/ScheduleServer
com.fr.schedule.ScheduleInitializerListener
整合到现有的web.xml中,如下图
1.2 拷贝数据库
在WebReport\WEB-INF\resources\data下面新建文件夹schedule;将hsql数据库放置到该文件夹里面,如图所示
1.3 替换jar包
将fr-server-6.5.jar和fr-third-6.5.jar替换WEB-INF\lib下原来的jar包,如下图所示
1.4 查看
启动tomcat服务器,打开链接http://localhost:8088/WebReport/ScheduleServer?action=dashboard,8088是tomcat服务器的端口,可改变。这样就可看到定时器管理界面,如图所示
2. 添加定时任务
在Schedule页面上可直接添加定时报表,
2.1 添加定时报表
点击页面最下面的添加定时报表,如图所示
在此页面填入报表的名字,并选择报表路径,选择是否填报,如下图所示
注意:如果非火狐浏览器,下面的确定按钮和取消按钮将被遮住,需要滚动鼠标
点击确定按钮,在schedule页面就出现该模板,如图
2.2 添加定时任务
在schedule界面中,点击相应的定时报表栏中添加定时任务按钮,如图
点击后出现如下界面
点击添加定时任务按钮,进入定时任务的基本设置页面,在页面中必须填写任务名称,任务描述可有可无,如图
点击下一步,进入第二步,时间表设置,可对时区选择,开始的时间可选择立即执行,也可自定义开始时间,循环方式有三种不循环,即定时器只执行一次,
点击下一步,进入第三步,参数设置,可添加参数,可删除参数,可根据模板自动生成参数
点击下一步,进入第四步,导出设置,填写文件显示名,并选择管理目录,导出文件类型可选择cpt,excel,pdf,word四种格式,并选择是否邮件通知
如果选择邮件通知,则会出现如下图所示页面,必须要填入发送的地址,其他可不 填
点击完成,生成定时任务,加入定时任务列表,如下图所示
3. 浏览
定时任务生成的新报表都放在%Tomcat_Home%\webapps\WebReport\WEB-INF\schedule\taskName\actionName文件夹下面。其中taskName是根据上面例子添加任务中的任务名称:日报定时任务。actionName是根据定时器的日期,比如上述例子就是2010-03-31。actionName文件夹下将产生根据定时任务生成的定时文件的时间命名,如上述例子,根据定时任务,在11:52的时候生成新的报表和excel,所以该文件夹的命名为1152,在该文件夹下根据上面例子生成三个文test_[**************]65_841.cpt;test_[**************]81_569.xml和info.xml
点击定时器任务所在的目录,我们能在左边窗口看到添加的定时报表以及由定时任务生成的文件,生成的文件名就是在上面第四步中的导出文件名,如下图所示
6.5定时器参数专题
在FineReport定时器中,参数尤为重要,特别是时间参数,在涉及到时间的定时任务中都需要用到它的公式。下面就详细介绍一下定时器的参数。
1. 时间参数
定时器中主要用到的时间参数如下:
日报
当前日期的前一天:Format(today()-1,”yyyy-MM-dd”)
周报
当前日期的上一周的第一天:
Format(dateInWeek((today()-7),1),”yyyy-MM-dd”)
当前日期的上一周的最后一天:
Format(dateInWeek((today()-7),7),"yyyy-MM-dd")
当前日期的上上周的第一天:
Format(dateInWeek(dateDelta(dateInWeek((today()-7),1),-7),1),"yyyy-MM-dd")
当前日期的上上周的最后一天:
Format(dateInWeek(dateDelta(dateInWeek((today()-7),7),-7),7),"yyyy-MM-dd")
月报
当前日期的上一个月的第一天:
Format(dateInMonth(monthDelta(today(),-1),1),"yyyy-MM-dd")
当前日期的上一个月的最后一天:
Format(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),"yyyy-MM-dd")
当前日期的上上月的第一天:
Format(dateInMonth(monthDelta(dateInMonth(monthDelta(today(),-1),1),-1),1),"yyyy-MM-dd")
当前日期的上上月的最后一天:
Format(dateInMonth(monthDelta(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),-1),daysOfMonth(monthDelta(dateInMonth(monthDelta(today(),-1),daysOfMonth(monthDelta(today(),-1))),-1))),"yyyy-MM-dd")
年报
当前日期的上一年的第一天:
Format(dateInYear(yearDelta(today(),-1),1),"yyyy-MM-dd")
当前日期的上一年的最后一天
Format(dateInYear(yearDelta(today(),-1),daysOfYear(yearDelta(today(),-1))),"yyyy-MM-dd")
2. 其他类型参数值
报表当中除了时间参数之外,为了节省报表设计的工作量和减少报表文件的总量,我们往往要在报表里面加入其他的参数。例如主机名,指标名等等。
首先我们在报表里面定义这些参数的时候,建议使用中文的参数名称,这样在定时生成之后,在报表查看时上方的参数名称也就是直接读的在报表
当中定义的参数名称。中文对于最终用户来说比较容易理解。
在报表当中有这些参数的时候,定时生成的时候,我们需要设定参数包含哪些具体的值。比如exchange邮件服务器的性能报表,在哪几台机器上
有exchange,exchange又包含哪些参数指标。这些我们都需要通过定义全局数据源得到。
也就是说,我们先定义好一个全局数据源,该数据源返回的结果是exchange服务器所在的所有主机。
然后在设置定时生成的时候,主机这个参数的参数类型,设置为“列”。选择我们已经定义好的全局数据源,以及该数据源中代表主机的列即可。这样在这个数据源内返回了多少结果,则报表在生成的时候,会每一个值生成一个报表。有一种特殊的情况,也许要通过多定义一些全局数据源来实现。例如我们的报表当中,有一部分是windows主机的性能报表。但是windows的主机又分 为OA和CallCenter。如果分开来设计报表的话,是一种重复劳动。
解决的办法,就是通过定义不同的全局数据源。还是以主机这个参数举例。在全局数据源里面定义两个不同的数据源分别返回的结果是OA的主机和CallCenter的主机。 然后我们只要设计一张Windows主机的报表即可。在定义定时任务时,可以定义两个不同的action, 只是主机这个参数定义的时候,选择的数据源不同。选择OA的主机,那么生成的报表就是OA的性能报表,选择CallCenter的主机,生成的即是CallCenter的报表。 再举一个例子。各个业务系统的报表,也可以通过这个方法,大大减少报表的数量。例如业务系统的日报,我们只需要设计一张报表。在设置定时生成的时候,业务系统这个参数,可以分别设置固定的值。即十个不同的action。
3. 简单例子示例
3.1 制作带参的模板
新建内置数据集e1,如图所示
添加参数p1,控件类型为日期类型,参数界面设置如下
表样设计如下图所示,并在B4单元格中添加过滤条件:date=$p1
3.2 添加定时报表
在定时器管理界面点击
按钮,添加定时报表,如下图所示
3.3 添加定时任务
点击定时器界面相应模板的添加定时任务,并点击
第一步基本设置,如图
点击下一步进入时间设置,选择立即执行,循环方式选择不循环,如图
点击下一步,进入参数设置,直接点击界面上的
按钮,自动生成报表中所带的参数,并双击参数的值,对参数值进行编辑,参数类型选择公式,将参数值设为:Format(today()-1,"yyyy-MM-dd") ,该公式表示当前日期的前一天,如图所示
点击下一步,进入导出设置,填写文件显示名,并选中管理目录和导出文件类型,如图所示
点击完成,生成定时任务
3.4 生成文件预览
刷新管理界面,发现生成定时文件参数测试1.cpt
点击该生成文件,预览,如图
6.5定时器填报
定时器的另一个重要功能就是可以用来定时填报,通过定时功能实现自动填写功能,而不必一个一个的手动输入,下面就通过一个例子介绍一下6.5版本定时器填报的用法
1. 制作简单填报模板
连接数据库scheduleDemo,新建模板,并添加数据库查询ds1: SELECT year(countdate) as year,month(countdate) as month,empid,num FROM empdetails where year(countdate) = ${year} and month(countdate)= ${month},并将year参数的默认值设为2010,month参数的默认值设为4。报表样式设计如图所示,并双击A3单元格,选择高级里面的自定义显示值:=CONCATENATE($$$,"年",month,"月"),将C3单元格设置为:汇总|求和
报表填报属性设置,如图所示,将empdetails表中的值插入到表empcount中去
报表制作完成之后将模板存储到reportlets目录下
2. 添加定时报表
在定时器管理界面点击
按钮,添加定时报表,并选中是否填报,如下图所示
3. 添加定时任务
点击定时器界面相应模板的添加定时任务,并点击
第一步基本设置,如图
点击下一步进入时间设置,选择立即执行,循环方式选择不循环,如图
点击下一步进入参数设置,点击
,并双击参数month和year进行编辑,将参数类型都选择公式,month的参数值为:month(today()),表示当前的月份,year的参数值为:year(today()),表示当前的年份
点击下一步,进入导出设置,填写文件显示名,并选中管理目录和导出文件类型,如图所示
4. 查看效果
6.5定时器的填报功能不能在定时器管理界面显示,效果只能在数据库中查看。打开scheduleDemo数据库的empcount表,发现通过定时任务,数据已经自动填入表中了。如图所示
6.5定时器日报专题
在finereport定时器中,涉及到几个典型问题,日报,月报,年报。这三种典型报表具体如何通过定时器生成定时任务呢?本专题专门介绍定时器的日报问题。日报顾名思义就是在每日的定点生成关于每天的统计。常见使用主要是人事考勤,订单管理之类的,下面就做一个人事考勤的简单例子介绍一下。
1. 制作模板
新建内置数据集E1,如图所示
添加参数统计时间,控件类型为日期类型,参数界面设置如下
表样设计如下图所示,并在A6单元格中添加过滤:统计时间=$统计时间
报表制作完成之后将模板存储到reportlets目录下
2. 添加定时报表
在定时器管理界面点击
按钮,添加定时报表,如下图所示
3. 添加定时任务
点击定时器界面相应模板的添加定时任务,并点击
第一步基本设置,如图
点击下一步进入时间设置,开始时间选择4月1日,循环方式选择自定义循环,结束时间选择4月30日,时间选择每天的10点50分执行,月选择四月,这样4月1号到4月30号每天的11点01分该定时任务都会执行
点击下一步,进入参数设置,直接点击界面上的
按钮,自动生成报表中所带的参数,并双击参数的值,对参数值进行编辑,参数类型选择公式,将参数值设为:Format(today()-1,"yyyy-MM-dd") ,该公式表示当前日期的前一天,这样该定时任务就在4月份的每一天的11点01 分生成当前日期的前一天的考勤统计,如图所示
点击下一步,进入导出设置,填写文件显示名,并选中管理目录和导出文件类型,如图所示
4. 效果预览
刷新管理界面,发现在设置的11点01分生成定时文件:日报专题文件导出.cpt
点击该生成的定时文件,即在11点01分统计的当前日期的前一天的考情统计,预览
6.5定时器月报专题
在定时器的几个典型案例中,月报经常应用于业月份统计中,下面通过一个典型的汽车年度销售统计来介绍如何利用FineReport6.5定时器自动实现月报统计。
1. 修改模板
打开模板%WebReport\WEB-INF\reportlets\demo\chart\car3.cpt,并删除图表,
页面修改后如图所示
将三个参数删掉两个,并添加一个新的参数$month,如图所示
在C5单元格中删除原来的过滤条件,添加新的过滤条件
将修改后的报表另存到到reportlets目录下
2. 添加定时报表
在定时器管理界面点击 按钮,添加定时报表,如下图所示
3. 添加定时任务
点击定时器界面相应模板的添加定时任务,并点击
第一步基本设置,如图
点击下一步进入时间设置,开始时间选择2007年1月1日,循环方式选择自定义循环,结束时间选择2010年4月16日,时间选择17点15分执行,天选择每月的31日,月选择所有月,这样从07年1月到10年4月每月的31日的17点15分该定时任务都会执行
点击下一步,进入参数设置,直接点击界面上的 按钮,自动生成报表中所带的参数,并双击参数的值,对参数值进行编辑,两个参数的类型都选择公式,将Year的参数值设为:year(today())-2 ,表示当前年份的上上年,month的参数值设为: month(today()),该公式表示每月的15日的17点15分,生成上上年的当前月份的月报,如图所示
点击下一步,进入导出设置,填写文件显示名,并选中管理目录和导出文件类型,如图所示
点击完成,生成定时任务
4. 生成文件预览
刷新管理界面,发现生成定时文件:月报导出.cpt
点击该生成文件,预览,生成了08年4月份的统计报表,如图
6.5定时器年报专题
在定时器的几个典型案例中,年报经常应用于和年度统计中,下面通过一个典型的汽车年度销售统计来介绍如何利用FineReport6.5定时器来自动实现年报统计。
月报
5. 修改模板
打开月报专题.cpt模板,样式设计稍作修改,如图
删掉month参数,如图所示
在C5单元格中删除原来的过滤条件。将修改后的报表另存到到reportlets目录下
6. 添加定时报表
在定时器管理界面点击
按钮,添加定时报表,如下图所示
7. 添加定时任务
点击定时器界面相应模板的添加定时任务,并点击
第一步基本设置,如图
点击下一步进入时间设置,开始时间选择2007年1月1日,循环方式选择自定义循环,结束时间选择2010年4月30日,时间选择12点00分执行,天选择每月的16日,月选择四月,这样从07年1月到10年4月每年的4月16日的12点00分该定时任务都会执行
点击下一步,进入参数设置,直接点击界面上的 按钮,自动生成报表中所带的参数,并双击参数的值,对参数值进行编辑,Year参数的类型都选择公式,将Year的参数值设为:year(today())-2 ,表示当前年份的上上年,该公式表示每年的4月16日12点00分,生成上上年的年报,如图所示
点击下一步,进入导出设置,填写文件显示名,并选中管理目录和导出文件类型,如图所示
点击完成,生成定时任务
8. 生成文件预览
刷新管理界面,发现在设置的4月16日的12:00生成定时文件:年报导出.cpt
点击该生成文件,预览,生成了08年的年报统计报表,如图
6.5定时器邮件专题
在FineReport6.5版本中,定时器比6.2版本中多了邮件通知的功能,该功能使得定时器的定时任务生成定时文件时能够及时通知用户,而用也可通过是否收到邮件判断定时器的定时任务是否正常工作。下面就详细介绍一下定时器的邮件设置。
1. 服务器配置
打开报表设计器,登录环境设置为tomcat所在目录(因为定时器环境是集成在tomcat下),打开菜单栏服务器|服务器配置,选择邮件栏目,依次填入邮件服务器地址(SMTP),如:smtp.163.com smtp.gmail.com等。邮件用户名,密码,以及发件人地址(发件人相应邮箱)。如下图所示
2. 定时器邮件配置
2.1 开启tomcat服务器,并打开定时器界面http://localhost:8088/WebReport/ScheduleServer?action=dashboard,如图
2.2 添加定时报表
点击左边目录定时器例子,在右边窗口中点击按钮添加定时报表,进入添加定时报表界面。选择需要添加的报表test.cpt,选完之后点击确定按钮。
2.3 添加定时任务
2.3.1 在报表/文件列表窗口,在对于的定时报表栏中点击添加定时任务,如下图
2.3.2 基本设置
进入任务编辑第一步,基本测试,填写任务名称分报测试,任务描述可省略,详见图示
2.3.3 时间表
时间表设置开始选择立即执行,循环方式选择简单循环,运行的执行次数选择3次,频率选择每分钟
2.3.4 参数
该模板没有参数,所以直接点击下一步
2.3.5 导出
在文件显示名中填写文件导出的名字,并对文件进行描述,选择管理的目录:定时器的例子,导出文件类型选择cpt和excel(邮件中cpt文件不会导出)
选中是否邮件通知,填写需要发送的邮箱地址,并填写主题和内容
这样就完成了一个定时任务
3. 预览
刷新定时器管理界面,每分钟生成一个cpt和一个excel文件,共生成了六个定时文件,如下图所示
根据设置的邮件通知,打开发送的126邮箱,看到三个从[email protected]邮箱发送的邮件通知,如图