1PentahoBI源码分析报告2目录1、PentahoBI简介..........................................................................................................................32、项目概况.....................................................................................................................................32.1项目生成............................................................................................................................32.2项目模块分析.....................................................................................................................32.2.1pentaho-platform-core..............................................................................................42.2.2pentaho-user-console................................................................................................82.2.3pentaho-platform-api..............................................................................................122.2.4pentaho-platform-scheduler....................................................................................132.2.5pentaho-platform-extensions..................................................................................142.2.6pentaho-platform-repository...................................................................................172.2.7pentaho-platform-assembly.....................................................................................203、项目架构分析...........................................................................................................................203.1架构简介...........................................................................................................................203.2PentahoBi架构图............................................................................................................203.3PentahoServer..................................................................................................................233.4PentahoDesignStudio.....................................................................................................274、项目框架及重要包...................................................................................................................274.1Jpivot.................................................................................................................................274.2GWT框架.........................................................................................................................294.3Jackrabbit框架.................................................................................................................424.4Spring框架.......................................................................................................................534.5Slf4j包..............................................................................................................................554.6commons-logging日志系统.............................................................................................605、总结..........................................................................................................................................6231、PentahoBI简介PentahoBI平台是一个以流程为中心的,工作流驱动的,可扩展平台,用于解决商业智能问题。Pentaho是一个以工作流为核心的、强调面向解决方案而非工具组件的BI套件,整合了多个开源项目,目标是和商业BI相抗衡。它包括。由上可见Pentaho是一个很完善的BI解决方案。Pentaho偏向于与业务流程相结合的BI解决方案,侧重于大中型企业应用。1、工作流引擎:SharkandJaWE2、数据库:FirebirdRDBMS3、集成管理和开发环境:Eclipse4、报表工具:EclipseBIRT5、ETL工具:Enhydra/Kettle6、OLAPServer:Mondrian7、OLAP展示:JPivot8、数据挖掘组件:Weka9、应用服务器和Portal服务器:JBoss10、单点登陆服务及LDap认证:JOSSO其目的在于将一系列企业级BI产品、开源软件、API等等组件集成起来,方便商务智能应用的开发。它的出现,使得一系列的面向商务智能的独立产品如Jfree、Quartz等等,能够集成在一起,构成一项项复杂的、完整的商务智能解决方案。目前Pentaho框架包括了EclipseBIRT,JasperReports,Mondrian,JPivot,调度(scheduling),web服务,Kettle(数据集成工具),商业规则等多个组成部分。Pentaho的主要组成元素包括报表生成、分析、数据挖掘和工作流管理等等。这些组件通过J2EE、WebService、SOAP、HTTP、Java、JavaScript、Portals等技术集成到Pentaho平台中来。下面就其源码进行分析,该源码不是最新源码。2、项目概况2.1项目生成在Pentaho官方网站下载最新源码、并在MyEclipse10中部署该项目。2.2项目模块分析成功构建之后的源码由7个模块项目构成,其目录结构如下图1-1所示:42.2.1pentaho-platform-core日志、审计和安全被建立在BI平台的内核里。并且它们被自动化运行以保证,对于管理和性能监控这二者总是存在着正确的审计跟踪。日志,审计和安全内置于核心中,并被自动使用,以确保总有一个精确的审计跟踪可用于管理和性能监控。1、repository:创建文档请求\回复类、创建文件夹请求\回复类、导航服务接口、对象服务接口,其中包括创建文档、创建文件夹、创建关系、创建策略、获取允许的action、获取属性、获取内容流、更新属性、移动/删除对象、删除树结构、选择/删除内容流等方法的声明;子包exception中包括:以上操作的各种异常类定义:约束冲突异常、过滤器无效异常、文件夹无效异常、未找到对象异常等;子包type:各种属性类型的定义,文档、布尔、日期、十进制、Html、Id、字符串、Xml属性类型的定义等;其目录结构如下图所示:2、Tenant:实现了api中的ITenant接口;2、审计:包括审计项、审计帮助等类的定义;3、输出:缓冲区内容项、多内容项、多输出流、简单内容流、简单输出Handler处理类的定义;54、安全:security:默认情况下jdbc的角色映射器、默认情况下Ldap角色映射器、默认角色用户详细信息服务装饰器、默认的用户名比较器、日志记录拦截、安全帮助、安全参数提供程序、简单的权限掩码、简单角色、简单会话、简单用户、SpringSecurity许可管理。5、服务:Services:action序列JCR帮助器、基于请求的处理器、消息格式化器、Soap帮助器、解决方案URI解析器、Web服务的Util;Audit(审计):审计连接、审计文件项、审计SQL项;6、dbcp数据库连接池:connection:Pentaho的连接工厂datasource.dbcp:JNDI数据源服务、非汇集数据源服务、汇集数据源帮助器、汇集数据源系统监听器、汇集或者JNDI数据源服务;dbcp.tenantware:租客意识到登录解析数据源服务;单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。7、Uifoundation:chart:抽象图表组件、抽象Jfreechart组件、条形图表定义、分类数据集图表组件、Jfreechart引擎、Pent