我的编程空间,编程开发者的网络收藏夹
学习永远不晚

报表集成那点事

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

报表集成那点事

报表工具作为信息管理、决策分析系统不可或缺的部分,在项目中经常用到,市面上的报表工具各式各样,在集成策略上,每个产品也都有自己特有的打开方式。不过,从门派上看,常见的无外乎中间件,servlet 应用两大门派。一般开源的报表,大都作为中间件产品提供给开发者,集成方法也比较统一,通常都是嵌入到系统中自行调用 API 开发与集成,但开源的帮助文档或全或不全,都靠自己找资料,就要拼学习能力了。在商用收费报表中,润乾报表也采用的是中间件方式,下面我们以润乾报表为例来进一步了解一下:

润乾报表为了方便开发者使用,在满足大多数通用的需求的同时,实现零编程,润乾报表利用 tag 标签进行了封装,如下就是一个发布润乾报表的 jsp 文件:

<%@ taglib uri=”/WEB-INF/raqsoftReport.tld” prefix=”report” %>

<report:html name=”report1″ class="lazy" data-srcType=”file” reportFileName=”wangge.rpx”…/>

可以看到,在这个 jsp 中用到一个 <prefix: html > 标签来发布 html 报表,与 struts 标签使用类似,其中 reportFileName 就是需要发布的报表文件名,发布报表的同时,实现了导出,分页,打印功能

报表集成那点事

如果把 WEB 应用比作一台机器,那报表就是这台机器诸多功能模块里的一块,tag 标签就是一个个小零件,你把这个小零件扣在哪个 jsp 文件中,报表就在哪里展现。
报表集成那点事

报表作为中间件集成到其他应用系统里,与这个应用系统就成为了一个整体,但也有分家的做法,比如业界比较常见的 servlet 应用——

报表集成那点事

在这里,报表应用是一个独立的应用,在其他应用页面里嵌入一个 JFrame,然后通过 url 请求报表的 servlet,报表名作为参数传递给报表应用,报表应用将计算以后生成的 html 报表返回。

那这个时候,我们的程序猿要问了,浏览报表明白了,那如果报表需要传参呢? 别着急,我们再来模拟一下两种集成方式在给报表传参上有啥区别:

中间件方式

我们还是拿润乾报表的 tag 标签来看:

<%@ taglib uri=”/WEB-INF/raqsoftReport.tld” prefix=”report” %>

<report:html name=”report1″ class="lazy" data-srcType=”file” reportFileName=”wangge.rpx”

params= “ arg1=123;arg2=abc;…… “

/>

Tag 标签中有个params属性,可以通过这个属性给参数赋值,如果参数值灵活变化,当然属性值也可以通过变量传递,这个不多说,程序猿都懂的。

Servlet 的方式

JFrame 中请求报表 servlet 的 URL 就要改成:

http: //ip:port/report/reportservlet ? 参数 = 报表 &arg1=123&arg2=’abc’&…

这时,我知道我们经验丰富的程序猿又要质疑了:首先,引入了 JFrame 来加载报表,多一次数据请求;再次,参数在 url 里都是明文显示的,安全报警啊,特别集成权限时会比较麻烦!除此之外,web 服务与报表服务在不同的进程里,不管是不是在同一台物理服务器,都会多占用硬件资源,当应用出现异常时,排错也麻烦,增加运维难度。所以,润乾报表虽然也支持 servlet 发布报表的方式,但我们也不建议大家这样使用。

前面我们讲了润乾报表作为中间件集成,那么这个中间件到底集成了什么到应用系统中?很简单,就是 jar 包,xml 配置文件及 jsp 的 tag 描述文件 tld。

Jar 包引入到应用程序中,不仅提供了 tag 标签零代码计算展示、打印报表,也为开发者在自己的项目中自行调用报表 API 接口实现报表的计算,分页,导出,打印等过程提供了方便,例如使用代码计算发布一个报表:

// 读报表

String reportFile =  C:/reportFiles/wangge.rpx  ;// 绝对路径或相对当前程序启动路径

ReportDefine rd = (ReportDefine)ReportUtils.read(reportFile);

// 计算报表

Context cxt = new Context(); // 构建报表引擎计算环境

//…………………….. // 其它辅助代码,例如往报表引擎传递参数,传递数据库连接参数等
ReportDefine rd = (ReportDefine)ReportUtils.read(reportFile);

Engine engine = new Engine(rd, cxt); // 构造报表引擎

IReport iReport = engine.calc(); // 运算报表

// 输出到网页,展现报表

String htmlText = ReportUtils.toHTMLString(iReport,”report1″,request); // 生成 html 语法

request.setAttribute(“htmlText”, htmlText);// 保存到 request 里,方便页面上显示

当然,这里只是讲一个简单例子,API 属于进阶集成,更深入的学习请参考润乾的《程序员参考》文档。这例子虽然简单,但我相信大家已经体会到了她的灵活性、轻量性,而单一的 servlet URL 方式集成如果要二次开发,仅两个系统的数据通讯就是一大难题。 所以基于这种方式集成的报表,要么由开发者想办法解决,要么就是把报表服务做成了一个平台——囊括了数据决策展示、权限管理、报表管理等等看起来牛叉,但跟自己业务系统相结合时又是鸡肋的一堆子业务系统。

便利、灵活、轻量为报表开发节约成本提供了基础,随着业务的提升,高效、高可用性也是考核报表系统的重要部分。因此集群也是集成部署的一个重要环节,那接下来我们继续来看,这两种集成方式在集群上又有啥区别,先上两个结构图——

