返回顶部
首页 > 资讯 > 精选 >报表集成那点事
  • 153
分享到

报表集成那点事

2023-06-02 20:06:34 153人浏览 泡泡鱼
摘要

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

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

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

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

<report:html name=”report1″ 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″ 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

--结束END--

本文标题: 报表集成那点事

本文链接: https://lsjlt.com/news/231136.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 报表集成那点事
    报表工具作为信息管理、决策分析系统不可或缺的部分,在项目中经常用到,市面上的报表工具各式各样,在集成策略上,每个产品也都有自己特有的打开方式。不过,从门派上看,常见的无外乎中间件,servlet 应用两大门派。一般开源的报表,大都作为中间件...
    99+
    2023-06-02
  • 事务Transaction 那点事儿
    Transaction 也就是所谓的事务了,通俗理解就是一件事情。从小,父母就教育我们,做事情要有始有终,不能半途而废。 事务也是这样,不能做一般就不做了,要么做完,要么就不做。也就是说,事务...
    99+
    2024-04-02
  • python wraps那点儿事儿
     一个需求的实现当前,我们有这么一个小的需求:通过装饰器来计算函数执行的时间计算出这个函数的执行时长def add(x,y):   # add = TimeIt(add)     time.sleep(1)     'this is add...
    99+
    2023-01-31
    事儿 python wraps
  • 与oracle 有关的那点事
    常用操作 查看创建表参数 提取完整的DDL: SELECT DBMS_METADATA.GET_DDL("TABLE","table_name") FROM DUAL; 指定返回记录数 select XXX ...
    99+
    2018-11-19
    与oracle 有关的那点事
  • 报表怎么集成echarts官网
    本篇内容介绍了“报表怎么集成echarts官网”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步, echarts 官网找到自己需要的图形...
    99+
    2023-06-02
  • 详解Android的登录那点事
    随着互联网的高速发展,一个应用为了保护用户的隐私,通常会通过设置用户名+密码的验证方式保证用户隐私的相对安全,我知道一般网站的登录验证,通常会设置一个二维码,通过验证二维码,防...
    99+
    2022-06-06
    Android
  • 大数据集报表点击表头排序
    在润乾官方在线 demo的 "交互报表" 中,有介绍 "点击表头排序" 的报表案例,该报表针对普通统计类报表。对于使用大数据集的报表,当按照此方式改造时发现排序没起作用或仅对第一页或前几页排序,后面的...
    99+
    2023-06-02
  • Shell编程 Bash引号的那点事
    先了解下,在bash脚本中,有三种引号 1. 单引号 ' 2. 双引号 " 3. 反引号 ` 单引号 两个单引号包围起来的字符串就是普通的字符串,它将保留原始的字面意思. 双引号 ...
    99+
    2022-06-04
    引号 那点 Shell
  • Shell 编程:Bash空格的那点事
    先了解下bash中什么时候该用空格,什么时候不该用。 1. 等号赋值两边不能有空格 2. 命令与选项之间需要空格 3. 管道两边空格可有可无 我们来看看常见的问题 1. 赋值时等号两边或者只有左边多了空格 ...
    99+
    2022-06-04
    空格 那点 Shell
  • 浅析C++中模板的那点事
    1.什么是模板 假设现在我们完成这样的函数,给定两个数x和y求式子x^2 + y^2 + x * y的值 .考虑到x和y可能是 int , float 或者double类型,那么我们...
    99+
    2022-11-15
    C++ 模板
  • Java那点儿事之Map集合不为人知的秘密有哪些
    目录前言一、Map二、HashMap的基本概念三、HashMap集合的基本方法与使用四、HashMap集合的遍历五、HashMap集合的综合案例六、总结前言 上期我们说到了Colle...
    99+
    2024-04-02
  • 关于@Controller和@Restcontroller的那点奇葩事
    目录@Controller和@Restcontroller直接甩正事后来的经验总结@Controller和@RestController的区别?@Controller和@Restco...
    99+
    2024-04-02
  • java Web报表集成的方式是什么
    本篇内容主要讲解“ java Web报表集成的方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ java Web报表集成的方式是什么”吧!一般问这个问题的都是想咨询有没有和.net 平台...
    99+
    2023-06-03
  • 详解Android中fragment和viewpager的那点事儿
    在之前的博文《Android 中使用 ViewPager实现屏幕页面切换和页面轮播效果》和《详解Android中Fragment的两种创建方式》以及《Android中fragm...
    99+
    2022-06-06
    viewpager fragment Android
  • 浅谈Python基础之列表那些事儿
    一、列表的格式 二、列表的相关操作("增"、"删"、"改",“查”) <1> 添加元素 append()通过append可以向列表添加元素。 例: 运行结果: <2> 修改元素("改")...
    99+
    2022-06-02
    Python列表操作 python list列表
  • 详细聊一聊java中封装的那点事
    目录什么是封装封装拓展之包包的概念 什么是包访问权限什么是静态成员总结一下: 什么是封装 什么是封装呢?我们先来看一段代码 class Student { ...
    99+
    2024-04-02
  • 使用NPM在Java中集成NumPy,真的那么难吗?
    随着机器学习和数据科学的发展,NumPy成为了Python中最受欢迎的科学计算库之一。然而,Java作为一种广泛使用的编程语言,也需要能够与NumPy进行集成,以便在Java应用程序中使用NumPy的强大功能。在本文中,我们将讨论如何使用...
    99+
    2023-10-09
    numpy 日志 npm
  • 报表选型中那些想不到的坑
    详情链接:http://c.raqsoft.com.cn/article/1571024764129r=gxy...
    99+
    2023-06-02
  • 电报集中处理事项
     一、主用ATC系统以下设置只对"本场起飞"航班有效1、修改FDP服务器fdp进程配置文件:fdp.iniSendAddrForFPL    = ZBYNZPZX ZBYNZXZX ZSHA...
    99+
    2023-06-04
  • python模型集成知识点总结
    说明 模型集成是指将一系列不同模型的预测结果集成在一起,从而获得更好的预测结果。 对于模型集成来说,模型的多样性非常重要。Diversityisstrength.用于集成的模型应尽可能好,同时应尽可能不同。 同一的网...
    99+
    2022-06-02
    python 模型 集成
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作