Web应用集成类接口
1 简介
在Web应用集成方面UniEA Report提供了报表生成Action、Taglib以及报表权限控制等接口。
2 使用说明
2.1 报表生成
UniEAP Report为了适应不同的应用,提供了不同程度的集成方式:
Jsp、Js级别的集成;
Action和Taglib级别的集成;
非基于Struts框架的集成。
本文主要介绍Action和Taglib级别的集成。
2.1.1 Action
1.Report-EntryAction(com.neusoft.report.server.view.EntryReportAction)
如果报表中含有参数,则返回参数页面的Html代码并进入参数页面(Condition.jsp);如果报表中不包含参数,则执行Report-ResultAction。其它的参数定义参看Report-ResultAction。
2.Report-ResultAction(com.neusoft.report.server.view. ResultAction)
返回的结果是以Html形式生成的报表,并跳转到ClientShow.jsp中。
参数的填写及含义如下表格所示:
表格 6 Report-ResultAction参数定义
关键字 | 值 | 说明 |
---|---|---|
reportId | 报表的ID号 | 通过报表ID得到要创建的报表(必填值)。 |
newReport | true,false | 是否新创建报表,如果值为true,表示这是新报表,否则从缓存中读取。 |
cachedId | 报表的缓存ID | 通过它可以读取缓存中的报表,新创建报表时可不填。 |
nPage | null,数值 | 当前报表显示的页号,如果值为null,显示第一页,新创建报表时可不填。 |
pageCount | 数值 | 报表的总页数,新创建报表时可不填。 |
encode | 字符串(true,false,空) | true为用base64对中文进行解码,其它为不用base64进行解码(中文参数用base64进行解码)。 |
linage | null或数值 | 每页显示多少行,All、-1表示全显示,如果不填写则该值是定义报表时的默认值。 |
报表参数 | 字符串 | 传送过来的参数名称及其值。如果没有参数可不填,如果有多个参数按照如下方式书写:参数1=china&参数2=Neusoft….。 |
例如:报表有两个参数 country=中国 和personName=小明
这个URL的意思是新创建参数country=中国(‘中国’用base64编码后为5Lit5Zu)、personName=小明(‘小明’用base64编码后为‘5bCP5piO’)、报表的ID为94b7d07d-a7f8-4745-adc2-d8731f80387a的报表,每页显示20行。如何对中文进行base64编码请参考第7章7.1节。
【备注】在遇到checkbox类型的自定义预设值参数时,书写格式为&show=jack:;chen:;marry,中间用:;隔开。
【注意】如果想实现调用ResultAcion并且跳转到另一个Jsp文件中可这样写URL: http://localhost:8080/unireport/Report-ResultAction.do?reportId=94b7d07d-a7f8-4745-adc2-d8731f80387a&clientShow=othershow
其中othershow是在struts-config.xml文件中Report-ReusltAction对应的一个forward属性。
2.1.2 Taglib
为了方便使用,UniEAP Report提供了大量的Taglib。在使用UniEAP Report提供的Taglib时,需在Jsp文件中加上如下代码:
<%@ taglib prefix="unieap-report" uri="/WEB-INF/taglib/unieap-report" %>
UniEAP Report提供的Taglib说明如下表格所示:
表格 7 UniEAP Report提供的Taglib说明
名称 | 说明 | 备注 |
---|---|---|
Linage | 每页显示多少行的下拉框 | 导出、打印、回填及翻页工具条等。 |
ExportToExcel | 导出为xls | 导出、打印、回填及翻页工具条等。 |
ExportToCSV | 导出为csv | 导出、打印、回填及翻页工具条等。 |
ExportToRtf | 导出为rtf | 导出、打印、回填及翻页工具条等。 |
ExportToPdf | 导出为pdf | 导出、打印、回填及翻页工具条等。 |
ExportToHtml | 导出为html | 导出、打印、回填及翻页工具条等。 |
ExportToOds | 导出为ods | 导出、打印、回填及翻页工具条等。 |
PrintReport | 打印报表 | 导出、打印、回填及翻页工具条等。 |
ServerPrint | 服务端连接池测试状态服务端报表打印 | 导出、打印、回填及翻页工具条等。 |
SaveReport | 收藏报表 | 导出、打印、回填及翻页工具条等。 |
BackFillDB | 回填如数据库 | 导出、打印、回填及翻页工具条等。 |
Pages | 翻页 | 导出、打印、回填及翻页工具条等。 |
ReportRefresh | 使用最新数据刷新当前报表 | 主要用于按变量缓存 |
Result | 在页面中显示报表内容,包括JavaScript和css | 用来显示报表的相关信息。 |
Report-Content | 在页面中显示报表内容 | 用来显示报表的相关信息。 |
Report-JS | 报表所用到的JavaScript | 用来显示报表的相关信息。 |
Report-CSS | 报表所用到的css | 用来显示报表的相关信息。 |
ReportName | 当前报表的名称 | 用来显示报表的相关信息。 |
Params | 报表的参数页面 | 用来显示报表的相关信息。 |
BuildTree treeName =”(1)” kind=”(2)” permit=”(3) ” | 树型结构显示 | 1)代表要生成的树的根节点名称。(2)代表树的种类,现在支持6种树:1-报表树(包括报表和所在的文件夹),2-报表文件夹树(只包括报表文件夹),3-报表结果文件夹树(只包括报表结果文件夹),4-报表结果树(包括报表结果和所在的文件夹),5-报表授权树(包括报表和所在的文件夹),6-报表结果授权树(包括报表结果和所在的文件夹)。(3)代表权限信息,也就是有构件拥有什么样的权限的树。其值由5位0、1数字组成。第一位表示执行,第二位表示查看,第三位表示修改,第四位表示删除,第五位表示增加。例如:“10000”表示构建拥有执行权限的树。“01111”表示构建拥有除了执行权限的树。 |
以上标签的使用方法可参考/unieap/pages/report/jsp/ClientShow.jsp页面,在此页面中如果不需要某个功能,只需要删除相应标签即可。如不需要每页显示多少行的下拉框,仅需要删除
2.2 报表权限
UniEAP Report的权限管理主要用来控制报表访问权限,判断最终用户是否有权限访问某个报表或者报表目录,您可以选择不使用UniEAP Report的权限管理,而是在自己的业务中实现报表的权限控制。
2.2.1 报表权限开关
屏蔽或者启用报表的权限管理,是通过修改\WEB-INF\conf\unieap\report\report-
engine-config.properties文件实现的。您可以通过修改配置项com.neusoft.report.
engine.security.used为true或false来启用或关闭权限管理。
2.2.2 报表权限管理方案
报表的权限管理方案的使用步骤如下:
1.安全接口部分
安全接口的实现分为以下两个步骤:
(1)实现SecurityFactory接口和AppSecurity接口,参考第4章“报表权限类接口”;
(2)修改配置文件
修改\WEB-INF\conf\unieap\report\report-engine-config.properties中的com.neusoft.report.engine.security.factory项为您自己的实现类。
在UniEAP Report中,最终用户的访问信息获取也是通过AppSecurity获得的,报表引擎根据访问者的不同做了结果缓存,所以要求这里的访问者帐号必须是有效的。
在UniEAP Report中,当前访问者信息通常写入当前线程,在使用访问者信息时从当前线程中获得。建议您在实现AppSecurity时也使用这种方法。
2.资源授权部分
UniEAP Report默认只有超级用户才能进行资源授权,而且可对所有的资源进行授权。为了提供更灵活的授权方式,UniEAP Report提供了资源获取的接口,用户可根据需要组织授权的资源信息。与安全接口一样,首先实现com.neusoft.report.engine.
management.AuthorizableResource接口,然后在report-engine-config.properties文件中修改com.neusoft.report.engine.management.impl的配置信息。
AuthorizableResource接口定义如下:
package com.neusoft.report.engine.management;
import com.neusoft.report.engine.util.dto.Resource;
public interface AuthorizableResource{
public Resource[] getAll(String userId);
public Resource[] getAllResult(String userId);
}
- public Resource[] getAll(String userId) 获取所有报表及文件夹;
public Resource[] getAllResult(String userId) 获取所有报表结果及文件夹。
UniEAP Report系统本身并不对用户进行维护,左侧的用户信息需要您自己实现(如果与UniEAP集成则可采用UniEAP的用户树),因此需要您做以下工作:
(1) 实现显示用户信息的Jsp页面
在这个Jsp中,当点击一个用户时需要实现一下JavaScript方法:
<script language="JavaScript">
function clickOnNode(Id,type,nodeType){
var activeTab = parent.menutree;
if(activeTab.displayPurviewInfo){
activeTab.displayPurviewInfo({id:Id,type:type ,nodeType:nodeType})
}
} </script>
(2) 修改securityIndex.jsp
其位置是/unieap/pages/report/jsp/security/securityIndex.jsp,要修改的部分是userTree.jsp,修改部分如下:
<iframe name="userTree" border="0" frameborder="0"
width="17%" valign="top" height="100%"
marginheight="0" marginwidth="0" src="userTree.jsp" >
</iframe>