Академический Документы
Профессиональный Документы
Культура Документы
Prologo Se debe de tener en cuenta que los dashboard de Pentaho estan construidos con JSP (Java Server Page) y para poder construirlos se debe de tener conocimientos basicos de HTML.
Los pasos para poder construirlos son: Primer paso: Se debe mapear el JSP que se va a construir en la siguiente ruta:
# vim /opt/pentaho-opensource-1.2.1/jboss/server/default/deploy/pentaho.war/WEB-INF/web.xml
www.omar.codigo03.com
Utilizaremos el archivo Log.jsp de ejemplo que se encuentra en el servidor 172.25.0.39. - En la primera parte importa la librerias que usara el archivo.
<%@ page language="java" import="java.util.ArrayList, java.util.*, java.io.ByteArrayOutputStream, org.pentaho.core.util.XmlHelper, org.pentaho.core.ui.SimpleUrlFactory, org.pentaho.messages.Messages, org.pentaho.core.util.IUITemplater, org.pentaho.core.system.PentahoSystem, org.pentaho.util.VersionHelper, org.pentaho.ui.component.DashboardWidgetComponent, org.pentaho.ui.component.INavigationComponent, org.pentaho.ui.component.NavigationComponentFactory, org.pentaho.ui.component.HtmlComponent, org.pentaho.core.solution.HttpRequestParameterProvider, org.pentaho.core.solution.HttpSessionParameterProvider, org.pentaho.core.session.IPentahoSession, org.pentaho.core.util.UIUtil, org.dom4j.*, org.pentaho.util.VersionHelper, org.pentaho.messages.util.LocaleHelper, org.pentaho.core.solution.ActionResource, org.pentaho.core.solution.IActionResource, org.pentaho.core.solution.SimpleParameterProvider, org.pentaho.ui.ChartHelper, java.io.*" %>
- Aqui se deben declarar las variables que se van usar en el dashboard, incluyendo las variables en las que se almacenaran los pies y barras.
String area = request.getParameter("area"); String nombre = request.getParameter("nombre"); String user = request.getParameter("user"); String title = "Seleccione Ubicacion"; String chart1 = ""; String chart2 = ""; String chart3 = ""; String irri = "IRRI"; String cip = "CIP"; String ilri = "ILRI"; String icrisat = "ICRISAT"; String barra = ""; String barra2 = ""; String pie1 = ""; String pie2 = "";
- Despues de haber declarado las variables recien podemos empezar a crear los pies o barras. Ejemplo de la creacion de una barra:
// Se crea una nueva instancia de la clase SimpleParameterProvider parameters = new SimpleParameterProvider(); //se envia un parametro a los archivos de consulta parameters.setParameter( "inner-param", "NOMBRE"); //Se declaran los tamaos de la imagen parameters.setParameter( "image-width", "350"); parameters.setParameter( "image-height", "400"); StringBuffer content = new StringBuffer(); ArrayList messages = new ArrayList(); //Se llama al archivo de consulta, se debe de observar la ruta de los archivos; tambien se define el tipo de imagen, CHART. ChartHelper.doChart( "samples", "dashboard_cip/Log", "year_log.widget.xml", parameters, content, userSession, messages, null ); barra = content.toString();//se coloca el dibujo en la variable barra
En el archivo se encuentran algunos elementos importantes de la barra que se graficara: El titulo de la grafica (posicion y tamao) El color del fondo de la grafica La orientacion de la grafica (vertical o horizontal) Y lo mas imporantes, la direccion del archivo que contiene la consulta SQL a la base de datos.
<data> <data-solution>samples</data-solution> <data-path>dashboard_cip/Log</data-path> <data-action>year_logs_data.xaction</data-action> <data-output>rule-result</data-output> <data-name>NOMBRE</data-name> <data-value>HORAS</data-value> <data-orientation>rows</data-orientation> </data>
En la ruta sealada de color azul se encuentra el archivo year_logs_data.xaction que contiene la consulta SQL que sera mostrada por la grafica. El archivo year_logs_data.xaction tiene la siguiente estructura: - Documentacion sobre el archivo: Solo algunos aspectos descriptivos que involucran el resultado de la grafica. - Inputs: Parametros que pueden ser pasados para la consulta sql En este ejemplo no se pasa ningun parametro y quedaria de la siguiente manera:
<inputs/>
www.omar.codigo03.com
Ahora se hara otro ejemplo con un pie como grafica, la secuencia es la misma y las etiquetas cumplen las mismas funciones que para las barras. .
parameters = new SimpleParameterProvider(); parameters.setParameter( "AREA", area );// aade valores de variables parameters.setParameter( "MES", nombre ); parameters.setParameter( "drill-url", "Log?area="+area+"&nombre="+nombre+"&user={USER}");//convierte en URL porciones de la imagen parameters.setParameter( "outer-params", "AREA");//se envia AREA Y MES para la consulta sql parameters.setParameter( "outer-params", "MES"); parameters.setParameter( "inner-param", "USER"); parameters.setParameter( "image-width", "850"); parameters.setParameter( "image-height", "600"); content = new StringBuffer(); messages = new ArrayList(); //se define la ruta y el tipo de imagen, PIE. ChartHelper.doPieChart( "samples", "dashboard_cip/Log", "mes_log.widget.xml", parameters, content, userSession, messages, null ); pie1 = content.toString();
Aqu se recogen los valores que luego seran incluidos en la accion que se realizara con la base de datos.
www.omar.codigo03.com
<actions> <action-definition> <component-name>SQLLookupRule</component-name> <action-type>Query For Headcount Data</action-type> <action-inputs>// se recogen los dos valores AREA Y MES <AREA type="string"/> <MES type="string"/> </action-inputs> <action-outputs> <query-result type="result-set" mapping="rule-result"/> </action-outputs> <component-definition> <!-- Define the datasource for the query --> <jndi>second</jndi> //SE DECLARA LA CONSULTA SQL <query><![CDATA[SELECT user, count( user ) *2 /60 AS Horas FROM HPC_LOG, meses WHERE id_hpc = {PREPARE:AREA} AND MONTH( dia_cap ) = id_meses AND nombre LIKE '{PREPARE:MES}' GROUP BY user ]]></query> </component-definition> </action-definition> </actions>
www.omar.codigo03.com