2. 配置 Pentaho
-  
下载并安装 Pentaho 社区版。
 -  
从 http://www.pentaho.com/marketplace/ 下载 Saiku Analytics 插件 (Meteorite BI),然后安装。
 -  
将
saiku移到$PENTAHO_HOME$/pentaho-server/pentaho-solutions/system下面,这里$PENTAHO_HOME是 Pentaho 安装的目录。 -  
如果 Saiku 插件跟最新版本的 Pentaho 服务器不兼容的话,按照下面步骤解决:
-  
从
$PENTAHO_HOME$/pentaho-server/pentaho-solutions/system/saiku/lib目录删除cpf-core-6.0.0.0-353.jar和cpf-pentaho5-6.0.0.0-353.jar。 -  
从 Pentaho 的安装目录(比如
$PENTAHO_HOME$/pentaho-server/pentaho-solutions/system/sparkl/lib或者…/cgg/lib)拷贝新的 lib 到$PENTAHO_HOME$/pentaho-server/pentaho-solutions/system/saiku/lib目录。cpf-core-7.1.0.0-12.jar cpf-pentaho-7.1.0.0-12.jar cpk-core-7.1.0.0-12.jar cpk-pentaho5-7.1.0.0-12.jarTip也许安装的 Pentaho 版本不带
cpk-core…和cpk-pentaho…Jar 包。这样的话只需要使用cpf-core和cpf-pentahoJar 包。 
 -  
 -  
访问
http://licensing.meteorite.bi并且注册一个新账号。验证了账号之后,创建一个公司,并且为公司生成一个社区版许可:-  
登录系统点击 CREATE NEW LICENSE 按钮。
 -  
在创建新许可的页面设置许可类型为:COMMUNITY_EDITION。
 -  
保存然后下载许可。重命名许可文件为
license.lic然后拷贝该文件到$PENTAHO_HOME$/pentaho-server/pentaho-solutions/system/saiku目录。 
 -  
 -  
下载并安装 Pentaho Data Integration 工具。
 -  
更改 Pentaho 默认端口为 18081:
-  
目录切换到
$PENTAHO_HOME/pentaho-server/tomcat/conf。 -  
在
server.xml文件中修改 Tomcat 默认端口为 18081: 
<Connector URIEncoding="UTF-8" port="18081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="18443" /> -  
 -  
在
server.xml修改 Tomcat shutdown 端口为 8015,避免跟 CUBA 默认的 shutdown 端口冲突:<Server port="8015" shutdown="SHUTDOWN"> ... </Server> -  
在 Pentaho 设置 CUBA 用户的认证:
-  
下载 cuba-bi-pentaho-1.6.0.jar 然后拷贝到
$PENTAHO_HOME$/pentaho-server/tomcat/webapps/pentaho/WEB-INF/lib。 -  
下载 cuba-bi-pentaho-1.6.0-plugin.zip,解压后拷贝
saiku-cuba-bi目录到$PENTAHO_HOME/pentaho-server/pentaho-solutions/system。 -  
在
$PENTAHO_HOME/pentaho-server/pentaho-solutions/system目录创建新文件cuba-pentaho-community-authentication.xml,并添加如下内容:<?xml version="1.0" encoding="UTF-8"?> <!--+ | Application context containing FilterChainProxy. +--> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xmlns:sec="http://www.springframework.org/schema/security" xmlns:pen="http://www.pentaho.com/schema/pentaho-system" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.1.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.1.xsd http://www.pentaho.com/schema/pentaho-system http://www.pentaho.com/schema/pentaho-system.xsd" default-lazy-init="true"> <!-- ======================== FILTER CHAIN ======================= --> <!-- if you wish to use channel security, add "channelProcessingFilter," in front of "httpSessionContextIntegrationFilter" in the list below --> <bean id="filterChainProxy" class="org.springframework.security.web.FilterChainProxy"> <constructor-arg> <util:list> <sec:filter-chain pattern="/webservices/**" filters="securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,cubaAuthenticationFilter,basicProcessingFilter,anonymousProcessingFilter,sessionMgmtFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS" /> <sec:filter-chain pattern="/api/repos/**" filters="securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,cubaAuthenticationFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,sessionMgmtFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS,preFlightFilter" /> <sec:filter-chain pattern="/api/**" filters="securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,cubaAuthenticationFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,sessionMgmtFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS" /> <sec:filter-chain pattern="/plugin/reporting/api/jobs/**" filters="securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,sessionMgmtFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS,preFlightFilter" /> <sec:filter-chain pattern="/plugin/**" filters="securityContextHolderAwareRequestFilterForWS,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,sessionMgmtFilter,exceptionTranslationFilterForWS,filterInvocationInterceptorForWS" /> <sec:filter-chain pattern="/**" filters="securityContextHolderAwareRequestFilter,httpSessionPentahoSessionContextIntegrationFilter,httpSessionContextIntegrationFilter,httpSessionReuseDetectionFilter,logoutFilter,authenticationProcessingFilter,cubaAuthenticationFilter,basicProcessingFilter,requestParameterProcessingFilter,anonymousProcessingFilter,sessionMgmtFilter,exceptionTranslationFilter,filterInvocationInterceptor" /> </util:list> </constructor-arg> </bean> <bean id="cubaAuthenticationProvider" class="com.haulmont.addon.bi.pentaho.CubaAuthenticationProvider"/> <!-- ======================== AUTHENTICATION ======================= --> <bean id="authenticationManager" class="org.springframework.security.authentication.ProviderManager"> <constructor-arg> <util:list> <ref bean="cubaAuthenticationProvider"/> <pen:bean class="org.springframework.security.authentication.AuthenticationProvider"/> <ref bean="anonymousAuthenticationProvider" /> </util:list> </constructor-arg> <property name="eraseCredentialsAfterAuthentication" value="false" /> <property name="authenticationEventPublisher"> <ref bean="defaultAuthenticationEventPublisher" /> </property> </bean> <bean id="cubaAuthenticationFilter" class="com.haulmont.addon.bi.pentaho.CubaPentahoAuthenticationFilter"> <property name="userRoleDao"> <ref bean="userRoleDaoTxn" /> </property> <property name="authenticationManager"> <ref bean="authenticationManager" /> </property> <property name="extraRoles" ref="extraRoles" /> <property name="cubaConnectionUrl" value="http://localhost:8080/app"/> </bean> </beans>Tip在
cubaAuthenticationFilterbean 中的cubaConnectionUrl属性设置 CUBA 应用程序的 URL:<property name="cubaConnectionUrl" value="http://localhost:8080/app"/> -  
在
pentaho-solutions/system目录下编辑pentaho-spring-beans.xml文件在<import resource="applicationContext-spring-security.xml" />后添加一行<import resource="cuba-pentaho-community-authentication.xml" />:<import resource="applicationContext-spring-security.xml" /> <import resource="cuba-pentaho-community-authentication.xml" /> 
 -  
 -  
启动 Pentaho 服务:
-  
切换到
$PENTAHO_HOME/pentaho-server目录。 -  
运行
start-pentaho.bat 
 -