tip pentaho/déploiements: rafraîchir le repository

Le problème est très vite arrivé quand on veut déployer de nouveaux rapports sur plusieurs serveurs différents de façon automatique.
imaginons que ayez un nouveau rapport de type CDE ( kesako ?)que vous avez fabriqué sur votre serveur local.

Vous avez copié les fichiers physiques du rapports  sur le serveur de production grâce à  un script shell par exemple.
Si vous vous connectez sur votre console utilisateur (http://monserveur:8080/pentaho/Home), vous ne voyez pas le nouveau rapport !!
L’explication est simple, tant que vous n’avez pas rafraîchi la solution , les nouveaux fichiers ne sont pas pris en compte par le moteur Pentaho.
Sous le capot, Pentaho utilise un indexage des fichiers qu’il enregistre dans la base de données ( tables PRO_FILES  et PRO_ACLS_LIST dans la base de données hibernate).
Tant que l’on a pas commandé à  pentaho de rafraîchir le repository, les nouveaux objets qui ont été copiés n’ont pas été enregistrés dans l’index pentaho.
Comment on peut piloter ce rafraîchissement, par exemple par script shell ?
La seule façon que j’ai trouvé est de créer une page jsp que je vais installer dans le contexte d’exécution de pentaho.
Je vais l’appeler RefreshRepository.jsp et voici le code :

<%@ page language= »java »
import= »org.pentaho.platform.engine.core.system.PentahoSystem,
org.pentaho.platform.api.engine.IPentahoSession,
org.pentaho.platform.web.jsp.messages.Messages,
org.pentaho.platform.api.engine.IUITemplater,
org.pentaho.platform.web.http.WebTemplateHelper,
org.pentaho.platform.util.messages.LocaleHelper,
org.pentaho.platform.api.repository.ISolutionRepository,
org.pentaho.platform.repository.solution.dbbased.DbBasedSolutionRepository,
org.pentaho.platform.web.http.PentahoHttpSessionHelper » %>
<%
response.setCharacterEncoding(LocaleHelper.getSystemEncoding());
IPentahoSession userSession = PentahoHttpSessionHelper.getPentahoSession( request );
String content = «  »;
ISolutionRepository solutionRepository = PentahoSystem.get(ISolutionRepository.class, userSession);
solutionRepository.reloadSolutionRepository(userSession, userSession.getLoggingLevel());
content = « OK refresh »;
%>
<%= content %>

Je n’ai plus qu’à  déployer cette page dans le répertoire suivant :

biserver-ce/tomcat/webapps/pentaho/jsp/

Une fois fait, je peux maintenant piloter le refresh  en faisant  :

http://monserveur:8080/pentaho/RefreshRepository?userid=totologin&password=XXXX

Du coup je peux piloter le refresh  par script Shell :

 wget  –quiet  -O – « http://monserveur:8080/pentaho/RefreshRepository?userid=totologin&password=XXXX »

2 réflexions au sujet de « tip pentaho/déploiements: rafraîchir le repository »

Laisser un commentaire