本次发布是为了部份同志的信箱不能接受大的附件而重新做的发布版本,这个版本去掉了FusionChart的图形支持,使用的是VisiFire的图形支持,和演示中的一致。
本次发布的路径为
http://jeasonpublic.uubox.net/browse.u/Public/%E6%8A%A5%E8%A1%A8%E7%B3%BB%E7%BB%9FERIS3.7.5%E6%BA%90%E4%BB%A3%E7%A0%81/
其中几个文件
1、报表的基本操作 和 2、参数配置s 演示动画
3、列操作和图操作 演示动画
报表系统V2.1.8概要设计(含部份V2.3功能) 文档
V3.7.5CTP Src(Lib included) 源代码和Lib
以下为安装测试文档
本安装文档主要指导报表系统部署和配置,包括
l 源代码编译
l 配置WEB应用,使得能够支持报表系统访问。
l 配置报表系统的知识库和相关属性。
报表系统需要一个Web容器作为宿主进行部署,这里所谓的Web容器就是我们常用的Tomcat、Resin、JBOSS、Bea Weblogic、IBM Websphere等等。
报表系统作为Web容器的一个Servlet而存在,理论上来讲,报表系统能够部署到任意符合JSP1.3标准的web容器中,常用的Web容器的版本需求如下:
l Tomcat 5.5以上版本
l WebSphere 5.1以上版本
l JBOSS 4.0以上版本
l Weblogic 7.0以上版本
在以下的文档中,我们集中讨论在Tomcat5.5以上版本和IBM Websphere5.1以上版本中部署的步骤。
在WEB容器中有几个目录需要明确:
l ROOT目录:也称跟目录,是WEB站点部署之后客户访问的最顶层目录,一般使用http://site_server:port/访问这个目录。对于多站点部署的应用,根目录特指报表系统部署的宿主Web虚拟站点的根目录。
l WEB-INF目录:JSP站点所必须的配置目录,在根目录Root下,名称为“WEB-INF”,不能改变,只能从服务器端访问,不能从客户端使用http协议访问。
l Class目录:部署web应用所需要的java类文件的目录,在WEB-INF目录下,名称为"classes",不能改变。
l Lib目录:部署Web应用所需要的附加库文件的目录,在WEB-INF目录下,名称为"lib",不能改变。
l 站点配置文件web.xml:在Web-INF目录下的一个固定文件,配置整个虚拟站点的访问规则和行为。
l 日志文件:日志文件主要是为了调试报表系统而建立,默认的情况下,日志文件是以sqlreport.log为文件名,在WEB服务器的日志文件目录下可以找到这个文件,你也可以使用服务器的Console输出观察这些日志的输出。
报表文件使用的库文件包括以下版本的库:
l Spring 2.1以上版本(Spring*.jar)
l Apache POI 3.0以上版本(Poi*.jar)
l Dom4J 1.6.1以上版本(dom4j*.jar)
l log4j-1.2.11 以上版本(log4j*.jar, commons-logging*.jar)
l Apache BeanUtil (commons-beanutils*.jar)
l Apache dbcp (commons-dbcp*.jar)
如果您需要对源代码进行编译,您还需要Junit3.8.1以上版本。
另外根据您的当前系统环境,还需要一些其他的数据包如下:
l 数据库链接的jar文件
l 导出其他格式文档所需要的包
POI是Apache基金会开发的一套操作Microsoft Office系列文档的开源JAVA库,目前的最新发布版本为poi-3.0.2-FINAL-20080204,可以在http://poi.apache.org下载更新的版本。报表系统主要使用POI作为导出Excel文件的支撑库。
Apache在POI的3版本中做了一些模型上的改动,导致某些调用方法约束的变化,所以报表系统需要严格限制POI的版本。在报表系统实际应用中,POI库只有在“导出报表数据到Excel”的时候调用,所以可以在安装完成之后进行POI版本的校验。
具体校验的步骤如下:
1、在客户端打开Internet Explorer,访问任意一张可用的报表。
2、点击报表工具栏上面的“Excel”按钮,执行导出Excel操作。
3、到报表系统服务器上检查报表输出的日志信息,定位到如下的标识位置
-----------------------POI LIB-----------------------
D:\develop\JavaProjects\enrisingReport\webRoot\WEB-INF\lib\poi-3.0.2-FINAL-20080204.jar
----------------------------------------------
这个文本就是导出使用的POI库的地址。
POI库的开发是大致向下兼容的,一般而言,可以删除旧版本的POI库并使用新的POI版本库替换。
下图为报表系统的三大部件的布局图:
其中:
l ROOT/Sqlreport下为支持报表展现的JSP文件、css和其他资源文件,这个目录在报表系统中称为“主目录”。
l Lib目录下部署报表系统的主程序文件,包含两个重要的jar文件com.enrsing.comms.jar和com.enrsing.report.jar,这两个文件即为报表系统运行的后台程序文件。
l Web-Info/Sqlreport:报表配置的主目录。
上图为SVN路径,所有资源保存在“开发域”目录下面,其中
l 发布包 目录保存所有的历史版本的发行版本介质。
l 开发文档下保存开发所需要的文档资料,包含本文档。
l 数据库下面包含数据库建模文件和SQL脚本。
l 源代码下面保存源代码文件。
本节描述如何编译报表系统源代码,因为Eclipse有很多工作已经做完成了,所以我们只讨论在Jbuilder下如何配置安装环境。
1、 下载最新的源代码,源代码分成两个部份,第一部分为cpmisreport下的src目录下的文件(上图所示),而另外一部分则是与滚动规划共享的源代码commons包,在cprss下面,目录结构如下:
报表系统只需要commons和excel两个包的源代码。
2、 配置Jbuilder工程的src路径包含这些路径,我的机器上配置如下:
3、 配置编译的JDK版本为JDK1.4,如果您需要部署到JDK1.5以上版本,也可以选择对应的JDK版本。
4、 设置输出的资源文件类型,设置xml为编译之后导出:
5、 设置输出的资源文件类型,设置txt为编译之后导出(和上图一致)
6、 设置输出的资源文件类型,设置jsp为编译之后导出:(和上图一致)
7、 为了方便查看代码,您可以设置您的代码折叠层数
8、 为了方便调试,您可以直接将您的输出路径输出到您部署的WebContainer的Web-INF/classes下,我的设置如下:
9、 配置所需的附加库文件,附加库文件在lib目录下,目录结构如下图:
实际上编译的时候只需要包含core下面的Jar文件就可以了,根据您使用的报表数据的数据库不一样,您可能需要拷贝database下的对应数据库的JDBC驱动Jar包到发布目录下。
10、 测试编译。编译完成之后检查几个文件是否存在对应的目录,如图:
用户可以通过两种渠道取得安装介质,第一种是直接取得SVN下的源代码进行编译得到安装介质,第二种是直接从发布包下取得。
发布包位于SVN下的目录结构如下:
每个版本一个目录。安装介质包含以下几个部分的文件:
l config目录:报表配置的主文件,一般第一次部署之后这个不用替换,否则可能会导致现在正在使用的报表定义丢失。
l libs目录:报表系统所需要的全部库文件列表。
l main目录:报表系统自身的代码包。代码包可能以两种方式发布,class文件和jar文件
l web目录:报表系统所需要的WEB支撑的文件。
l src目录:当前版本的源代码压缩包
全新安装步骤如下:
l 停止当前使用的Web容器,以下使用tomcat作为配置的示例。
l 打开 WEB-INF目录 下的web.xml文件,添加一个Servlet到配置中
<servlet>
<servlet-name>SqlReportServlet</servlet-name> <servlet-class>com.jeasonzhao.report.engineer.render.SqlReportServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SqlReportServlet</servlet-name>
<url-pattern>*.rpt</url-pattern>
</servlet-mapping>
l 拷贝 main下面的文件和lib下面的文件到 Lib目录
l 拷贝 config 目录下的所有文件到 Web-INF目录下的classes下sqlreport目录,拷贝完成的目录结构应该为
WEB-INF\classes\sqlreport\reports
WEB-INF\classes\sqlreport\com.jeasonzhao.report.engineer.xml
WEB-INF\classes\sqlreport\com.jeasonzhao.report.engineer.spring.xml
l 拷贝部署下web目录下的文件到站点根目录下的sqlreport目录,拷贝完成之后目录结构应该为
\sqlreport\help
\sqlreport\images
\sqlreport\script
\sqlreport\customizePage.jsp
l 启动应用
l 在客户端输入 http://server:port/test.rpt,如果出现报表引擎报错,则表明报表配置成功。
升级安装的时候需要注意以下几点:
l 报表的主程序(main)和web程序(web)可以随意更新,不会影响报表配置。
l 除非特殊说明,不要更新现有应用的web.xml文件和config文件,否则会将报表的信息冲掉。
最简单安装是指部署一台没有其他业务,只有报表系统的测试平台,其目的是测试报表的功能是否完成。我们使用最简单的Tomcat配置为例:
l 确定您已经安装或者拷贝了JDK1.4以上版本的JVM并配置了JAVA_HOME指向这个路径。
l 确定您已经有了一份Tomcat5.1以上版本的拷贝并安装在了您的当前机器中。
l 从SVN上拉一份最新版的WebRoot下来到本地目录(例如x:\WebRoot)
l 打开Tomcat目录下,删除webapps下的所有文件和目录。
l 打开tomcat目录下的conf\Catalina\localhost目录,删除下面的所有文件和目录。
l 在刚才这个目录下新建一个root.xml文件,文件内容如下:
<Context workDir="work\Catalina\localhost\_" path="" docBase="此处为您的SVN下载的WebRoot的目录"
reloadable="true" debug="0" privileged="true"></Context>
l 按照上一节的步骤进行部署一个版本。
l 启动Tomcat.
本节主要针对报表系统级别的配置进行解说,不对具体报表配置进行说明。
配置文件分成三个部份:
l 主配置文件:主配置文件固定保存在WEB-INF/Sqlreport目录下,其文件名固定为” com.jeasonzhao.report.engineer.xml”,这个文件中保存了其他两个部份的文件的路径。也就是说其他的配置文件可以存放在不同的地方。
l Spring配置文件:配置Spring的依赖注入的XML文件
l 报表配置文件:单张报表的配置文件。
本节只对主配置文件和Spring文件进行解说,报表配置文件在其他文档中详细说明。
主配置文件作为核心的报表引擎配置,固定保存在WEB-INF/Sqlreport目录下,其文件名固定为” com.jeasonzhao.report.engineer.xml”,不管使用classes直接部署还是jar文件部署,这个文件位置和文件名都不能变更,否则报表系统不能启动。
主配置文件包含三个配置组:Spring文件位置配置、引擎配置和Web访问配置。
主配置文件是一个标准的XML文件,其根路径为sqlreport_engine,以下各节对主配置的三个配置组进行详细说明。
Spring文件位置配置是配置Spring的XML配置文件所在的路径和文件名,在报表系统中,可以使用多个Spring配置文件。详细的Spring依赖注入请参考“Spring依赖注入配置”一节。
Spring配置的定义为:
节点名称spring
属性
说明
File
Spring配置的文件路径和文件名
实例:
<spring file="/sqlreport/com.jeasonzhao.report.engineer.spring.xml" />
<spring file="c:/sqlreport/com.jeasonzhao.report.engineer.spring2.xml" />
引擎配置主要配置在报表系统中的报表存储位置(知识库),目前报表系统支持三种方式的知识库存储:
l 文件系统存储:报表配置在文件中。
l 数据库存储:报表配置保存在数据库中。
l 文件系统和数据库存储:报表配置在数据库或者文件中。
引擎配置的节点说明为:
节点名称repository
属性
说明
Using
知识库的存储模式,其中:
Database:数据库方式存储报表配置
Directory:文件系统存储报表配置
Hybird:混合文件系统和数据库方式存储报表配置
其他:默认为文件系统存储报表配置
实例:
<repository using="directory">…</repository>
根据不同的using配置使得下级的知识库配置生效。
3.2.2.1. 数据库知识库
数据库方式的知识库需要在repository下配置database节点指明具体的数据访问信息。
系统使用apache的dbcp作为默认的连接池管理器。
数据库位置可以和业务系统的位置等同,在配置报表的时候使用” #REPOSITORY#”作为数据库ID则可以共享这个数据库链接。
实例,从Spring的Bean中取得数据库链接
< repository>
<database bean=”NameOfSpringBean”/>
…
</repository>
实例,直接配置数据库
< repository>
<database>
<driver value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />
<url value="jdbc:sqlserver://localhost;databaseName=ReportTest" />
<username value="sa" />
<password value="123456" />
<maxActive value="10" />
<initialSize value="2" />
</database>
…
</repository>
实例,直接配置数据库2
< repository>
<database
driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@xxxxxxx:1521:xxxx"
username="sa"
password="123456"
maxActive="10"
initialSize="2"
/>
<repository>
注意:在ERIS版本中,不支持数据库知识库。
3.2.2.2. 文件系统知识库
文件系统知识库需要在repository下配置directory节点以明确报表定义存储的文件路径和文件名。配置实例如下:
从文件中取得
<directory >
<reports folder="/sqlreport/reports/Medea.xml"/>
<reports folder="/sqlreport/sample/samplereports.xml"/>
</directory>
从目录中动态加载
<directory autoloadinterval="1">
<reports folder="/sqlreport/reports/ "/>
<reports folder="/sqlreport/sample/samplereports.xml"/>
</directory>
3.2.2.3. 表达式配置
报表系统中大量的使用了表达式作为动态计算的单元,引擎配置中增加expression节点可以对表达式进行配置,可以配置在表达式中使用的函数和变量。
3.2.2.3.1. 配置变量
变量配置相对比较简单,直接使用var节点即可配置。
Var
属性
说明
Name
变量的标识符
Type
数据类型,参考常量设置手册。
Value
变量值
实例
<expression>
<var name="Var_A" type="int" value="1234" />
</expression>
3.2.2.3.2. 配置函数
函数配置相对复杂的多,首先是需要编写相应的函数实现的Java类,然后再配置函数的过滤规则,函数编写请参考二次开发手册。
配置的时候需要增加一个function节点:
function
属性
说明
class
实现函数的类的名称
prefix
函数名的前缀
Suffix
函数名的后缀
Modifiers
过滤类中的函数的修饰符,public/ private/ protected三者的组合,逗号分割。默认的情况下只包含public的函数
Methods
函数名列表,如果为空则选择全部函数,否则使用逗号分割的函数列表、
excludes
排除的函数列表。
实例
<expression>
<function class="com.jeasonzhao.report.test.TestFunctionProvider"/>
</expression>
Web配置主要配置报表系统中Web访问的行为,完整的实例如下:
<web>
<theme name="default" file="/reportsys/css/default" />
<charset from="ISO-8859-1" to="gbk" />
<rootpath value="/sqlreport/" />
<servlet value="/[REPORTID].rpt" usingJSPWriter="true" />
<exportreport method="stream" inplace="true" name="导出EXCEL" img="/images/render_excel.gif"
guid="render_excel"
tempdir="[ROOT]/tempfiles/[YYYYMM]/"
class="com.jeasonzhao.report.engineer.render.ExcelReportRender"/>
<toolbar param_name="输入条件" filter_name="二次过滤" refresh_name="重新查询" custom_name="自定义报表"/>
<cfg
isAllowXMLExport="true"
/>
</web>
Theme是为了以后扩展使用的配置,暂时不支持。
Charset配置转换的字符集。
Rootpath配置报表的主目录访问的路径
Servlet配置访问报表的路径和访问报表的方式。
Exportreport配置导出报表的渲染器
Toolbar配置工具栏菜单的文本信息
Cfg附件的一些杂项配置。
<?xml version="1.0" encoding="UTF-8"?>
<sqlreport_engine>
<spring file="/sqlreport/com.jeasonzhao.report.engineer.spring.xml" />
<repository using="directory">
<directory autoloadinterval="1">
<reports folder="/sqlreport/reports/Medea.xml"/>
<reports folder="/sqlreport/sample/samplereports.xml"/>
</directory>
<expression>
<!--function class="com.jeasonzhao.report.test.TestFunctionProvider"/-->
<var name="Var_A" type="int" value="1234" />
</expression>
</repository>
<web>
<theme name="default" file="/reportsys/css/default" />
<charset from="ISO-8859-1" to="gbk" />
<rootpath value="/sqlreport/" />
<servlet value="/[REPORTID].rpt" usingJSPWriter="true" />
<exportreport method="stream" inplace="true" name="导出EXCEL" img="/images/render_excel.gif"
guid="render_excel"
tempdir="[ROOT]/tempfiles/[YYYYMM]/"
class="com.jeasonzhao.report.engineer.render.ExcelReportRender"/>
<toolbar param_name="输入条件" filter_name="二次过滤" refresh_name="重新查询" custom_name="自定义报表"/>
<cfg
isAllowXMLExport="true"
/>
</web>
</sqlreport_engine>
Spring配置主要配置数据库链接和相关的自定义类的Bean,具体请参考Spring的手册。
在报表系统中,目前最重要的Bean即是用户权限验证的Bean,详细开发请参考二次开发手册。
实例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="UserProvider" class="com.jeasonzhao.report.localize.sample.UserProvider" />
</beans>
Q:我如何检查当前的报表系统的版本?
A:报表系统的版本可以在三个地方进行查询:
1、 在报表的尾部,没有设置隐藏版本信息的报表,可以在底部看到当前的版本信息,入下图所示:
2、 在报表系统的启动日志中:启动报表的时候会显示报表的版本信息,如图(Tomcat下的日志窗口)
这个窗口还可以监测更多的报表信息。
3、 在源代码中,打开源代码包中的” com\jeasonzhao\report\engineer”目录,下面有一个文件versionHistory.txt,定位到最后就是版本信息,如下图所示:
正如您所看到的,这个文件记录了全部的报表开发的历史信息。