中间件嵌入到 web 应用里,与 web 应用是一个整体,所以 web 应用做完集群,那么报表也就做完了集群。

报表集成那点事

而 Servlet URL 的方式,那集群就相当于分成了两套,各自做自己的集群,也就是报表是一个集群,web 应用是一个集群。

报表集成那点事

从以上的部署结构可以看出,中间件的方式在集群上更简单些。所需要的配置及硬件资源都要少不少。

到此报表的集成基本就讲完了,优缺点都做了一个比较,您的应用需要哪一种呢?


详情链接:http://c.raqsoft.com.cn/article/1533027803258?r=gxy

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

报表集成那点事

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

报表集成那点事

报表工具作为信息管理、决策分析系统不可或缺的部分,在项目中经常用到,市面上的报表工具各式各样,在集成策略上,每个产品也都有自己特有的打开方式。不过,从门派上看,常见的无外乎中间件,servlet 应用两大门派。一般开源的报表,大都作为中间件
2023-06-02

报表怎么集成echarts官网

本篇内容介绍了“报表怎么集成echarts官网”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步, echarts 官网找到自己需要的图形
2023-06-02

大数据集报表点击表头排序

在润乾官方在线 demo的 "交互报表" 中,有介绍 "点击表头排序" 的报表案例,该报表针对普通统计类报表。对于使用大数据集的报表,当按照此方式改造时发现排序没起作用或仅对第一页或前几页排序,后面的都没成功。要想了解啥原因导致?就需要分析
2023-06-02

java Web报表集成的方式是什么

本篇内容主要讲解“ java Web报表集成的方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ java Web报表集成的方式是什么”吧!一般问这个问题的都是想咨询有没有和.net 平台
2023-06-03

报考24年软考集成,这些事项需提前了解!

2024年软考考试工作安排调整后,集成一年仅考一次,作为软考的热门科目,下半年报考系统集成项目管理工程师(简称“集成”)的考生预计会有很多。
报考24年软考集成,这些事项需提前了解!
2024-07-23

软考系统集成项目管理工程师报名职称那一栏怎么填?填什么?

软考系统集成项目管理工程师报名职称那一栏怎么填?软考系统集成项目管理工程师报名职称那一栏填什么?很多考生不知道职称那一栏如何填写,今天就带来软考系统集成项目管理工程师报名职称填写要求的说明。
软考系统集成项目管理工程师报名职称那一栏怎么填?填什么?
2024-08-26

如何利用Go语言开发点餐系统的报表生成功能

如何利用Go语言开发点餐系统的报表生成功能引言:随着社会的不断发展和人们消费观念的变化,餐饮行业竞争加剧。为了更好地管理餐厅运营,开发一个高效的点餐系统是非常必要的。除了基本的点菜下单功能之外,报表生成功能更是餐饮管理的重要环节。本文将介绍
如何利用Go语言开发点餐系统的报表生成功能
2023-11-01

2024年软考系统集成项目管理工程师报名流程及注意事项

  2024年软考系统集成项目管理工程师报名流程是什么?2024年软考系统集成项目管理工程师报名有哪些注意事项?2024年软考系统集成项目管理工程师报名继续采用网络报名方式,报名流程及注意事项详见正文。  2024年软考系统集成项目管理工程师报名采用网上统一报考的方式,报名网站网址:www.ruankao.org.cn
2024年软考系统集成项目管理工程师报名流程及注意事项
2024-04-19

报表里有 4 个 SQL 数据集,SQL 在数据库里跑一共不到 10 秒,但报表查完很慢要几分钟,咋回事?

你要确认一下执行完 SQL 结果是否都加载了,像 PL/SQL Developer 查完就只加载部分。 不过报表运行时间肯定是要比数据库查 SQL 慢的,如果慢很多可能是因为在报表里关联多个数据集导致的。可以检查一下在报表单元格里是否有类似:ds2.selec
报表里有 4 个 SQL 数据集,SQL 在数据库里跑一共不到 10 秒,但报表查完很慢要几分钟,咋回事?
2017-06-11

2022下半年系统集成项目管理工程师易混淆知识点2:事业环境因素、组织过程资产

  为帮助考生备考2022下半年软考系统集成项目管理工程师考试,编程学习网小编为大家整理了2022下半年系统集成项目管理工程师易混淆知识点,以下为2022下半年系统集成项目管理工程师易混淆知识点2:事业环境因素、组织过程资产。  很多考生在备考2022下半年软考系统集成项目管理工程师考试,以下为2022下半年系统集成项目管
2022下半年系统集成项目管理工程师易混淆知识点2:事业环境因素、组织过程资产
2024-04-19

2022下半年系统集成项目管理工程师易混淆知识点11:工作绩效数据、工作绩效信息、工作绩效报告

  为帮助考生备考2022下半年软考系统集成项目管理工程师考试,编程学习网小编为大家整理了2022下半年系统集成项目管理工程师易混淆知识点,以下为2022下半年系统集成项目管理工程师易混淆知识点11:工作绩效数据、工作绩效信息、工作绩效报告。  很多考生在备考2022下半年软考系统集成项目管理工程师考试,以下为2022下半
2022下半年系统集成项目管理工程师易混淆知识点11:工作绩效数据、工作绩效信息、工作绩效报告
2024-04-19

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录