`
datamachine
  • 浏览: 161847 次
社区版块
存档分类
最新评论

报表动态可挂接算法的简便实现

阅读更多

         在报表项目中,有些报表的数据计算方法会经常改变。例如:某企业员工的实际工资是通过绩效得分计算出的,算法经常变动,需要在不改动其他代码的情况下用新算法替换旧算法。如果用Java来实现计算的话,虽然可以实现动态可挂接计算模块,但是存在缺乏基础类库、占用多余内存等问题。

 

         采用润乾集算报表可以很好的解决这些问题,实现低耦合、热部署的动态挂接算法。集算报表挂接算法系统结合和其他报表工具+java的系统结构对比图如下:



 
上图可以看出,java程序必须要编译、打包才能更新。集算脚本是解释执行的,脚本文件同时也是可执行文件,所以可以直接替换文件更新。同时,集算脚本可以和报表模板成对存放,可以方便管理。

下面通过员工绩效工资的例子看看集算报表的实现方法,并和一般报表工具+Java的实现方式做一下比较。

         员工绩效工资报表如下:



 

         报表格式比较简单,但是计算方法相对复杂,而且经常变动。用集算报表实现可挂接算法的第一步,编写集算器脚本:



 

         A2单元格有个输入参数gender,是来自用户在报表页面上的选择输入。A13单元格是将结果返回给报表页面。A2A12之间是绩效工资的计算方法,不是本文重点,这里不详细介绍。

 

         集算报表的报表模板可以定义计算数据集来调用这个可挂接计算模块:



 

         其中,gender参数是dynamic.dfx的输入参数,数据集ds1接收dynamic.dfx返回的结果集。

可以看到集算器脚本dynamic.dfx和报表模板之间的耦合程度非常低。如果要改变绩效工资的计算方法,只需要编写一个新的dynamic.dfx,替换服务器上原有的dfx文件即可。因为dfx脚本是解释执行的,所以可以不停机替换,实现真正的热部署。

 

最后,在集算报表设计器中设计报表模板如下:

 

从这个例子可以看出集算报表实现的可挂接算法,相比普通报表工具+Java的实现方式有多方面的优势。

1dynamic.dfx中可能会用集算报表提供的多种类库:分组、汇总、排序、过滤、关联、唯一值、交集、排名等等。Java程序员必须手工编写这些基础算法。将这些基础算法直接实现在业务逻辑中显然是不合理的,这会导致每个计算模块重复书写类似的代码,计算模块过于庞大、可读性变差。理想的作法是先实现一套基础算法类库,再在计算模块中调用这些类库,但应用程序员很难设计出完备性和系统性优秀的基础算法类库,常常使代码的耦合性高,稳定性差,最终导致计算模块维护困难。

集算报表中集算引擎本身就是这样一套精心设计的完备基础类库,只需要JAVA十分之一的代码量就可以实现同样功能的计算模块,开发效率更高。

2JAVA代码需要重新编译,部署起来比较麻烦;当可挂接的计算模块较多时,不论是否还要使用它们,这些Java class/jar都会占据内存空间而无法释放,对性能有一定的影响。

 

集算报表的集算器引擎主程序和脚本文件是分开的,耦合性很低,维护起来更加方便。另外,集算脚本无需编译即可使用,是真正的热部署。脚本程序不会事先加载到内存,而是使用时再加载,计算完立刻释放,不会长期占用内存。

  • 大小: 31.8 KB
  • 大小: 16.9 KB
  • 大小: 89.3 KB
  • 大小: 31 KB
  • 大小: 12.5 KB
0
0
分享到:
评论

相关推荐

    java动态报表神器DynamicReports中文文档

    它基于强大的iReport JasperReports引擎,通过Java API实现了报表的动态生成。DynamicReports支持PDF、Excel、Web预览等多种格式的输出,并允许通过配置来实现报表的不同风格和样式。 首先,DynamicReports提供了...

    WinCC数据报表实现方法介绍

    ### WinCC数据报表实现方法深度解析 在现代工业自动化领域,数据报表的生成与管理扮演着至关重要的角色,尤其在确保生产效率与质量控制方面。西门子的WinCC(Windows Control Center)作为一款功能全面的监控与数据...

    JAVA_报表\润乾报表

    传统的报表工具通常只支持单一数据源,需要通过复杂的SQL或子表来实现多源分片,而润乾报表则允许直接基于多个数据集制作报表,定义数据源和数据集的过程直观简便,有效避免了性能损失。 例如,对于多源分片报表,...

    FastReport4报表工具中文手册

    用户可以通过数据集组件将报表与数据源关联,实现数据的动态绑定和实时更新。手册会详细介绍如何配置和管理这些数据源。 4. **报表预览和打印** 在设计完成后,用户可以在内置的预览模式下查看报表效果,进行最后...

    15款报表工具的总结

    - **FineReport(帆软报表工具)**:具备融合数据展现与录入的功能,同一模板可通过参数控制其用途,支持零客户端录入、数据校验、多源填报,以及BS端自动计算,同时支持多sheet填报。 - **润乾报表工具**:同一...

    RDLC报表使用手册

    RDLC报表还支持使用表达式来计算数据,以及内置的函数来实现复杂的数据处理逻辑。这些表达式可以应用于文本框、图表等报表元素中,以实现动态数据展示。 通过以上介绍,我们可以看到RDLC报表不仅具备强大的功能,还...

    报表的制作工具类报表的制作工具类报表的制作工具类报表的制作工具类

    1. 数据连接:报表工具能够连接到各种数据源,如数据库、API接口、Excel文件等,实现数据的集成和统一管理。 2. 数据清洗与转换:工具提供数据预处理功能,帮助用户清洗和转换数据,确保报表的准确性和一致性。 3. ...

    报表设计器

    2. **VB兼容性**:标签中提到“VB”,这可能意味着该报表设计器能够与Visual Basic(VB)集成,允许开发者利用VB的编程能力来扩展报表的功能,实现更复杂的逻辑和交互。 3. **多样的报表类型**:一个优秀的报表设计...

    中式报表系列之一如何提高报表开发效率

    1. **减少编码量**:传统的报表开发需要编写大量的代码来实现数据展示、计算等功能,而报表工具则可以通过可视化界面完成大部分工作,显著减少了编码量。 2. **快速响应需求变化**:报表工具通常支持动态调整报表...

    电子书—报表工具发展史

    更重要的是,计算机实现了数据与报表格式的彻底分离,用户可以根据需要单独调整数据或报表格式,极大地提高了报表的灵活性和可维护性。 报表工具的核心价值在于提高报表开发效率和后期维护性,从而提升客户满意度并...

    ACCESS最佳教程(报表的设置教学).doc

    报表不仅提供了数据的直观展示,还能进行数据的汇总和计算,是管理和输出数据库信息的有效手段。 **报表的功能** 报表在Access中的作用主要包括: 1. **数据呈现**:报表能够将数据以结构化的方式呈现,使得数据...

    用友报表培训教程.pdf

    - **格式管理功能**:用户可在格式状态下设计报表格式,包括设置表尺寸、调整行高列宽、画表格线、设置单元属性等。 - **数据处理功能**:提供强大的数据处理能力,如数据录入、关键字设置、单元公式定义、数据...

    工会通用财务报表模板!

    同时,模板通常预设了格式和计算公式,使编制过程更为简便快捷。例如,模板可能已经设置好自动求和、平均值、增长率等功能,以及根据会计准则的折旧、摊销计算。 在实际操作中,我们需要根据工会的具体情况进行适当...

    解析BIRT-Eclipse商业智能和报表工具(全)

    3. **Web应用报表集成**:将BIRT嵌入到Web应用中,使得用户可以在浏览器端查看动态生成的报表。 4. **移动设备支持**:随着移动互联网的发展,BIRT也开始支持在移动设备上查看和操作报表。 #### 总结 通过上述介绍...

    报表处理子系统(ppt 51).pptx

    报表系统的功能结构通常包括数据接口、格式设计、公式设置、数据处理、报表输出和系统管理等多个模块,这些模块协同工作,以实现报表的完整生命周期管理。 总的来说,报表处理子系统是会计工作中的重要工具,它帮助...

    通用报表说明书

    2. **报表向导**:提供了一个简便的方法来生成报表模板,适用于初学者或快速部署场景。 3. **报表模板的内部结构及编辑修改**:介绍了如何对已有的报表模板进行编辑和调整,使其更加符合用户的实际需求。 4. **...

    JasperReport+iReport高级报表设计实战

    JavaBean可以封装业务逻辑和数据,报表在运行时动态绑定到JavaBean,这样改动数据源或查询无需重新编译报表。 3. **实战报表设计** - **简单的复杂表头报表设计** 在iReport中,可以创建复杂的表头,例如分组表头...

Global site tag (gtag.js) - Google Analytics