文章主要介绍了EISaaS中的报表引擎模块,包括其核心功能、子模块、命名空间、项目名称及其设计思路。文章还提到了架构的一致性原则和隐喻在软件设计中的应用。
报表引擎是EISaaS平台的核心,用于生成数据分析报表,包含service、runtime、exporter三个子模块。
报表引擎模块的命名空间为xxx.eisaas.framework.engine.report,项目名称为eisaas-framework-engine-report。
报表引擎模块遵循与其他模块一致的设计思路,内部子模块对象相互协作,提供统一的门面类封装,提高API的易用性。这种设计遵循了架构的“一致”原则。
隐喻是软件设计中的重要概念,有助于理解软件的本质和正确使用。在EISaaS设计中,隐喻如引擎的概念被用来描述数据引擎、实体引擎、报表引擎和功能引擎等核心组成部分。
由于EISaaS的核心功能就是生成各种数据分析报表,因此,报表引擎模块就是整个平台的核心。它一共包含三个子模块,分别是service,runtime,exporter,子模块之间的关系如下图所示:
报表引擎模块的命名空间为:xxx.eisaas.framework.engine.report,项目名称为eisaas-framework-engine-report。如前文所述,该模块依赖于eisaas.framework.engine.entity与eisaas.infrastructure.xml包。
报表引擎模块的设计并无出彩之处,遵循了与其他模块相同的设计思路,即内部由各个子模块的对象相互协作,对外提供统一的门面类封装不必暴露的细节,提升API的易用性。
看起来,这样的设计稍显平庸,但窃以为却是明智的决策,因为
它遵循了架构的“一致”原则
。Brooks就认为:“好的架构应该是直接的,人们掌握了部分系统后就可以推测出其他部分。「Brooks《设计原本》,转引自Blaauw《Hardware requirements for the Fourth Generation》」”这一说法也就是古人常说的“窥一斑而知全豹”,设计的雷同可以有效降低人们的学习成本,也是降低复杂度的有效原则。
说完一致性原则,再来说说
隐喻(metaphor)
。隐喻是文学中的修辞手法,而我最初知道在软件设计领域用到隐喻,则来自Kent Beck的XP实践,如下图所示: