报表中总是得写 java 程序怎么办?
发布日期:
2023-07-03
浏览量:
556

报表中总是得写 java 程序怎么办

为什么会用到 JAVA

数据信息化项目中的报表,现在基本都有报表工具来做了,用工具就是为了解决手工做的麻烦和困难,为啥用了工具还得手工写 JAVA 呢?而且要写的情况还挺多

这个问题其实不能完全怪报表工具,报表工具的作用是提升报表制作的效率,在这一点上,它是完全可以胜任的,而且做的很好,但报表整个生命周期中的难题,除了制作外,还有一个是在数据准备阶段,这个阶段的难题,就不是所有报表工具都可以解决的了

每一个报表,都需要把数据整理计算准备好以后,才可以进入到报表制作的环节,数据的准备阶段,有的简单,有的复杂,简单的,用 SQL 就可以轻松搞定,业务逻辑复杂的,SQL 写起来困难或者写不了,那就得用 JAVA 等高级语言去准备了

image.png 

而且数据多元化的时代,用户的数据有着各种类型的存储方式,有来自 NOSQL,有的来自 TXT 、EXCEL、CSV 等文件,有的是 XML、JSON,有的是 Webservice,还有 HDFS、Elasticsearch、Kafka 等等,这些又大部分都不能用 SQL 来直接处理和计算,尤其是出现多种来源混合计算的时候,也只能用 JAVA 来写了

这就是为什么做报表的时候还得频频用 JAVA 的原因,也是为什么几乎所有报表工具都留了程序员自定义数据源接口、而且并非摆设经常被用的原因

JAVA 的弊端

JAVA 其实也有优势,就是自由,JAVA 写得好,遇到啥都能解决

但是弊端却也很明显

JAVA 开发成本高

本来人就贵,结果做个报表还得会写 JAVA 的,人工成本自然就会高很多,项目和公司的压力就会很大

工作量还大JAVA 这类高级语言,对结构化数据的计算支持很有限,虽然都能做,但却能力比较弱,写起来非常繁琐,简单做个求和运算都需要写数行代码的循环来实现,而报表数据源处理则大量涉及批量数据运算,采用高级语言开发时会导致动辄数百行的冗长代码,编写、调试和后续维护都会很困难,开发成本也会高出很多

JAVA 破坏应用架构

造成高耦合

报表和应用的关系,原本是松散低耦合的,报表模板以文件形式存放在服务器文件系统中,

独立管理和应用互不影响

JAVA 程序写的自定义数据集就不行了,这部分代码将作为应用程序的一部分被一起编译和打包,有啥改动,都需要改两处,很容易导致不一致,报表做起来又没完没了,还得 JAVA 开发人员一直跟着

不能热切换

报表原本是支持热切换的,报表开发人员对报表模板的修改或者新增,都不需要重启应用,直接刷新浏览器就可以

但有 JAVA 自定义数据集的报表就不行了,每改动一次,都需要重新编译,都得整个项目陪着重启甚至停机,严重影响了应用和项目的稳定

怎么解决

频繁的使用 JAVA 是因为报表工具不具备良好的数据准备功能,如果报表工具可以很好的做好数据准备,具备了这样的能力,那问题就解决了

硕迪报表就具备这样的能力,它集成了开源的的集算器 SPL,可以轻松应对各类数据准备的难题

image.png 

SPL 是一款流行的专业的数据计算处理工具,很多项目开发商都在用,因为它不仅能解决问题,而且还免费,开源,是常年做项目,总需要做数据处理的工程师的好帮手

集成 SPL 后,硕迪报表相当于多了一个计算层,这个计算层相对 JAVA 做数据准备有如下优势:

支持各类数据来源

直接连接各类数据来源使用

image.png 

简单易上手

易学易懂,初级工程师就可以搞定,不再非得需要 java 人员了

image.png 

提升报表开发效率

SPL 计算层有更高效的函数和符合自然思维的写法,可以大大提升了报表数据准备阶段的开发效率,比如下面这个小例:

例子:报表中需要呈现连续上涨超过 3 天的股票

这样的报表,制表时候只需要设计几个格子,很简单,但数据准备却不简单,大部分的工作量都得花在这个数据的准备上

SQL 来算的话,得写好几层嵌套

image.png 

Java 写那要再长十几倍,没法列在这里了。而且经验不足的人可能还写不出来

而用硕迪计算层的 SPL,则短短两行就可以搞定,而且逻辑也更清晰易懂

image.png 

(注释:导入股市数据表,并按日期排序。使用函数 group 的选项 @o,根据股价是否上涨进行分组。分组时只和相邻的对比,当股价是否上涨发生变化时产生新组。计算出每支股票连续上涨的最大天数,最后选出连续上涨超过 3 天的)

避免应用耦合支持热切换

image.png 

SPL 作为硕迪报表的计算层,它编写的计算脚本和报表模板一样,都是解释执行的,而且可以直接放到报表模板里面,就相当于报表工具同时也负责了数据准备任务,这样报表维护时很容易保证这两部分一致,避免了应用耦合的问题

解释执行的 SPL 同时也具备了热切换的能力,不会再因为报表数据的改动影响应用的稳定了,重新上载报表及其数据准备脚本后就能立即生效

说在最后

硕迪报表这样的集成了高效的数据计算层的报表工具,就可以轻松应对那些不得不频繁使用 JAVA 自定义数据的场景了,项目开发商也不必再为投入过多的人工成本而苦恼了,而且硕迪报表本身也好用便宜,是广大的开发商伙伴们信赖的工具