<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-24766510</id><updated>2012-02-16T03:20:51.107-08:00</updated><category term='Windows XP'/><category term='Libros'/><category term='Linux - Ubuntu'/><category term='Programacion'/><category term='Reportes - OpenSource'/><category term='Correos'/><category term='Genexus'/><category term='MediaWiki'/><category term='Centos - Mysql'/><category term='BPM'/><category term='Windows'/><category term='Modelo-CIM'/><category term='Gestion Proyectos'/><category term='SOA'/><category term='EIS'/><category term='Google'/><category term='WEB'/><category term='Educacion'/><category term='ITIL'/><category term='Tomcat'/><category term='as400'/><category term='Centos - Comandos'/><category term='Graficos'/><category term='Java y AS400'/><category term='BI'/><category term='Jboss'/><category term='Validar Cedula'/><category term='Moodle'/><category term='Seguridades'/><category term='Virtualizacion'/><category term='DRUPAL'/><category term='Pentaho'/><category term='Linux - Centos'/><title type='text'>.</title><subtitle type='html'>Demetrio - GX</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default?start-index=101&amp;max-results=100'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>335</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24766510.post-7052881478331473952</id><published>2012-01-30T21:18:00.000-08:00</published><updated>2012-01-30T21:19:03.932-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Problemas al Instalar SQL2008 Express - PerfMonCounterNotCorruptedCheck</title><content type='html'>Tomado de:&amp;nbsp;&lt;a href="http://forum.parallels.com/showthread.php?t=96463"&gt;Original&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Encontré&amp;nbsp;esta&amp;nbsp;solución, no importa FUNCIONA PARA X86 - 32BITS para W7.&lt;br /&gt;&lt;br /&gt;Descomprimir el SQL2008EXPR32_x86_ESN.exe&lt;br /&gt;&lt;br /&gt;Luego se ubica en la carpeta donde esta los archivos&amp;nbsp;descomprimidos:&lt;br /&gt;&lt;br /&gt;ejecuta lo siguiente setup.exe /ACTION=install /SKIPRULES=PerfMonCounterNotCorruptedCheck&lt;br /&gt;&lt;br /&gt;Listo se&amp;nbsp;despliega&amp;nbsp;el instalador.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-7052881478331473952?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/7052881478331473952/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=7052881478331473952' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/7052881478331473952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/7052881478331473952'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2012/01/problemas-al-instala-sql2008-express.html' title='Problemas al Instalar SQL2008 Express - PerfMonCounterNotCorruptedCheck'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-2402842031891718248</id><published>2012-01-22T04:41:00.000-08:00</published><updated>2012-01-22T04:41:25.378-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Educacion'/><title type='text'>5 formas gratis en línea para mejorar tus habilidades de Tipeo</title><content type='html'>&lt;h2&gt;Tomado de:&lt;a href="http://blog.jmacoe.com/aplicaciones/aplicaciones-web/formas-gratis-mejorar-habilidades-tipeo-online/?utm_source=feedburner&amp;amp;utm_medium=email&amp;amp;utm_campaign=Feed%3A+ElRinconDeJmacoe+%28El+rinc%C3%B3n+de+JMACOE%29"&gt; 5 formas gratis en línea para mejorar tus habilidades de Tipeo&lt;/a&gt;&lt;/h2&gt;&lt;div class="info"&gt;   &lt;span class="date"&gt;Sábado, 21 de enero de 2012&lt;/span&gt;&amp;nbsp;&lt;span class="addcomment"&gt;&lt;/span&gt;&lt;span class="comments"&gt;&lt;a href="http://blog.jmacoe.com/aplicaciones/aplicaciones-web/formas-gratis-mejorar-habilidades-tipeo-online/?utm_source=feedburner&amp;amp;utm_medium=email&amp;amp;utm_campaign=Feed%3A+ElRinconDeJmacoe+%28El+rinc%C3%B3n+de+JMACOE%29#comments"&gt;&lt;/a&gt;&lt;/span&gt;        &lt;/div&gt;&lt;img alt="" class="alignright size-full wp-image-1768" height="229" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/typewriter-image.jpg" title="maquina de escribir" width="240" /&gt;Si no&amp;nbsp;prestaste&amp;nbsp;atención en tu clase de&amp;nbsp;mecanografía&amp;nbsp;de la secundaria, es posible que te lamentes ahora.&amp;nbsp;Al pasar vacilantemente sobre las teclas solo dos dedos y meter distancia se vuelve una pérdida de tiempo – por no hablar de que no se ve muy profesional.&amp;nbsp;Pero no se preocupe, como cualquier otra habilidad, se puede mejorar.&lt;br /&gt;Piense en el tiempo que podrías ahorrar si aumentas la velocidad, incluso de unas pocas palabras por minuto.&amp;nbsp;Para ayudarte, hemos seleccionado algunos servicios gratuitos que pueden mejorar tu técnica, precisión y velocidad.&lt;br /&gt;&lt;span id="more-1760"&gt;&lt;/span&gt;&lt;br /&gt;Así que, ¿por qué no marcar algunos de los sitios mencionados a continuación, y la próxima vez que tengas unos minutos de sobra, en lugar de ver novelas en&amp;nbsp;&lt;a href="http://www.youtube.com/" target="_blank"&gt;YouTube&lt;/a&gt;, invierte algo de tiempo en la mejora de tu productividad.&lt;br /&gt;&lt;h3&gt;1.&amp;nbsp;&lt;a href="http://www.typingtest.com/" target="_blank"&gt;Prueba de Tipeo de TypingMaster&lt;/a&gt;&lt;/h3&gt;&lt;img alt="" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/101210_0624_5formaslibr4.jpg" /&gt;&lt;br /&gt;Para empezar, es necesario evaluar tus habilidades de Tipeo actual con el fin de supervisar tu mejora y ver cuánto estás mejorando con el tiempo.&amp;nbsp;La mejor manera de hacerlo es con una prueba rápida de Tipeo.&lt;br /&gt;Hay muchos sitios que ofrecen gratuitamente las pruebas de Tipeo, pero me gusta la versión de TypingMaster por sus opciones acerca de los resultados en la duración de la prueba y la elección del tema a tipear, también por que puedes compartir los resultados publicandolos en &lt;a href="http://www.facebook.com/" target="_blank"&gt;Facebook&lt;/a&gt; y&amp;nbsp;&lt;a href="http://www.twitter.com/" target="_blank"&gt;Twitter&lt;/a&gt;.&lt;br /&gt;&lt;img alt="" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/101210_0624_5formaslibr7.jpg" /&gt;&lt;br /&gt;&lt;h3&gt;2.&amp;nbsp;&lt;a href="http://www.typingweb.com/tutor/" target="_blank"&gt;Tutoriales Gratis de TypingWeb&lt;/a&gt;&lt;/h3&gt;&lt;img alt="" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/101210_0624_5formaslibr10.jpg" /&gt;&lt;br /&gt;Después de determinar qué tan hábil eres, es hora de comenzar a mejorar y corregir todos los malos hábitos del teclado que has estado usando.&amp;nbsp;De acuerdo a la sabiduría aceptada de mecanografía, en el tipo de toque lo más eficientemente posible, las manos se deben colocar sobre el teclado de una manera particular.&lt;br /&gt;TypingWeb.com ofrece algunos tutoriales integrales gratuitos para conseguir la colocación correcta de la mano, incluso en el nivel principiante.&amp;nbsp;Para empezar, aprenderás la mano que debes utilizar y cuándo. Proceda con los tutoriales más avanzados y sesiones de  práctica que utilizan una combinación de letras, números y símbolos con los cuales sus dedos volaran correctamente por el teclado.&lt;br /&gt;&lt;img alt="" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/101210_0624_5formaslibr11.jpg" /&gt;&lt;br /&gt;TypingWeb también ofrece una forma elegante para empezar el día – sus &lt;strong&gt;“Ejercicos de noticias matutinos”&lt;/strong&gt; (News Headline Exercises) deberás tipear las principales historias de Google News, Fox Sports o ABC, por lo que es una forma ideal para ponerse al día con los titulares y mejorar tus habilidades de tipeo al mismo tiempo.&lt;br /&gt;Si desea realizar un seguimiento de tu progreso, simplemente toma ventaja de la inscripción gratuita del sitio para que se pueda guardar el trabajo realizado.&lt;br /&gt;&lt;h3&gt;3.&amp;nbsp;&lt;a class="broken_link" href="http://www.sense-lang.org/typing/games/BalloonG.php?key=EN&amp;amp;letter=0" target="_blank"&gt;Juego de Globos Sense-Lang&lt;/a&gt;&lt;/h3&gt;&lt;img alt="" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/101210_0624_5formaslibr14.jpg" /&gt;&lt;br /&gt;Una vez que sepas donde debes poner los dedos, el siguiente paso es saber dónde están las teclas.&amp;nbsp;De esta manera, puedes escribir sin quitar la vista de la pantalla y puedes encontrar un mayor impulso en la velocidad.&lt;br /&gt;Una forma divertida de hacerlo es con el juego en línea de sentido-Lang.&amp;nbsp;Las letras caen por la pantalla con los globos que hay que explotar al usar la tecla correcta.&amp;nbsp;Es muy sencillo, adictivo y una manera segura de llegar a saber dónde está la letra “K”, sin mirar a escondidas.&lt;br /&gt;&lt;h3&gt;4.&amp;nbsp;&lt;a href="http://www.rapidtyping.com/online-typing-games/typedown.html" target="_blank"&gt;Zona de tipeo rápido TypeDown&lt;/a&gt;&lt;/h3&gt;&lt;img alt="" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/101210_0624_5formaslibr17.jpg" /&gt;&lt;br /&gt;Una vez que tienes las manos en posición hacia abajo y te sientes cómodo conociendo la ubicación de cada tecla, el siguiente paso es mejorar la velocidad.&lt;br /&gt;La práctica, como con cualquier cosa, es la clave para tipear a la velocidad del rayo.&amp;nbsp;Y a veces un juego puede ofrecer más emoción e incentivo de las tareas de tipear día a día.&lt;br /&gt;TypeDown es un juego carrera muy minimalista contra el tiempo que te llevará a escribir una gran selección de palabras al azar tan rápido como sea posible para poner fin a la pila desde la parte inferior hacia la parte superior de la pantalla.&lt;br /&gt;Con algunos efectos de juego retro, añade un toque agradable de urgencia para conseguir agitar realmente los dedos.&lt;br /&gt;&lt;h3&gt;5.&amp;nbsp;&lt;a href="http://www.typeonline.co.uk/number_pad_lesson1.html" target="_blank"&gt;teclado numérico del Gran Maestro TypeOnline&lt;/a&gt;&lt;/h3&gt;&lt;img alt="" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/101210_0624_5formaslibr20.jpg" /&gt;&lt;br /&gt;No nos estamos olvidando de la parte numérica de las cosas y tener un servicio en mente hecho especialmente para cualquiera que quiera mejorar en el teclado numérico.&lt;br /&gt;Además del asesoramiento general sobre la técnica para tipear en teclado numérico de tu teclado, TypeOnline ofrece ocho lecciones en línea para ayudarle a mejorar tus habilidades y velocidad en el lado derecho.&lt;br /&gt;&lt;h3&gt;BONUS:&amp;nbsp;&lt;a href="http://play.typeracer.com/" target="_blank"&gt;¡Jugar TypeRacer!&lt;/a&gt;&lt;/h3&gt;&lt;img alt="" src="http://blog.jmacoe.com/wp-content/uploads/2010/10/101210_0624_5formaslibr23.jpg" /&gt;&lt;br /&gt;Una vez que sientes que has perfeccionado algunas habilidades de tipeo seriamente, aquí esta un juego web divertido basado en el tipeo en donde se puede jugar con tipeadores de todo el mundo, o desafiar a tus amigos a un tipo de cierre.&lt;br /&gt;TypeRacer es un simple juego en línea de partidas al azar con otro jugador.&amp;nbsp;También te proporcionará una URL única que puedes compartir con tus amigos, familia o compañeros de trabajo para competir tipo carrera – es lo que llamamos buena y sana diversión!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-2402842031891718248?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/2402842031891718248/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=2402842031891718248' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/2402842031891718248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/2402842031891718248'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2012/01/5-formas-gratis-en-linea-para-mejorar.html' title='5 formas gratis en línea para mejorar tus habilidades de Tipeo'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-6809216525630281630</id><published>2012-01-22T04:38:00.000-08:00</published><updated>2012-01-22T04:38:37.750-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux - Ubuntu'/><title type='text'>Cinco consejos para potenciar Ubuntu</title><content type='html'>&lt;h2&gt;Tomado de: &lt;a href="http://blog.jmacoe.com/gestion_ti/sistema-operativo/cinco-consejos-para-potenciar-ubuntu/?utm_source=feedburner&amp;amp;utm_medium=email&amp;amp;utm_campaign=Feed%3A+ElRinconDeJmacoe+%28El+rinc%C3%B3n+de+JMACOE%29"&gt;Cinco consejos para potenciar Ubuntu&lt;/a&gt;&lt;/h2&gt;&lt;div class="info"&gt;   &lt;span class="date"&gt;Domingo, 22 de enero de 2012&lt;/span&gt;&amp;nbsp;&lt;span class="addcomment"&gt;&lt;/span&gt;&lt;span class="comments"&gt;&lt;a href="http://blog.jmacoe.com/gestion_ti/sistema-operativo/cinco-consejos-para-potenciar-ubuntu/?utm_source=feedburner&amp;amp;utm_medium=email&amp;amp;utm_campaign=Feed%3A+ElRinconDeJmacoe+%28El+rinc%C3%B3n+de+JMACOE%29#comments"&gt;&lt;/a&gt;&lt;/span&gt;        &lt;/div&gt;Ubuntu es ampliamente considerada como una distribución que está orientado a principiantes en Linux, por lo que la mayoría de los consejos de Ubuntu se dirigen a la multitud novata. Jack Wallen introduce un poco más de trucos sofisticados para mejorar su experiencia de Ubuntu.&lt;br /&gt;La gente parece pensar que Ubuntu está reservado para los usuarios nuevos. Si bien es cierto que esta distribución Linux es ideal para usuarios nuevos, eso no quiere decir que es el único mercado para Ubuntu. De hecho, Ubuntu es perfecto para todo tipo de usuarios.&lt;br /&gt;Como la mayoría de consejos que ves para Ubuntu están dirigidas a nuevos usuarios, vamos a llevarlo a otro nivel y ofrecer algunos consejos para los usuarios avanzados de Ubuntu. Estos consejos pueden variar en su alcance y nivel de experiencia, pero todos mejorará su experiencia en Linux Ubuntu.&lt;br /&gt;&lt;span id="more-370"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h3&gt;1. Disminuya el tiempo de arranque&lt;/h3&gt;¿Sabías podías perfilar el proceso de arranque de Ubuntu para hacerlo más eficiente? Esta herramienta está disponible desde Ubuntu 6.04, y con un incremento de velocidad de 10.04, ahora puedes llevar a un tiempo increíblemente bajo, el proceso de arranque. Para eso todo lo que necesitas hacer es editar el archivo /etc/default/grub y cambiar la línea:&lt;br /&gt;&lt;div&gt;&lt;div class="syntaxhighlighter  bash" id="highlighter_777615"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;div class="line number1 index0 alt2"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="bash plain"&gt;GRUB_CMDLINE_LINUX_DEFAULT=&lt;/code&gt;&lt;code class="bash string"&gt;"quiet splash"&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;to:&lt;br /&gt;&lt;div&gt;&lt;div class="syntaxhighlighter  bash" id="highlighter_502336"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;div class="line number1 index0 alt2"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="bash plain"&gt;GRUB_CMDLINE_LINUX_DEFAULT=&lt;/code&gt;&lt;code class="bash string"&gt;"quiet splash profile"&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;ahora probemos el comando:&lt;br /&gt;&lt;div&gt;&lt;div class="syntaxhighlighter  bash" id="highlighter_286698"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;div class="line number1 index0 alt2"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="bash functions"&gt;sudo&lt;/code&gt; &lt;code class="bash plain"&gt;update-grub2&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;y reiniciar la máquina. Este próximo arranque necesitará un poco más de tiempo que el período normal debido a que el perfil está ocurriendo. Después de este inicio, retira el “perfil” del archivo grub (que acabas de agregar más arriba), ejecute el comando update-grub2 de nuevo, y te darás cuenta del tiempo de arranque mucho más rápido.&lt;br /&gt;&lt;h3&gt;2. Inicia aplicaciones con el teclado&lt;/h3&gt;Retirar los dedos del teclado es la ineficiencia en computación. Cualquier buen programador te lo dirá. Pero para hacer esto lo más eficiente posible, es necesario crear atajos de teclado. Para hacer esto en el escritorio GNOME, tienes que visitar a tu viejo amigo gconf-editor. Cuando lo tengas abierto, vas a apps &amp;gt; metacity &amp;gt; global_keybindings, donde puedes modificar cualquiera de los 12 run_command_X (donde X es un número entre 1 y 12) que se utilizará para iniciar tu aplicación favorita o comando.&lt;br /&gt;&lt;h3&gt;3. Actualiza sin conexión a Internet&lt;/h3&gt;Con la ayuda de una conexión a Internet en una sola vez, puede crear un CD que le ayudará a actualizar todos los otros equipos con Ubuntu. La herramienta que necesitas se llama APTonCD. Esta herramienta crea un CD/DVD de todas las actualizaciones necesarias para su máquina con Ubuntu. A continuación, puedes tomar ese disco para cada una de tus máquinas, insertarlo y actualizar con la ayuda de dpkg. El APTonCD tiene una excelente interfaz gráfica de usuario que le guiará a través del proceso de creación de un CD/DVD utilizable.&lt;br /&gt;&lt;h3&gt;4. Acelera los menús del popup&lt;/h3&gt;Si eres como yo, el retraso entre hacer clic en un menú y la aparición del menú puede ser molesto – a pesar que estamos hablando de milisegundos. Yo prefiero quitar esa demora, de modo que tan pronto como haga clic, aparezca el menú. Se trata de un simple truco para el escritorio GNOME. Abre el archivo ~/.gtkrc-2.0 y agrega esta line&lt;br /&gt;&lt;div&gt;&lt;div class="syntaxhighlighter  bash" id="highlighter_844942"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;div class="line number1 index0 alt2"&gt;1&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="bash plain"&gt;gtk-menu-popup-delay = 0&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;En la parte inferior de este archivo. Guardas el archivo, sales y entras de nuevo. Tus menñus deberán aparecer tan pronto como el pensamiento cruza por tu mente.&lt;br /&gt;&lt;h3&gt;5. Crear acciones de Nautilus&lt;/h3&gt;La capacitada para hacer anticlic sobre un archivo y ejecutar una acción hace que la vida en el escritorio sea mucho más fácil. El escritorio GNOME, junto con el gestor de archivos Nautilus, ofrece una gran característica que muchos ni siquiera sabe que existe: La herramienta de configuracion de acciones Nautilus. Encontraras esta herramienta en System &amp;gt; Preferences &amp;gt; Nautilus Actions Configuration. Desde dentro de esta ventana, puedes rodar tus propias acciones, las cuales pueden agregarse a un menu contextual del anticlic dentro de Nautilus. Tendrás que configurar 5 pestñas de información: Acción, Comandos, Folders, Condiciones, y Condiciones avanzadas. Esta herramienta también permite importar acciones que otros han creado. Supongamos que deseas crear la accion mailto usando Thunderbird. Esto es simple. Solo modificas la sección comando. Para la seccion comando (en la ficha de comandos) escribe:&lt;br /&gt;&lt;div&gt;&lt;div class="syntaxhighlighter  bash" id="highlighter_119432"&gt;&lt;table border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="gutter"&gt;&lt;div class="line number1 index0 alt2"&gt;1&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;2&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="container"&gt;&lt;div class="line number1 index0 alt2"&gt;&lt;code class="bash plain"&gt;Path: &lt;/code&gt;&lt;code class="bash plain"&gt;/usr/bin/thunderbird&lt;/code&gt;&lt;/div&gt;&lt;div class="line number2 index1 alt1"&gt;&lt;code class="bash plain"&gt;Parameters: -compose &lt;/code&gt;&lt;code class="bash string"&gt;'attachment=&lt;a href=""&gt;file://%f&lt;/a&gt;'&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;El resto de opciones son bastante obvias de completar. Pruebas el comando killall nautilus. Después reinicias Nautilus, y obtendrás una nueva entrada para enviar por email (emailto) dentro del menu contextual cuando hagas anticlick.&lt;br /&gt;Estas son sólo algunas muestras de lo que puedes hacer con un escritorio Ubuntu (y/o servidor, en algunos casos). Ubuntu es un sistema operativo fácil de usar y potente. Voy a compartir más de estos consejos en el futuro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-6809216525630281630?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/6809216525630281630/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=6809216525630281630' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/6809216525630281630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/6809216525630281630'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2012/01/cinco-consejos-para-potenciar-ubuntu.html' title='Cinco consejos para potenciar Ubuntu'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-179698873930198984</id><published>2012-01-18T17:04:00.000-08:00</published><updated>2012-01-18T17:04:15.877-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Genexus'/><title type='text'>Restaurar BD mdf dañado</title><content type='html'>Tomado de: &lt;a href="http://www.lawebdelprogramador.com/foros/Microsoft_SQL_Server/978236-Urgente_Restaurar_BD_mdf_danado.html"&gt;BD mdf dañado &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pues esta dificil tu situacion, has esto, primero asegurate de detener todos los servicios de sql, para que te copies el mdf y el log por aparte por cualquier cosa.&lt;br /&gt;Sacate un backup del log de tu base de datos para que recuperes la transaccionalidad.&lt;br /&gt;Una vez hecho esto lanzate un restore de tu backup de tu BD de hace 3 meses y el log que respaldaste, asi recuperas la base de datos buena y las transacciones.&lt;br /&gt;&lt;br /&gt;Si no funciona por corrupcion en la BD o algo asi, entonces detente el Agente de sql para que puedas renombrar el MDF, luego la hechas a andar para que te detecte un fallo en la BD, como no encuentra el MDF pero si el log te deberia permitir la restauracion; y asi lanzes de esta forma el restore de la base completa&lt;br /&gt;&lt;br /&gt;PD: debes de tener un plan de recuperacion apropiado, por ejemplo si es muy transaccional tu BD o muy recurrente el acceso te recomiendo que por ejemplo programes backups completos 1 vez por semana en fin de semana y diferenciales a mediados de semana y respaldos del log por decir cada 5 horas, asi no te pasa esto de perder 3 meses de informacion&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-179698873930198984?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/179698873930198984/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=179698873930198984' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/179698873930198984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/179698873930198984'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2012/01/restaurar-bd-mdf-danado.html' title='Restaurar BD mdf dañado'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-4562520757768661973</id><published>2011-12-17T09:33:00.000-08:00</published><updated>2011-12-17T09:33:14.661-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>4 argumentos para altos ejecutivos en busca de su apoyo a BPM</title><content type='html'>Tomado de:&lt;a href="http://www.estebanf.com/bpm/2010-11-07/4-argumentos-para-altos-ejecutivos-en-busca-de-su-apoyo-a-bpm/"&gt;&lt;span style="font-size: small;"&gt;4 argumentos para altos ejecutivos en busca de su apoyo a BPM&amp;nbsp;&amp;nbsp; .&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;“&lt;em&gt;Top executives&lt;/em&gt;” se les llama en ingles. Los latinos acostumbramos llamarlos “&lt;em&gt;La alta gerencia&lt;/em&gt;”. Ustedes saben a quienes me refiero: Ese grupo de personas que llevan a cuesta la responsabilidad de que el barco que lideran no haga aguas, mientras deben asegurarse de que están avanzando en la dirección correcta. Son aquellos en los que confiamos que consideren costos, retorno, impacto, riesgo, relaciones, política, RRHH y estrategia en cada una de las decisiones que toman cada día. Y de ellos &amp;nbsp;necesitamos el apoyo y entusiasmo si queremos que nuestra iniciativa BPM tenga alguna oportunidad de entregar resultados positivos.&lt;br /&gt;&lt;span id="more-352"&gt;&lt;/span&gt;¿Por qué?; ya hemos conversado como BPM no tiene nada que ver con la tecnología que lo apoye (ver “&lt;a href="http://www.estebanf.com/bpm/2009-09-27/introducion-a-la-gestion-de-procesos/"&gt;Introduccion a la gestion de procesos&lt;/a&gt;” y “&lt;a href="http://www.estebanf.com/bpm/2009-08-26/intaliobpm-mas-alla-de-soa/"&gt;Mas alla de SOA&lt;/a&gt;“). &lt;strong&gt;BPM es sobre las personas, sus responsabilidades y la coordinación de sus tareas&lt;/strong&gt;, por lo que necesitamos la colaboración de esos actores para lograr tener una implementación exitosa en una automatización de procesos. Y en el mundo real se necesita del respaldo de figuras de poder si queremos que la gerencia media y operativa nos otorguen tiempo y atención en su ya bastante complicadas agendas.&lt;br /&gt;Si eres de esos visionarios que ha entendido que la implementación de las practicas de gerencia de procesos, apoyada con &lt;a href="http://www.intalio.com/bpms" target="_blank"&gt;una herramienta efectiva de BPMS&lt;/a&gt;, son necesarias para tu organización entonces lo mas probable es que tendrás que lograr “emocionar” y traer a bordo a algunos de esos ejecutivos. Probablemente fracases estrepitosamente si intentas utilizar argumentos como “&lt;em&gt;Mira que tan bueno y bonito es el producto X&lt;/em&gt;” o “&lt;em&gt;Gartner dice que es el futuro&lt;/em&gt;”. Todos esos ejecutivos han visto miles de herramientas hermosas y leído cientos de análisis de “expertos” y saben que eso poco tiene que ver con lo efectivo o malo que sea una solución. A esta audiencia necesitamos hablarle en los términos que a ellos les hace sentido. He aquí 4 argumentos muy validos para presentar:&lt;br /&gt;&lt;h2&gt;1) Convierte a los responsables en protagonistas&lt;/h2&gt;Así es como funciona en la mayorías de las organizaciones: Las áreas de negocio tienen los problemas, estas van y le piden solución a IT, los tecnólogos apuntan a resolver los problemas con tecnología, IT entrega a las áreas de negocio un “sistema”, pronto el sistema se vuelve en parte del problema de las áreas de negocio y se repite el circulo vicioso.&lt;br /&gt;¿Son las personas de IT seres malvados que solo existen para sabotear a las áreas de negocio?. No, para nada. Todo el problema radica en dos conceptos muy simples: Velocidad y comunicación. Por la complejidad que significa hacer tecnología, esto es mucho mas lento que la velocidad con la que nuevas necesidades se generan. Es simplemente imposible que el desarrollo de software sea lo suficientemente rápido como para llevarle el ritmo a los requerimientos del negocio. Además la mayoría de las personas realmente no tienen la habilidad de poder expresarle a un tecnólogo como es que debe ser un sistema para que le resuelva sus problemas. ¿Cuántas veces no han escuchado a un usuario decirle a un técnico “&lt;em&gt;eso no fue lo que yo pedí&lt;/em&gt;”?, ¿Cuántas veces no han escuchado a un programador decir “&lt;em&gt;es que el usuario no sabe lo que quiere&lt;/em&gt;”?&lt;br /&gt;Adoptando BPM de la forma correcta, esas áreas de negocio dejan de estar a merced de TI simplemente porque en vez de “pedir soluciones” pasan a definir como es que el trabajo debe ser realizado. Su posición cambia de ser quienes explican “como el sistema debe ser” a ser quienes especifican como es que el comportamiento del flujo de trabajo se realizara. Al llegar a este punto en la mayoría de los casos casi cualquier BPMS es capaz de que con muy poco esfuerzo adicional se pueda contar por lo menos con una solución que ayude al control de las tareas y manejo de la información.&lt;br /&gt;Esta nueva dinámica es buena para todas las partes ya que los usuarios de negocio ahora poseen inherencia directa en la implementación y las personas técnicas reducen la posibilidad de invertir esfuerzos (y dinero) en definiciones que hayan podido ser mal interpretadas o mal comunicadas. Adicionalmente ambas partes pasan a compartir en proporciones iguales responsabilidad en la calidad de la solución final.&lt;br /&gt;&lt;h2&gt;2) Da visibilidad sobre los motivos de cada tarea&lt;/h2&gt;Los procesos son por definición complejos. Por lo general comprende actividades que son realizadas por distintos grupos, e incluso organizaciones, cada uno de ellos con sus propios objetivos, políticas, reglas y cultura. Además la forma en la que deben quedar definidos también esta influenciada por factores externos, distintos al espíritu inicial del proceso, como leyes, políticas corporativas, marcos regulatorios, mejores practicas, cultura organizacional, etc.&lt;br /&gt;Todo proceso de negocio tiene muy claramente definido que es lo que debe iniciarlo, ese evento ante el cual reaccionamos con las actividades que definiremos. Además el objetivo que se persigue es generalmente bien conocido. El trabajo de definir un proceso de negocio es realmente enfocarnos en el “&lt;strong&gt;&lt;em&gt;que&lt;/em&gt;&lt;/strong&gt;” es necesario hacer, obviamente derivando en aclarar “&lt;strong&gt;&lt;em&gt;quien&lt;/em&gt;&lt;/strong&gt; “ debe realizar cada actividad.&lt;br /&gt;Para determinar las respuestas a esas interrogantes, se hace necesario realizar sesiones de trabajos colaborativas en las cuales los distintos participantes unen esfuerzos en establecer como es que deben coordinar sus tareas. En esas sesiones se hace simple que se pueda compartir el “&lt;strong&gt;&lt;em&gt;por que&lt;/em&gt;&lt;/strong&gt;” cada tarea debe ser realizada de una forma especifica. &lt;strong&gt;Esa es información sumamente valiosa, generalmente dispersa y poco documentada&lt;/strong&gt;.&lt;br /&gt;Lo que se esta generado es la oportunidad de recaudar esa información para aumentar el conocimiento de la organización sobre cual es la razón por ella se comporta como lo hace. En ese tipo de información generalmente radican oportunidades de mejorar la eficiencia, identificar costos y riesgos ocultos además de conocer cuales son los retos específicos que afronta una área que además tiene impacto en otras.&lt;br /&gt;&lt;h2&gt;3) Menor dependencia de tecnología&lt;/h2&gt;&lt;strong&gt; &lt;/strong&gt;&lt;br /&gt;A diferencia de cuando buscamos solucionar problemas con tecnología, donde generalmente la solución comienza en una base de datos, cuando utilizamos BPM las solución comienza cuando las áreas responsables del negocio determinan cual es el comportamiento correcto a seguir para enfrentar los retos. Ya en este blog hemos hablado sobre &lt;a href="http://www.estebanf.com/bpm/2009-09-07/el-arte-del-modelado-de-procesos-de-negocio-ejecutables/"&gt;el arte de modelar procesos de negocios ejecutables&lt;/a&gt;, pero resumiendo lo que ocurre es que partimos de una definición de alto nivel, de amplio alcance y poco detalle para luego ir avanzando en detallar como el comportamiento definido se materializa en los niveles inferiores de la jerarquía organizacional. Y este avance en los detalles lo hacemos hasta el momento justo previo donde necesitamos soporte tecnológico para nuestras actividades.&lt;br /&gt;Aquí se presentan 2 escenarios positivos. Primero, las áreas de negocio se pueden acercar a tecnología con requerimientos específicos de que tipo y forma de soporte requieren sus actividades. Hay una diferencia abismal en el alcance y riesgo de decirle a tecnología “&lt;em&gt;Necesitamos un sistema que maneje la facturación&lt;/em&gt;” versus abordarlos con varias necesidades como&amp;nbsp; “&lt;em&gt;Requerimos de una funcionalidad que nos permita recuperar los contratos de los clientes según su identificador fiscal&lt;/em&gt;”. Una requerimiento mas especifico le permite a tecnología utilizar sus recursos de manera mas eficiente mientras estima su esfuerzo con menos incertidumbre.&lt;br /&gt;Un segundo escenario es cuando el soporte tecnológico por algún motivo no esta disponible. Es posible tome tiempo de desarrollar o sea necesario hacer un proceso de procura. Lo importante acá es que como hemos separado el comportamiento requerido del soporte que necesitamos se pueden definir mecanismos paliativos y poner en marcha nuestro proceso automatizado antes de que dispongamos del apoyo de TI. Quizás nuestro proceso necesita de una integración con el ERP, pero mientras eso no esta disponible es posible ponerlo en marcha hoy dejándole a una persona la responsabilidad de transcribir información entre los sistemas. Aunque quizás esa no sea la solución perfecta para el desempeño del proceso, &lt;strong&gt;hay mucho mas que ganar con poder ejecutarlo hoy con paliativos que simplemente no hacer nada en espera del apoyo de tecnología&lt;/strong&gt;.&lt;br /&gt;En el segundo escenario incluso se hace posible medir el desempeño del proceso y contar con data objetiva que le permita a un ejecutivo ir a su junta de directores y decir “&lt;em&gt;El proceso X esta tomando 18% mas tiempo y costando 22% mas dinero por la falta la integración con ERP&lt;/em&gt;”. Un director sabe que con ese argumento tiene mucha mas posibilidad de impactar las prioridades de TI que diciendo “&lt;em&gt;Aun seguimos con problemas porque el sistema no esta listo&lt;/em&gt;”&lt;br /&gt;Estas opciones por ningún motivo son en decremento de TI. Lo que realmente ocurre es que se separa el progreso tecnológico del avance de las áreas de negocio. De esta forma los equipos de tecnologías tienen que dedicar menos tiempo y recursos en tratar de darles sistemas al negocio y se pueden enfocar en proveer un soporte efectivo a las operaciones a través de proveer escalabilidad, confiabilidad seguridad e independencia tecnológica.&lt;br /&gt;&lt;h2&gt;4) Mas recursos para dedicar a lo que hace la diferencia&lt;/h2&gt;Un proceso de negocio propenso a automatizarse es generalmente lo suficientemente importante como para requerir que tengamos la certeza de que sus actividades se hacen de forma controlada y lo bastante repetitivo como para que podamos definir las tareas a realizar cada vez que toque ejecutarlo. Es decir que los procesos de negocios que podemos automatizar son esas actividades monótonas que se realizan cotidianamente en las cuales se invierten muchos recursos para asegurar de que se comporten de la manera mas homogénea posible y que cada vez que fallan típicamente generan suficiente impacto para que se sientan tanto desde el punto de vista financiero así como en la calidad de la operación.&lt;br /&gt;Cuando incorporamos de forma correcta y eficiente las practicas y herramientas de BPM lo que realmente ocurre es que incorporamos técnicas de control que eviten que tengamos que seguir dedicando recursos humano valioso a que se asegure que las cosas están funcionado bien. Al permitir que BPM provea ese control esos recursos humanos pueden dividir su atención entre el manejo de los casos excepcionales y en pensar como es posible mejorar y hacer mas eficiente sus propios procesos. Con escenarios económicos cada vez mas competitivos, consumidores mas exigentes y entornos mas regulados esta claro que hay mucho dinero por ahorrar y calidad que proveer en mejorar la forma en nuestras organizaciones se comportan.&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-4562520757768661973?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/4562520757768661973/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=4562520757768661973' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/4562520757768661973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/4562520757768661973'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/12/4-argumentos-para-altos-ejecutivos-en.html' title='4 argumentos para altos ejecutivos en busca de su apoyo a BPM'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-101724673333819552</id><published>2011-12-17T09:28:00.000-08:00</published><updated>2011-12-17T09:29:35.960-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>5 señales de que tu proyecto BPM no saldrá bien</title><content type='html'>&lt;div class="post-headline"&gt;&lt;h1&gt;&lt;span style="font-size: small;"&gt;Tomado de: &lt;a href="http://www.estebanf.com/bpm/2010-11-08/5-senales-de-que-tu-proyecto-bpm-no-saldra-bien/"&gt;5 señales de que tu proyecto BPM no saldrá bien&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;/div&gt;&lt;div class="post-byline"&gt;&lt;span class="sociable"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;a class="highslide" href="http://www.estebanf.com/wp-content/uploads/2010/11/4179063482_e8184e27a1_m.jpg"&gt;&lt;img alt="" class="alignleft size-full wp-image-364" height="240" src="http://www.estebanf.com/wp-content/uploads/2010/11/4179063482_e8184e27a1_m.jpg" title="Elephant in the room" width="240" /&gt;&lt;/a&gt;Por fin haz obtenido &lt;a href="http://www.estebanf.com/bpm/2010-11-07/4-argumentos-para-altos-ejecutivos-en-busca-de-su-apoyo-a-bpm/"&gt;el apoyo necesario&lt;/a&gt; para iniciar tu proyecto de automatización de procesos. Se han leído &lt;a href="http://www.estebanf.com/tag/webinar/"&gt;decenas de recursos para entender mejor BPM&lt;/a&gt; y creen que &lt;a href="http://www.estebanf.com/bpm/2010-07-18/esta-usted-listo-para-bpm/"&gt;están listos para comenzar a trabajar&lt;/a&gt; . Y luego de un par de semanas sientes que las cosas no van como deberían. Quizás ves que tus diagramas no parecen expresar el proceso como deberían. O tal vez no sientes que todas &lt;a href="http://www.estebanf.com/opinion/2009-06-30/beneficios-de-bpm-en-numeros/"&gt;esas cosas positivas que haz escuchado de BPM&lt;/a&gt; se vayan a aplicar a tu proyecto.&lt;br /&gt;Este no es un escenario improbable. De hecho, es bastante común. ¿Por qué?. Generalmente una combinación de falsas expectativas con malas costumbres. Típicamente hay indicaciones claras de que no se va en el camino correcto. Aquí les presento 5 señales que deberían hacerte decir “Alto, es hora de corregir”: &lt;span id="more-358"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2&gt;Solo una persona es responsable de decidir como es el proceso&lt;/h2&gt;Sabes que todo empieza documentando y modelando el proceso. Pero resulta que solo aparece una persona con la intención de “&lt;i&gt;explicarnos&lt;/i&gt;” como funciona.&lt;br /&gt;Un proceso de negocio representa el acuerdo de distintas partes de cómo colaborar para alcanzar un objetivo especifico. Si solo tenemos un interlocutor lo mas probable es que esa persona defina acciones que no son realmente de su competencia. Mañana cuando nuestro proceso automatizado este listo hay un altísimo riesgo de que las otras áreas vengan y digan que de la forma que se definió ellos no pueden completar sus actividades&lt;br /&gt;&lt;h2&gt;Los “jefes” no están involucrados&lt;/h2&gt;El objetivo que persigue un proceso de negocio es seguramente responsabilidad de un director o de una línea de negocio. Pero allí estas tu junto a las personas encargadas de definir el proceso y resulta que ningún es realmente el responsable del resultado final. ¿Bajo que criterios se decidirá cuando haya conflictos en las opiniones de los participantes? ¿Cómo saber en esa audiencia que la forma en la que se esta diseñando el proceso cumple con las estrategias y políticas que se han definido en la organización? ¿Qué compromiso con el entregable final tiene la misma persona que es responsable del cumplimiento de las metas?&lt;br /&gt;&lt;h2&gt;Se pretende que el proceso en cualquier momento se regrese a cualquier tarea&lt;/h2&gt;El requerimiento es claro: Los usuarios decidiremos el flujo del proceso en cada ocurrencia del mismo, por lo que necesitamos poder ir a cualquier tarea en cualquier momento… ¡Alto!. Si esto ocurre lo que significa es que: 1) Tus usuarios no tienen realmente idea de cómo funciona el proceso y/o 2) Tus usuarios no confían en ti o en la tecnología para controlar su proceso.&lt;br /&gt;&lt;h2&gt;Las acividaes se expresan en términos de lo que saldrá en la pantalla&lt;/h2&gt;Cada vez que alguien tiene que describir la tarea que debe realizar lo hace explicando como es que debe ser “el sistema”. Lo que esta ocurriendo aquí es que están tratando de construir una aplicación y no han asimilado el concepto de que un proceso de negocio es realmente una definición de cómo debe ser el comportamiento de la organización y que la tecnología es solo una herramienta de soporte. De hecho, de cara al proceso de negocio, la tecnología disponible debe ser irrelevante en función de la posibilidad  de realizarlo correctamente&lt;br /&gt;&lt;h2&gt;Los responsables no pueden responder preguntas tipo “¿Qué pasa si …?”&lt;/h2&gt;Estas documentando el proceso y todos los participantes pueden describir con lujos de detalle los pasos que se deben seguir. Luego de modelar ese “camino color rosa” comienzas a preguntar “¿&lt;i&gt;Qué debemos hacer si no nos llega esta notificación en X tiempo?&lt;/i&gt;” “&lt;i&gt;¿Qué pasa si falla la integración con el sistema Y?&lt;/i&gt;” “&lt;i&gt;¿Qué debe hacer el proceso si la persona Z no esta disponible?&lt;/i&gt;” y toda tu audiencia se comienzan a mirar nerviosamente entre ellos. Lo que ha ocurrido aquí es que necesitas involucrar a personas que manejen mas el detalle operativo y tenga real experiencia de campo con el proceso. Mas veces de las que creemos, los niveles mas bajos operativos conocen que contingencias aplicar cuando ocurre algo no ideal; y estas definiciones son simplemente no son conocidas por los mas “jefes”.&lt;br /&gt;¿Qué hacer cuando aparecen estas señales?. En primera instancia, detenerse. Hace mas daño tratar de solucionarlas sobre la marcha que realmente hacer un corte y decir “Tenemos que hablar”. Cada situación es distinta, pero es probable que debas revisar el apoyo organizacional con el que cuentas, volver a definir la audiencia con la que vas a trabajar, &lt;a href="http://www.estebanf.com/entrenamientos-bpm/"&gt;educar a tus usuarios&lt;/a&gt; y aclarar que es lo que realmente se esta buscando lograr con este tipo de iniciativas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-101724673333819552?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/101724673333819552/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=101724673333819552' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/101724673333819552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/101724673333819552'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/12/5-senales-de-que-tu-proyecto-bpm-no.html' title='5 señales de que tu proyecto BPM no saldrá bien'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-8497963124880164512</id><published>2011-12-17T09:19:00.000-08:00</published><updated>2011-12-17T09:30:07.667-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>BPM vs Workflow: ¿Cuál es la diferencia?</title><content type='html'>&lt;h1&gt;&lt;span style="font-size: small;"&gt;Tomado de: &lt;a href="http://www.mibpm.com/"&gt;BPM vs Workflow: ¿Cuál es la diferencia?&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="50%"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;BPM&lt;/b&gt;: caracteriza a una serie de actividades independientes de aplicaciones específicas.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• BPM es un superconjunto de Workflows&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• Se distingue por su capacidad para coordinar las actividades y tareas entre los usuarios&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• BPM conecta distintos sistemas que permitan el intercambio de datos ininterrumpido y control universal desde una única interfaz&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• Los procesos de negocio, una vez definidos, se modelan, automatizan, gestionan y optimizan para ser eficaces, eficientes a nivel de costes y lograr altos resultados operativos.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• Se utiliza para capturar, evaluar y analizar información de fuentes externas de una manera eficiente y eficaz&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• Con la capacidad de distinguir entre las reglas de ejecución y el flujo actual del proceso, las reglas del BPM permiten gobernar sus procesos&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td width="50%"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Workflow&lt;/b&gt;: facilita un enrutamiento simple de las tareas o actividades de persona a persona.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• El Software Workflow Automatizado utiliza las secuencias de tareas específicas establecidas con reglas predefinidas, tanto si son actividades automáticas como actividades manuales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• La capacidad de integrar el flujo de trabajo entre los sistemas específicos y otros sistemas externos es a menudo limitado, sólo permite documentar y la recuperación de datos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• El  software Workflow es muy básico en su capacidad de analizar e informar sobre el análisis del contenido.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;• El flujo del proceso es fija, es decir, no pueden adaptarse o establecer múltiples caminos posibles para el mismo objetivo&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div align="justify"&gt;El Software &lt;b&gt;Workflow&lt;/b&gt; es una herramienta sencilla para dirigir la automatización de los documentos y tareas a los usuarios responsables en un proceso de negocio para las siguientes tareas a realizar. Ofrece información y apoyo para cada etapa del proceso y del ciclo de negocio. Materiales y documentos relacionados con el proceso pueden ser transferidos de un usuario a otro, o pueden ser mantenidos en una base de datos o un servidor con acceso solo para los usuarios apropiados en el momento oportuno. En este sistema se pueden activar alarmas para alertar a los ejecutivos y a los responsables del proceso cuando las tareas van con retraso. Este sistema automatizado de las operaciones garantiza que el trabajo se mueve a través del sistema de manera oportuna y es procesada correctamente por los usuarios apropiados. &lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_leduMBufN5c/S7HSvKBaOsI/AAAAAAAAAII/6J152-8MYjw/s1600/workflowvsbpm.jpg" title="BPM vs Workflow"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5454372331308333762" src="http://2.bp.blogspot.com/_leduMBufN5c/S7HSvKBaOsI/AAAAAAAAAII/6J152-8MYjw/s400/workflowvsbpm.jpg" style="cursor: hand; display: block; height: 163px; margin: 0px auto 10px; text-align: center; width: 400px;" title="BPM vs Workflow" /&gt;&lt;/a&gt;El Software &lt;b&gt;&lt;a href="http://www.mibpm.com/" title="BPM"&gt;BPM&lt;/a&gt;&lt;/b&gt; (Business Process Management) adopta un enfoque más estructurado en el que la automatización del flujo de trabajo es sólo una pieza del rompecabezas. El uso de un panel de interfaz de Software &lt;b&gt;&lt;a href="http://www.mibpm.com/" title="BPM"&gt;BPM&lt;/a&gt;&lt;/b&gt; ofrece mayor visibilidad y control a un nivel superior en el proceso, ya que integra el flujo de trabajo con diversas aplicaciones, tecnologías y tareas humanas. Con sus raíces en el software Workflow, integración de aplicaciones empresariales (&lt;a href="http://es.wikipedia.org/wiki/Enterprise_application_integration"&gt;EAI&lt;/a&gt;) y gestión de documentos, el Software &lt;b&gt;&lt;a href="http://www.mibpm.com/" title="BPM"&gt;BPM&lt;/a&gt;&lt;/b&gt; sirve como una solución que puede supervisar, evaluar y mantener las tareas y procesos en tiempo real. Las reglas de negocio dan al propietario del proceso la posibilidad de configurar diversos parámetros para la gestión de incidencias, según sea necesario, mientras que las alertas se pueden habilitar para notificar a los usuarios apropiados cuando las tareas se están acercando o atrasando. Además, un software &lt;b&gt;&lt;a href="http://www.mibpm.com/" title="BPM"&gt;BPM&lt;/a&gt;&lt;/b&gt; Suite es una suite completa que le permite tomar sus flujos de trabajo automatizados para el siguiente nivel y optimizarlos continuamente para hacerlos más robustos y más eficientes. Incluye una variedad de herramientas para hacer que su negocio opere de una manera más ágil y más inteligente, tales como:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Definición de procesos y modelado de procesos&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Automatización del flujo de trabajo&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Gestión de procesos y análisis de procesos&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Optimización de Procesos&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Business Intelligence&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Supervisión de las actividades&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Integración de Aplicaciones Empresariales (EAI)&lt;/li&gt;&lt;/ol&gt;Fuente: &lt;a href="http://www.ultimus.com/"&gt;Ultimus&lt;/a&gt;&lt;br /&gt;&lt;div class="anunci"&gt;&lt;/div&gt;&lt;h1&gt;Software BPM gratuito y recursos BPM&lt;/h1&gt;&lt;div style="text-align: justify;"&gt;En la siguiente tabla hay una lista de las principales empresas que desarrollan software &lt;a href="http://www.mibpm.com/" title="BPM"&gt;&lt;b&gt;BPM&lt;/b&gt;&lt;/a&gt; y que ponen a disposición de cualquier persona Software &lt;a href="http://www.mibpm.com/" title="BPM"&gt;&lt;b&gt;BPM&lt;/b&gt;&lt;/a&gt; gratuito para probar las nuevas versiones o para que los clientes prueben el software &lt;a href="http://www.mibpm.com/" title="BPM"&gt;&lt;b&gt;BPM&lt;/b&gt;&lt;/a&gt; mediante versiones con licencias con tiempo de uso limitado. La tabla también contiene enlaces a los centros de recursos de manuales &lt;a href="http://www.mibpm.com/" title="BPM"&gt;&lt;b&gt;BPM&lt;/b&gt;&lt;/a&gt;, White papers de &lt;a href="http://www.mibpm.com/" title="BPM"&gt;&lt;b&gt;BPM&lt;/b&gt;&lt;/a&gt; y casos de éxito en implantaciones del software &lt;a href="http://www.mibpm.com/" title="BPM"&gt;&lt;b&gt;BPM&lt;/b&gt;&lt;/a&gt; en empresas.&lt;/div&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Software BPM gratuito y centros de recursos de Software BPM&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Enlace&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Process Designer de Ultimus - Versión gratuita durante 30 dias&lt;/td&gt;&lt;td&gt;http://www.ultimus.com/try-process-designer-free-for-30-days/&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Open Source BPM Solution de Bonita Soft - BPM de software libre (Open Source)&lt;/td&gt;&lt;td&gt;http://www.bonitasoft.com/products/BPM_download.php&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BPM 10gR3 de Oracle &lt;/td&gt;&lt;td&gt;http://www.oracle.com/technology/products/bpm/index.html&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ARIS Express - BPM de Aris&lt;/td&gt;&lt;td&gt;http://www.ariscommunity.com/aris-express&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BPMN Diagram Component Solution de UCanCode &lt;/td&gt;&lt;td&gt;http://www.ucancode.net/BPMN_Workflow/BPMN_Workflow_Component.htm&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TIBCO Business Studio 3.2.0 de TIBCO&lt;/td&gt;&lt;td&gt;http://developer.tibco.com/business_studio/default.jsp&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BPM Lombardi resources&lt;/td&gt;&lt;td&gt;http://www.lombardisoftware.com/bpm-resources.php&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Appian resource center&lt;/td&gt;&lt;td&gt;http://www.appian.com/bpm-resources/downloads.jsp&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Metastorm Process Designer&lt;/td&gt;&lt;td&gt;http://www.metastorm.com/library/process_designer.asp&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Intalio resource center&lt;/td&gt;&lt;td&gt;http://www.intalio.com/resource-center/&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-8497963124880164512?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/8497963124880164512/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=8497963124880164512' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/8497963124880164512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/8497963124880164512'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/12/bpm-vs-workflow-cual-es-la-diferencia.html' title='BPM vs Workflow: ¿Cuál es la diferencia?'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_leduMBufN5c/S7HSvKBaOsI/AAAAAAAAAII/6J152-8MYjw/s72-c/workflowvsbpm.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-4329272445044446341</id><published>2011-12-17T07:54:00.000-08:00</published><updated>2011-12-17T07:54:11.528-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WEB'/><title type='text'>Manual Avanzado de Firebug : El complemento perfecto de los desarrolladores web</title><content type='html'>&lt;h2&gt;Tomado de: &lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado"&gt;Manual Avanzado de Firebug : El complemento perfecto de los desarrolladores web&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;0. Índice de contenidos.&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#01"&gt;1. Introducción.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#02"&gt;2. Entorno.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#03"&gt;3. Instalación.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#04"&gt;4. Configuración.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#05"&gt;5. Utilización.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#06"&gt;6. Logging mediante Javascript.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#07"&gt;7. Conclusiones.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="" name="01"&gt;&lt;/a&gt;&lt;h3&gt;1. Introducción&lt;/h3&gt;&lt;a href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt; es una extensión gratuita para Mozilla Firefox especialmente diseñada para todos aquellos programadoresque se dedican al desarrollo web.Su objetivo principal es el de facilitar la gran mayoría de los trabajos que se hacen durante el desarrollo de una aplicación web (edición de HTML,edición de hojas de estilo y un sin fin de tareas más que ya muchos conocéis) y que tienen que ver con la interfaz de la misma. &lt;br /&gt;Aunque a primera vista parezca una herramienta "típica", he de decir que detrás de ella se esconde una herramienta que nos librará de muchos dolores de cabeza en el día a día. La única pega que le encuentro es que para poder sacarla rendimiento se requiere un cierto proceso de aprendizaje (relativamente corto pero necesario ;-)).  &lt;br /&gt;Características principales:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Integrada con Firefox.&lt;/li&gt;&lt;li&gt;Open source.&lt;/li&gt;&lt;li&gt;Gratuita.&lt;/li&gt;&lt;li&gt;Interfaz intuitiva.&lt;/li&gt;&lt;li&gt;Complemento perfecto como herramienta de desarrollo web.&lt;/li&gt;&lt;/ul&gt;Funcionalidad:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Edición en tiempo real de HTML.&lt;/li&gt;&lt;li&gt;Edición en tiempo real de CSS.&lt;/li&gt;&lt;li&gt;Edición en tiempo real de Javascript.&lt;/li&gt;&lt;li&gt;Disposición de CSS.&lt;/li&gt;&lt;li&gt;Depurador Javascript.&lt;/li&gt;&lt;li&gt;Buscador integrado.&lt;/li&gt;&lt;li&gt;Monitorización de la actividad de la red.&lt;/li&gt;&lt;li&gt;Explorador del DOM.&lt;/li&gt;&lt;li&gt;Gestor de errores en Javascript, CSS y XML.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="" name="02"&gt;&lt;/a&gt;&lt;h3&gt;2. Entorno.&lt;/h3&gt;El tutorial está escrito usando el siguiente entorno:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hardware: Portátil Asus G50Vseries (Core Duo P8600 2.4GHz, 4GB RAM, 320 GB HD).&lt;/li&gt;&lt;li&gt;Sistema operativo: Windows Vista Ultimate.&lt;/li&gt;&lt;li&gt;Mozilla Firefox 3.0.6.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="" name="03"&gt;&lt;/a&gt;&lt;h3&gt;3. Instalación.&lt;/h3&gt;Pasos a seguir para instalar Firebug:&lt;br /&gt;&lt;b&gt;Importante: &lt;/b&gt;Esta explicación se corresponde con las instalación del &lt;b&gt;Firebug 1.3.2&lt;/b&gt; para &lt;b&gt;Firefox 3&lt;/b&gt;. En caso de querer instalar otra versión ode disponer de una versión anterior de Firefox acceder al histórico de versiones en esta página &lt;a href="https://addons.mozilla.org/es-ES/firefox/addons/versions/1843"&gt;https://addons.mozilla.org/es-ES/firefox/addons/versions/1843&lt;/a&gt; &lt;br /&gt;&lt;b&gt;Paso 1:&lt;/b&gt;Descargar Firebug desde su página web &lt;a href="http://getfirebug.com/"&gt;http://getfirebug.com/&lt;/a&gt; (al pulsar sobre INSTALL FIREBUG os redirigirá a la página de complementos de Firefox).&lt;br /&gt;&lt;img alt="Instalación 0" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/instalacion0.jpg" width="80%" /&gt;&lt;br /&gt;O bien directamente desde la página de complementos de Firefox &lt;a href="https://addons.mozilla.org/es-ES/firefox/addon/1843"&gt;https://addons.mozilla.org/es-ES/firefox/addon/1843&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt; &lt;b&gt;Paso 2:&lt;/b&gt;En la página de complementos de Firefox, pulsar sobre &lt;b&gt;Añadir a Firefox&lt;/b&gt; en la ventana emergente.&lt;br /&gt;&lt;img alt="Instalación 1" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/instalacion1.jpg" width="80%" /&gt;&lt;br /&gt; En caso de que vuestro navegador fuera anterior no os dejará continuar con la instalación (recordad el instalar la adecuada).&lt;br /&gt;&lt;b&gt;Paso 3:&lt;/b&gt; Pulsar sobre &lt;b&gt;Instalar ahora&lt;/b&gt; en la ventana emergente.&lt;br /&gt;&lt;img alt="Instalación 2" border="0" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/instalacion2.jpg" /&gt;&lt;br /&gt; &lt;b&gt;Paso 4:&lt;/b&gt; Pulsar sobre &lt;b&gt;Reiniciar Firefox&lt;/b&gt; o bien cerrar y volverlo a abrir.&lt;br /&gt;&lt;img alt="Instalación 3" border="0" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/instalacion3.jpg" /&gt;&lt;br /&gt; &lt;b&gt;Paso 5:&lt;/b&gt; Comprobar que aparece en pestaña de complementos.&lt;br /&gt;&lt;img alt="Instalación 4" border="0" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/instalacion4.jpg" /&gt;&lt;br /&gt; Una vez llegados a este punto se puede decir que la instalación se ha realizado con éxito.&lt;br /&gt;&lt;br /&gt;&lt;a href="" name="04"&gt;&lt;/a&gt;&lt;h3&gt;4. Configuración.&lt;/h3&gt;La configuración inicial de Firebug es muy sencilla, ya que permite establecer muy pocas opciones de inicio. Para acceder a la configuración basta con elegir en el navegador Herramientas &amp;gt;&amp;gt; Firebug &lt;br /&gt;&lt;img alt="Configuración 1" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/configuracion1.jpg" width="80%" /&gt;&lt;br /&gt; Hay que establecer la forma de ejecución de Firebug (se verá en más detalle en el apartado utilización):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Abrir Firebug :&lt;/b&gt; Ejecuta Firebug integrado en la parte inferior de la ventana de la página.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Abrir Firebug en Ventana Nueva :&lt;/b&gt; Ejecuta Firebug en una ventana nueva independiente de la página&lt;/li&gt;&lt;/ul&gt;La opción de ejecutarlo en una ventana nueva es muy aconsejable cuando se disponden de dos monitores. ;-)&lt;br /&gt;Para utilizar un editor en concreto (a la hora de editar el HTML, etc.) se puede configurar seleccionando la opción de abrir con editor (&lt;b&gt;Open with editor&lt;/b&gt;),para ello bastará con indicar el nombre que se le da al editor, la ruta del ejecutable de dicho editor y los parámetros necesarios.&lt;br /&gt;El resto de opciones de configuración se especificarán durante la utilización.&lt;br /&gt;&lt;br /&gt;&lt;a href="" name="05"&gt;&lt;/a&gt;&lt;h3&gt;5. Utilización.&lt;/h3&gt;Primero de todo hay que cargar en Firefox la página web con la que queremos utilizar Firebug. En nuestro caso la página es &lt;a href="http://www.adictosaltrabajo.com/"&gt;http://www.adictosaltrabajo.com/&lt;/a&gt;&lt;br /&gt;&lt;img alt="Utilizacion 0" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion0.jpg" width="80%" /&gt;&lt;br /&gt;  Una vez cargada, existen varias formas de arrancar el Firebug:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Desde &lt;b&gt;Ver &amp;gt;&amp;gt; Firebug&lt;/b&gt; : La forma de ejecución se especifica en la configuración del punto anterior.&lt;/li&gt;&lt;li&gt;&lt;b&gt;F12&lt;/b&gt; : Firebug se ejecuta integrado en la parte inferior de ventana de la página (independientemente de la configuración).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Control + F12&lt;/b&gt; : Firebug se ejecuta en una ventana nueva (independientemente de la configuración).&lt;/li&gt;&lt;li&gt;Desde &lt;b&gt;Herramientas &amp;gt;&amp;gt; Firebug &amp;gt;&amp;gt; Abrir Firebug&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Desde &lt;b&gt;Herramientas &amp;gt;&amp;gt; Firebug &amp;gt;&amp;gt; Abrir Firebug en Ventana Nueva&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Clic&lt;/b&gt; sobre la imagen del bicho en la barra inferior del navegador.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Botón derecho del ratón&lt;/b&gt; sobre la imagen del bicho en la barra inferior del navegador &amp;gt;&amp;gt; &lt;b&gt;Abrir Firebug en Ventana Nueva&lt;/b&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;img alt="Utilizacion 1" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion1.jpg" width="80%" /&gt;&lt;br /&gt; Como se puede observar en la imagen se ha seleccionado la opción de que Firebug se integre en la ventana.&lt;br /&gt;&lt;h3&gt;Detalle de Firebug&lt;/h3&gt;&lt;img alt="Utilizacion 3" border="0" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion2.jpg" /&gt;&lt;br /&gt; &lt;h4&gt;1. Botón del bicho&lt;/h4&gt;Cuando se pulsa este botón se despliega la siguiente lista de opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Abrir con editor :&lt;/b&gt; Misma opción especificada en la configuración.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Tamaño del texto :&lt;/b&gt; Pemite cambiar el tamaño de la letra.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Opciones :&lt;/b&gt; Permite abrir Firebug en una ventana nueva y otras opciones.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Sitios web de Firebug.. :&lt;/b&gt; Permite acceder a los sitios web del proyecto.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Documentación.. :&lt;/b&gt; Permite acceder a la documentación.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Grupo de discusión.. :&lt;/b&gt; Permite acceder al grupo de discursión.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Issue Tracker.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Donar :&lt;/b&gt; Permite donar dinero al proyecto.&lt;/li&gt;&lt;li&gt;&lt;b&gt;About :&lt;/b&gt; Detalle sobre la versión instalada.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;2. Botón Inspeccionar&lt;/h4&gt;Cuando se pulsa este botón, permite identificar la parte del código que forman las secciones específicas de la página seleccionada con el puntero del ratón.&lt;br /&gt;En la imagen se puede observar como tras pulsar Inspeccionar se seleccionó el título "Segunda charla Autentia: Pruebas sobre aplicaciones web con Selenium HQ" y en el área de la izquierda de Firebug (Pestaña HTML) aparece la línea de código que hace referencia a esa parte.&lt;br /&gt;&lt;img alt="Utilizacion 3" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion3.jpg" width="80%" /&gt;&lt;br /&gt; &lt;h4&gt;3. Botón Editar&lt;/h4&gt;Cuando se ha inspeccionado un elemento y por tanto se ha identificado su línea de código, si se pulsa el botón  Editar el área de la línea de código seleccionadase convierte al modo edición, por lo que si se cambia algún dato , este aparece reflejado en la página (esto es edición en tiempo real de HTML).&lt;br /&gt;En la imagen se puede observar como se modificado el título anterior por "Prueba de Firebug : Cambiar el título" y en el área de la izquierda de Firebug aparece la línea de código enmodo edición.&lt;br /&gt;&lt;img alt="Utilizacion 4" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion4.jpg" width="80%" /&gt;&lt;br /&gt; &lt;h4&gt;4. Ruta del elemento especificado&lt;/h4&gt;Cuando se ha inspeccionado un elemento y por tanto se ha identificado su línea de código, aparece en el lado derecho del botón Editar la ruta de elementos HTML desde el elemento seleccionadohasta el comienzo del HTML de la página, pudiendo observar de que sección específica de la página se trata al pasar el ratón por encima.&lt;br /&gt;En la imagen se puede observar como se selecciona la sección en la que se encuentra el título "Segunda charla Autentia: Pruebas sobre aplicaciones web con Selenium HQ".&lt;br /&gt;&lt;img alt="Utilizacion 5" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion5.jpg" width="80%" /&gt;&lt;br /&gt; &lt;h4&gt;5. Buscador integrado&lt;/h4&gt;Permite buscar los elementos del código fuente de manera muy rápida y sencilla, además permite exportar los cambios para aplicarlos sobre el código fuente real.&lt;br /&gt;Una de las opciones que también permite es la de filtrar la consola para que sólo muestren los errores que coinciden con el texto buscado.&lt;br /&gt;En la imagen se puede observar como se ha buscado en el código "Pruebas sobre aplicaciones web con Selenium HQ " y en el área de la izquierda de Firebug (Pestaña HTML) aparece la línea de código en la que se ha encontrado.&lt;br /&gt;&lt;img alt="Utilizacion 6" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion6.jpg" width="80%" /&gt;&lt;br /&gt; &lt;h4&gt;6. Pestaña Consola&lt;/h4&gt;Al principio os encontraréis la consola deshabilitada, asi que primero de todo tendréis; que habilitar los módulos seleccionados:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Módulo Consola :&lt;/b&gt; Soporte para loggear en la consola.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Módulo Script :&lt;/b&gt; Soporte para depuración de Javascript.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Módulo Red :&lt;/b&gt; Soporte para monitorizar la red.&lt;/li&gt;&lt;/ul&gt;Posteriormente a la selección de los módulos habrá que habilitar los paneles seleccionados para la p´gina.&lt;br /&gt;&lt;img alt="Utilizacion 7" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion7.jpg" width="80%" /&gt;&lt;br /&gt;En este ejemplo seleccionamos todos y como se puede comprobar se habilitaron los módulos indicados.&lt;br /&gt;&lt;img alt="Utilizacion 8" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion8.jpg" width="80%" /&gt;&lt;br /&gt;Con estos elementos habilidados se podrán ejecutar funcionalidades que se explicarán en puntos posteriores de este tutorial.&lt;br /&gt;En la pestaña Consola se puede desplegar una opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Habilitado :&lt;/b&gt; Habilitar la consola siempre.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Deshabilitado :&lt;/b&gt; Deshabilitar la consola siempre.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Habilitar la consola para URL :&lt;/b&gt; Habilita la consola para la web indicada.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Deshabilitar la para URL :&lt;/b&gt; Deshabilita la consola para la web indicada.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Sites... :&lt;/b&gt; Permite gestionar la lista de habilidatos y de deshabilitados&lt;/li&gt;&lt;/ul&gt;Permite ejecutar código en la consola, como si fuera parte de la página, mostrando el valor devuelto mediante la consola. Por ejemplo si se conoce el camino en el DOMhay veces que se puede utilizar para encontrar elementos. La consola incorpora la opción de autocompletado por lo que se facilita el acceso al nombre de variables o de propiedades.Desde la línea de comandos se puede acceder a otras pestañas, por ejemplo cuando se muestra un resultado a una petición y se realiza un clic sobre el resultado,entoncesse produce una situación similar a inspeccionar ese elemento.&lt;br /&gt;&lt;img alt="Utilizacion 26" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion26.jpg" width="80%" /&gt;&lt;br /&gt;Se puede ampliar la entrada de la consola para que puedan ejecutar comandos o combinaciones de comandos de mayor envergadura.&lt;br /&gt;&lt;img alt="Utilizacion 27" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion27.jpg" width="80%" /&gt;&lt;br /&gt;&lt;h4&gt;7. Pestaña HTML&lt;/h4&gt;Con esta pestaña habilitada, se permite mostrar toda la estructura de código fuente que forma la página.Se suele asociar con el botón Inspeccionar para encontrarsecciones de código específicas,aunque también permite desplazarse entre el código a partir de estructuras desplegables de elementos HTML.&lt;br /&gt;&lt;img alt="Utilizacion 9" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion9.jpg" width="80%" /&gt;&lt;br /&gt;Firebug ofrece una ayuda para aquellas situaciones en las que los elementos HTML han sido creados, modificados o eliminados mediante Javascript u otras formas,para ellomarca los cambios que se producen en amarillo (temporalmente).De esta manera se identifican de una manera rápida todos los cambios que se producen.&lt;br /&gt;Se pueden editar los atributos de un elemento HTML de una manera directa, para ello hay que situarse en el atributo a cambiar (o muevete entre ellos mediante el tabulador)cambie el elemento y a continuación se cambiará en la pantalla.Como se puede observar en la imagen se ha cambiado el nombre del título "Segunda charla Autentia: Pruebas sobre aplicaciones web con Selenium HQ" por el de "Prueba Firebug : Segundo Cambio" desde la pestaña HTML.&lt;br /&gt;&lt;img alt="Utilizacion 10" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion10.jpg" width="80%" /&gt;&lt;br /&gt;Con esta pestaña seleccionada las pestañas de la parte derecha son accesibles (CSS, Maquetacion y DOM) , permiendo descubrir detalles de las hojas de estilo, el DOM, etc. (Todo esto serádetallado en puntos posteriores que se corresponden con dichas pestañas)&lt;br /&gt;Cuando se pulsa con el botón derecho sobre esta pestaña cuando un elemento ha sido inspeccionado se despliegan las siguientes opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Copiar :&lt;/b&gt; Copia el elemento seleccionado al portapapeles.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Copiar HTML :&lt;/b&gt; Copia el código HTML del elemento seleccionado al portapapeles.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Copiar innerHTML :&lt;/b&gt; Copia el atributo "innerHTML" de elemento seleccionado al portapapeles.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Copiar Xpath :&lt;/b&gt;Copia al portapapeles la expresión que identifica al elemento de manera única.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Registrar evento :&lt;/b&gt; Permite registrar un evento asociado al elemento seleccionado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Desplazarse hacia la vista :&lt;/b&gt;Muestra en la pantalla la página en la que aparece el elemento seleccionado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Atributo nuevo :&lt;/b&gt; Permite incorporar un atributo nuevo al elemento seleccionado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Editar "atributo" :&lt;/b&gt; Permite editar un atributo concreto en caso de tenerlo seleccionado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Borrar "atributo" :&lt;/b&gt; Permite borrar un atributo concreto en caso de tenerlo seleccionado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Editar HTML :&lt;/b&gt; Misma funcionalidad que el botón Editar.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Borrar elemento :&lt;/b&gt; Elimina el elemento del código.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Inspeccionar en pestaña DOM :&lt;/b&gt; Muestra los datos DOM asociados al elemento seleccionado.&lt;/li&gt;&lt;/ul&gt;Esta pestaña incorpora una serie de opciones que pueden mejorar su uso.&lt;br /&gt;&lt;h4&gt;8. Pestaña CSS&lt;/h4&gt;Con esta pestaña habilitada, se permite mostrar toda la estructura de estilo que forma la página. Se suele asociar con el botón Inspeccionar para encontar el estiloasociado de las secciones de código indicadas, aunque también permite desplazarse entre los estilos que forman la página en general.&lt;br /&gt;&lt;img alt="Utilizacion 11" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion11.jpg" width="80%" /&gt;&lt;br /&gt;Se pueden editar los atributos de estilo un elemento HTML de una manera directa, para ello hay que situarse en el atributo a cambiar desde Inspeccionar con la pestaña HTML habilitada,como se puede observar la pestaña de CSS pasa a formar parte de las que aparecen en el área de la derecha.Se puede cambia el estilo de cualquier elemento seleccionando el estiloy cambiando su propiedad a continuación se cambiará en la pantalla.&lt;br /&gt;En la imagen se muestra como se ha inspeccionado el tíulo "Segunda charla Autentia: Pruebas sobre aplicaciones web con Selenium HQ" y en la pestaña de CSS se ha añadido un atributo que da color a todos los elementos "a".&lt;br /&gt;&lt;img alt="Utilizacion 12" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion12.jpg" width="80%" /&gt;&lt;br /&gt;Permite mostrar una vista previa de los colores y las imágenes utilizadas en los estilos, para ello carga una pequeña descripción al situar el ratón encima de lapropiedad.En el caso de una imagen muestra las dimensiones del archivo, lo que permite ahorrar mucho tiempo a la hora de ajustar el tamaño.&lt;br /&gt;Muestra en cascada todas las reglas de estilo asociadas al elemento seleccionado, para ello se ordenan en orden de preferencia. Además se incorpora un enlace al archivo que contiene el estilo para que se pueda ir de forma directa a la línea deseada.&lt;br /&gt;Permite autocompletar propiedades , para ello al situarse en la propiedad permite seleccionar entre su valores posibles mediante las flechas arriba y abajo. Por ejemplo text-align : left /center /justify .&lt;br /&gt;Permite autocompletar números , para ello hay que situarse en la propiedad a cambiar y mediante la flechas de arriba y abajo se puede modificar o mejor dichoajustar dichos números de una manera más detallada.&lt;br /&gt;Cuando se pulsa con el botón derecho sobre esta pestaña cuando un elemento ha sido inspeccionado se despliegan las siguientes opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Copiar :&lt;/b&gt; Copia el elemento seleccionado al portapapeles.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Editar estilo del elemento.. :&lt;/b&gt; Permite editar los atributos del elemento seleccionado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Propiedad nuevo :&lt;/b&gt; Permite incorporar una propiedad nueva al estilo seleccionado.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Editar "propiedad" (Con un elemento de estilo seleccionado) :&lt;/b&gt; Permite editar una propiedad concreta en caso de tenerla seleccionada.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Borrar "propiedad" (Con un elemento de estilo seleccionado) :&lt;/b&gt; Permite borrar una propiedad concreta en caso de tenerla seleccionada.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Deshabilitar propiedad (Con un elemento de estilo seleccionado) :&lt;/b&gt; Impide que se aplique sobre la página el resultado de dicha propiedad. &lt;/li&gt;&lt;li&gt;&lt;b&gt;Refrescar :&lt;/b&gt; Permite que se muestren los cambios sobre la página en caso de que todavia no se hayan producido.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Inspeccionar en pestaña DOM :&lt;/b&gt; Muestra los datos DOM asociados al elemento seleccionado.&lt;/li&gt;&lt;/ul&gt;Esta pestaña incorpora una serie de opciones que pueden mejorar su uso.&lt;br /&gt;&lt;h4&gt;9. Pestaña Script&lt;/h4&gt;Con esta pestaña habilitada, se permite mostrar toda las funciones de Javascript utilizadas en la página. En este punto cabe recordar que Firebug incluyeun depurador de Javascript realmente potente, que permite entre otras cosas conocer el valor de cada variable un momento dado e incluso detener la ejecución en cualquier instante.&lt;br /&gt;&lt;img alt="Utilizacion 13" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion13.jpg" width="80%" /&gt;&lt;br /&gt;A la derecha del botón Inspeccionar se podrá seleccionar entre una serie de filtros para mostrar las funciones de Javascript.Las cuales son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mostrar scripts estáticos.&lt;/li&gt;&lt;li&gt;Mostrar scripts estáticos y eval.&lt;/li&gt;&lt;li&gt;Mostrar scripts estáticos y de eventos.&lt;/li&gt;&lt;li&gt;Mostrar scripts estáticos,eval y de eventos.&lt;/li&gt;&lt;/ul&gt;Se pueden encontrar los scripts de manera muy sencilla, para ello Firebug dispone de una lista que permitirá encontrar cualquier fichero en cualquier momento.Esta lista se carga pulsando al elemento seleccionado que se situa a la derecha de donde se establece el filtro anterior.&lt;br /&gt;Nota: Se puede acceder a una línea de forma directa con sólo escribir # seguido del número de la línea en el apartado de buscar.&lt;br /&gt;Entre las funciones que se incluyen en esta pestaña esta el poder parar la ejecución de las líneas, para ello se pueden establecer pausas en el código, es en estosinstantes cuando se puede examinar los objetos para comprobar sus valores. Para incorporar una interrupción simplemente basta con realizar un clic en la línea deseada y esta quedará marcada con un "punto rojo" (Voviendo a pulsar sobre dicha línea se eliminara la interrupció y por tanto el punto rojo )&lt;br /&gt; &lt;img alt="Utilizacion 14" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion14.jpg" width="80%" /&gt;&lt;br /&gt;A veces que se produza mucho una interrupción puede ser un engorro es por eso que se pueden establecer interrupciones condicionales, es decir, interrupciones que sólose producen cuando se da una determinada condición. Para establecer una interrupción de este tipo se puede hacer con el clic derecho del ratón sobre la línea de código,posteriormente se mostrará una burbuja sobre la que pondremos la condición en Javascript. Esta condición se puede cambiar en cualquier instante, para ello bastará con hacer clic con el botón derecho del ratón o bien se puede eliminar esta interrupción haciendo un clic en la línea.&lt;br /&gt;&lt;img alt="Utilizacion 15" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion15.jpg" width="80%" /&gt;&lt;br /&gt;Una vez que se ha detenido con una interrupción se puede cambiar el modo de ejecución para que se produzca en modo "línea a línea", de esta forma se puede controlarcomo van cambiando los valores de las variables a medida que se van ejecutando las diferentes l´neas de código.Para ello se habilitarán una serie de controlesen la parte superior (donde estaba el buscador) que permitirán ejecutar los diferentes modos de ejecución.&lt;br /&gt;&lt;img alt="Utilizacion 16" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion16.jpg" width="80%" /&gt;&lt;br /&gt;Cuando el depurador se detiene las pestañas que se encuentran en el área de la derecha cobran utilidad:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Observar :&lt;/b&gt; Muestra los datos de los objetos y expresiones complejas ("Resumen" DOM).De esta forma se pueden ver los atributos, modificarlos, etc..&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pila :&lt;/b&gt;Muestra la pila de llamadas (conjunto de llamadas jeraquizadas a funciones que se est&amp;amp;aaacute;n ejecutando actualmente), puediendo acceder a cada una de ellas mediante un clic que irá a la línea donde   se ha producdo la interrupción.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Puntos de ruptura :&lt;/b&gt;Muestra todos lo puntos de ruptura, incluyendo fichero, línea de código (numerico y texto),etc.&lt;/li&gt;&lt;/ol&gt;Cada una de las pestañas dispone de una serie de opciones permitidas. Por ejemplo deshabilitar los puntos de ruptura, mostrar las funciones del DOM , etc..&lt;br /&gt;Una opció muy importante, es que se puede observar el rendimiento a nivel de Javascript, para ello se realiza un completo análisis de los tiempos de cargay ejecución que ha provocado la navegación por la página.Para activar esta opción basta con acceder a la consola y pulsar al botón Perfilar, recargar la página y volver a pulsar Perfilar, después se mostraráun informe con el detalle donde se muestra el nombre de las funciones utilizadas y el tiempo que tardo cada una de ellas.&lt;br /&gt;&lt;img alt="Utilizacion 17" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion17.jpg" width="80%" /&gt;&lt;br /&gt;Cuando se pulsa con el botón derecho sobre esta pestaña cuando un elemento ha sido inspeccionado se despliegan las siguientes opciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Copiar :&lt;/b&gt; Copia el elemento seleccionado al portapapeles.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Poner punto de ruptura :&lt;/b&gt; Permite poner un punto de ruptura en esa línea.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Editar condición del punto de ruptura :&lt;/b&gt; Permite establecer o modificar la condición de ejecución de un punto de ruptura.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;10. Pestaña DOM&lt;/h4&gt;El DOM (Modelo de objetos para la represación de documentos) se encarga de definir la estructura lógica de los objetos,sus funciones, el modo de manipulación y acceso a cada objeto&lt;br /&gt;Se distinguen dos tipos de objetos DOM&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Objetos DOM estándar&lt;/li&gt;&lt;li&gt;Objetos Javascript&lt;/li&gt;&lt;/ul&gt;DOM serí la interfaz mediante la cual los programas y script acceden y modifican de forma dinámica el contenido, estructura y estilo de los documentos HTML.&lt;br /&gt;Con esta pestaña habilitada, se permite mostrar todo el resumen de los objetos DOM.Para ello se muestra el árbol DOM de la página.&lt;br /&gt;&lt;img alt="Utilizacion 18" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion18.jpg" width="80%" /&gt;&lt;br /&gt;Las opciones de filtrado permiten distinguir entre los tipos de objetos DOM.&lt;br /&gt;Firebug trata de mostrar en detalle los diferentes tipos de objetos, para ello establece diferentes estilo a la hora de mostrar la información en el detallede esta forma se facilita la búsqueda ,etc..&lt;br /&gt;Los objetos DOM se pueden modificar de manera rápida a través de el detalle anterior, además la edición dispone de la opción de autocompletado lo que facilita en gran medida las operaciones realizadas sobre ellos. Mediante el tabulador se puede completar el nombre de las propiedades de un objeto.&lt;br /&gt;Recordar que esta opciones tambien esta disponible cuando se trabaja con las pestaña HTML, sólo que se encuentra en el área de pestañas de la derecha.&lt;br /&gt;&lt;h4&gt;11. Pestaña Maquetación&lt;/h4&gt;Con esta pestaña habilitada, se permite mostrar las posiciones que ocupa un elemento HTML. Esta pestaña se encuentra accesible desde la pestaña de HTML y tiene utilidadcuando se ha inspeccionado previamente un elemento.Esta pestaña permite alinear correctamente los estilos sin tener que perder tu tiempo y dejarte los ojos.&lt;br /&gt;&lt;img alt="Utilizacion 19" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion19.jpg" width="80%" /&gt;&lt;br /&gt;Como se puede observar en el área de la derecha se muestra una ficha de diseño visual donde se muestra el detalle de cada zona de edición junto son sus alturas y anchuras.Esta ficha es totalmente editable, permitiendo el uso de las flechas arriba/abajo para cambiar el número de uno en uno y las teclas de página arriba/abajo para hacerlo de 10 en 10.&lt;br /&gt;Para facilitar este trabajo Firebug dispone de un modelo de sombreado de cuadros, de esta manera se permite distinguir entre el margen , el contenido, etc.. De estamanera se puede observar de un simple vistazo a que nos estamos refiriendo en cada instante y en cada zona.&lt;br /&gt;Al seleccionar una de las zonas se activarán sobre la página las reglas y las guías que facilitarán la visualización de las modificaciones a realizar.&lt;br /&gt;&lt;img alt="Utilizacion 20" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion20.jpg" width="80%" /&gt;&lt;br /&gt;&lt;h4&gt;12. Pestaña Red&lt;/h4&gt;Con esta pestaña habilitada, puede mostrar el tiempo de carga de la página web.Para ello utiliza una línea de tiempo, permitiendo establecerfiltros por tipos de archivos, examinar las cabeceras, monitorizar el XMLHttpRequest y sobre todo ver que datos se sirven en caché, esto permite diferenciar entre lacarga de caché del servidor y la carga que no se encuentra cacheada. Con esta opción seguro que descubres por qué va un poco lenta tu web.&lt;br /&gt;&lt;img alt="Utilizacion 21" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion21.jpg" width="80%" /&gt;&lt;br /&gt;La línea de tiempo muestra cuando un archivo se inicio y se detuvo en el contexto del resto de los archivos, para eso utiliza una representacióngráfica en forma de barra&lt;br /&gt;Con el filtrado de tipos de archivos, uno se puede centrar en tratar de mejorar la carga para este tipo de elementos, además asi se permite indicar el tiempo que tarda en cargar un determinado elemento o bien averiguar el total de elemento cargados (y el tiempo total de los filtrados).&lt;br /&gt;&lt;img alt="Utilizacion 22" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion22.jpg" width="80%" /&gt;&lt;br /&gt;La manera de comprobar si un elemento ha sido cargado desde la caché del navegador reside en que los elementos cargados desde el servidor dipone de barras coloreadasy los que son cargados desde cache son grises.&lt;br /&gt;Imagen de ejemplo de carga desde el servidor.&lt;br /&gt;&lt;img alt="Utilizacion 23" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion23.jpg" width="80%" /&gt;&lt;br /&gt;Imagen de ejemplo de carga desde caché.&lt;br /&gt;&lt;img alt="Utilizacion 24" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion24.jpg" width="80%" /&gt;&lt;br /&gt;Como ya he comentado antes también se puden observar las cabeceras HTTP, estas cabeceras muestran información como el tipo de MIME del archivo, el tipo de servidor web, etc. . Para acceder a ellas basta con hacer un clic sobre la solicitud y expandirla.&lt;br /&gt;&lt;img alt="Utilizacion 25" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion25.jpg" width="80%" /&gt;&lt;br /&gt;Para todos aquellos que os gustan usar las accesos directos de las funciones os dejo la siguiente página &lt;a href="http://getfirebug.com/keyboard.html"&gt;http://getfirebug.com/keyboard.html&lt;/a&gt;&lt;br /&gt;&lt;a href="" name="06"&gt;&lt;/a&gt;&lt;h3&gt;6. Logging mediante Javascript.&lt;/h3&gt;Muchas veces con disponer de un buen depurador no es suficiente, por eso otra forma de descubrir los problemas es mediante el muestreo de la mayor cantidadde información a medida que se va ejecutando el código (es decir, mediante el uso de un "log"). Firebug destaca en este punto, ya que permite hacer uso de un conjunto de funciones que pueden ser llamadas desde la página web.&lt;br /&gt;&lt;b&gt;Es el sustituto perfecto a las "cargantes ventanas" ALERT.&lt;/b&gt;&lt;br /&gt;Ejemplo de escritura en la consola de Firebug.Ejemplo : console.log("Adictos al Trabajo");&lt;br /&gt;&lt;img alt="Utilizacion 28" border="0" height="80%" src="http://www.adictosaltrabajo.com//tutoriales/firebugAvanzado/utilizacion28.jpg" width="80%" /&gt;&lt;br /&gt;&lt;h4&gt;Lista con las funciones de logging de la consola Firebug&lt;/h4&gt;&lt;table border="1"&gt;  &lt;tbody&gt;&lt;tr&gt;    &lt;td&gt;&lt;b&gt;Función&lt;/b&gt;&lt;/td&gt;    &lt;td&gt;&lt;b&gt;Descripción&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.assert(expresion[,object])&lt;/td&gt;    &lt;td&gt;Comprueba que una expresión sea cierta, sino muestra en la consola la excepción recibida.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.count([title])&lt;/td&gt;    &lt;td&gt;Muestra el número de líneas de código que han sido contadas hasta que fue ejecutada.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.debug(object[,object])&lt;/td&gt;    &lt;td&gt;Similar a log pero incluye un hyperlink hacia la línea desde donde ha sido llamado.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.dir(object)&lt;/td&gt;    &lt;td&gt;Muestra una lista interactiva de las propiedades de un objeto (similar DOM).&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.dirxml(node)&lt;/td&gt;    &lt;td&gt;Muestra el arbol XML del elemento HTML o XML (similar HTML).&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.error(object[, object])&lt;/td&gt;    &lt;td&gt;Similar a debug pero con el indicador de tipo "error".&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.group(object[,object,...])&lt;/td&gt;    &lt;td&gt;Anida mensajes dentro de la consola (requiere console.groupEnd()).&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.groupEnd()&lt;/td&gt;    &lt;td&gt;Cierra el bloque anidado.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;consolo.info(object[, object])&lt;/td&gt;    &lt;td&gt;Similar a debug pero con el indicador de tipo "info".&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.log(object[,object])&lt;/td&gt;    &lt;td&gt;Muestra el contenido indicado.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.profile([title])&lt;/td&gt;    &lt;td&gt;Permite definir un bloque.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.profileEnd()&lt;/td&gt;    &lt;td&gt;Cierra el bloque.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.time(name)&lt;/td&gt;    &lt;td&gt;Crea un temporizador con el nombre que le indiquemos.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.timeEnd(name)&lt;/td&gt;    &lt;td&gt;Termina el temporizador con el nombre indicado.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.trace()&lt;/td&gt;    &lt;td&gt;Muestra una traza interactiva desde donde fue llamada.&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;console.warn(object[,object]) &lt;/td&gt;    &lt;td&gt;Similar a debug pero con el indicador de tipo "warning".&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Todos estos comandos se pueden combinar con algunos modificadores para darmás información.&lt;br /&gt;Modificadores (El formato numérico todavía no esta soportado):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;%s : &lt;/b&gt;Cadena&lt;/li&gt;&lt;li&gt;&lt;b&gt;%d : &lt;/b&gt;Entero&lt;/li&gt;&lt;li&gt;&lt;b&gt;%i : &lt;/b&gt;Entero&lt;/li&gt;&lt;li&gt;&lt;b&gt;%f : &lt;/b&gt;Flotante&lt;/li&gt;&lt;li&gt;&lt;b&gt;%o : &lt;/b&gt;Objeto Hyperlink&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Ejemplo de modificadores&lt;/h4&gt;Primera forma de incorporar información a la consola&lt;br /&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;view plain&lt;/a&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;print&lt;/a&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span&gt;console.log("Adictos&amp;nbsp;al&amp;nbsp;trabajo&amp;nbsp;da&amp;nbsp;la&amp;nbsp;bienvenida&amp;nbsp;a&amp;nbsp;",usuario,"&amp;nbsp;a&amp;nbsp;la&amp;nbsp;charla&amp;nbsp;",tituloCharla,"&amp;nbsp;que&amp;nbsp;es&amp;nbsp;la&amp;nbsp;número&amp;nbsp;",numeroCharla);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;Segunda forma de incorporar información a la consola&lt;br /&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;view plain&lt;/a&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;print&lt;/a&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span&gt;console.log("Adictos&amp;nbsp;al&amp;nbsp;trabajo&amp;nbsp;da&amp;nbsp;la&amp;nbsp;bienvenida&amp;nbsp;%s&amp;nbsp;a&amp;nbsp;la&amp;nbsp;charla&amp;nbsp;%s&amp;nbsp;que&amp;nbsp;es&amp;nbsp;la&amp;nbsp;número&amp;nbsp;%i",usuario,tituloCharla,numeroCharla);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;h4&gt;Ejemplo completo&lt;/h4&gt;Para ejecutar este ejemplo guarda el código en un archivo HTML y abrelo con Firefox con Firebug instalado. Losmensajes se encuentran en la consola.&lt;br /&gt;&lt;div class="dp-highlighter"&gt;&lt;div class="bar"&gt;&lt;div class="tools"&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;view plain&lt;/a&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;print&lt;/a&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=firebugAvanzado#"&gt;?&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;ol class="dp-xml" start="1"&gt;&lt;li class="alt"&gt;&lt;span&gt;&lt;span&gt;&amp;lt;!DOCTYPE&amp;nbsp;HTML&amp;nbsp;PUBLIC&amp;nbsp;"-//W3C//DTD&amp;nbsp;HTML&amp;nbsp;4.01&amp;nbsp;Transitional//EN"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;html&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;head&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;meta&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;http-equiv&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"content-type"&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="attribute"&gt;content&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class="attribute-value"&gt;"text/html;&amp;nbsp;charset=windows-1250"&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;title&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Ejemplo&amp;nbsp;Logging&amp;nbsp;en&amp;nbsp;Javascript&amp;nbsp;desde&amp;nbsp;consola&amp;nbsp;Firebug&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;title&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;head&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;script&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute"&gt;usuario&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="attribute-value"&gt;"Desconocido"&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute"&gt;tituloCharla&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="attribute-value"&gt;"Conocer&amp;nbsp;Firebug&amp;nbsp;a&amp;nbsp;fondo"&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="attribute"&gt;numeroCharla&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class="attribute-value"&gt;3&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert("Tratamos&amp;nbsp;de&amp;nbsp;evitar&amp;nbsp;este&amp;nbsp;tipo&amp;nbsp;de&amp;nbsp;mensajes&amp;nbsp;;-)");&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log("Mejor&amp;nbsp;el&amp;nbsp;uso&amp;nbsp;de&amp;nbsp;este&amp;nbsp;tipo");&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.log("Adictos&amp;nbsp;al&amp;nbsp;trabajo&amp;nbsp;da&amp;nbsp;la&amp;nbsp;bienvenida&amp;nbsp;%s&amp;nbsp;a&amp;nbsp;la&amp;nbsp;charla&amp;nbsp;%s&amp;nbsp;que&amp;nbsp;es&amp;nbsp;la&amp;nbsp;número&amp;nbsp;",usuario,tituloCharla,numeroCharla);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.profile("BloquePrueba");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.time("Temporizador");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.info("Mensaje&amp;nbsp;informativo");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.debug("Mensaje&amp;nbsp;debug");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.warn("Mensaje&amp;nbsp;warning");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.error("Mensaje&amp;nbsp;error");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.timeEnd("Temporizador");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.profileEnd("BloquePrueba");&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;script&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;body&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;h1&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Ejemplo&amp;nbsp;Logging&amp;nbsp;en&amp;nbsp;Javascript&amp;nbsp;desde&amp;nbsp;consola&amp;nbsp;Firebug&lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;h1&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;&lt;/span&gt;&lt;span class="tag-name"&gt;p&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;Para&amp;nbsp;ejecutar&amp;nbsp;este&amp;nbsp;ejemplo&amp;nbsp;simplemente&amp;nbsp;hay&amp;nbsp;que&amp;nbsp;abrirlo&amp;nbsp;desde&amp;nbsp;Firefox&amp;nbsp;con&amp;nbsp;Firebug&amp;nbsp;instalado&amp;nbsp;y&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;observar&amp;nbsp;la&amp;nbsp;consola.&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;p&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="alt"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;body&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=""&gt;&lt;span&gt;&lt;span class="tag"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="tag-name"&gt;html&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="" name="7"&gt;&lt;/a&gt;&lt;h3&gt;7. Conclusiones.&lt;/h3&gt;Una vez que se utiliza por primera vez, uno descubre la cantidad de horas de trabajo que ha perdido y la "calidad de vida" que va ganar en elfuturo desde que esta herramienta pase a formar parte de su vida. &lt;br /&gt;Como se ha podido ver a lo largo de este tutorial &lt;b&gt;Firebug&lt;/b&gt; es un complemento indispensable dentro de las herramientas de cualquier desarrollador web, ya quepermite realizar todas las operaciones que un desarrollador web tiene que hacer (edición HTML, edición estilo , etc.) integradas dentro de una misma aplicación.&lt;br /&gt; Y yo me pregunto: ¿A qué hubiera dedicado todas las horas que he perdido mientras no conocía esta herramienta? ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-4329272445044446341?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/4329272445044446341/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=4329272445044446341' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/4329272445044446341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/4329272445044446341'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/12/manual-avanzado-de-firebug-el.html' title='Manual Avanzado de Firebug : El complemento perfecto de los desarrolladores web'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-701271995995959703</id><published>2011-12-17T07:39:00.001-08:00</published><updated>2011-12-17T07:39:44.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>Introducción a BPMN</title><content type='html'>&lt;h2&gt;Tomado de: &lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=bpmn"&gt;Introducción a BPMN&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;0. Índice de contenidos.&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=bpmn#01"&gt;1. Introducción.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=bpmn#02"&gt;2. Entorno.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=bpmn#03"&gt;3. Actividades.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=bpmn#04"&gt;4. Participantes.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=bpmn#05"&gt;5. Conectores de flujo.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=bpmn#06"&gt;6. Eventos.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com//tutoriales/tutoriales.php?pagina=bpmn#07"&gt;7. Conclusiones.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="01"&gt;1. Introducción&lt;/a&gt;&lt;/h3&gt;El objetivo de este tutorial es introduciros en el mundo de las anotaciones de BPM mediante el uso de BPMN&lt;br /&gt;&lt;b&gt;¿Qué es BPMN?&lt;/b&gt;&lt;br /&gt;BPMN es el acrónimo de &lt;b&gt;B&lt;/b&gt;usiness &lt;b&gt;P&lt;/b&gt;rocess &lt;b&gt;M&lt;/b&gt;odeling &lt;b&gt;N&lt;/b&gt;otation y no es otra cosa que una notación gráficaestandarizada para el modelado de los procesos de negocio.&lt;br /&gt;Su principal objetivo es : Resolver las dificultades de comunicación que tiene el lenguaje común&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Proporciona un método normalizado para representar procesos de negocio&lt;/li&gt;&lt;li&gt;Facilita su entendimiento debido a la poca complejidad de su notación&lt;/li&gt;&lt;li&gt;Proporciona un lenguaje común entre los usuarios de negocio y los técnicos&lt;/li&gt;&lt;li&gt;Facilita la diagramación de los procesos de negocio&lt;/li&gt;&lt;li&gt;....&lt;/li&gt;&lt;/ul&gt;Está basado en la idea de que existen diferentes roles con diferentes responsabilidades y cuya comunicación se realiza de formasimilar a lo que sería un diagrama de estados pero dentro de un tiempo determinado.&lt;br /&gt;Es muy similar a lo que sería un diagrama de estados.&lt;br /&gt;Desarrollado originalmente por la BPMI pero mantenido en la actualidad por OMG&lt;br /&gt;Actualmente tiene mayor uso la versión 1.2 pero cada vez es más facil ver la versión 2.0&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="" name="02"&gt;2. Entorno.&lt;/a&gt;&lt;/h3&gt;El tutorial está escrito usando el siguiente entorno:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="" name="02"&gt;Hardware: Portátil Asus G50Vseries (Core Duo P8600 2.4GHz, 4GB RAM,320 GB HD).&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="" name="02"&gt;Sistema operativo: Windows Vista Ultimate.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="" name="02"&gt;Mozilla Firefox 2.0.0.20&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="" name="03"&gt;3. Actividades&lt;/a&gt;&lt;/h3&gt;Una actividad representa una acción dentro de un proceso, sirve para denominar el trabajo realizado por un participante.&lt;br /&gt;Una actividad puede ser en función de su ejecución :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Manual (cuando se realiza por un participante humano) &lt;/li&gt;&lt;li&gt;Automático (cuando se realiza por un participante de proceso o de sistema)&lt;/li&gt;&lt;/ul&gt;Una actividad puede ser :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Independiente&lt;/li&gt;&lt;li&gt;Emisor de una notificación&lt;/li&gt;&lt;li&gt;Receptor de un mensaje&lt;/li&gt;&lt;li&gt;Solicitud-Respuesta&lt;/li&gt;&lt;/ul&gt;Una actividad se puede implementar : &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Tarea (Task) :&lt;/b&gt; Unidad mínima de trabajo dentro de un proceso&lt;/li&gt;&lt;li&gt;&lt;b&gt;Subproceso (Sub-process) :&lt;/b&gt; Unidad compuesta de trabajo formado por más de una tarea o subproceso&lt;/li&gt;&lt;/ul&gt;En definitiva, un subproceso agrupa tareas en una única tarea.&lt;br /&gt;Los subprocesos debido a que son agrupaciones de varias tareas y otros subprocesos tiene la propiedad de poder mostrarse contraídos y expandidos.&lt;br /&gt;Se representan con un rectángulo.&lt;br /&gt;Ejemplo de componentes : &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com//tutoriales/bpmn/actividades.jpg" style="height: 350px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="" name="04"&gt;4. Participantes.&lt;/a&gt;&lt;/h3&gt;Un participante o pool representa a cualquier recurso involucrado en un proceso, tiene la función de serel contenedor gráfico que indica las actividades que se van a realizar así como las condiciones de su ejecución.&lt;br /&gt;Lógicamente, las actividades contenidas dentro de un participante sólo podrán ser ejecutadas por dicho participante&lt;br /&gt;Existen 3 tipos de participantes : &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Humano&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Sistema&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Proceso&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;Cada participante debería de ser un pool diferente&lt;br /&gt;Ejemplo de participantes : &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com//tutoriales/bpmn/participantes.jpg" style="height: 350px;" /&gt;&lt;br /&gt;Un participante puede hacer uso de un modificador de ruta o lane &lt;br /&gt;¿Qué es una ruta o lane?&lt;br /&gt;Una ruta o lane representa una partición lógica del participante o pool&lt;br /&gt;Puede ser : &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Vertical&lt;/li&gt;&lt;li&gt;Horizontal&lt;/li&gt;&lt;/ul&gt;Se suelen utilizar para organizar y categorizar las actividades, con vistas a separar una parte sobre la que se realizará unpropósito específico&lt;br /&gt;Ejemplo de ruta : &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com//tutoriales/bpmn/ruta.jpg" style="height: 250px;" /&gt;&lt;br /&gt; &lt;br /&gt;&lt;h3&gt;&lt;a href="" name="05"&gt;5. Conectores de flujo.&lt;/a&gt;&lt;/h3&gt;Un conector de flujo representa el orden de ejecución de las tareas.&lt;br /&gt;En el caso de un participante, representa el tipo de transición en el tiempo de cada una de las tareas.&lt;br /&gt;Cuando nos referimos al orden de ejecución dentro de un mismo participante se denomina : transición.&lt;br /&gt;Se representan con una flecha.&lt;br /&gt;Cuando nos referimos al orden de ejecución entre participantes se denomina : interacción.&lt;br /&gt;Remarcar que en este segundo concepto lo que se produce es un intercambio de flujo de información entre los participantes&lt;br /&gt;Reglas especiales para una interacción :&lt;br /&gt;                                         &lt;ul&gt;&lt;li&gt;1)Dentro de un participante o pool no existen interacciones.&lt;/li&gt;&lt;li&gt;2)Se representa con una flecha punteada (distinto a una transición).&lt;/li&gt;&lt;li&gt;3)En un proceso automatizado todas las interacciones son entre el proceso y los participantes -&amp;gt; Función controladora.&lt;/li&gt;&lt;/ul&gt;Ejemplo de componentes de flujo : &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com//tutoriales/bpmn/conexion.jpg" style="height: 150px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="" name="06"&gt;6. Eventos.&lt;/a&gt;&lt;/h3&gt;Un evento representa situaciones que afectan al flujo de ejecución de un proceso.&lt;br /&gt;Cualquier proceso puede disparar un evento o es un resultado .&lt;br /&gt;Con los eventos se consigue que un proceso pueda : comenzar , pararse , interrumpirse , finalizar correctamente, etc.&lt;br /&gt;Se representan con un círculo.&lt;br /&gt;Existen 3 tipos de eventos : &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Inicio (Start)&lt;/b&gt; : Se representa con un círculo con una línea de traza.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Intermedio (Intermediate)&lt;/b&gt; : Se representa con un círculo con una línea doble de traza.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fin (End)&lt;/b&gt; : Se representa con un círculo con una línea de traza ancha. &lt;/li&gt;&lt;/ul&gt;Ejemplo de eventos : &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com//tutoriales/bpmn/eventos.jpg" style="height: 350px;" /&gt;&lt;br /&gt;&lt;table&gt;  &lt;tbody&gt;&lt;tr&gt;    &lt;td&gt;&lt;b&gt;Categoría&lt;/b&gt;&lt;/td&gt;    &lt;td&gt;&lt;b&gt;Símbolo&lt;/b&gt;&lt;/td&gt;    &lt;td&gt;&lt;b&gt;Descripción&lt;/b&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Inicio Vacío&lt;/td&gt;    &lt;td&gt;Vacío&lt;/td&gt;    &lt;td&gt;Indica que es un evento de inicio del proceso pero sin indicar que lo define &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Intermedio Vacío&lt;/td&gt;    &lt;td&gt;Vacío&lt;/td&gt;    &lt;td&gt;Indica que se produce un cambio de estado en el diagrama ( punto KPI - Key Performance Indicator) &lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Final vacío&lt;/td&gt;    &lt;td&gt;Punto&lt;/td&gt;    &lt;td&gt;Indica que el proceso finaliza en ese punto&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Mensaje&lt;/td&gt;    &lt;td&gt;Sobre&lt;/td&gt;    &lt;td&gt;Indica el envío o recepción de un mensaje&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Error&lt;/td&gt;    &lt;td&gt;Rayo&lt;/td&gt;    &lt;td&gt;Indica que se ha producido algún tipo de problema&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Cancelar&lt;/td&gt;    &lt;td&gt;Símbolo X&lt;/td&gt;    &lt;td&gt;Indica que se empide continuar por esa línea por algún motivo&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Señal&lt;/td&gt;    &lt;td&gt;Triángulo&lt;/td&gt;    &lt;td&gt;Indica algún tipo de información puntual&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Enlace&lt;/td&gt;    &lt;td&gt;Flecha&lt;/td&gt;    &lt;td&gt;&lt;br /&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Compensación&lt;/td&gt;    &lt;td&gt;Rebobinado&lt;/td&gt;    &lt;td&gt;Indica que se realizará algún tipo de acción para manetener la integridad&lt;/td&gt;  &lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;Temporizador&lt;/td&gt;    &lt;td&gt;Reloj&lt;/td&gt;    &lt;td&gt;Indica el proceso se inicia en base a un tiempo o bien que hay que esperar un tiempo&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="" name="06"&gt;6. Condicionales.&lt;/a&gt;&lt;/h3&gt;Un condicional o gateway representa un punto de decisión en el proceso para queel flujo sea condicionado y permita canalizar por diversas ramas durante su ejecución.&lt;br /&gt;Se representan con un rombo.&lt;br /&gt;Existen 3 tipos de condicionales : &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Exclusivo (Exclusively) : &lt;/b&gt;Sólo una rama puede ser ejecutada (basado en eventos / basado en datos)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Inclusivo (Inclusively) : &lt;/b&gt;Una o más ramas pueden ser ejecutadas&lt;/li&gt;&lt;li&gt;&lt;b&gt;Paralelo (In parallel) : &lt;/b&gt;Todas las ramas pueden ser ejecutadas&lt;/li&gt;&lt;/ul&gt;Ejemplos de condicionales : &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com//tutoriales/bpmn/condicionales.jpg" style="height: 550px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="" name="07"&gt;7. Conclusiones.&lt;/a&gt;&lt;/h3&gt;Espero haber conseguido el objetivo de este tutorial que ha sido introduciros en la notación BPMN y así poder sentarlas bases de lo que iremos haciendo en próximos tutoriales. Para cualquier cosa ya sabeis cómo contactar conmigo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-701271995995959703?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/701271995995959703/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=701271995995959703' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/701271995995959703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/701271995995959703'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/12/introduccion-bpmn.html' title='Introducción a BPMN'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-4842403442637585372</id><published>2011-12-17T07:33:00.000-08:00</published><updated>2011-12-17T07:34:13.389-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BPM'/><title type='text'>BPM con BONITASOFT</title><content type='html'>Tomado de:&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=bonita"&gt;Introducción a Bonita Open Solution&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;0. Índice de contenidos.&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=bonita#01"&gt;1. Introducción.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=bonita#02"&gt;2. Entorno.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=bonita#03"&gt;3. Instalación.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=bonita#04"&gt;4. Uso&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=bonita#05"&gt;5. Configuración&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=bonita#06"&gt;6. Conclusiones.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="01"&gt;1. Introducción&lt;/a&gt;&lt;/h3&gt;&lt;b&gt;Bonita Open Solution&lt;/b&gt; es otra de las maravillas existentes para la gestión de procesos BPM. Ha sidocreada por &lt;b&gt;BonitaSoft&lt;/b&gt; una de las empresas que son líderes en este mercado y por suerte para nosotroses Open Source ;-).&lt;br /&gt;Esta herramienta destaca sobre todo por la facilidad en su utilización debido al diseño intuitivo de losdiferentes elementos que lo componen y por el bajo coste de su implantación (al no requerir ninguna inversión másque de tiempo de aprendizaje). Además, la modelización de los procesos es compatible con la especificaciónBPMN 2.0 (Para el que no conozca esta notación para el modelado de procesos BPMN aconsejovisualizar antes de continuar el siguiente tutorial &lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=bpmn"&gt;Introducción a BPMN&lt;/a&gt; ) por lo que estaríamos a la última en lo que se refiere a BPM.&lt;br /&gt;Características principales de esta herramienta :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open Source&lt;/li&gt;&lt;li&gt;Es ligera&lt;/li&gt;&lt;li&gt;Compatibilidad con BPMN 2.0&lt;/li&gt;&lt;li&gt;Interfaz Intuitiva&lt;/li&gt;&lt;li&gt;Potente&lt;/li&gt;&lt;li&gt;Fácil importación de procesos desde otras herramientas (Tibco, Lobardi, etc.)&lt;/li&gt;&lt;li&gt;Personalización de las herramientas&lt;/li&gt;&lt;li&gt;Integración de los procesos con reglas de negocio&lt;/li&gt;&lt;li&gt;Conectores nativos (+ de 100) : SAP , Microsoft Exchange , etc &lt;/li&gt;&lt;li&gt;Conectores propios (realizados por la comunidad de BonitaSoft) &lt;/li&gt;&lt;li&gt;Integración en Talend MDM Enterprise Edition&lt;/li&gt;&lt;/ul&gt;Bonita Open Solution esta compuesto por varios módulos :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bonita Execution Engine&lt;/li&gt;&lt;li&gt;Bonita Studio&lt;/li&gt;&lt;li&gt;Bonita Form Builder&lt;/li&gt;&lt;li&gt;Bonita User Experience&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;1) Bonita Execution Engine&lt;/h4&gt;Es el motor de BPM de Bonita yse encarga de la conexión de los procesosque existen en el sistema asi como el despliegue y ejecución de los procesos. Elmódulo de Bonita Studio esta conectado directamente a este otro módulo para funcionar. &lt;br /&gt;Por suerte, este motor es genérico y extensible por lo que siempre seremos capacesde añadir con mayor o menor dificultad nuevos estándares o bien servicios que puedanaparacer en el mundo de BPM con posterioridad.&lt;br /&gt;&lt;h4&gt;2) Bonita Studio&lt;/h4&gt;Es la aplicación gráfica cuya función es diseñar los procesos BPM usandola notación anteriormente comentada : BPMN (Business Process Management Notation) sobre un área de diseño (pizarra) de forma muy intuitiva basada en "arrastrar" los elementos y en su configuración específica mediante una o varias pestañas habilitadas para ello&lt;br /&gt;&lt;h4&gt;3) Bonita Form Builder&lt;/h4&gt;Es la aplicación encargada de mostrar los formularios a los usuarios de la aplicación.Recordar que muchos de los pasos que se producen en un proceso BPM requieren de la entradade datos por parte del usuario implicado.&lt;br /&gt;(form destined for end user Web application)&lt;br /&gt;&lt;h4&gt;4) Bonita User Experience (User XP)&lt;/h4&gt;Es la aplicación encarga de la gestión de todo lo relacionado con los procesos BPM desplegados. Por suerte es muy intutiva ya que su interfaz se "parece" a una aplicaciónde gestión de correo&lt;br /&gt;El objetivo de este tutorial, es por tanto, inicializaros en el uso esta herramienta mediantesu instalación , su configuración y mediante la creación de un ejemplo de proceso muy básicoque simplemente nos ayude a habituarnos con la interfaz. Poco a poco espero ir introduciendomás elementos que compliquen los procesos BPM hasta que llegue a explicar como manejarlos desdela herramienta de User Experience, etc.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="02"&gt;2. Entorno.&lt;/a&gt;&lt;/h3&gt;El tutorial está escrito usando el siguiente entorno:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="02"&gt;Hardware: Portátil Asus G50Vseries (Core Duo P8600 2.4GHz, 4GB RAM,320 GB HD).&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="02"&gt;Sistema operativo: Windows Vista Ultimate.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="02"&gt;Mozilla Firefox 2.0.0.20&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="03"&gt;3. Instalación.&lt;/a&gt;&lt;/h3&gt;En este punto, se pretende enseñar a instalar esta herramienta que como veréis en los pasosno va a resultar demasiado complicado.&lt;br /&gt;PASO 1 : Nos conectamos a la página web &lt;a href="http://www.bonitasoft.com/"&gt;http://www.bonitasoft.com&lt;/a&gt;   &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion.jpg" style="height: 550px;" /&gt;&lt;br /&gt;PASO 2 : Seleccionamos la opción de "Download"  &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion2.jpg" style="height: 550px;" /&gt;&lt;br /&gt;PASO 3 : Seleccionamos la opción de "Download Now" (Versión Windows)   &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion3.jpg" style="height: 550px;" /&gt;&lt;br /&gt;PASO 4 : Nos descagaremos el ejecutable&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion4.jpg" style="height: 200px;" /&gt;&lt;br /&gt;PASO 5 : Tras descargárnoslo lo lanzaremos y seleccionaremos el idioma &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion5.jpg" style="height: 200px;" /&gt;&lt;br /&gt;PASO 6 : Accederemos a los pasos de la instalación y los seguiremos &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion6.jpg" style="height: 350px;" /&gt;&lt;br /&gt;PASO 7 : Aceptaremos las condiciones de la licencia&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion7.jpg" style="height: 350px;" /&gt;&lt;br /&gt;PASO 8 : Seleccionaremos el directorio de instalación &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion8.jpg" style="height: 350px;" /&gt;&lt;br /&gt;PASO 9 : Una vez seleccionado, confirmaremos las condiciones de la instalación &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion9.jpg" style="height: 350px;" /&gt;&lt;br /&gt;PASO 10 : Poco a poco ira realizano la instalación &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion10.jpg" style="height: 350px;" /&gt;&lt;br /&gt;PASO 11 : Con esto habremos finalizado la instalación y podremos arracar Bonita Studio &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion11.jpg" style="height: 350px;" /&gt;&lt;br /&gt;PASO 12 : La primera vez que lo arranquemos nos solicitará que nos registremos &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion12.jpg" style="height: 300px;" /&gt;&lt;br /&gt;PASO 13 : Una vez registrados arrancará la aplicación.  &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/instalacion13.jpg" style="height: 450px;" /&gt;&lt;br /&gt;Con esto ya tendremos instalado todo lo necesarios y ya podremos empezar a trabajar ;-)&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="04"&gt;4. Uso&lt;/a&gt;&lt;/h3&gt;En este punto se va enseñar a usar un poco la herramienta (sobre todo centrandonos en el usode la interfaz de Bonita Studio), el motivo muy sencillo, si no empezamos definiendo biennuestro proceso BPM desde su diseño nos complicaremos la vida en las siguientes fases. &lt;br /&gt;PASO 1 : Cargamos la aplicación y seleccionamos la opción "Create New Process"&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/uso1.jpg" style="height: 550px;" /&gt;&lt;br /&gt;PASO 2 : Tras seleccionar esta opción nos cargará una diagrama BPM Básico de ejemplo&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/uso2.jpg" style="height: 550px;" /&gt;&lt;br /&gt;PASO 3 : Seleccionaremos la tarea definida y en la ficha de detalle cambiaremossu identificador y añadiremos una descripción&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/uso3.jpg" style="height: 550px;" /&gt;&lt;br /&gt;La pantalla de detalle de las tareas permitirá poder configurar diferentes aspectos agrupados en varias pestañas. Por ejemplo en la pestaña general podremosmodificar cosas como : &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Identificador&lt;/li&gt;&lt;li&gt;Texto descriptivo&lt;/li&gt;&lt;li&gt;Tipo de actividad  : Humana / Automática / Subproceso / ....&lt;/li&gt;&lt;li&gt;Prioridad : Normal / High / Urgent  &lt;/li&gt;&lt;/ul&gt;En el resto de pestañas podremos configurar aspectos como el tipo de ejecución, sitiene algun tipo de condición de ejecución basado en tiempo, si tiene algun tipo de filtrode los usuarios que podrán ejecutarla, etc.&lt;br /&gt;Importante : Estas propiedades no solo se aplican sobre las actividades sino que se aplicansobre cualquier elemento que forme parte del proceso. Hay que tener en cuenta que estaspropiedades cambiarán de un elemento a otro&lt;br /&gt;PASO 4 : Añadimos otra tarea (pero del tipo autmático) al diagrama y la conectamos con "Tarea 1"&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/uso4.jpg" style="height: 550px;" /&gt;&lt;br /&gt;PASO 5 : Añadimos un estado de finalización y lo conectamos con "Tarea 2"&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/uso5.jpg" style="height: 550px;" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="05"&gt;5. Configuración.&lt;/a&gt;&lt;/h3&gt;La herramienta Bonita Open Studio permite editar sus preferencias para ellosdispone una opción de menu : Editar -&amp;gt; Preferences &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/preferences1.jpg" style="height: 350px;" /&gt;&lt;br /&gt;Las principales pestañas son las siguientes :&lt;br /&gt;&lt;b&gt;Bonita :&lt;/b&gt; En esta pestaña se permite configurar cosas para el módulo Studiocomo son el idioma de la interfaz de usuario y lo que es más importanta lainclusión automática de un identificador a cada uno de los elementos deldiagrama.&lt;br /&gt;Por otro lado, también permite configurar ciertas propiedades del módulode User Experience como son el host y puerto en el que lo arrancará, si lo haráen un explirador web frecuente o bien en una interfaz interna de Bonita Studio.&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/preferences2.jpg" style="height: 350px;" /&gt;&lt;br /&gt;&lt;b&gt;General :&lt;/b&gt; En esta pestaña se permite configurar aspectos como : si la ejecuciónse hará en background , la configuración de las características de workspace (refrescar, guardar, codificación, etc).  &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/preferences3.jpg" style="height: 350px;" /&gt;&lt;br /&gt;&lt;b&gt;Java :&lt;/b&gt; En esta pestaña se podrá configurar la JDK con las que se compilaráel proyecto, los directorios creados en la ejecución de un asistente de creaciónde un nuevo proyecto Java , etc. &lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/bonita/preferences2.jpg" style="height: 350px;" /&gt;&lt;br /&gt;Mi consejo es que os deis una vuelta por el resto de opciones.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="06"&gt;6. Conclusiones.&lt;/a&gt;&lt;/h3&gt;Aquí termina el primer tutorial de esta herramienta, que como habéis podidocomprobar de momento no ha presentado ninguna problemática o dificultad a la hora de instalarla(ojalá fueran todas asi). Para los que ya tenéis cierta experiencia con herramientas BPM Open Source os habréis dado cuente de que es de las herramientas más intutivas y si me permitis el chiste fácil de las más "Bonitas" visualmente hablando, aunque como todos ya sabemos no hay que fijarse solamente en el físico y en ese caso Bonita también deja entrever su potencia real (que es mucha). Espero que os haya gustado&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-4842403442637585372?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/4842403442637585372/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=4842403442637585372' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/4842403442637585372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/4842403442637585372'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/12/tomado-de-introduccion-bonita-open.html' title='BPM con BONITASOFT'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-6776327128096227514</id><published>2011-12-17T06:58:00.000-08:00</published><updated>2011-12-17T07:34:32.207-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java y AS400'/><title type='text'>Graficar con JFreeChart</title><content type='html'>&lt;h2&gt;Tomado de: &lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=graficaSeriesJFreeChart"&gt;Crear gráficas con series con JFreeChart.&lt;/a&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;0. Índice de contenidos.&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=graficaSeriesJFreeChart#01"&gt;1. Introducción.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=graficaSeriesJFreeChart#02"&gt;2. Entorno.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=graficaSeriesJFreeChart#03"&gt;3. Diseñando la gráfica.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=graficaSeriesJFreeChart#04"&gt;4. Construyendo la gráfica.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=graficaSeriesJFreeChart#05"&gt;5. Ejecutando el ejemplo.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=graficaSeriesJFreeChart#06"&gt;6. Referencias.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=graficaSeriesJFreeChart#07"&gt;7. Conclusiones.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="01"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;1. Introducción&lt;/h3&gt;Como vimos en otro tutorial es muy sencillo &lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=hojasCalculoFormulasPOI" target="_blank"&gt;exportar datos a una hoja de cálculo mediante Apache POI&lt;/a&gt;. Sin embargo, las hojas de cálculo no son la única solución para la exportación de datos. En determinados casos puede ser muy interesante plasmar toda esa información en una gráfica.&lt;br /&gt;En este tutorial vamos a ver cómo generar gráficas con series de datos con ayuda de la librería JFreeChart. Para ello vamos a aprovechar los datos del ejemplo que utilizamos en el &lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=hojasCalculoFormulasPOI" target="_blank"&gt;tutorial anteriormente mencionado&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="02"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;2. Entorno.&lt;/h3&gt;El tutorial está escrito usando el siguiente entorno:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hardware: Portátil MacBook Pro 15' (2.2 Ghz Intel Core I7, 4GB DDR3).&lt;/li&gt;&lt;li&gt;Sistema Operativo: Mac OS Snow Leopard 10.6.7&lt;/li&gt;&lt;li&gt;Entorno de desarrollo: Eclipse 3.7 Indigo.&lt;/li&gt;&lt;li&gt;JFreeChart 1.0.13.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="03"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;3. Diseñando la gráfica.&lt;/h3&gt;Como hemos dicho anteriormente, nos vamos a basar en datos de pilotos que dan vueltas de entrenamiento a un circuito para generar este ejemplo. Las características que tendrá nuestra gráfica serán las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Cada serie (de tiempos por vuelta de un piloto) se representará de forma lineal.&lt;/li&gt;&lt;li&gt;El eje Y de la gráfica mostrará los tiempos en segundos en un rango de 120 a 135. El número de segundos del eje se visualizará de dos en dos (120, 122, 124...).&lt;/li&gt;&lt;li&gt;El eje X de la gráfica mostrará el número de vueltas, de la vuelta 1 a la vuelta 5.&lt;/li&gt;&lt;li&gt;Cada punto de la gráfica debe de mostrarse con un círculo (evidentemente los círculos serán unidos por la línea que representará la serie).&lt;/li&gt;&lt;li&gt;Los colores de las series deben ser distintos, así como las líneas de la gráfica que hacen de guía (líneas discontinuas que salen en el fondo de la gráfica).&lt;/li&gt;&lt;li&gt;En el pie de la gráfica debe figurar una leyenda con los nombres de los pilotos.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="04"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;4. Construyendo la gráfica.&lt;/h3&gt;Pues bien, aquí tenemos la clase que nos generará la gráfica:&lt;br /&gt;&lt;div class="syntaxhighlighter  " id="highlighter_722698"&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;java.awt.Color;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;java.io.File;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.chart.ChartFactory;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.chart.ChartUtilities;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.chart.JFreeChart;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.chart.axis.NumberAxis;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.chart.axis.NumberTickUnit;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.chart.plot.PlotOrientation;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.chart.plot.XYPlot;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.data.xy.XYSeries;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;import&lt;/code&gt; &lt;code class="plain"&gt;org.jfree.data.xy.XYSeriesCollection;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;public&lt;/code&gt; &lt;code class="keyword"&gt;class&lt;/code&gt; &lt;code class="plain"&gt;PruebaJFreeChart {&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;private&lt;/code&gt; &lt;code class="keyword"&gt;static&lt;/code&gt; &lt;code class="plain"&gt;Color COLOR_SERIE_1 = &lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;Color(&lt;/code&gt;&lt;code class="value"&gt;255&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;128&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;64&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;private&lt;/code&gt; &lt;code class="keyword"&gt;static&lt;/code&gt; &lt;code class="plain"&gt;Color COLOR_SERIE_2 = &lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;Color(&lt;/code&gt;&lt;code class="value"&gt;28&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;84&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;140&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;private&lt;/code&gt; &lt;code class="keyword"&gt;static&lt;/code&gt; &lt;code class="plain"&gt;Color COLOR_RECUADROS_GRAFICA = &lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;Color(&lt;/code&gt;&lt;code class="value"&gt;31&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;87&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;4&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;private&lt;/code&gt; &lt;code class="keyword"&gt;static&lt;/code&gt; &lt;code class="plain"&gt;Color COLOR_FONDO_GRAFICA = Color.white;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;23&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;24&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;public&lt;/code&gt; &lt;code class="plain"&gt;JFreeChart crearGrafica(XYSeriesCollection dataset) {&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;25&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;26&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;JFreeChart chart = ChartFactory.createXYLineChart(&lt;/code&gt;&lt;code class="string"&gt;"Tiempos de entrenamientos"&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="string"&gt;"Vuelta"&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="string"&gt;"Tiempo (segundos)"&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;27&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;dataset,&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;28&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;PlotOrientation.VERTICAL, &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;29&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;true&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="comments"&gt;// uso de leyenda&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;30&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;false&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="comments"&gt;// uso de tooltips&amp;nbsp; &lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;31&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;false&lt;/code&gt; &lt;code class="comments"&gt;// uso de urls&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;32&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;33&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="comments"&gt;// color de fondo de la gráfica&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;34&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;chart.setBackgroundPaint(COLOR_FONDO_GRAFICA);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;35&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;36&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;XYPlot plot = (XYPlot) chart.getPlot();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;37&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;configurarPlot(plot);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;38&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;39&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;NumberAxis domainAxis = (NumberAxis)plot.getDomainAxis();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;40&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;configurarDomainAxis(domainAxis);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;41&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;42&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;NumberAxis rangeAxis = (NumberAxis)plot.getRangeAxis();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;43&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;configurarRangeAxis(rangeAxis);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;44&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;45&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer)plot.getRenderer();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;46&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;configurarRendered(renderer);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;47&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;48&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;return&lt;/code&gt; &lt;code class="plain"&gt;chart;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;49&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;50&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;51&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="comments"&gt;// configuramos el contenido del gráfico (damos un color a las líneas que sirven de guía)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;52&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;private&lt;/code&gt; &lt;code class="keyword"&gt;void&lt;/code&gt; &lt;code class="plain"&gt;configurarPlot (XYPlot plot) {&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;53&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;plot.setDomainGridlinePaint(COLOR_RECUADROS_GRAFICA);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;54&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;plot.setRangeGridlinePaint(COLOR_RECUADROS_GRAFICA);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;55&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;56&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;57&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="comments"&gt;// configuramos el eje X de la gráfica (se muestran números enteros y de uno en uno)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;58&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;private&lt;/code&gt; &lt;code class="keyword"&gt;void&lt;/code&gt; &lt;code class="plain"&gt;configurarDomainAxis (NumberAxis domainAxis) {&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;59&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;domainAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;60&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;domainAxis.setTickUnit(&lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;NumberTickUnit(&lt;/code&gt;&lt;code class="value"&gt;1&lt;/code&gt;&lt;code class="plain"&gt;));&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;61&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;62&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;63&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="comments"&gt;// configuramos el eje y de la gráfica (números enteros de dos en dos y rango entre 120 y 135)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;64&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;private&lt;/code&gt; &lt;code class="keyword"&gt;void&lt;/code&gt; &lt;code class="plain"&gt;configurarRangeAxis (NumberAxis rangeAxis) {&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;65&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;66&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;rangeAxis.setTickUnit(&lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;NumberTickUnit(&lt;/code&gt;&lt;code class="value"&gt;2&lt;/code&gt;&lt;code class="plain"&gt;));&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;67&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;rangeAxis.setRange(&lt;/code&gt;&lt;code class="value"&gt;120&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;135&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;68&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;69&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;70&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="comments"&gt;// configuramos las líneas de las series (añadimos un círculo en los puntos y asignamos el color de cada serie)&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;71&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;private&lt;/code&gt; &lt;code class="keyword"&gt;void&lt;/code&gt; &lt;code class="plain"&gt;configurarRendered (XYLineAndShapeRenderer renderer) {&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;72&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;renderer.setSeriesShapesVisible(&lt;/code&gt;&lt;code class="value"&gt;0&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="keyword"&gt;true&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;73&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;renderer.setSeriesShapesVisible(&lt;/code&gt;&lt;code class="value"&gt;1&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="keyword"&gt;true&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;74&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;renderer.setSeriesPaint(&lt;/code&gt;&lt;code class="value"&gt;0&lt;/code&gt;&lt;code class="plain"&gt;, COLOR_SERIE_1);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;75&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;renderer.setSeriesPaint(&lt;/code&gt;&lt;code class="value"&gt;1&lt;/code&gt;&lt;code class="plain"&gt;, COLOR_SERIE_2);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;76&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;77&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;78&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="plain"&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Bien, como vemos el método ChartFactory.createXYLineChart nos creará una gráfica de series representadas por líneas.&lt;br /&gt;El método configurarPlot se ocupa de establecer el color de las líneas de fondo de la gráfica que hacen de guía. Son las líneas discontinuas verticales y horizontales que aparecen en el fondo de la gráfica. &lt;br /&gt;El método configurarDomainAxis actua sobre el eje X, el eje del número de vueltas, y hace que se muestren números enteros y de uno en uno.&lt;br /&gt;El método configurarRangeAxis actua sobre el eje Y, el de los tiempos, y hace que se muestren los tiempos comprendidos en el rango de 120 a 135 pero mostrando un número si, un número no.&lt;br /&gt;El método configurarRndered hace que en cada punto (relación tiempo - vuelta de una serie) se muestre un círculo y que cada serie sea de un color.&lt;br /&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="05"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;5. Ejecutando el ejemplo.&lt;/h3&gt;Por último, nos queda cargar los datos de los pilotos (usaremos los del otro tutorial) y generar la gráfica en un fichero.&lt;br /&gt;&lt;div class="syntaxhighlighter  " id="highlighter_297967"&gt;&lt;div class="lines"&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;01&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;public&lt;/code&gt; &lt;code class="keyword"&gt;static&lt;/code&gt; &lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="keyword"&gt;int&lt;/code&gt; &lt;code class="plain"&gt;ANCHO_GRAFICA = &lt;/code&gt;&lt;code class="value"&gt;400&lt;/code&gt;&lt;code class="plain"&gt;;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;02&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;03&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;public&lt;/code&gt; &lt;code class="keyword"&gt;static&lt;/code&gt; &lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="keyword"&gt;int&lt;/code&gt; &lt;code class="plain"&gt;ALTO_GRAFICA = &lt;/code&gt;&lt;code class="value"&gt;300&lt;/code&gt;&lt;code class="plain"&gt;;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;04&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;05&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="keyword"&gt;public&lt;/code&gt; &lt;code class="keyword"&gt;static&lt;/code&gt; &lt;code class="keyword"&gt;void&lt;/code&gt; &lt;code class="plain"&gt;main(String args[]) {&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;06&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;07&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;XYSeries serie1 = &lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;XYSeries(&lt;/code&gt;&lt;code class="string"&gt;"Fernando Alonso"&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;08&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie1.add(&lt;/code&gt;&lt;code class="value"&gt;1&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;131.78&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;09&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie1.add(&lt;/code&gt;&lt;code class="value"&gt;2&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;129.95&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie1.add(&lt;/code&gt;&lt;code class="value"&gt;3&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;128.16&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;11&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie1.add(&lt;/code&gt;&lt;code class="value"&gt;4&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;125.91&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;12&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie1.add(&lt;/code&gt;&lt;code class="value"&gt;5&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;130.44&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;13&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;14&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;XYSeries serie2 = &lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;XYSeries(&lt;/code&gt;&lt;code class="string"&gt;"Jaime Alguersuari"&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;15&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie2.add(&lt;/code&gt;&lt;code class="value"&gt;1&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;133.16&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;16&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie2.add(&lt;/code&gt;&lt;code class="value"&gt;2&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;132.32&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;17&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie2.add(&lt;/code&gt;&lt;code class="value"&gt;3&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;129.86&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;18&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie2.add(&lt;/code&gt;&lt;code class="value"&gt;4&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;128.02&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;19&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;serie2.add(&lt;/code&gt;&lt;code class="value"&gt;5&lt;/code&gt;&lt;code class="plain"&gt;, &lt;/code&gt;&lt;code class="value"&gt;132.45&lt;/code&gt;&lt;code class="plain"&gt;);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;21&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;XYSeriesCollection collection = &lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;XYSeriesCollection();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;22&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;collection.addSeries(serie1);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;23&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;collection.addSeries(serie2);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;24&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;25&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;try&lt;/code&gt; &lt;code class="plain"&gt;{&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;26&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;PruebaJFreeChart prueba = &lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;PruebaJFreeChart();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;27&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="keyword"&gt;final&lt;/code&gt; &lt;code class="plain"&gt;JFreeChart grafica = prueba.crearGrafica(collection);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;28&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;ChartUtilities.saveChartAsPNG(&lt;/code&gt;&lt;code class="keyword"&gt;new&lt;/code&gt; &lt;code class="plain"&gt;File(&lt;/code&gt;&lt;code class="string"&gt;"tiempos-entrenamientos.png"&lt;/code&gt;&lt;code class="plain"&gt;), grafica, ANCHO_GRAFICA, ALTO_GRAFICA);&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;29&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;} &lt;/code&gt;&lt;code class="keyword"&gt;catch&lt;/code&gt; &lt;code class="plain"&gt;(Exception e) {&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;30&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;e.printStackTrace();&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;31&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="spaces"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/code&gt;&lt;code class="plain"&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt2"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;32&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="line alt1"&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="number"&gt;&lt;code&gt;33&lt;/code&gt;&lt;/td&gt;&lt;td class="content"&gt;&lt;code class="plain"&gt;}&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;Observemos que añadimos los tiempos de cada piloto en una serie llamada XYSeries. A esta serie únicamente le indicamos el nombre, que se corresponderá con el nombre del piloto, y el tiempo por vuelta. Ej: en la serie 1 hemos indicado que en la vuelta 1 el tiempo fue de 131.78 segundos, en la vuelta 2 fue de 129.95, etc...&lt;br /&gt;Añadimos las gráficas a un dataset de tipo XYSeriesCollection y se lo pasamos al método crearGrafica.&lt;br /&gt;Por último, con el método saveChartAsPNG de la clase ChartUtilities generamos una imagen en formato png, con el alto y ancho que queramos y que que dará como resultado una imagen llamada tiempos-entrenamiento.png. La gráfica resultante es la siguiente:&lt;br /&gt;&lt;img alt="" src="http://www.adictosaltrabajo.com/tutoriales/graficaSeriesJFreeChart/pantallazo.png" /&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="06"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;6. Referencias.&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.jfree.org/jfreechart/jfreechart-1.0.13-demo.jnlp" target="_blank"&gt;JFreeChart Demo&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="07"&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;7. Conclusiones.&lt;/h3&gt;En este tutorial hemos visto lo sencillo que es generar gráficas de series lineales con ayuda de la librería JFreeChart.&lt;br /&gt;Nótese que esta librería es capaz de generar una gran cantidad de tipos de gráficas que pueden verse en la demo de su página web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-6776327128096227514?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/6776327128096227514/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=6776327128096227514' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/6776327128096227514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/6776327128096227514'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/12/tomado-de-crear-graficas-con-series-con.html' title='Graficar con JFreeChart'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-5787459867683828615</id><published>2011-11-16T07:25:00.001-08:00</published><updated>2011-11-16T07:32:37.096-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Centos - Comandos'/><title type='text'>MySQL Recuperar la contraseña de root en 5 pasos - Centos</title><content type='html'>&lt;br /&gt;&lt;div class="address" style="background-attachment: initial; background-clip: initial; background-color: #f4f1e9; background-image: url(http://www.guatewireless.org/wp-content/themes/cover-wp/images/separator.gif); background-origin: initial; background-position: 50% 100%; background-repeat: repeat no-repeat; color: #333333; font-family: 'Helvetica Neue', Helvetica, Arial, 'Nimbus Sans L', sans-serif; font-size: 12px; line-height: 20px; padding-bottom: 3px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;&lt;a href="http://www.guatewireless.org/" style="color: #cc3300; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="Inicio"&gt;Guatewireless.org&lt;/a&gt;&amp;nbsp;»&amp;nbsp;&lt;a href="http://www.guatewireless.org/category/tecnologia/bases-de-datos/" rel="nofollow" style="color: #cc3300; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="View all posts in Bases de Datos"&gt;Bases de Datos&lt;/a&gt;,&amp;nbsp;&lt;a href="http://www.guatewireless.org/category/os/linux/" rel="nofollow" style="color: #cc3300; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="View all posts in Linux"&gt;Linux&lt;/a&gt;&amp;nbsp;»&amp;nbsp;&lt;a href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/" rel="bookmark" style="color: #cc3300; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="MySQL Recuperar la contraseña de root en 5 pasos"&gt;MySQL Recuperar la contraseña de root en 5 pasos&lt;/a&gt;&lt;/div&gt;&lt;div class="post-1188 post type-post status-publish format-standard hentry category-bases-de-datos category-linux tag-connection-id tag-mysql-connection tag-reading-table tag-sec-rows tag-servidor-mysql" id="post-1188" style="background-attachment: initial; background-clip: initial; background-image: url(http://www.guatewireless.org/wp-content/themes/cover-wp/images/separator.gif); background-origin: initial; background-position: 50% 100%; background-repeat: repeat no-repeat; font-family: 'Helvetica Neue', Helvetica, Arial, 'Nimbus Sans L', sans-serif; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 5px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;h1 id="post-headline" style="background-color: #f4f1e9; color: #333333; margin-bottom: 3px; margin-left: 0px; margin-right: 0px; margin-top: 5px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;br /&gt;&lt;/h1&gt;&lt;div class="the_content" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;div class="toc" id="toc-1188-1-box" style="background-color: #f4f1e9; border-bottom-color: rgb(204, 204, 204); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(204, 204, 204); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(204, 204, 204); border-top-style: solid; border-top-width: 1px; font-size: 0.75em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a class="toc-header" href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/" style="background-color: #f8f8ec; border-bottom-color: rgb(240, 240, 224); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(252, 252, 252); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(240, 240, 224); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(252, 252, 252); border-top-style: solid; border-top-width: 1px; color: #777777; display: block; font-size: 1.25em; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 1px; padding-left: 2px; padding-right: 2px; padding-top: 1px; text-align: left; text-decoration: none;" title="tabla de contenido (click to expand/collapse)"&gt;En este articulo:&lt;/a&gt;&lt;ul id="toc-1188-1" style="background-color: #fcfcfc; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; overflow-x: hidden; overflow-y: hidden; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; white-space: nowrap;"&gt;&lt;li class="toc-level-1 active" style="font-weight: bold; line-height: 20px; margin-bottom: 0px; margin-left: 20px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/#mysql-pasos-para-resetear-la-contrasena-de-root" rel="bookmark nofollow" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="MySQL: Pasos para resetear la contraseña de root"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;MySQL: Pasos para resetear la contraseña de root&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="toc-level-2 active" style="font-weight: bold; line-height: 20px; margin-bottom: 0px; margin-left: 20px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0.25em; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/#1-detener-el-proceso-del-servidor" rel="bookmark nofollow" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="1: Detener el proceso del servidor"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;1: Detener el proceso del servidor&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="toc-level-2 active" style="font-weight: bold; line-height: 20px; margin-bottom: 0px; margin-left: 20px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0.25em; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/#2-iniciar-el-serviciodemonio-mysqld-sin-contrasena" rel="bookmark nofollow" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="2: Iniciar el servicio/demonio (mysqld) sin contraseña"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;2: Iniciar el servicio/demonio (mysqld) sin contraseña&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="toc-level-2 active" style="font-weight: bold; line-height: 20px; margin-bottom: 0px; margin-left: 20px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0.25em; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/#3-conectar-al-servidor-mysql-como-el-usuario-root" rel="bookmark nofollow" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="3: Conectar al servidor MySQL como el usuario root"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;3: Conectar al servidor MySQL como el usuario root&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="toc-level-2 active" style="font-weight: bold; line-height: 20px; margin-bottom: 0px; margin-left: 20px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0.25em; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/#4-configure-la-nueva-contrasena-de-root" rel="bookmark nofollow" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="4: Configure la nueva contraseña de root"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;4: Configure la nueva contraseña de root&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="toc-level-2 active" style="font-weight: bold; line-height: 20px; margin-bottom: 0px; margin-left: 20px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0.25em; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/#5-salir-y-reiniciar-el-servidor" rel="bookmark nofollow" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="5: Salir y reiniciar el servidor"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;5: Salir y reiniciar el servidor&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="toc-level-2 active" style="font-weight: bold; line-height: 20px; margin-bottom: 0px; margin-left: 20px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0.25em; padding-right: 0px; padding-top: 0px;"&gt;&lt;a href="http://www.guatewireless.org/os/linux/mysql-recuperar-la-contrasena-de-root-en-5-pasos/#6-reinicio-de-mysql" rel="bookmark nofollow" style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="6: Reinicio de MySQL"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;6: Reinicio de MySQL&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="wpfblike" style="background-color: #f4f1e9; color: #333333; height: 40px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background-color: #f4f1e9; color: #333333; font-size: 12px; line-height: 20px; margin-bottom: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;Hoy veremos como se puede recuperar y cambiar la&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;contraseña&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;de&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;root&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;del servidor de bases de datos&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;MySQL&lt;/strong&gt;&lt;/em&gt;. Este es un rapido procedimiento el cual funciona en Linux con los siguientes cinco pasos:&lt;/div&gt;&lt;span class="Apple-style-span" style="background-color: #f4f1e9; color: #333333;"&gt;&lt;a class="toc-anchor" href="" name="mysql-pasos-para-resetear-la-contrasena-de-root" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;a class="toc-anchor" href="" name="toc-anchor-1188-1" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;h1 style="background-color: #f4f1e9; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span" style="color: purple; font-size: large;"&gt;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;MySQL&lt;/em&gt;: Pasos para resetear la contraseña de root&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;&lt;span class="Apple-style-span" style="background-color: #f4f1e9; color: #333333;"&gt;&lt;a class="toc-anchor" href="" name="1-detener-el-proceso-del-servidor" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;a class="toc-anchor" href="" name="toc-anchor-1188-2" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;h2 style="background-color: #f4f1e9; color: #333333; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;1: Detener el proceso del servidor&lt;/h2&gt;&lt;div style="background-color: #f4f1e9; color: #333333; font-size: 12px; line-height: 20px; margin-bottom: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;Antes de iniciar el proceso de recuperacion de la clave de&amp;nbsp;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;root&lt;/span&gt;&amp;nbsp;es necesario bajar todos los servicios de la base de datos:&lt;/div&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; margin-bottom: 10px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;root@centos:~# &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b&gt;service mysqld stop&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;* Stopping MySQL database server mysqld [ OK ]&lt;br /&gt;root@centos:~#&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="background-color: #f4f1e9; color: #333333;"&gt;&lt;a class="toc-anchor" href="" name="2-iniciar-el-serviciodemonio-mysqld-sin-contrasena" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;a class="toc-anchor" href="" name="toc-anchor-1188-3" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;h2 style="background-color: #f4f1e9; color: #333333; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;2: Iniciar el servicio/demonio (mysqld) sin contraseña&lt;/h2&gt;&lt;div style="background-color: #f4f1e9; color: #333333; font-size: 12px; line-height: 20px; margin-bottom: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;Cuando vamos a reiniciar el motor de base de datos utilizamos la opcion –skip-grant-tables asi no nos pedira la&amp;nbsp;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;contraseña&lt;/span&gt;.&lt;/div&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; margin-bottom: 10px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;root@centos:~# &lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b style="background-color: white;"&gt;mysqld_safe --skip-grant-tables &amp;amp;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;[1] 10702&lt;br /&gt;root@centos:~# nohup: ignoring input and redirecting stderr to stdout&lt;/span&gt;&lt;/pre&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-color: #daccb0; background-image: initial; background-origin: initial; color: #333333; margin-bottom: 10px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;Starting mysqld daemon with databases from /var/lib/mysql&lt;br /&gt;mysqld_safe[10741]: started&lt;/pre&gt;&lt;span class="Apple-style-span" style="background-color: #f4f1e9; color: #333333;"&gt;&lt;a class="toc-anchor" href="" name="3-conectar-al-servidor-mysql-como-el-usuario-root" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;a class="toc-anchor" href="" name="toc-anchor-1188-4" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;h2 style="background-color: #f4f1e9; color: #333333; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;3: Conectar al servidor&amp;nbsp;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;MySQL&lt;/span&gt;&amp;nbsp;como el usuario root&lt;/h2&gt;&lt;div style="background-color: #f4f1e9; color: #333333; font-size: 12px; line-height: 20px; margin-bottom: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;Ahora que ya hemos realizamo el paso 2, podemos conectarnos al servidor con el usuario&amp;nbsp;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;root&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;y no tendremos que ingresar la&amp;nbsp;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;contraseña&lt;/strong&gt;&lt;/span&gt;. Esto es un paso temporal necesario para cambiar la contraseña anterior de&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;root&lt;/em&gt;.&lt;/div&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; margin-bottom: 10px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;root@centos:~# &lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b style="background-color: white;"&gt;mysql -u root&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;Welcome to the MySQL monitor.  Commands end with ; or g.&lt;br /&gt;Your MySQL connection id is 1&lt;br /&gt;Server version: 5.0.51a-3ubuntu5.4 (Ubuntu)&lt;br /&gt;&lt;br /&gt;Type 'help;' or 'h' for help. Type 'c' to clear the buffer.&lt;br /&gt;&lt;br /&gt;mysql&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="background-color: #f4f1e9; color: #333333;"&gt;&lt;a class="toc-anchor" href="" name="4-configure-la-nueva-contrasena-de-root" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;a class="toc-anchor" href="" name="toc-anchor-1188-5" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;h2 style="background-color: #f4f1e9; color: #333333; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;4:&lt;a href="http://www.guatewireless.org/os/linux/mysql-como-cambiar-la-contrasena-de-root-del-servidor-de-base-de-datos/" style="border-bottom-color: rgb(51, 51, 51); border-bottom-style: dotted; border-bottom-width: 1px; color: #333333; display: inline !important; font-size: 20px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 7px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;Configure la nueva contraseña de root&lt;/a&gt;&lt;/h2&gt;&lt;div style="background-color: #f4f1e9; color: #333333; font-size: 12px; line-height: 20px; margin-bottom: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;En este paso ya es posible actualizar la contraseña de&amp;nbsp;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;root&lt;/strong&gt;&lt;/em&gt;&amp;nbsp;por una nueva:&lt;/div&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; margin-bottom: 10px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;mysql&amp;gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: blue;"&gt;&lt;b&gt;use mysql;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;&lt;br /&gt;Reading table information for completion of table and column names&lt;br /&gt;You can turn off this feature to get a quicker startup with -A&lt;br /&gt;&lt;br /&gt;Database changed&lt;br /&gt;mysql&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: #333333;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;update user set password=PASSWORD("321") where User='root';&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;Query OK, 3 rows affected (0.03 sec)&lt;br /&gt;Rows matched: 3  Changed: 3  Warnings: 0&lt;br /&gt;mysql&amp;gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt; &lt;b&gt;flush privileges;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;Query OK, 0 rows affected (0.01 sec)&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="background-color: #f4f1e9; color: #333333;"&gt;&lt;a class="toc-anchor" href="" name="5-salir-y-reiniciar-el-servidor" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;a class="toc-anchor" href="" name="toc-anchor-1188-6" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;h2 style="background-color: #f4f1e9; color: #333333; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;5: Salir y reiniciar el servidor&lt;/h2&gt;&lt;div style="background-color: #f4f1e9; color: #333333; font-size: 12px; line-height: 20px; margin-bottom: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;Ya que hemos cambiado la contraseña, tan solo es necesario salir de la interfaz para utilizar la nueva contraseña de administrador.&lt;/div&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; margin-bottom: 10px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;mysql&amp;gt; &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="background-color: white; color: blue;"&gt;quit&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;Bye&lt;br /&gt;root@centos:~# &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: blue;"&gt;&lt;b&gt;service mysqld stop&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;* Stopping MySQL database server mysqld&lt;br /&gt;STOPPING server from pid file /var/run/mysqld/mysqld.pid&lt;br /&gt;mysqld_safe[11414]: ended&lt;br /&gt;[ OK ]&lt;br /&gt;[1]+  Done                    mysqld_safe --skip-grant-tables&lt;/span&gt;&lt;/pre&gt;&lt;span class="Apple-style-span" style="background-color: #f4f1e9; color: #333333;"&gt;&lt;a class="toc-anchor" href="" name="6-reinicio-de-mysql" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;a class="toc-anchor" href="" name="toc-anchor-1188-7" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;/a&gt;&lt;/span&gt;&lt;h2 style="background-color: #f4f1e9; color: #333333; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;6: Reinicio de MySQL&lt;/h2&gt;&lt;div style="background-color: #f4f1e9; color: #333333; font-size: 12px; line-height: 20px; margin-bottom: 15px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;"&gt;Y eso es todo. En este ultimo paso tan solo nos queda reiniciar el proceso de la base de datos en&amp;nbsp;&lt;span style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline;"&gt;&lt;em style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;strong style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Linux&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&amp;nbsp;y nuestra nueva contraseña estara cambiada.&lt;/div&gt;&lt;pre style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; margin-bottom: 10px; overflow-x: scroll; overflow-y: scroll; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;"&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;root@centos:~# &lt;/span&gt;&lt;b style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;service mysqld start&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="background-color: #daccb0; color: #333333;"&gt;&lt;br /&gt;* Starting MySQL database server mysqld [ OK ]&lt;br /&gt;* Checking for corrupt, not cleanly closed and upgrade needing tables.&lt;br /&gt;&lt;br /&gt;root@centos:~# &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="background-color: white; color: blue;"&gt;mysql -u root -p&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-5787459867683828615?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/5787459867683828615/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=5787459867683828615' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/5787459867683828615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/5787459867683828615'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/11/mysql-recuperar-la-contrasena-de-root.html' title='MySQL Recuperar la contraseña de root en 5 pasos - Centos'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-3074117873600622222</id><published>2011-10-28T03:52:00.000-07:00</published><updated>2011-10-28T03:52:06.267-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ITIL'/><title type='text'></title><content type='html'>Tomado de:&amp;nbsp;&lt;a href="http://blog.jmacoe.com/gestion_ti/base_de_datos/itil-dba-administrador-base-datos/?utm_source=feedburner&amp;amp;utm_medium=email&amp;amp;utm_campaign=Feed%3A+ElRinconDeJmacoe+%28El+rinc%C3%B3n+de+JMACOE%29"&gt;ITIL - Para un DBA&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;ITIL para el DBA (Administrador de base de datos)&lt;/h2&gt;&lt;div class="info"&gt;&lt;strong&gt;¿Qué es ITIL?&lt;/strong&gt;&lt;/div&gt;&lt;div class="content"&gt;ITIL es sinónimo de Librería de Infraestructura de Tecnología de la Información. Es un estándar del gobierno de Reino Unido que ha sido objeto de varias revisiones. La última es ITILv3.&lt;br /&gt;&lt;strong&gt;¿En qué está centrado ITILv3?&lt;/strong&gt;&lt;br /&gt;ITIL en los acuerdos generales con los procesos relacionados a la gestión del servicio. Esto incluye cuestiones relacionadas con la gestión de incidentes, gestión de problemas, gestión de configuración, gestión de cambios, gestión de versiones.&lt;br /&gt;&lt;span id="more-2230"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;¿Qué es la gestión de incidentes?&lt;/strong&gt;&lt;br /&gt;Cualquier evento inesperado que tiene un impacto en el sistema actual es un incidente. Esto incluye caída de la base de datos debido a diversos fallos como errores de disco, fallo del servidor. Los procesos necesarios deben formularse y seguirse para dar manejo a los incidentes. Los incidentes son desconocidos y por lo tanto es necesario tomar medidas proactivas para evitarlos, y acciones reactivas deben ser adoptadas para hacerles frente.&lt;br /&gt;&lt;strong&gt;¿Qué es la gestión del problema?&lt;/strong&gt;&lt;br /&gt;El problema es un incidente recurrente. Es obligatoria analizar la causa raíz de un problema y dar con una solución permanente. Los registros de sucesos de bases de datos, servidores y aplicaciones pueden ser utilizados para este propósito. Un buen ejemplo es cargar en la base de datos lo necesario para ser optimizada, o evitar problemas de bloqueos, etc.&lt;br /&gt;&lt;strong&gt;¿Qué es la Gestión de la Configuración?&lt;/strong&gt;&lt;br /&gt;Cualquier cambio realizado a la configuración del sistema. Esto puede ser cambios al servidor, base de datos y aplicación.&lt;br /&gt;&lt;strong&gt;¿Qué es la gestión del cambio?&lt;/strong&gt;&lt;br /&gt;Cada vez que ocurre un incidente, es obligatorio generar un ticket y dependiendo de la gravedad que podría tener la prioridad SEV1, etc.&lt;br /&gt;&lt;strong&gt;¿Qué es la gestión de la liberación?&lt;/strong&gt;&lt;br /&gt;Es obligatorio documentar la versión de parche, el número de versión del software de los componentes de la infraestructura, incluyendo servidores, base de datos. Este documento tiene que estar disponible a todo mundo para una referencia rápida. Así cuando se produce un cambio tiene que ser documentado.&lt;br /&gt;&lt;strong&gt;¿Por qué un ITIL necesidad de DBA?&lt;/strong&gt;&lt;br /&gt;Alrededor del 40% de los mil millones de dólares de empresas de software han comenzado a adoptar ITIL. Este es un estándar que integra negocios con infraestructura. Da como resultado una mayor satisfacción del cliente. El DBA dispone de datos que es propiedad exclusiva (el corazón) de un organización. Por tanto, es obligatorio para ellos seguir los procesos y documentar sus actividades para que el sistema este levantado y funcionando en base 24×7 y abordar los problemas si se produce alguno.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-3074117873600622222?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/3074117873600622222/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=3074117873600622222' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/3074117873600622222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/3074117873600622222'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/10/tomado-de-itil-para-un-dba-itil-para-el.html' title=''/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-8999402239104031868</id><published>2011-10-25T11:26:00.000-07:00</published><updated>2011-10-25T11:26:12.434-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux - Centos'/><title type='text'>Seguridad en Linux</title><content type='html'>Tomado de:&amp;nbsp;&lt;a href="http://blog.jmacoe.com/miscelanea/seguridad/seguridad-servidores-linux/?utm_source=feedburner&amp;amp;utm_medium=email&amp;amp;utm_campaign=Feed%3A+ElRinconDeJmacoe+%28El+rinc%C3%B3n+de+JMACOE%29"&gt;Seguridad en Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;span class="Apple-style-span" style="font-size: small; font-weight: normal;"&gt;&lt;div class="tweetmeme_button"&gt;Como llevo unos cuantos post filosóficos, vamos ahora con algo más técnico. Vamos a darle un pequeño repaso a algunas medidas de seguridad básicas para un linux y a su aplicación real hoy en día. Como veremos, muchas de las cosas que se venden como “seguridad en servidores linux”, han quedado obsoletas y no sirven para mucho.&lt;/div&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div class="content"&gt;Empezaremos por repasar algunos conceptos de los de toda la vida, como la búsqueda de ficheros setuidados y la deshabilitación de servicios innecesarios. Tras esto, le daremos un repaso a la importancia actual de estas medidas de seguridad en un entorno corporativo actual. Finalmente, hablaremos de las nuevas tendencias en seguridad.&lt;br /&gt;&lt;span id="more-2349"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h3&gt;Puntos de montaje&lt;/h3&gt;Por defecto, FEDORA va a permitir la ejecución de archivos en /tmp/. Esto no es que sea muy grave, pero lo ideal sería montar /tmp en una partición aparte teniendo cuidado de ponerle los permisos adecuados:&lt;br /&gt;/dev/sda4 /tmp ext3 defaults,nodev,noexec,nosuid 1,2&lt;br /&gt;Que le dice a linux que no puedan crearse dispositvos, ni ejecutables ni archivos setuidados. Hoy en día, también hay que decirlo en honor a la verdad, estas cosas han quedado un tanto obsoletas. La seguridad de servidores se centra en las aplicaciones web y las bases de datos, y no en esto.&lt;br /&gt;&lt;h3&gt;buscar archivos con el suid y el sguid&lt;/h3&gt;La búsqueda la hacemos así: find / (-perm -4000 -o -perm 2000 ) -type f -exec ls {} ;&lt;br /&gt;En la salida, podemos ver que algunos de estos archivos no necesitan estos permisos especiales puestos, por ejemplo:&lt;br /&gt;-rwsr-xr-x 1 root root 47524 2009-12-15 14:43 /bin/umount&lt;br /&gt;-rwsr-xr-x 1 root root 70348 2009-12-15 14:43 /bin/mount&lt;br /&gt;-rwsr-xr-x 1 root root 36876 2009-07-26 14:22 /bin/ping6&lt;br /&gt;-rwsr-xr-x 1 root root 42072 2009-07-26 14:22 /bin/ping&lt;br /&gt;&lt;h3&gt;Permisos laxos en directorios&lt;/h3&gt;Debemos buscar todos los directorios que tengan permiso de escritura demasiado laxo, por ejemplo directorios con un rw para todos, y que no tengan el sticky bit. Si nos fijamos, /tmp tiene dicho bit, que sirve para que cada usuario sea propietario de sus archivos, aunque todos los usuarios tengan permiso de escritura en el directorio.&lt;br /&gt;ll /|grep tmp&lt;br /&gt;drwxrwxrwt 10 root root 4.0K 2010-01-27 16:35 tmp/&lt;br /&gt;Podemos hacer la búsqueda de archivos con permisos de escritura para “otros” y “todos” con este comando:&lt;br /&gt;find / -type d ( -perm -g+w -o -perm -o+w ) -not -perm -a+t -exec ls -lad {} ;&lt;br /&gt;Cuando obtenemos un directorio con estos permisos, por ejemplo el de debajo, deberemos buscar qué usuarios están en el grupo al que pertenece el archivo y ver que es correcto confiar en que puedan escribir:&lt;br /&gt;drwxrwxr-x 3 root lp 4096 2010-01-20 11:48 /var/cache/cups&lt;br /&gt;En este caso, no pasa nada ya que el grupo es el usuario que se usa para imprimir, lp.&lt;br /&gt;En linux es posible controlar de forma mucho más granular los permisos de los archivos usando ACLs, pero la realidad es que resulta algo incómodo de administrar cuando tienes muchos usuarios y, por lo tanto, se acaba tirando por la calle de en medio y creando unos pocos grupos en los que acaba todo el mundo.&lt;br /&gt;Tipicamente, un servidor linux que tenga una aplicación corriendo de la propia empresa va a tener directorios con los permisos mal puestos. En lugar de perder nuestro tiempo buscando fallos en el sistema operativo que son muy difíciles de explotar, como lo pueda ser que el binario ping esté setuidado, es siempre mejor ir a estos directorios de la empresa e intentar sacar información útil de ellos. Seguramente encontraremos scripts ejecutados por root y con permisos 777. Es cuestión de tiempo.&lt;br /&gt;&lt;h3&gt;logs&lt;/h3&gt;Lo ideal es guardar todos los logs en un servidor remoto. Pero, si esto no se hace, al menos pueden ponerse los archivos de logs como “only append”, así:&lt;br /&gt;chattr +a /var/log/secure&lt;br /&gt;Lo que nunca dicen en los libros, es que la rotación de logs FALLA si se hace esto. En principio parece una tontería, porque /var/log/secure tampoco ocupa tanto, pero si hacemos esto con los logs de, por ejemplo, el apache tendremos que tener cuidado de incluir en nuestros scripts las correspondientes instrucciones para quitar el +a y volverlo a poner al final.&lt;br /&gt;También existe la posibilidad de hacer que sea imposible quitar el +a sin reiniciar el servidor. Para ello hay que modificar CAP_LINUX_IMMUTABLE. Puedes leer más sobre esto, por ejemplo, en &lt;a href="http://www.debian.org/doc/manuals/securing-debian-howto/ch4.en.html" target="_blank"&gt;este link&lt;/a&gt;&lt;br /&gt;De todas formas, no me cansaré de insistir en que lo mejor es guardar los logs en un servidor remoto.&lt;br /&gt;&lt;h3&gt;Permisos mínimos para cada usuario&lt;/h3&gt;Seguramente tendremos unos cuantos usuarios que lleven distintos componentes del servidor, por ejemplo podríamos tener uno para administrar el apache y otro para la base de datos. Pues bien, hay que intentar restringir lo más posible lo que puede hacer cada usuario. Para esto, contamos con sudo.&lt;br /&gt;Por ejemplo, imaginemos que el usuario pepe necesita hacer un backup del directorio etc. En este caso, lo que haremos será incluir una linea en /etc/sudoers conteniendo exactamente el comando del backup, con todos sus parámetros.&lt;br /&gt;No me meto en describir cómo funciona esto porque hay información de sobras en internet, por ejemplo.&lt;br /&gt;&lt;h3&gt;Quitar servicios innecesarios&lt;/h3&gt;Deberemos ver qué servicios corren en la máquina y eliminar aquellos innecesarios. En particular, con netstat -nlp veremos qué programas están escuchando en qué puertos, lo cual permite deshabilitar aquellos que no consideremos oportunos.&lt;br /&gt;Por ejemplo, seguramente querrás quitar ip6tables (salvo que tengas ipv6, que no creo), cups (salvo que des servicios de impresión), …&lt;br /&gt;netstat -nlp|grep 631|grep -v 127.0.0.1&lt;br /&gt;udp 0 0 0.0.0.0:631 0.0.0.0:* 864/cupsd&lt;br /&gt;En Fedora, RedHat y similares, con setup accedemos a habilitar/deshabilitar servicios.&lt;br /&gt;Muchas veces los admins se saltan este paso porque hay un firewall que corta todos los servicios que no escuchan, lo cual está muy bien, pero no debemos olvidar que el hecho de tener un servicio escuchando innecesariamente puede abrirnos las puertas a nuevos ataques, aunque hoy en día esto es un tanto improbable.&lt;br /&gt;&lt;h3&gt;Chroot&lt;/h3&gt;Chroot es un entorno restringido para los usuarios. Digamos que un linux “mínimo” en el que ejecutamos nuestros programas. En principio, una forma muy eficiente de restringir los privilegios de un usuario, como pueda ser el del apache o una base de datos, pero en la práctica resulta un poco complicado de instalar y, sobre todo, de mantener.&lt;br /&gt;Posiblemente el ejemplo más fácil de entender para chroot sea con &lt;a href="http://vsftpd.beasts.org/" target="_blank"&gt;vsftp&lt;/a&gt;, uno de los servidores FTP más seguros actualmente que corre bajo linux. Un usuario que haga loggin bajo chroot estará restringido a su home y no podrá navegar por los directorios y bajarse /etc/passwd, que es la metedura de pata típica al configurar un FTP bajo linux.&lt;br /&gt;Para restringir un usuario en vsftp lo único que hace falta es editar vsftpd.conf y poner chroot_local_user=YES. Esto debería ser suficiente.&lt;br /&gt;Dedicaremos un artículo a cómo configurar chroot para un entorno interesante, y no lo típico que uno se encuentra por la red, que es ftp o ssh.&lt;br /&gt;&lt;h3&gt;Snort&lt;/h3&gt;&lt;a href="http://snort.org/" target="_blank"&gt;Snort&lt;/a&gt; es un detector de intrusos que detecta ataques basado en patrones conocidos. Ya hemos hablado de él en numerosas ocasiones, por ejemplo &lt;a class="broken_link" href="http://hacking-avanzado.blogspot.com/2009/07/joomla-hardening-el-desafio.html" target="_blank"&gt;aquí&lt;/a&gt;.&lt;br /&gt;La instalación de snort y su actualización es totalmente trivial bajándose las reglas de &lt;a href="http://www.emergingthreats.net/index.php/rules-mainmenu-38.html" target="_blank"&gt;emerging-threats&lt;/a&gt;, cosa que en su día explicamos en &lt;a class="broken_link" href="http://hacking-avanzado.blogspot.com/2009/05/instalando-un-ids-para-los-tpv.html" target="_blank"&gt;este post&lt;/a&gt;.&lt;br /&gt;Snort tiene la ventaja de cazar eficientemente escaneos desde herramientas conocidas, como puedan ser&lt;a href="http://www.sensepost.com/research/wikto/" target="_blank"&gt;wikto &lt;/a&gt;o &lt;a href="http://nmap.org/" target="_blank"&gt;nmap&lt;/a&gt;, permitiendo además, combinado con otro HIDS como pueda ser &lt;a href="http://ossec.net/" target="_blank"&gt;ossec&lt;/a&gt;, bloquear la IP atacante al instante.&lt;br /&gt;El problema con snort es que no se entera del tráfico que va por ssl … aparte de no servir para mucho detectando ataques sobre aplicaciones web.&lt;br /&gt;&lt;h3&gt;HIDS/Integrity checkers&lt;/h3&gt;Otra parte importante de la seguridad en linux es tener un buen HIDS (Host Intrution Detection System). Entre ellos, personalmente, me gusta &lt;a href="http://ossec.net/" target="_blank"&gt;ossec&lt;/a&gt;, que corre tanto bajo linux como bajo windows.&lt;br /&gt;Un HIDS tiene una serie de tareas encomendadas, como puedan ser:&lt;br /&gt;- monitorizar cambios en archivos importantes de linux, como puedan ser /etc/passwd o los binarios del sistema.&lt;br /&gt;- detectar, combinado con un sniffer de red, ataques desde otros HOSTs.&lt;br /&gt;- controlar el uso de recursos en busca de posibles ataques por denegación de servicio.&lt;br /&gt;- buscar posibles troyanos, rootkits, backdoors, …, malware en general que haya podido ser instalado por un usuario malicioso (vease la famosa herramienta &lt;a href="http://www.chkrootkit.org/" target="_blank"&gt;chkrootkit&lt;/a&gt;).&lt;br /&gt;- guardar los logs en un servidor remoto donde no puedan ser manipulados&lt;br /&gt;[...]&lt;br /&gt;El problema con los HIDS es que, hoy en día, la mayoría de veces que se entra en un servidor es vía la web y los ficheros que se modifican son los de la aplicación web. En una aplicación con varios miles de archivos asp no es fácil monitorizar la integridad.&lt;br /&gt;Así pues, la instalación de HIDS en servidores, que no niego que sea necesario y que ofrezca “cierta” seguridad, realmente no significa mucho.&lt;br /&gt;&lt;h3&gt;Modificación de banners&lt;/h3&gt;Otra de las cosas típicas que recomiendan en todos los libros de seguridad es modificar los banners de las aplicaciones (ftp, servidor de correo), para añadir un cierto grado de dificultad a la explotación del servicio.&lt;br /&gt;Ciertos servicios, como puedan ser FTP o SSH, son muy fáciles de tocar. Por ejemplo, en vsftp tenemos la opción banner_file, que sirve exactamente para esto. Otros, como sendmail, requieren recompilar.&lt;br /&gt;Este es un ejemplo de banner de POSTFIX modificado:&lt;br /&gt;smtpd_banner = $myhostname ESMTP Sendmail 8.12.9&lt;br /&gt;Con esto conseguiremos confundir a algunas herramientas típicas, como puedan ser &lt;a href="http://nmap.org/" target="_blank"&gt;nmap &lt;/a&gt;o &lt;a href="http://freeworld.thc.org/thc-amap/" target="_blank"&gt;amap&lt;/a&gt;. Pero un hacker no necesita para nada saber la versión exacta de servicio que corre … ¿acaso no es posible lanzar todos los exploits tanto para postfix como para sendmail “a ver si cuela”?&lt;br /&gt;Hoy en día, al tener frameworks como &lt;a href="http://www.metasploit.com/" target="_blank"&gt;metasploit&lt;/a&gt;, no supone ningún esfuerzo lanzar unas docenas de exploits en minutos. Así pues, la seguridad por oscuridad ayuda, pero desde luego muy poquito. No podemos confiar en cambiar los banners.&lt;br /&gt;Seguramente podríamos hablar y hablar de otras medidas de seguridad “a la vieja usanza” que pueden adoptarse en un servidor linux, pero estas son suficientes para pasar al siguiente punto …&lt;br /&gt;&lt;h3&gt;CONCLUSIONES&lt;/h3&gt;De acuerdo, podemos quitar paquetes innecesarios, minimizar los servicios que corren, instalar HIDS, snort, tener logs remotos, buscar backdoors y troyanos en el sistema, cambiar banners, poner los servicios en CHROOT, … Podemos hacer todo esto y más pero, ¿sirve para algo?&lt;br /&gt;Todas estas medidas antes mencionadas son requisito de normas como PCI-DSS, que es obligatorio para manipular tarjetas de crédito, y, sin embargo, siguen robándose tarjetas de crédito. ¿Por qué?&lt;br /&gt;La explicación es que hoy en día nadie tiene demasiado interés en instalar un troyano en un sistema o en intentar explotar una versión vieja de sendmail (cosa casi imposible en una entidad mínimamente importante). Las intrusiones vienen por la web, principalmente vía sql-injection en entornos LAMP, y los hackers no tienen ningún interés en añadir un usuario al sistema.&lt;br /&gt;Lo que se busca es acceder a la base de datos y bajársela, nada más. No importa que sea un entorno chroot, ya que seguiremos podiendo hacer queries contra el mysql, que es realmente lo que necesitamos. Tampoco importa que vigilemos todo el tráfico de entrada en busca de patrones conocidos, puesto que en realidad este tráfico es muy fácil de confundir con tráfico legítimo. ¿Para que sirven los IDS/IPS?&lt;br /&gt;La seguridad “tradicional” a muerto. Hoy en día lo realmente importante es securizar a nivel de aplicación.¿Afrontamos el problema o lo seguimos ignorando?&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-8999402239104031868?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/8999402239104031868/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=8999402239104031868' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/8999402239104031868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/8999402239104031868'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/10/seguridad-en-linux.html' title='Seguridad en Linux'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-8351881716368484178</id><published>2011-10-15T21:42:00.000-07:00</published><updated>2011-10-15T21:42:58.733-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pentaho'/><title type='text'>Novedades de IBM Cognos 10 en el IBM Cognos Performance</title><content type='html'>Tomado de: &lt;a href="http://www.dataprix.com/ibm-cognos-performance-2010-e-ibm-cognos-10"&gt;Novedades Cognos - 10&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="p1"&gt;En el&amp;nbsp;&lt;strong&gt;IBM Cognos Performance &lt;/strong&gt;de Barcelona se presentaron las novedades que incorpora&amp;nbsp;&lt;strong&gt;IBM Cognos 10&lt;/strong&gt;, la última versión de la suite de&amp;nbsp;&lt;em&gt;Business Intelligence&lt;/em&gt;&amp;nbsp;de IBM.&lt;/div&gt;&lt;br /&gt;&lt;div class="p1"&gt;El evento tenía como hilo principal la presentación de esta nueva versión de IBM Cognos, aunque también incluía sesiones de caracter más amplio, con temáticas como la &lt;em&gt;Gestión del Rendimiento Corporativo&lt;/em&gt;, el &lt;em&gt;análisis 'What-if'&lt;/em&gt; y otras soluciones propias del àrea financiera, &lt;em&gt;Business Insight&lt;/em&gt; y &lt;em&gt;Analítica predictica&lt;/em&gt;, y casos de estudio. Para más detalles consultar la &lt;a href="http://www.dataprix.com/empresa/eventos/ibm-cognos-performance-2010"&gt;agenda del evento&lt;/a&gt;.&lt;/div&gt;&lt;div class="rtecenter"&gt;&lt;img alt="Presentación de IBM Cognos 10" border="10" height="268" hspace="10" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20Performance/IBM-Cognos-Performance-2010_3.jpg" title="Presentación de IBM Cognos 10" vspace="1" width="400" /&gt;&lt;/div&gt;&lt;br /&gt;Después de la presentación inicial, se iban realizando dos sesiones en paralelo, una orientada a tecnología y otra a negocio. Había que elegir y realmente me hubiera gustado poder asistir a alguna sesión más. Concretamente, me hubiera gustado estar también en la de &lt;em&gt;'Novedades en IBM Cognos BI Authoring&lt;/em&gt;' y en la de &lt;em&gt;Analítica Predictiva con SPSS&lt;/em&gt;. Si alguien pudo hacerlo le agradezco si quiere &lt;a href="http://www.dataprix.com/forum/2010/11/novedades-ibm-cognos-10-comparaci-n-oracle-bi-11g-sap-bo-4"&gt;aportar alguna información o comentario&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Novedades de IBM Cognos 10&lt;/h2&gt;Sobre IBM Cognos 10, la sensación final que me he llevado es que realmente IBM ha hecho un importante esfuerzo de desarrollo e integración para ofrecer una solución más compacta y a la vez más abierta y usable, sobretodo para el usuario menos técnico que necesita un acceso ágil y sin dificultades tecnológicas a información de diferentes fuentes.&lt;br /&gt;&lt;br /&gt;&lt;img align="left" alt="" border="10" height="260" hspace="10" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20Performance/IBM-Cognos-Performance-2010_2.jpg" vspace="1" width="400" /&gt; Con la creación del espacio de trabajo para el usuario que se ha bautizado como I&lt;strong&gt;BM Cognos Business Insight&lt;/strong&gt; se proporciona al usuario de negocio una herramienta para poder seleccionar objetos de diferentes componentes de la suite, e incluso datos externos de ficheros, Excel, etc., para crearse sus propios cuadros de mando interactivos con cualquier tipo de información que maneja la herramienta. Puede utilizar informes de &lt;em&gt;Report Studio&lt;/em&gt;, resultados analíticos de &lt;em&gt;SPSS&lt;/em&gt;, previsiones de &lt;em&gt;IBM Cognos TM1&lt;/em&gt;, o incluso datos locales.            &lt;br /&gt;Así, puede crearse su propia visión del negocio, con facilidades para el formateado, y posibilidad de profundizar en los datos enlazando al final con las interfaces propias de las herramientas de donde proviene la información.&lt;br /&gt;Me parece importante también la creación de un &lt;strong&gt;buscador&lt;/strong&gt; basado en tecnología Google para que el usuario pueda, aparte de navegar por el explorador de contenidos, buscar todos los objetos que puedan contener información relacionada con las palabras clave que elija.&lt;br /&gt;&lt;br /&gt;También he aclarado un poco &lt;a href="http://www.dataprix.com/forum/2010/11/bi-tambi-n-aprovecha-tir-n-las-redes-sociales"&gt;mis dudas&lt;/a&gt; sobre las nuevas &lt;strong&gt;opciones colaborativas&lt;/strong&gt;. En los informes se pueden agregar comentarios, y se guarda información sobre el autor. Todo queda indexado por el buscador, y para interactuar, o saber más sobre los autores de informes o comentarios se enlaza con el entorno colaborativo de &lt;em&gt;&lt;strong&gt;Lotus Connections&lt;/strong&gt;&lt;/em&gt;, desde donde también se pueden referenciar informes de Cognos. Para mostrar información de fuentes al estilo 2.0 también se pueden utilizar servicios de mashup.&lt;br /&gt;&lt;br /&gt;Me pareció también importante la &lt;strong&gt;integración con SPSS&lt;/strong&gt;, que se puede ver en los &lt;em&gt;BI workspaces de Business Insight&lt;/em&gt;, y en el mismo &lt;em&gt;Report Studio&lt;/em&gt;, donde se pueden utilizar objetos de &lt;em&gt;SPSS&lt;/em&gt; para crear informes de modelos predictivos, por ejemplo.&lt;br /&gt;&lt;br /&gt;&lt;img align="right" alt="Presentación de IBM Cognos 10" border="10" height="220" hspace="20" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20Performance/IBM-Cognos-Performance-2010_1.jpg" title="Presentación de IBM Cognos 10" vspace="1" width="400" /&gt;&lt;br /&gt;&lt;a href="" id="fck_paste_padding"&gt;﻿&lt;/a&gt;Otras novedades que se destacaron son:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Apuesta por la &lt;strong&gt;portabilidad&lt;/strong&gt; y utilización de Cognos con más dispositivos móbiles, creando aplicaciones específicas para poder utilizar el módulo Go Mobile también con &lt;em&gt;iPhone&lt;/em&gt; y &lt;em&gt;iPad&lt;/em&gt;&lt;/li&gt;&lt;li&gt;Posibilidad de creación de informes con &lt;strong&gt;monitorización de indicadores en tiempo real&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Posibilidad de realizar &lt;strong&gt;análisis en modo desconectado&lt;/strong&gt; mediante la creación de informes y cuadros de mando interactivos con capacidades de drill-down en ficheros de formato .mht&lt;/li&gt;&lt;li&gt;Utilidades de &lt;strong&gt;Linaje de datos&lt;/strong&gt; para averiguar fácilmente de dónde proviene la información&lt;/li&gt;&lt;li&gt;Creación instantanea de &lt;strong&gt;escenarios 'What if' de Cognos TM1&lt;/strong&gt;, y creación de &lt;strong&gt;workflows de aprobación&lt;/strong&gt;.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;En cuanto a &lt;strong&gt;rendimiento&lt;/strong&gt;, se anunció una respuesta de las consultas tres veces más rápida con respecto a &lt;em&gt;Cognos 8&lt;/em&gt;, la versión anterior, según pruebas de IBM, y también la posibilidad de desplegar y utilizar la suite en &lt;em&gt;Cloud Computing&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Finalmente, para facilitar los procesos de migración, se presentó la herramienta &lt;strong&gt;IBM Cognos Lifecycle&lt;/strong&gt;, con un asistente que permite buscar diferencias entre informes originales y actualizados a nuevas versiones, y mostrarlos uno junto al otro para examinarlos antes de dar por válida la nueva versión. Comentaron que la migración de &lt;em&gt;Cognos 8&lt;/em&gt; a &lt;em&gt;Cognos 10&lt;/em&gt; puede ser similar en complejidad a una migración de &lt;em&gt;Cognos 7&lt;/em&gt; a &lt;em&gt;Cognos 8&lt;/em&gt;, y que en las pruebas que han hecho con beta testers el 90% de los informes se pueden migrar directamente.&lt;br /&gt;&lt;br /&gt;En definitiva, creo que IBM ha dado un gran paso con esta nueva versión, y que el cambio '&lt;em&gt;generacional&lt;/em&gt;' está más que justificado. Valoro sobretodo el esfuerzo de integracion realizado para poder ofrecer al usuario de negocio un espacio de trabajo con el que poder conocer, analizar, completar y organizarse él mismo toda la información que puede ayudarle a tomar mejores decisiones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-8351881716368484178?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/8351881716368484178/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=8351881716368484178' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/8351881716368484178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/8351881716368484178'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/10/novedades-de-ibm-cognos-10-en-el-ibm.html' title='Novedades de IBM Cognos 10 en el IBM Cognos Performance'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-1532904912314933871</id><published>2011-10-15T21:40:00.000-07:00</published><updated>2011-10-15T21:40:36.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pentaho'/><title type='text'>Cuadros de Mando con Cognos</title><content type='html'>&lt;h1 class="title"&gt;&lt;span style="font-size: small; font-weight: normal;"&gt;Tomado de: &lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm"&gt;Cognos&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;span class="submitted"&gt;&lt;/span&gt;&lt;span class="taxonomy"&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;IBM Cognos 8 BI&lt;/b&gt; es una de las suites de Business Intelligence más utilizadas. Es un software bastante completo, y a la vez manejable, y uno de los líderes del mercado de BI.&lt;br /&gt;Las aplicaciones principales se utilizan desde un portal web que controla el servidor de Business Intelligence, que es el corazón de la herramienta. &lt;br /&gt;Este portal recibe el nombre de &lt;b&gt;Cognos Connection&lt;/b&gt; y desde el mismo, siempre por web, se accede a opciones de administración del entorno y de los servicios, a las diferentes aplicaciones que provee Cognos, a la estructura de carpetas en que se organizan los informes, a los cuadros de mando, y a otros complementos que se pueden integrar en el portal.&lt;br /&gt;Cada aplicación está orientada a cubrir un tipo de necesidades que suelen darse en entornos de este tipo. La mayoría se maneja 100% desde el explorador web, tanto para desarrollar o diseñar informes, eventos y métricas como para consultarlos o realizar tareas de análisis.&lt;br /&gt;Estas son las principales herramientas que proporciona la suite:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Query_Studio"&gt;IBM Cognos Query Studio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Report_Studio"&gt;IBM Cognos Report Studio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Analysis_Studio"&gt;IBM Cognos Analysis Studio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Event_Studio"&gt;IBM Cognos Event Studio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Metric_Studio"&gt;IBM Cognos Metric Studio&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Powerplay_Transformer"&gt;IBM Cognos Powerplay Transformer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Framework_Manager"&gt;IBM Cognos Framework Manager&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Cognos_Planning"&gt;IBM Cognos Planning&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dataprix.com/introduccion-cognos-bi-suite-business-intelligence-ibm#Cognos_TM1"&gt;IBM Cognos TM1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&lt;b&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Query_Studio"&gt;&lt;/a&gt;IBM Cognos Query Studio&lt;/b&gt;&lt;/h2&gt;Es la herramienta más simple, y se podría considerar más bien como un complemento. Su objetivo es permitir al usuario realizar consultas sencillas para resolver rápidamente cuestiones puntuales que le puedan surgir.&lt;br /&gt;Permite acceder a la misma estructura de datos que utilizan las otras herramientas, tanto si se trata de un modelo relacional como si la estructura es dimensional. &lt;br /&gt;Con Query Studio se puede crear un informe en segundos arrastrando campos desde el explorador de datos hasta el área de diseño de informes. Permite también aplicar filtros, ordenaciones, operaciones de agrupación de datos e incluso crear gráficas. También tiene opciones de formateo, aunque bastante limitadas.&lt;br /&gt;Donde está más limitado es precisamente en la aplicación de formato al informe, y en la creación de campos calculados complejos, utilización de parámetros y otras muchas opciones más avanzadas para las que se ha de utilizar Report Studio.&lt;br /&gt;&lt;div class="rtecenter"&gt;&lt;a href="http://www.dataprix.com/empresa/productos/reporting-tablero-control-ibm-cognos-bi"&gt;&lt;img alt="Creación de informes con Query Studio, de IBM Cognos BI" height="416" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20BI/Query-Studio-IBM-Cognos-BI.png" title="Query Studio - IBM Cognos BI" width="600" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Report_Studio"&gt;&lt;/a&gt;IBM Cognos Report Studio&lt;/h2&gt;Es la aplicación principal para la creación de informes. Se asemeja a Query Studio, pero es mucho más completa.&lt;br /&gt;A la izquierda muestra un explorador de objetos desde el que se puede accede a la estructura de datos, y a otros objetos insertables en los informes. A la derecha se encuentra el área de diseño del informe, donde se pueden arrastrar estos objetos e ir componiendo así la estructura.&lt;br /&gt;Estos objetos pueden ser de diferentes tipos: origen de datos, datos específicos del informe y herramientas de diseño. Cada objeto que se incrusta en el informe tiene sus propiedades configurables, y mediante estas se puede llegar a un nivel muy alto de personalización, tanto en los datos que se muestran como en el diseño del formato.&lt;br /&gt;Se puede trabajar tanto con estructuras de datos relacionales como con estructuras dimensionales, sólo hay que tener en cuenta que en función del tipo de origen existen diferencias en cuanto a las propiedades aplicables a los datos, e incluso en cuanto al comportamiento en el área de diseño. Aunque no es obligatorio hacerlo así, para mostrar datos de estructura dimensional, lo más apropiado es utilizar informes de tipo crosstab. Se puede elegir entre varios tipos de estructura básica para los informes.&lt;br /&gt;Existen diferentes tipos de gráficas, e incluso mapas que se pueden incluir en los informes, mostrar de manera individualizada o guardar para formar parte de un cuadro de mando que se mostraría en el portal.&lt;br /&gt;Las opciones de utilización de parámetros y prompts son también bastante completas, aunque la manera en que se definen no es muy intuitiva y resulta un tanto engorrosa. &lt;br /&gt;Como en todos estos tipos de herramientas, se pueden definir filtros, ordenar, agrupar y trabajar con agregados, crear subtotales, campos calculados, formateado condicional. También se puede habilitar el drill up, y drill down, y utilizar drill through.&lt;br /&gt;&lt;div class="rteleft"&gt;Las consultas a orígenes operacionales las realiza con SQL y para los modelos dimensionales utiliza MDX. Las consultas resultantes pueden visualizarse e incluso editarse y modificarse directamente.&lt;/div&gt;&lt;div class="rtecenter"&gt;&lt;a href="http://www.dataprix.com/empresa/productos/reporting-tablero-control-ibm-cognos-bi"&gt;&lt;img alt="Diseño de un Informe con Report Studio de IBM Cognos" height="430" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20BI/IBM-Cognos-BI-Report-Studio.png" title="Report Studio de IBM Cognos" width="600" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Analysis_Studio"&gt;&lt;/a&gt;IBM Cognos Analysis Studio&lt;/h2&gt;Análisis Studio tiene una función similar a Query Studio, pero para orígenes multidimensionales. Esta herramienta permite la navegación por estructuras multidimensionales como cubos OLAP, que no necesariamente han de ser de Cognos. También puede atacar a orígenes de datos relacionales, siempre que estén modelados dimensionalmente desde Framework Manager.&lt;br /&gt;El objetivo principal de este software es permitir que el analista de negocio pueda 'navegar' por los datos cargados en las estructuras dimensionales sin depender del soporte del área de TI. Tal como anuncia el fabricante, utilizando Analysis Studio un usuario de negocio puede realizar análisis complejos y comparativas de datos para descubrir tendencias, riesgos y oportunidades.&lt;br /&gt;El área de trabajo es similar a la de Query Studio y Report Studio y las opciones estandar para la creación de informes son muy similares a las de Query Studio, con aplicación de filtros, ordenaciones, operaciones de agrupación de datos, creación de gráficas, etc.&lt;br /&gt;Además ofrece funcionalidades más orientadas a orígenes dimensionales, como la navegación con drill up / drill down, o la creación de filtros de contexto.&lt;br /&gt;&lt;div class="rtecenter"&gt;&lt;a href="http://www.dataprix.com/empresa/productos/ibm-cognos-8-bi-lisis"&gt;&lt;img alt="Diseño y ejecución de informes con Analysis Studio de IBM Cognos BI" height="543" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20BI/Analysis-studio-IBM-Cognos-bi.png" title="Analysis Studio - IBM Cognos BI" width="600" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Event_Studio"&gt;&lt;/a&gt;IBM Cognos Event Studio&lt;/h2&gt;Esta es la herramienta de notificaciones y alertas de la suite.&lt;br /&gt;Con Event Studio se crean agentes que van chequeando los datos o las KPI's definidas, y detectan eventos importantes para el negocio cuando se alcanzan determinados valores o se cumplen ciertas condiciones.&lt;br /&gt;En ese momento la herramienta pasa a ejecutar las acciones o tareas que se hayan asociado a los eventos. Puede ejecutar o distribuir informes, generar emails, comunicarse con otras herramientas de software, ejecutar jobs u otros agentes, llamar a procedimientos almacenados de bases de datos, o incluso llamar a un Web Service.&lt;br /&gt;Una vez construidos los agentes de Event Studio, con el mismo entorno de Scheduler que se utiliza para planificar la ejecución automatizada de informes, se programa y se controla la ejecución periódica de los mismos.&lt;br /&gt;&lt;div class="rtecenter"&gt;&lt;a href="http://www.dataprix.com/empresa/productos/gesti-n-eventos-ibm-cognos-bi"&gt;&lt;img alt="Creación de Eventos con Event Studio de IBM Cognos BI" height="439" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20BI/Event-Studio-IBM-Cognos-BI.png" title="Event Studio de IBM Cognos BI" width="600" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Metric_Studio"&gt;&lt;/a&gt;IBM Cognos Metric Studio&lt;/h2&gt;Es la herramienta que se utiliza para la construcción de métricas y cuadros de mando.&lt;br /&gt;Con Metric Studio se definen los KPI o Indicadores Clave del Rendimiento del negocio, se organizan y relacionan entre ellos, se asocian a diferentes perfiles, y se monitorizan, permitiendo así comparar en todo momento objetivos frente a rendimiento, y definir acciones automatizadas, como notificaciones en caso de desviaciones.&lt;br /&gt;Con estas métricas se construyen cuadros de mando que permiten a nivel operativo monitorizar el rendimiento frente a los objetivos, y a nivel estratégico 'mapear' la estrategia corporativa y facilitar su transmisión a todos los niveles de la organización.&lt;br /&gt;&lt;div class="rteleft"&gt;Las metricas se pueden construir a partir de diferentes orígenes de datos, tales como cubos OLAP, bases de datos relacionales, hojas de cálculo, ficheros de texto, e incluso valores informados manualmente, y la herramienta dispone de asistentes para facilitar la construcción de las métricas y los cuadros de mando.&lt;/div&gt;&lt;div class="rtecenter"&gt;&lt;a href="http://www.dataprix.com/empresa/productos/cuadro-mando-ibm-cognos-bi"&gt;&lt;img alt="Control de KPI's con Metric Studio de IBM Cognos BI" height="403" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20BI/Metric-Studio-IBM-Cognos-BI.gif" title="Metric Studio de IBM Cognos BI" width="600" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Powerplay_Transformer"&gt;&lt;/a&gt;IBM Cognos Powerplay Transformer&lt;/h2&gt;Las herramientas mencionadas anteriormente permiten acceder a cubos OLAP como origen de datos. IBM Cognos PowerplayTransformer es la herramienta que permite construir cubos OLAP, los llamados IBM Cognos PowerCube. Aunque las herramientas de reporting de Cognos pueden trabajar en ROLAP y atacar bases de datos relacionales, para realizar tareas analíticas lo más eficiente suele ser utilizar un cubo OLAP como origen de datos, es decir, trabajar en MOLAP. Con un volumen de datos controlado los tiempos de respuesta en la utilización de los informes pueden ser mucho mejores.&lt;br /&gt;&lt;div class="rteleft"&gt;Con Powerplay se definen los orígenes de datos, se modeliza la estructura multidimensional que va a conformar el cubo, se valida, y se procede a la construcción del mismo.&lt;br /&gt;Esta herramienta se instala en modo cliente, no se accede por web. Se utiliza de manera independiente para generar los cubos, que es lo que atacan las otras herramientas web.&lt;/div&gt;&lt;div class="rtecenter"&gt;&lt;a href="http://www.dataprix.com/empresa/productos/ibm-cognos-8-bi-lisis"&gt;&lt;img alt="Creación de cubos OLAP con PowerPlay Transformer de IBM Cognos BI" height="431" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20BI/IBM-Cognos-8-Powerplay-Transformer.PNG" title="PowerPlay Transformer de IBM Cognos BI" width="600" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Framework_Manager"&gt;&lt;/a&gt;IBM Cognos Framework Manager&lt;/h2&gt;Esta es la herramienta que se utiliza para la construcción de los metadatos necesarios para que todas las demás funcionen. No suele mencionarse como producto porque es la que utiliza el area técnica para crear los paquetes de metadatos que las herramientas de reporting consultan para mostrar al usuario de negocio una estructura inteligible, y permitir crear un árbol de navegación que acaba consultando los daots de los sistemas origen.&lt;br /&gt;&lt;div class="rtecenter"&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/c8bi/v8r4m0/index.jsp?topic=/com.ibm.swg.im.cognos.ug_fm.8.4.1.doc/ug_fm.html" target="_blank"&gt;&lt;img alt="Creación de Metadatos con Framework Manager de IBM Cognos BI" height="431" src="http://www.dataprix.com/files/uploads/2image/IBM%20Cognos%20BI/IBM-Cognos-8-Framework-Manager.PNG" title="Framework Manager de IBM Cognos BI" width="600" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;Extensiones&lt;/h2&gt;De manera opcional, en la suite también se ofrecen otras herramientas, como &lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Cognos_Planning"&gt;&lt;/a&gt;&lt;a href="http://www.dataprix.com/empresa/productos/ibm-cognos-planning-previsiones-presupuestos-colaborativos"&gt;&lt;b&gt;IBM Cognos 8 Planning&lt;/b&gt;&lt;/a&gt; e &lt;a href="http://www.blogger.com/blogger.g?blogID=24766510" name="Cognos_TM1"&gt;&lt;/a&gt;&lt;a href="http://www.dataprix.com/empresa/productos/ibm-cognos-tm1-gestion-rendimiento"&gt;&lt;b&gt;IBM Cognos TM1&lt;/b&gt;&lt;/a&gt;, dos herramientas orientadas a la presupuestación y planificación financiera, pero cada una más adecuada para un tipo de entorno. &lt;br /&gt;Destacar de TM1 que utiliza tecnología de análisis en memoria, con lo que puede conseguir unos tiempos de respuesta impresionantes.&lt;br /&gt;Por último, hago mención de la versión Express de la Suite, &lt;a href="http://www.dataprix.com/empresa/productos/ibm-cognos-express-solucion-CPM-para-pyme"&gt;&lt;b&gt;IBM Cognos Express&lt;/b&gt;&lt;/a&gt;, que IBM ha preparado &lt;a href="http://www.dataprix.com/blogs/carlos/evento-ibm-cognos-express-saima-solutions"&gt;orientándola a la pequeña y mediana empresa&lt;/a&gt; como una opción más asequible y fácil de implementar.&lt;br /&gt;&lt;br /&gt;Espero que este pequeño repaso a los productos de la suite de IBM Cognos BI os sea de utilidad, cualquier nueva aportación, opinión o comentario serán bienvenidos en la &lt;a href="http://www.dataprix.com/forums/software/ibm-cognos-bi"&gt;sección de IBM Cognos BI del Foro de Dataprix&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24766510-1532904912314933871?l=demetole.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://demetole.blogspot.com/feeds/1532904912314933871/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24766510&amp;postID=1532904912314933871' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/1532904912314933871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24766510/posts/default/1532904912314933871'/><link rel='alternate' type='text/html' href='http://demetole.blogspot.com/2011/10/tomado-de-cognos-ibm-cognos-8-bi-es-una.html' title='Cuadros de Mando con Cognos'/><author><name>Mi Zhurun Querido</name><uri>http://www.blogger.com/profile/03425598385588789087</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24766510.post-1770726161738290408</id><published>2011-10-15T21:31:00.000-07:00</published><updated>2011-10-15T21:31:30.912-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pentaho'/><title type='text'>Cuadros de Mando Pentaho</title><content type='html'>Tomado de: &lt;a href="http://churriwifi.wordpress.com/category/pentaho/"&gt;Cuadro de Mando Pentaho&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="post-2767 post type-post status-publish format-standard hentry category-business-intelligence category-opensource category-pentaho" id="post-2767"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/07/20/17-6-cuadros-de-mando-en-pentaho-con-community-dashboard-framework-cdf/" rel="bookmark" title="Permanent link to 17.6. Cuadros de Mando en Pentaho con Community Dashboard Framework (CDF)."&gt;17.6. Cuadros de Mando en Pentaho con Community Dashboard Framework&amp;nbsp;(CDF).&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 20 julio 2010&lt;/div&gt;&lt;div class="entry"&gt;     &lt;strong&gt;CDF (Community Dashboard Framework)&lt;/strong&gt; es un conjunto de tecnologías Open Source que permite a los desarrolladores BI construir cuadros de mando dinámicos y tableros (Dashboards) para la plataforma BI de Pentaho. Los dashboards CDF son paginas web que utilizan la tecnología Ajax para combinar informes, graficos, tablas Olap y mapas.&lt;br /&gt;Pentaho no esta directamente involucrado en el desarrollo de este proyecto, pero incluye el plugin correspondiente tanto en la versión Community como en la Enterprise. Igualmente, desarrolladores de Pentaho son contribuyentes activos al proyecto.&lt;br /&gt;El proyecto fue iniciado por Ingo Klose en 2007 y posteriormente potenciado por el trabajo de &lt;a href="http://www.webdetails.pt/"&gt;Pedro Alves&lt;/a&gt;, que además colabora en otros proyectos dentro del ambito de Pentaho, como &lt;a href="http://www.webdetails.pt/cda/CDA.pdf"&gt;CDA&lt;/a&gt; (Community Data Access), CBF (Community Build Framework) o CDE (Community Dashboard Editor).&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2859" style="width: 440px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/ejemplo-cdf.jpg"&gt;&lt;img alt="" class="size-full wp-image-2859" height="470" src="http://churriwifi.files.wordpress.com/2010/07/ejemplo-cdf.jpg?w=430&amp;amp;h=470" title="Ejemplo CDF" width="430" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Ejemplo CDF&lt;/div&gt;&lt;/div&gt;Podeís acceder a la documentación existente sobre CDF en el portal de &lt;a href="http://wiki.pentaho.com/display/COM/Community+Dashboard+Framework"&gt;Pentaho&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;Arquitectura de CDF.&lt;/h3&gt;Los dashboards CDF son paginas web que contienen areas llamadas componentes, donde se visualiza contenido BI (informes, gráficos, tablas Olap,etc). Cuando ejecutamos un dashboard en la plataforma BI, se produce la siguiente secuencias de acciones para ejecutarlo en el servidor:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;El usuario utiliza el navegador en la plataforma BI para abrir un tablero. Esto genera una request HTTP que es enviada al servidor BI de Pentaho.&lt;/li&gt;&lt;li&gt;El servidor reconoce una petición de Dashboard e intenta localizar el fichero .xcdf asociado.&lt;/li&gt;&lt;li&gt;El fichero .xcdf determina el template o plantilla del dashboard. Es un fichero HTML parcial que contiene los huecos para los componentes y las instrucciones Javascript para llenar estos componentes. El dashboard template se combina con la plantilla del documento (outer template) para generar una página web (documento HTML). Este segundo template se especifica igualmente en el fichero .xcdf.&lt;/li&gt;&lt;/ol&gt;&lt;div class="wp-caption aligncenter" id="attachment_2874" style="width: 422px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/arquitectura-cdf.jpg"&gt;&lt;img alt="" class="size-full wp-image-2874" height="462" src="http://churriwifi.files.wordpress.com/2010/07/arquitectura-cdf.jpg?w=412&amp;amp;h=462" title="Arquitectura CDF" width="412" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Arquitectura CDF&lt;/div&gt;&lt;/div&gt;&lt;div style="padding-left: 30px;"&gt;4. La página es recibida por el navegador para ser visualizada al usuario.&amp;nbsp; Como parte de este proceso, se inicializa el Dashboard y se ejecutan las instrucciones Javascript del documento, generandose el contenido de los componentes.&lt;br /&gt;5. Despues de la inicialización, se lanza la actualización de los componentes para realizar su llenado. Esto se realiza a través de las correspondientes requests contra el servidor.&lt;br /&gt;6. El servidor Pentaho recibe las solicitudes recibidas por los componentes, que normalmente corresponden a la ejecución de secuencias de acciones (action sequence).&lt;br /&gt;7. El servidor ejecuta la secuencia de acciones.&lt;br /&gt;8. El contenido generado por la secuencia de acciones es enviado como resultado, y es procesado para ser incluido en la pagina web. El resultado llena el correspondiente componente, lo que permite que el resultado sea visible en la página.&lt;/div&gt;Además, en la configuración del plugin se determinan unos templates generales que determinan el marco en el que se visualizan los dashboards y que son totalmente personalizables.&lt;br /&gt;&lt;h3&gt;Ejemplo práctico de CDF.&lt;/h3&gt;Para entender mejor los diferentes elementos que intervienen en la construcción de un dashboard CDF, vamos a ver un ejemplo práctico sencillo detallando todos los componentes que forman el tablero. Partiendo de uno de los ejemplos que se proporcionan en el portal de Pentaho, que tiene el siguiente aspecto:&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2879" style="width: 617px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/cdf-ejemplo.jpg"&gt;&lt;img alt="" class="size-full wp-image-2879 " height="402" src="http://churriwifi.files.wordpress.com/2010/07/cdf-ejemplo.jpg?w=607&amp;amp;h=402" title="CDF - EJemplo" width="607" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;CDF - Ejemplo gráfico interactivo&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Es un tablero interactivo, de forma que podemos pulsar en cada una de las áreas del gráfico de la izquierda. Al pulsar cada sección, se actualiza de forma automática el gráfico de barras de la derecha, con los resultados de la región seleccionada. Para construir un tablero como el del ejemplo, en primer lugar construiremos el fichero .xcdf, donde estableceremos las propiedades generales, así como el nombre del fichero que contiene el outer template. Este será el fichero pentaho_sample.xcdf del tablero de la imagen:&lt;/div&gt;&lt;pre style="padding-left: 30px; text-align: left;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;cdf&amp;gt;&lt;br /&gt; &amp;lt;title&amp;gt;Pentaho Sample&amp;lt;/title&amp;gt;&lt;br /&gt; &amp;lt;author&amp;gt;Webdetails&amp;lt;/author&amp;gt;&lt;br /&gt; &amp;lt;description&amp;gt;Pentaho Sample&amp;lt;/description&amp;gt;&lt;br /&gt; &amp;lt;icon&amp;gt;&amp;lt;/icon&amp;gt;&lt;br /&gt; &amp;lt;template&amp;gt;template.html&amp;lt;/template&amp;gt;&lt;br /&gt;&amp;lt;/cdf&amp;gt;&lt;/pre&gt;&lt;div style="text-align: left;"&gt;En segundo lugar, construiremos el fichero template. html, que incluye la parte html y la parte Javascript que va a determinar como se llenan los diferentes componentes del tablero y como es el comportamiento dinámico de este al pulsar sobre las secciones del gráfico de tarta para ver el desglose de cada una de las zonas.&lt;/div&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;SCRIPT LANGUAGE="JavaScript"&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// This is a custom function that is fired when a user selects a productLine and then want to select a territory&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// Its purpose is to reset the productLine variable back to null and pass the territory that has been selected&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// The function is executed from the url-template tag in the territorySales.xaction&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;function clickOnRegion(value) {&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; department = "null";&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; Dashboards.fireChange('region',value);&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;}&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;&lt;br /&gt;## PARTE HTML DONDE DEFINIMOS LAS SECCIONES Y LAS ETIQUETAS HTML QUE LUEGO SERAN SUSTITUIDAS POR LOS COMPONENTES CDF  ##&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;!-- The page_title_object --&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;h1&amp;gt;&amp;lt;span id=page_title_object&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/h1&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;!-- The dashboard layout table --&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;table align="center" cellpadding="3"&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; &amp;lt;tr&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; &amp;lt;td align="center"&amp;gt;&amp;lt;div id="RegionsPieChartObject"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; &amp;lt;td align="center"&amp;gt;&amp;lt;div id="RegionVarianceBarChartObject"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; &amp;lt;/tr&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; &amp;lt;tr&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; &amp;lt;td align="center"&amp;gt;&amp;lt;div id="DepartmentDialChartObject"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; &amp;lt;td align="center"&amp;gt;&amp;lt;div id="EmbeddedReportObject"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/td&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; &amp;lt;/tr&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;/table&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// Define script variables before script execution&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;var region = "null";&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;var department = "null";&lt;br /&gt;&lt;br /&gt;## DEFINICION DE LOS DIFERENTES COMPONENTES, CON SUS PROPIEDADES y FUNCIONES A EJECUTAR ANTES Y DESPUES DE LA EJECUCION DE CADA UNO&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// pageTitleString component generates the page title with any other parameters is may need to construct the string&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;pageTitleString =&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;{&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; name: "pageTitleString",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; type: "text",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; listeners:["region", "department"],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; htmlObject: "page_title_object",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; executeAtStart: true,&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; expression: function(){return "title"},&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; preExecution:function(){&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; if(region == "null" &amp;amp;&amp;amp; department == "null") {&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; title="Select a region";&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; }&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; else if (region != "null" &amp;amp;&amp;amp; department == "null") {&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; title="This is headcount spending for " + region;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; }&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; else if (region != "null" &amp;amp;&amp;amp; department != "null") {&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; title = "This is headcount spending for " + region + ", " + department;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; }&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; },&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; postExecution:function(){}&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;}&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// RegionsPieChart component generates the&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;RegionsPieChart =&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;{&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; name: "RegionsPieChart",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; type: "xaction",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; solution: "bi-developers",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; path: "cdf-samples/20-samples/pentaho_sample",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; action: "RegionsPieChart.xaction",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; listeners:[],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; parameters: [],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; htmlObject: "RegionsPieChartObject",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; executeAtStart: true&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;}&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// RegionVarianceBarChart component generates the&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;RegionVarianceBarChart =&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;{&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; name: "RegionVarianceBarChart",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; type: "xaction",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; solution: "bi-developers",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; path: "cdf-samples/20-samples/pentaho_sample",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; action: "RegionVarianceBarChart.xaction",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; listeners:["region"],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; parameters: [["REGION","region"]],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; htmlObject: "RegionVarianceBarChartObject",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; executeAtStart: false,&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; preExecution:function(){document.getElementById('DepartmentDialChartObject').innerHTML="";document.getElementById('EmbeddedReportObject').innerHTML="";}&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;}&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// DepartmentDialChart component generates the&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;DepartmentDialChart =&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;{&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; name: "DepartmentDialChart",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; type: "xaction",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; solution: "bi-developers",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; path: "cdf-samples/20-samples/pentaho_sample",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; action: "DepartmentDialChart.xaction",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; listeners:["department"],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; parameters: [["DEPARTMENT","department"],["REGION","region"]],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; htmlObject: "DepartmentDialChartObject",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; executeAtStart: false&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;}&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// EmbeddedReport component generates the&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;EmbeddedReport =&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;{&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; name: "EmbeddedReport",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; type: "xaction",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; solution: "bi-developers",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; path: "cdf-samples/20-samples/pentaho_sample",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; action: "embedded_report.xaction",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; listeners:["department"],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; parameters: [["DEPARTMENT","department"],["REGION","region"]],&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; htmlObject: "EmbeddedReportObject",&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; executeAtStart: false&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;}&lt;br /&gt;&lt;br /&gt;## DEFINICION DE LOS COMPONENTES A SER CARGADOS EN EL DASHBOARD Y LA FUNCION PRINCIPAL DE CARGA DEL TABLERO&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// These are the components to be loaded into the dashboard withing the [] seperated by ,&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;var components = [pageTitleString, RegionsPieChart, RegionVarianceBarChart, DepartmentDialChart, EmbeddedReport];&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// The intial dashboard load function definition&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;function load(){&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt; Dashboards.init(components);&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;}&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;// The intial dashboard load function execution&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;load();&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;div style="padding-left: 30px; text-align: left;"&gt;Como vemos, todo es programación y somos nosotros los que hemos de indicar el comportamiento de los diferentes elementos, compaginandolos con elementos de diseño HTML. En la documentación de &lt;a href="http://wiki.pentaho.com/display/COM/Components"&gt;CDF&lt;/a&gt; se enumeran las propiedades que se pueden definir y los componentes que podemos utilizar dentro de los tableros. Por ejemplo, podremos configurar los siguientes tipos de componentes:&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-check"&gt;check&lt;/a&gt;: crea una lista de casillas de seleccion etiquetadas con los resultados de una determinada secuencia de acciones (leyendo, por ejemplo, de la base de datos).&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#dateInput"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-dateInput"&gt;dateInput&lt;/a&gt;: crear un control de calendario para introducción de fechas.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#radio"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-radio"&gt;radio&lt;/a&gt;: crea una lista de radiobuttons etiquetados con los resultados de una determinada secuencia de acciones.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#select"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-select"&gt;select&lt;/a&gt;: crear una lista de selección simple, que esta llena con los valores recuperados por una determinada secuencia de acciones.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#selectMulti"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-selectMulti"&gt;selectMulti&lt;/a&gt;: igual que el anterior, pero la lista permite selección multiple.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#text"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-text"&gt;text&lt;/a&gt;: permite actualizar el texto de una cadena HTML.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#textInput"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-textInput"&gt;textInput&lt;/a&gt;: crea un campo de entrada de texto.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#xaction"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-xaction"&gt;xaction&lt;/a&gt;: ejecuta una secuencia de acciones y visualiza los resultados en una determinada etiqueta HTML.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#jpivot"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-jpivot"&gt;jpivot&lt;/a&gt;: ejecuta una secuencia de acciones jpivot y visualiza los resultados en un frame donde la tabla jpivot es embebida.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#map"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-map"&gt;map&lt;/a&gt;: componente para integrar mapas.&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;a href="" name="Components-#mapBubble"&gt;&lt;/a&gt;&lt;a href="http://wiki.pentaho.com/display/COM/Components#Components-mapBubble"&gt;mapBubble&lt;/a&gt;: componente para integrar gráficos.&lt;/div&gt;&lt;div style="padding-left: 30px; text-align: left;"&gt;Con el componente jpivot podremos embeber una tabla de análisis dentro del tablero. Con xaction podremos definir una secuencia de acciones (como ejecutar un informe, por ejemplo). Aunque no la hemos analizado, Pentaho proporciona la herramienta llamada &lt;a href="http://wiki.pentaho.com/display/ServerDoc2x/Design+Studio"&gt;Design Studio (PDS)&lt;/a&gt;, basada en el entorno Eclipse, que nos permite crear secuencias de acciones para integrar en el servidor BI. Por ejemplo, podremos crear secuencias de acciones para ejecutar informes o sentencias SQL, para enviar correos electrónicos, obtener datos desde Kettle, realizar acciones sobre el scheduler de la plataforma BI, etc. Podeís ver un resumen de las acciones mas usuales en este &lt;a href="http://wiki.pentaho.com/display/ServerDoc2x/Actions+Glossary"&gt;link&lt;/a&gt;. Los ficheros de secuencia de acciones tiene la extensión .xaction. Un ejemplo de fichero de este tipo para ejecutar un report de PRD es el siguiente:&lt;/div&gt;&lt;pre style="padding-left: 60px; text-align: left;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;action-sequence&amp;gt;&lt;br /&gt; &amp;lt;title&amp;gt;JFreeReport HTML Example&amp;lt;/title&amp;gt;&lt;br /&gt; &amp;lt;version&amp;gt;1&amp;lt;/version&amp;gt;&lt;br /&gt; &amp;lt;logging-level&amp;gt;debug&amp;lt;/logging-level&amp;gt;&lt;br /&gt; &amp;lt;documentation&amp;gt;&lt;br /&gt; &amp;lt;author&amp;gt;James Dixon&amp;lt;/author&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;description&amp;gt;&amp;lt;![CDATA[&lt;br /&gt; This is an example of an HTML report produced by JFreeReport.&lt;br /&gt; &amp;lt;p/&amp;gt;It shows the actual headcount cost, budgeted headcount&lt;br /&gt; cost, and variance for every position in the specified&lt;br /&gt; department and region&lt;br /&gt; ]]&amp;gt;&amp;lt;/description&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;icon&amp;gt;/style/icons/jfree1.png&amp;lt;/icon&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;help/&amp;gt;&lt;br /&gt; &amp;lt;result-type&amp;gt;none&amp;lt;/result-type&amp;gt;&lt;br /&gt; &amp;lt;/documentation&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;inputs&amp;gt;&lt;br /&gt; &amp;lt;REGION type="string"&amp;gt;&lt;br /&gt; &amp;lt;sources&amp;gt;&lt;br /&gt; &amp;lt;request&amp;gt;REGION&amp;lt;/request&amp;gt;&lt;br /&gt; &amp;lt;/sources&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;default-value&amp;gt;&amp;lt;![CDATA[Southern]]&amp;gt;&amp;lt;/default-value&amp;gt;&lt;br /&gt; &amp;lt;/REGION&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;DEPARTMENT type="string"&amp;gt;&lt;br /&gt; &amp;lt;sources&amp;gt;&lt;br /&gt; &amp;lt;request&amp;gt;DEPARTMENT&amp;lt;/request&amp;gt;&lt;br /&gt; &amp;lt;/sources&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;default-value&amp;gt;&amp;lt;![CDATA[Sales]]&amp;gt;&amp;lt;/default-value&amp;gt;&lt;br /&gt; &amp;lt;/DEPARTMENT&amp;gt;&lt;br /&gt; &amp;lt;/inputs&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;outputs&amp;gt;&lt;br /&gt; &amp;lt;report type="content"&amp;gt;&lt;br /&gt; &amp;lt;destinations&amp;gt;&lt;br /&gt; &amp;lt;response&amp;gt;content&amp;lt;/response&amp;gt;&lt;br /&gt; &amp;lt;/destinations&amp;gt;&lt;br /&gt; &amp;lt;/report&amp;gt;&lt;br /&gt; &amp;lt;/outputs&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;resources&amp;gt;&lt;br /&gt; &amp;lt;report-definition&amp;gt;&lt;br /&gt; &amp;lt;solution-file&amp;gt;&lt;br /&gt; &amp;lt;location&amp;gt;embedded_report.xml&amp;lt;/location&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;mime-type&amp;gt;text/xml&amp;lt;/mime-type&amp;gt;&lt;br /&gt; &amp;lt;/solution-file&amp;gt;&lt;br /&gt; &amp;lt;/report-definition&amp;gt;&lt;br /&gt; &amp;lt;/resources&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;actions&amp;gt;&lt;br /&gt; &amp;lt;action-definition&amp;gt;&lt;br /&gt; &amp;lt;component-name&amp;gt;SQLLookupRule&amp;lt;/component-name&amp;gt;&lt;br /&gt; &amp;lt;action-type&amp;gt;Query For Report Data&amp;lt;/action-type&amp;gt;&lt;br /&gt; &amp;lt;action-inputs&amp;gt;&lt;br /&gt; &amp;lt;REGION type="string"/&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;DEPARTMENT type="string"/&amp;gt;&lt;br /&gt; &amp;lt;/action-inputs&amp;gt;&lt;br /&gt; &amp;lt;action-outputs&amp;gt;&lt;br /&gt; &amp;lt;query-result type="result-set" mapping="reportData"/&amp;gt;&lt;br /&gt; &amp;lt;/action-outputs&amp;gt;&lt;br /&gt; &amp;lt;component-definition&amp;gt;&lt;br /&gt; &amp;lt;jndi&amp;gt;SampleData&amp;lt;/jndi&amp;gt; &amp;nbsp;&lt;br /&gt; &amp;lt;query&amp;gt;&amp;lt;![CDATA[select &amp;nbsp;&amp;nbsp; &amp;nbsp;QUADRANT_ACTUALS.REGION,&lt;br /&gt; QUADRANT_ACTUALS.DEPARTMENT,&amp;nbsp; &amp;nbsp;&lt;br /&gt; QUADRANT_ACTUALS.POSITIONTITLE,&amp;nbsp; &amp;nbsp;&lt;br /&gt; QUADRANT_ACTUALS.ACTUAL,&amp;nbsp; &amp;nbsp;&lt;br /&gt; QUADRANT_ACTUALS.BUDGET,&amp;nbsp; &amp;nbsp;&lt;br /&gt; QUADRANT_ACTUALS.VARIANCE &amp;nbsp;&lt;br /&gt; from QUADRANT_ACTUALS&lt;br /&gt; where QUADRANT_ACTUALS.REGION in ( {PREPARE:REGION} )&lt;br /&gt; and QUADRANT_ACTUALS.DEPARTMENT in ( {PREPARE:DEPARTMENT} )&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt; order by QUADRANT_ACTUALS.REGION, QUADRANT_ACTUALS.DEPARTMENT]]&amp;gt;&amp;lt;/query&amp;gt;&lt;br /&gt; &amp;lt;/component-definition&amp;gt;&lt;br /&gt; &amp;lt;/action-definition&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;action-definition&amp;gt;&lt;br /&gt; &amp;lt;component-name&amp;gt;JFreeReportComponent&amp;lt;/component-name&amp;gt;&lt;br /&gt; &amp;lt;action-type&amp;gt;Pentaho Report&amp;lt;/action-type&amp;gt;&lt;br /&gt; &amp;lt;action-inputs&amp;gt;&lt;br /&gt; &amp;lt;data type="result-set" mapping="reportData"/&amp;gt;&lt;br /&gt; &amp;lt;/action-inputs&amp;gt;&lt;br /&gt; &amp;lt;action-resources&amp;gt;&lt;br /&gt; &amp;lt;report-definition type="resource"/&amp;gt;&lt;br /&gt; &amp;lt;/action-resources&amp;gt;&lt;br /&gt; &amp;lt;action-outputs&amp;gt;&lt;br /&gt; &amp;lt;report-output type="content" mapping="report"/&amp;gt;&lt;br /&gt; &amp;lt;/action-outputs&amp;gt;&lt;br /&gt; &amp;lt;component-definition&amp;gt;&lt;br /&gt; &amp;lt;output-type&amp;gt;html&amp;lt;/output-type&amp;gt;&lt;br /&gt; &amp;lt;/component-definition&amp;gt;&lt;br /&gt; &amp;lt;/action-definition&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;/actions&amp;gt;&lt;br /&gt;&amp;lt;/action-sequence&amp;gt;&lt;/pre&gt;&lt;div style="text-align: left;"&gt;En la imagen podeis ver la interfaz de PDS, y un ejemplo de una secuencia de acciones, que se compone básicamente de inputs, acciones (como las que enumeramos anteriormente) y outputs. Los ficheros xaction son publicados en el portal para integrar las acciones descritas en él. Nos puede ser muy útil para automatizar procesos o para distribuir resultados de la ejecución de informes y graficos.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2882" style="width: 685px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/pentaho-design-studio.jpg"&gt;&lt;img alt="" class="size-full wp-image-2882  " height="443" src="http://churriwifi.files.wordpress.com/2010/07/pentaho-design-studio.jpg?w=675&amp;amp;h=443" title="Pentaho Design Studio" width="675" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Pentaho Design Studio&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Como os podeís imaginar, el diseño de los tableros con CDF es todo un reto donde hemos de tener conocimientos profundos en diseño Web, Javascript y además conocer de forma completa el funcionamiento del portal BI y la forma de diseñar secuencias de acciones con Pentaho Design Studio. Podremos construir casi todo lo que queramos, pero con un elevado componente de programación que exige un skill técnico muy elevado, en el que seguramente será necesaria la intervención de varias personas, además del conocimiento del negocio propio de un sistema BI.&lt;/div&gt;&lt;div class="sharedaddy sd-rating-enabled sd-sharing-enabled"&gt;&lt;div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"&gt;&lt;h3 class="sd-title"&gt;Compartelo:&lt;/h3&gt;&lt;div class="sd-content"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="sharing-anchor sd-button share-more" href="http://churriwifi.wordpress.com/category/pentaho/#"&gt;&lt;span&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="share-end"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="category"&gt;Publicado en  &lt;a href="http://churriwifi.wordpress.com/category/business-intelligence/" rel="category tag" title="Ver todas las entradas en Business Intelligence"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/opensource/" rel="category tag" title="Ver todas las entradas en OpenSource"&gt;OpenSource&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/pentaho/" rel="category tag" title="Ver todas las entradas en Pentaho"&gt;Pentaho&lt;/a&gt; |    &lt;a href="http://churriwifi.wordpress.com/2010/07/20/17-6-cuadros-de-mando-en-pentaho-con-community-dashboard-framework-cdf/#comments" title="Comentarios en 17.6. Cuadros de Mando en Pentaho con Community Dashboard Framework (CDF)."&gt;1 comentario&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-2764 post type-post status-publish format-standard hentry category-business-intelligence category-opensource category-pentaho" id="post-2764"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/07/20/17-5-cubos-olap-y-navegacion-dimensional-con-mondrian-jpivot-y-stpivot/" rel="bookmark" title="Permanent link to 17.5. Cubos Olap y navegación dimensional con Mondrian y Jpivot."&gt;17.5. Cubos Olap y navegación dimensional con Mondrian y&amp;nbsp;Jpivot.&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 20 julio 2010&lt;/div&gt;&lt;div class="entry"&gt;     &lt;strong&gt;Pentaho Analysis Services&lt;/strong&gt; es la parte de la plataforma BI de Pentaho que nos proporciona las funcionalidades Olap para el análisis de la información. Nos permite, de una forma interactiva, analizar los datos del Data Warehouse a traves de una interfaz de tabla cruzada donde podemos navegar por las diferentes dimensiones definidas en el modelo dimensional.&lt;br /&gt;En una entrada anterior del &lt;a href="http://churriwifi.wordpress.com/2010/07/04/17-3-preparando-el-analisis-dimensional-definicion-de-cubos-utilizando-schema-workbench/"&gt;blog&lt;/a&gt;, vimos la forma de definir nuestro modelo dimensional utilizando Pentaho Schema Workbench, aunque disponemos de otra herramienta adicional para la construcción de tablas agregadas, llamada &lt;a href="http://mondrian.pentaho.org/documentation/aggregate_tables.php"&gt;Pentaho Agregation Designer&lt;/a&gt; (que permite mejorar la velocidad de ejecución de los análisis).&lt;br /&gt;Una vez definidos los módelos dimensionales, podemos ejecutar nuestros análisis utilizando Jpivot a nivel de interfaz de usuario y Mondrian a nivel del servidor (es la parte que recibe las solicitudes de información de Jpivot, realiza las consultas contra la base de datos y devuelve la información en formato multidimensional).&lt;br /&gt;Vamos a ver un poco como funciona la plataforma utilizando estos componentes y a continuación detallaremos las características mas importantes de Jpivot.&lt;br /&gt;&lt;h2&gt;Arquitectura de PAS.&lt;/h2&gt;Cuando un usuario realiza un análisis a través de Pentaho Analysis Services, se realiza la siguiente secuencia de acciones entre los diferentes componentes que forman la plataforma:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Cuando estamos conectados a la plataforma BI y lanzamos la ejecución de un nuevo análisis, o interactuamos en un análisis ya visualizado (haciendo un drilldown por los datos, por ejemplo,&amp;nbsp; o modificando la vista de los datos o los filtros), se produce una request HTTP, que provoca una secuencia de acciones sobre Jpivot.&lt;/li&gt;&lt;li&gt;El servlet Jpivot recibe la solicitud y la traduce/transforma a una query en lenguaje multidimensional MDX, que es enviada a Mondrian (nuestro servidor ROLAP).&lt;/li&gt;&lt;li&gt;Mondrian interpreta la query MDX y la traduce en una o mas sentencias SQL, que son enviadas a la base de datos relacional.&lt;/li&gt;&lt;li&gt;La base de datos relacional ejecuta las sentencias SQL enviadas por Mondrian y le devuelve los resultados en forma de tabla (la forma tipica de visualizar resultados en cualquier motor de base de datos relacional utilizando el lenguaje de interrogación SQL).&lt;/li&gt;&lt;li&gt;Mondrian procesa los resultados y los traduce a un set de resultados multidimensional. Este set de datos sería la respuesta a la query MDX del punto 2.&lt;/li&gt;&lt;li&gt;Jpivot utiliza los resultados multidimensionales para construir una página HTML para visualizar la información, con la interfaz propia que veremos a continuación.&lt;/li&gt;&lt;/ol&gt;&lt;div class="wp-caption aligncenter" style="width: 370px;"&gt;&lt;img alt="" height="525" src="http://churriwifi.files.wordpress.com/2010/06/arquitectura-mondrian.jpg?w=360&amp;amp;h=525&amp;amp;h=525" title="Arquitectura de Pentaho Analysis Services" width="360" /&gt;&lt;div class="wp-caption-text"&gt;Arquitectura de Pentaho Analysis Services&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;La base para el correcto funcionamiento del sistema y de los diferentes componentes que lo forman, es la definición de los esquemas dimensionales y sus cubos, que habremos realizado previamente utilizando PWD. Mondrian viene instalado en la plataforma BI de Pentaho como un componente integrado. Si quereis profundizar en aspectos concretos de su funcionamiento y configuración, os recomiendo la lectura de la documentación que Pentaho proporciona en su &lt;a href="http://mondrian.pentaho.org/documentation/olap.php"&gt;portal&lt;/a&gt;.&lt;/div&gt;&lt;h2&gt;Jpivot.&lt;/h2&gt;Jpivot es el cliente que vamos a utilizar para visualizar los resultados de los análisis. Para ejecutar un análisis, podemos utilizar uno ya existente que habremos guardado en la correspondiente carpeta de la plataforma, o bien crear uno nuevo desde la opción Nueva vista de análisis, momento en el que se nos pedirá el esquema y el cubo sobre el que queremos construirlo.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2829" style="width: 195px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/seleccion-esquema.jpg"&gt;&lt;img alt="" class="size-full wp-image-2829" height="138" src="http://churriwifi.files.wordpress.com/2010/07/seleccion-esquema.jpg?w=185&amp;amp;h=138" title="Seleccion esquema" width="185" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Seleccion esquema y cubo&lt;/div&gt;&lt;/div&gt;A continuación, nos aparecerá una tabla de Jpivot por defecto, donde aparecerán todas las dimensiones de análisis definidas en el cubo y los indicadores por defecto, con una única linea de resultados totales. Este será el punto de partida sobre el que iremos puliendo nuestro análisis hasta dejarlo de la forma que cumpla nuestros requerimientos de información.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2830" style="width: 558px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/interfaz-jpivot.jpg"&gt;&lt;img alt="" class="size-full wp-image-2830" height="251" src="http://churriwifi.files.wordpress.com/2010/07/interfaz-jpivot.jpg?w=548&amp;amp;h=251" title="Interfaz Jpivot" width="548" /&gt;&lt;/a&gt;&lt;/div&gt;Esta tarea de modificación de los análisis no será siempre necesaria, pues una vez los tengamos preparados, los podremos guardar y reejecutar, manteniendo la configuración de dimensiones, jerarquías, filtros e indicadores de análisis que tuviera la tabla en el momento de ser guardada. Vamos a ver las diferentes opciones de la interfaz de usuario de Jpivot.&lt;br /&gt;La interfaz de usuario de JPivot es muy sencilla. Básicamente, disponemos&amp;nbsp; de una barra de herramientas con botones donde podemos configurar las propiedades que va a tener la tabla donde visualizamos los resultados de los análisis. Veamos uno por uno cada botón (de izquierda a derecha) de la interfaz de usuario.&lt;br /&gt;&lt;div class="mceTemp mceIEcenter"&gt;&lt;dl class="wp-caption aligncenter"&gt;&lt;dt class="wp-caption-dt"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-barra-herramientas.jpg"&gt;&lt;img alt="" class="size-full wp-image-2837" height="29" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-barra-herramientas.jpg?w=423&amp;amp;h=29" title="Jpivot - Barra Herramientas" width="423" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Barra Herramientas&lt;/div&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;&lt;strong&gt;Navegador Olap&lt;/strong&gt;&lt;br /&gt;El primer botón de la barra de herramientas es el navegador Olap que nos permite configurar como Jpivot muestra la información de los cubos en la tabla pivot. Con la herramienta podemos definir que dimension y jerarquia aparece en cada uno de los ejes (filas/columnas), los indicadores que visualizamos en el análisis, filtros, etc. Podemos ir moviendo los diferentes elementos de una sección a otra pulsando los correspondientes iconos a la izquierda de cada elemento hasta dejar el análisis personalizado a nuestra necesidades.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2838" style="width: 130px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-navegador-olap.jpg"&gt;&lt;img alt="" class="size-full wp-image-2838" height="166" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-navegador-olap.jpg?w=120&amp;amp;h=166" title="Jpivot - Navegador Olap" width="120" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Navegador Olap&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;De esta forma, vamos configurando como será la visualización en la tabla. Ademas, podremos modificar la jerarquía visible en cada dimensión (en principio se verá la jerarquía por defecto, para el caso de tener varias jerarquías en la misma dimensión). También podemos seleccionar el nivel dentro de la jerarquía o los elementos a visualizar de todos los disponibles.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2839" style="width: 264px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-seleccion-atributos.jpg"&gt;&lt;img alt="" class="size-full wp-image-2839" height="184" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-seleccion-atributos.jpg?w=254&amp;amp;h=184" title="Jpivot - Selección miembros" width="254" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Selección miembros&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Una vez realizadas las consiguientes modificaciones en el layout, pulsaremos el botón Aplicar y los cambios serán visibles en la tabla pivot.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2840" style="width: 248px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-informe-modificado.jpg"&gt;&lt;img alt="" class="size-full wp-image-2840" height="78" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-informe-modificado.jpg?w=238&amp;amp;h=78" title="Jpivot - Informe Modificado" width="238" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Informe Modificado&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;Editor MDX.&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Como hemos indicado antes, conforme vamos seleccionado las dimensiones e indicadores en el navegador olap, al actualizar la consulta, internamente se traduce a lenguaje MDX que es el que utiliza Mondrian para luego construir las sentencias SQL que se ejecutaran contra la base de datos relacional. Con este control, podemos visualizar la sentencia MDX que se ha construido de forma automática, e incluso, si dominamos este lenguaje, escribir directamente las consultas que darán como resultado la tabla pivot correspondiente.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2841" style="width: 536px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-editor-mdx.jpg"&gt;&lt;img alt="" class="size-full wp-image-2841" height="382" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-editor-mdx.jpg?w=526&amp;amp;h=382" title="Jpivot - Editor MDX" width="526" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Editor MDX&lt;/div&gt;&lt;/div&gt;Habrá que tener en cuenta en la sintaxis de las sentencias &lt;a href="http://en.juantxu.net/doku.php/olap/sintaxismdx"&gt;MDX&lt;/a&gt; como hayamos llamado a las dimensiones, jerarquías e indicadores. Podeis consultar sobre la sintaxis del lenguaje MDX en la correspondiente &lt;a href="http://mondrian.pentaho.org/documentation/mdx.php"&gt;página&lt;/a&gt; de Pentaho.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;Propiedades de visualización.&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;El siguiente grupo de iconos nos permite establecer propiedades de visualización de la tabla de pivoteo sobre los datos.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Mostrar padres&lt;/strong&gt;: podemos forzar la visualización de los elementos padre conforme vayamos profundizando en los datos.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2845" style="width: 472px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-mostrar-padres.jpg"&gt;&lt;img alt="" class="size-full wp-image-2845" height="228" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-mostrar-padres.jpg?w=462&amp;amp;h=228" title="Jpivot - Mostrar Padres" width="462" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Mostrar Padres&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Ocultar repeticiones&lt;/strong&gt;: con esta opción podemos ocultar repeticiones de los valores de los miembros de una jerarquía y asi hacer mas comprensible el análisis de los resultados.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2849" style="width: 334px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-ocultar-repeticiones.jpg"&gt;&lt;img alt="" class="size-full wp-image-2849" height="329" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-ocultar-repeticiones.jpg?w=324&amp;amp;h=329" title="Jpivot - Ocultar repeticiones" width="324" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Ocultar repeticiones&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Suprimir filas/columnas vacias&lt;/strong&gt;: oculta las filas o columnas que no tuviesen valores.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Intercambiar ejes&lt;/strong&gt;: nos permite de una forma rápida pasar las filas a columnas y viceversa, y así cambiar la forma de ver la información.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;Opciones de navegación.&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Una opción muy interesante es determinar la forma en que se realiza la navegación por la tabla. Para ello, tenemos 3 posibles opciones.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Detallar miembro&lt;/strong&gt;: cuando navegamos por un miembro de una dimensión (por ejemplo, el mercado EMEA en la imagen anterior), independientemente de que estemos en un año u otro, se abre el desglose del miembro en todas las ocurrencias que tuviera en la tabla (en los diferentes años en el caso de nuestro ejemplo).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Abrir detalle&lt;/strong&gt;: en contraposición a Detallar miembro, con la opción Abrir detalle sobre se abre el nivel del miembro que hayamos seleccionado, no todas las ocurrencias.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Entrar en detalle&lt;/strong&gt;: cambiamos la forma de navegación, sustituyendo el icono + por una flecha, que nos permite ir bajando y subiendo por la información sin que se vaya realizando un desglose. Es una forma de navegación mucho más util para ir analizando aspectos concretos.&lt;/li&gt;&lt;/ul&gt;Las tres opciones de navegación descritas son excluyentes entre si (solo podremos tener seleccionada una de ellas a la vez).&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2850" style="width: 194px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-entrar-en-detalle.jpg"&gt;&lt;img alt="" class="size-full wp-image-2850" height="294" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-entrar-en-detalle.jpg?w=184&amp;amp;h=294" title="Jpivot - Entrar en detalle" width="184" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Entrar en detalle&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Mostrar datos Origen&lt;/strong&gt;: con esta opción mostramos en la parte inferior de la tabla pivote una tabla adicional donde se muestran los datos originales que dan lugar a los resultados mostrados en la tabla principal. Puede ser útil para buscar determinados valores en registros individuales de datos cuando se produzca una alarma visualizando los resultados de la tabla principal.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;Modo gráfico y exportación PDF/Excel.&lt;/strong&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Finalmente, el ultimo set de botones de la barra de herramientas nos permiten configurar el gráfico que se muestra como complemento de la tabla pivot o realizar la exportación de los resultados en formato PDF o Excel.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Mostrar gráficos&lt;/strong&gt;: al seleccionar la opción, se visualiza adicionalmente un gráfico con los resultados de la tabla. Los tipos de gráfico que se pueden utilizar son de barras, de linea, de area o de tarta.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2847" style="width: 416px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jpivot-tabla-y-grafico1.jpg"&gt;&lt;img alt="" class="size-full wp-image-2847" height="462" src="http://churriwifi.files.wordpress.com/2010/07/jpivot-tabla-y-grafico1.jpg?w=406&amp;amp;h=462" title="Jpivot - Tabla y grafico" width="406" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Jpivot - Tabla y grafico&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Configurar gráficos&lt;/strong&gt;: en esta opción configuramos las propiedades del gráfico (tipo de gráfico, fuentes, titulos, color de fondo, etc).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Configurar impresion&lt;/strong&gt;: configuramos alguna de las propiedades que tendrá el PDF que se genere en la opción Exportar a PDF (titulo, tamaño de tabla, orientación del papel, etc).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Exportar a PDF&lt;/strong&gt;: genera un documento PDF con los resultados de la tabla pivot según la configuración indicada.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Exportar a Excel&lt;/strong&gt;: nos permite exportar la tabla de resultados visibles a un fichero con formato excel.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Otras alternativas. StPivot, Pat y Jrubic/La Azada.&lt;/h2&gt;Jpivot tiene una interfaz algo anticuada y no demasiado vistosa. Por este motivo, han surgido algunas alternativas que tratan de mejorar la experiencia de usuario al trabajar con Mondrian. Podemos destacar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Stpivot&lt;/strong&gt;: como lo llaman en Stratebi, es Jpivot con esteroides. Es una mejora de la interfaz de usuario y algunas funcionalidades realizadas por ellos. Os dejo el link al blog de &lt;a href="http://todobi.blogspot.com/2010/06/stpivot-jpivot-with-steroids.html"&gt;todobi.com&lt;/a&gt; donde podeis ampliar información y ver videos de como &lt;a href="http://www.stratebi.es/todobi/jun10/install_stpivot.rar"&gt;instalarlo&lt;/a&gt; y &lt;a href="http://www.stratebi.es/todobi/jun10/use_stpivot.rar"&gt;utilizarlo&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Jrubik/ La Azada&lt;/strong&gt;: una opción alternativa a la utilización de PAS es utilizar un cliente Olap que ejecutaremos en nuestro PC como un programa más de escritorio. Un ejemplo de este tipo de aplicación es &lt;a href="http://rubik.sourceforge.net/jrubik/intro.html"&gt;Jrubik&lt;/a&gt;, proyecto desarrollado en su día por gente de la Agencia Tributaria en España o el más actual &lt;a href="http://azada.sourceforge.net/"&gt;La Azada&lt;/a&gt;, del que podeis leer mas en este documento publicado por &lt;a href="http://www.stratebi.es/todobi/julio10/La_Azada.pdf"&gt;todobi.com&lt;/a&gt;. Estan totalmente integrados con Mondrian, y aunque tienen algunas limitaciones y bugs, pueden ser una opción interesante.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2851" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/pantallazo-la_azada.png"&gt;&lt;img alt="" class="size-full wp-image-2851" height="426" src="http://churriwifi.files.wordpress.com/2010/07/pantallazo-la_azada.png?w=614&amp;amp;h=426" title="Pantallazo-La_Azada" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Interfaz gráfico de La Azada&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Pat (Pentaho Analysis Tool)&lt;/strong&gt;: es el nuevo proyecto que pretende crear la interfaz del futuro que sustituya a Jpivot. Esta todavía en una fase muy inicial y aun le queda un largo recorrido antes de ser una opción a considerar. Podeis ampliar información sobre el proyecto &lt;a href="http://code.google.com/p/pentahoanalysistool/"&gt;aquí&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2852" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/pat.jpg"&gt;&lt;img alt="" class="size-full wp-image-2852" height="346" src="http://churriwifi.files.wordpress.com/2010/07/pat.jpg?w=614&amp;amp;h=346" title="Pat" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Interfaz de usuario de PAT&lt;/div&gt;&lt;/div&gt;En la próxima entrada del blog concluiremos el análisis de las herramientas de Pentaho en la parte referente a Cuadros de Mando y Dashboard a través del proyecto &lt;em&gt;&lt;a href="http://code.google.com/p/pentaho-cdf/" id="project_summary_link"&gt;Community Dashboard Framework for the Pentaho BI Platform.&lt;/a&gt;&lt;/em&gt;&lt;br /&gt;&lt;div class="sharedaddy sd-rating-enabled sd-sharing-enabled"&gt;&lt;div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"&gt;&lt;h3 class="sd-title"&gt;Compartelo:&lt;/h3&gt;&lt;div class="sd-content"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="sharing-anchor sd-button share-more" href="http://churriwifi.wordpress.com/category/pentaho/#"&gt;&lt;span&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="share-end"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="category"&gt;Publicado en  &lt;a href="http://churriwifi.wordpress.com/category/business-intelligence/" rel="category tag" title="Ver todas las entradas en Business Intelligence"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/opensource/" rel="category tag" title="Ver todas las entradas en OpenSource"&gt;OpenSource&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/pentaho/" rel="category tag" title="Ver todas las entradas en Pentaho"&gt;Pentaho&lt;/a&gt; |    &lt;a href="http://churriwifi.wordpress.com/2010/07/20/17-5-cubos-olap-y-navegacion-dimensional-con-mondrian-jpivot-y-stpivot/#respond" title="Comentarios en 17.5. Cubos Olap y navegación dimensional con Mondrian y Jpivot."&gt;Deja un Comentario »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-2761 post type-post status-publish format-standard hentry category-business-intelligence category-opensource category-pentaho" id="post-2761"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/07/15/17-4-reporting-en-pentaho-con-pentaho-report-designer-otras-posibilidades-de-reporting-birt-y-jasperreports/" rel="bookmark" title="Permanent link to 17.4. Reporting en Pentaho con Pentaho Report Designer. Otras posibilidades de reporting (Birt y JasperReports)."&gt;17.4. Reporting en Pentaho con Pentaho Report Designer. Otras posibilidades de reporting (Birt y&amp;nbsp;JasperReports).&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 15 julio 2010&lt;/div&gt;&lt;div class="entry"&gt;     La plataforma Pentaho nos proporciona dos formas integradas de  realizar reporting, ademas de permitir la utilización e integración de  otras herramientas (como JasperReports o Birt). Las herramientas propias  de Pentaho, como ya vimos, son las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Web Ad Hoc Query and Reporting Client (WAQR)&lt;/strong&gt;:  herramienta integrada en el portal que nos permite realizar querys y  reporting adhoc de una forma intuitiva y sencilla, aunque con  limitaciones.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Pentaho Report Designer (PRD)&lt;/strong&gt;: a través de una  herramienta de diseño desktop, que nos permite definir y construir  nuestros informes, y luego publicarlos en el portal de BI para que  puedan ser ejecutados por los usuarios.&lt;/li&gt;&lt;/ul&gt;Vamos a ver un poco mas en profundidad en que consisten estas herramientas.&lt;br /&gt;&lt;h2&gt;&lt;strong&gt;Web Ad Hoc Query and Reporting Client (WAQR).&lt;/strong&gt;&lt;/h2&gt;EL WAQR es la herramienta de reporting ad-hoc integrada en el portal BI de Pentaho. Accedemos a la herramienta desde la opción de menú Archivo –&amp;gt; Nuevo –&amp;gt; Nuevo report o pulsando el correspondiente Icono en la barra de la aplicación. En ese momento nos aparece un asistente que nos permitirá la construcción de los informes a partir de la información del metadata definida en el sistema (que habremos preparado previamente utilizando Pentaho Metadata Editor, como vimos en la correspondiente entrada del &lt;a href="http://churriwifi.wordpress.com/2010/06/24/17-2-definicion-del-modelo-dimensional-utilizando-schema-workbench-y-agregation-designer/"&gt;blog&lt;/a&gt;).&lt;br /&gt;El asistente dispone de 4 etapas, en las que realizaremos las siguientes acciones:&lt;br /&gt;1) &lt;strong&gt;Select Data Source&lt;/strong&gt;: realizaremos la selección del origen de datos que queremos utilizar. Dispondremos de tantos origenes de datos como Business Model o Modelos de negocio hayamos generado en la definición del Metadata. Seleccionaremos uno de los modelos y tendremos disponibles para los siguientes pasos todas las vistas de negocio y sus correspondientes campos incluidas dentro del modelo de negocio seleccionado. Además, podremos indicar un template o plantilla que nos determinará el formato que va a tener nuestro informe.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2786" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/waqr-1.jpg"&gt;&lt;img alt="" class="size-full wp-image-2786" height="394" src="http://churriwifi.files.wordpress.com/2010/07/waqr-1.jpg?w=614&amp;amp;h=394" title="WAQR 1" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Asistente de la creacion de un informe de WAQR&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;2) Make Selections&lt;/strong&gt;: a continuación, de todas las vistas de negocio incluidas en el modelo de negocio seleccionado, configuraremos la disposición de los resultados del informe, seleccionamos los campos oportunos de cada una de las vistas de negocio disponibles. Seleccionaremos uno a uno los campos y lo llevaremos a las secciones del informe que se encuentran en la parte derecha de este. Tenemos 3 posibles secciones: Groups (campos con los que realizaremos grupos de valores, pudiendo configurar hasta 5 niveles de agrupación), Details (campos que formaran el cuerpo del informe o detalle) y Filters (campos que se utilizaran para restringir los valores devueltos en la ejecución).&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2788" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/waqr-2.jpg"&gt;&lt;img alt="" class="size-full wp-image-2788" height="424" src="http://churriwifi.files.wordpress.com/2010/07/waqr-2.jpg?w=614&amp;amp;h=424" title="WAQR 2" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Selección de campos y configuración de secciones&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;3) Customize Selections&lt;/strong&gt;: en esta tercera pestaña configuraremos aspectos del formato de cada una de las secciones del informe. Por ejemplo, en lo referente a las agrupaciones (Groups), podremos indicar aspectos generales de como se realiza el agrupado (nombre de nivel, repetición de cabecera de grupo, mostrar sumario de grupo, etiqueta para el total por grupo, ruptura de pagina o no en el grupo, ruptura de pagina antes o despues del grupo, alineación, etc), tal y como podeís ver en la imagen siguiente.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2790" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/waqr-3.jpg"&gt;&lt;img alt="" class="size-full wp-image-2790" height="433" src="http://churriwifi.files.wordpress.com/2010/07/waqr-3.jpg?w=614&amp;amp;h=433" title="WAQR 3" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Propiedades de campos y secciones&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Ademas, podemos indicar aspectos de formateo, como mascaras de edición, alineación, forma de ordenación del grupo, condiciones del grupo, etc, tal y como veis en la imagen. Basicamente, tenemos los mismos componentes de formato si estuvieramos modificando los campos seleccionados en la sección Details (detalles).&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2791" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/waqr-4.jpg"&gt;&lt;img alt="" class="size-full wp-image-2791" height="422" src="http://churriwifi.files.wordpress.com/2010/07/waqr-4.jpg?w=614&amp;amp;h=422" title="WAQR 4" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Propiedades de campos y secciones&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Para los campos insertados en la sección Filters, podremos indicar constraints que serán condiciones que limitaran los resultados devueltos por el informe.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;strong&gt;4) Report Settings&lt;/strong&gt;: este será el último paso en la preparación del reporte adhoc. En este paso final indicaremos la orientanción del informe, el tamaño de papel y la configuración de la cabecera y pie de pagina del informe. En este momento, el informe ya esta listo para su ejecución o para ser guardado y reutilizado posteriormente por los usuarios.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2792" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/waqr-5.jpg"&gt;&lt;img alt="" class="size-full wp-image-2792" height="419" src="http://churriwifi.files.wordpress.com/2010/07/waqr-5.jpg?w=614&amp;amp;h=419" title="WAQR 5" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Configuracion del informe y de cabecera y pie de página&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Hemos visto que es una herramienta muy fácil y sencilla de utilizar, y su potencia radica en que hayamos definido correctamente en el metadata los campos a utilizar con las relaciones definidas correctamente entre las tablas que son su origen. Aunque tiene muchas limitaciones, nos puede sacar de un apuro y puede ser sin duda facilmente utilizada por los usuarios finales. Ademas, los resultados del informe los pondremos tener en HTML, PDF, Excel o CSV.&lt;/div&gt;&lt;h2&gt;&lt;strong&gt;Pentaho Report Designer (PRD).&lt;/strong&gt;&lt;/h2&gt;Pentaho Report Designer es una herramienta de reporting que nos permite crear nuestros propios informes, bien para ejecutarlos directamente o para publicarlos en la plantaforma BI y que desde allí puedan ser utilizados por los usuarios. La herramienta es independiente de la plataforma y forma parte del conjunto de herramientas de la suite de Pentaho.&lt;br /&gt;Antes de continuar, os hago una recopilación de la documentación que proporciona Pentaho en su portal &lt;a href="http://wiki.pentaho.com/display/Reporting/Pentaho+Reporting+Community+Documentation"&gt;Wiki&lt;/a&gt; con respecto al reporting.&lt;br /&gt;&lt;h3&gt;&lt;a href="" name="PentahoReportingCommunityDocumentation-UserGuides"&gt;&lt;/a&gt;User Guides&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Formula+Expressions" title="Formula Expressions"&gt;Formula Syntax&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="PentahoReportingCommunityDocumentation-Blogs,Articles,HowTos"&gt;&lt;/a&gt;Blogs, Articles, How-Tos&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://diethardsteiner.blogspot.com/2009/11/using-parameters-in-pentaho-report.html" rel="nofollow"&gt;Diethard Steiner: Using Parameters in queries and datasources in Pentaho Reporting 3.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://diethardsteiner.blogspot.com/2009/10/setting-up-parameter.html" rel="nofollow"&gt;Diethard Steiner: Setting up an “All” Parameter&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://b-e-o.blogspot.com/2009/11/crosstabs-in-prd-35.html" rel="nofollow"&gt;Bart Maertens: Crosstabs in PRD-3.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://michaeltarallo.blogspot.com/2009/11/guided-ad-hoc-with-pentaho-report.html" rel="nofollow"&gt;Michael Tarallo: Guided Ad-Hoc with PRD-3.5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://forums.pentaho.org/showthread.php?t=72548" rel="nofollow"&gt;MDX PARAMETER function&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="PentahoReportingCommunityDocumentation-Books"&gt;&lt;/a&gt;Books&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.packtpub.com/pentaho-reporting-3-5-for-java-developers/" rel="nofollow"&gt;Pentaho Reporting 3.5 for Java Developers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470484322.html" rel="nofollow"&gt;Roland Bouman, Jos van Dongen: Pentaho Solutions: Business Intelligence and Data Warehousing with Pentaho and MySQL &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="PentahoReportingCommunityDocumentation-DeveloperGuides"&gt;&lt;/a&gt;Developer Guides&lt;/h3&gt;A pentaho-reporting-sdk aimed at Java-Developers with simple demos, a detailed step-by-step guide and all the sources for all the libraries used in the demos is available from sourceforge.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/How-To-Confige-Logging" title="How-To-Confige-Logging"&gt;How to configure Logging in Pentaho Reporting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/ClassicDependencies" title="ClassicDependencies"&gt;Dependency documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Pentaho+Reporting%27s+Modular+Design" title="Pentaho Reporting's Modular Design"&gt;Pentaho Reporting’s Modular Design&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Using+the+DocumentBundle+Reader+and+Writer" title="Using the DocumentBundle Reader and Writer"&gt;Using the DocumentBundle Reader and Writer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/JFR8Parameters" title="JFR8Parameters"&gt;Parameter Definitions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/JFR8States" title="JFR8States"&gt;Report Processing State Diagramm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/CodeStyle" title="CodeStyle"&gt;Code-style Definitions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/JFR8FunctionsExpressions" title="JFR8FunctionsExpressions"&gt;Functions And Expressions&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/MetaDataSpec" title="MetaDataSpec"&gt;DataSource MetaData, User-friendly column names and formatting information&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/JFR8AggregateFields" title="JFR8AggregateFields"&gt;Aggregate Fields&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/DrillLinking" title="DrillLinking"&gt;Drill-Linking&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="PentahoReportingCommunityDocumentation-InstallationGuides"&gt;&lt;/a&gt;Installation Guides&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Report+configurations+and+the+boot+process" title="Report configurations and the boot process"&gt;Report configurations and the boot process&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Use+of+TrueType+Fonts" title="Use of TrueType Fonts"&gt;Use of TrueType Fonts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Define+Selectable+Report+Encoding" title="Define Selectable Report Encoding"&gt;Define Selectable Report Encoding&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;a href="" name="PentahoReportingCommunityDocumentation-UserGuides"&gt;&lt;/a&gt;User Guides&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/URL+Parameters+for+the+Report+Viewer+Plugin" title="URL Parameters for the Report Viewer Plugin"&gt;URL Parameters for the Report Viewer Plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/PluginParameterNames" title="PluginParameterNames"&gt;Reserved Parameter Names&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Classic+Engine+Algorithm" title="Classic Engine Algorithm"&gt;Classic Engine Algorithm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Layout+Restrictions+for+Table-based+and+Plain-Text+output" title="Layout Restrictions for Table-based and Plain-Text output"&gt;Layout Restrictions for Table-based and Plain-Text output&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/JFR8StyleKeys" title="JFR8StyleKeys"&gt;Style-Keys Reference&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/Subreport+Guide" title="Subreport Guide"&gt;Subreport Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/PreProcessorIntroduction" title="PreProcessorIntroduction"&gt;Introduction to Report Pre-Processors&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/FontExportPdfGuide" title="FontExportPdfGuide"&gt;Fonts: Export to PDF and missing Unicode characters&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/TimeSeriesChartingGuide" title="TimeSeriesChartingGuide"&gt;Timeseries-Charting in Report-Designer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/LinksAndDrillDown" title="LinksAndDrillDown"&gt;Links and Drill-Down&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://wiki.pentaho.com/display/Reporting/SelfSignedCertificates" title="SelfSignedCertificates"&gt;Using Self-Signed Certificates with SSL (HTTPS) Connections&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Pentaho Report Designer nos permite trabajar con multiples origenes de datos (JDBC, Olap4J, Pentaho Analysis, Pentaho Data Integration, XML) incluido el metadata que tengamos definido en nuestro sistema. También nos permite modificar los informes ad-hoc que hayamos creado utilizando WAQR (de hecho es la única forma de modificarlos). El motor de reporting de Pentaho esta basado en JFreeReports y ha sido totalmente rediseñado en lo que llaman PRD (Pentaho Report Designer). PRD es un generador de informes del tipo Banded (en contraposición de los generadores orientados a flujo),&amp;nbsp; en los que un informe se divide en secciones o grupos de datos en los que los elementos del informe pueden ser posicionados. Esta forma de trabajar tiene algunas limitaciones, que se pueden superar con el uso de subinformes. El resultado de los informes que vamos diseñado se puede ver con las opciones de previsualización, y nos permite la salida de resultados en diferentes formatos como PDF, HTML, XLS, RTF y CSV.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2801" style="width: 727px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/ejemplo-informe.jpg"&gt;&lt;img alt="" class="size-full wp-image-2801" height="448" src="http://churriwifi.files.wordpress.com/2010/07/ejemplo-informe.jpg?w=717&amp;amp;h=448" title="Ejemplo Informe" width="717" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Interfaz de usuario de PRD&lt;/div&gt;&lt;/div&gt;A continuación vamos a realizar un ejemplo de utilización conectandonos a una base de datos Oracle para obtener diferentes informes de ventas, que nos permitira ver las funcionalidades básicas de PRD, así como todos los elementos que forman su interfaz de usuario.&lt;br /&gt;&lt;strong&gt;Estructura de los informes.&lt;/strong&gt;&lt;br /&gt;Tal y como vemos en la imagen anterior, cuando creamos un informe partimos de una estructura estandar que incluye una serie de secciones que podremos utilizar o no. Las secciones mas habituales son las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Page Header/Page Footer&lt;/strong&gt;: el contenido indicado en estas secciones sera visible en cada una de las páginas del informe, en cabecera o pie de página según la sección seleccionada.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Report Header/ Report Footer&lt;/strong&gt;: el contenido indicado será visible solo una vez, al principio del informe o al final de este. Puede ser utilizado para indicar un titulo o un resumen del informe (en la primera página) o para presentar totales o conclusiones en la última página.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Group Header/ Group Footer&lt;/strong&gt;: cuando estamos trabajando con grupos de información, disponemos de estas dos secciones para abrir o cerrar cada grupo de información (sacar titulo al inicio o al final, subtotales, etc).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Details Body&lt;/strong&gt;: es la seccion que contiene la información detallada (fila por fila) recuperada de la base de datos. Tambien incluye las secciones &lt;strong&gt;Details Header y Footer&lt;/strong&gt; para incluir cabeceras o titulos y pies.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;No Data&lt;/strong&gt;: es una sección especial que se visualizara en el informe en el caso de que el set de resultados del informe este vacio.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Watermark&lt;/strong&gt;: es una sección especial que nos permite definir una marca de agua (o fondo) que se imprimira como base del informe en cada página de este.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2807" style="width: 692px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/secciones1.jpg"&gt;&lt;img alt="" class="size-full wp-image-2807" height="573" src="http://churriwifi.files.wordpress.com/2010/07/secciones1.jpg?w=682&amp;amp;h=573" title="Secciones" width="682" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Ejemplo de informe donde podemos ver las secciones que lo forman&lt;/div&gt;&lt;/div&gt;En la imagen podeis ver un ejemplo de informe donde se utilizan algunas de las secciones descritas anteriormente (Cabecera de página para incluir el log de una empresa, Report Footer para incluir un gráfico resumen de los datos, cabecera y pie de grupo, detalle, etc). Podeis igualmente ver en la parte derecha del informe la sección Data que veremos mas adelante para definir los origenes de datos, la query que utilizaremos para recuperar datos, así como las funciones y fórmulas para hacer cálculos.&lt;br /&gt;&lt;strong&gt;Componentes.&lt;/strong&gt;&lt;br /&gt;En la parte izquierda de la pantalla, disponemos de una barra de herramienta en las que tenemos los diferentes componentes que podemos utilizar al definir un informe (tal y como vemos en la imagen siguiente). Vamos a ver en detalle cada uno de ellos (de derecha a izquierda según aparecen en la imagen):&lt;br /&gt;&lt;strong&gt; &lt;/strong&gt;&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2806" style="width: 602px;"&gt;&lt;strong&gt;&lt;strong&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/componentes.jpg"&gt;&lt;img alt="" class="size-full wp-image-2806" height="30" src="http://churriwifi.files.wordpress.com/2010/07/componentes.jpg?w=592&amp;amp;h=30" title="Componentes" width="592" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;div class="wp-caption-text"&gt;Componentes de la barra de herramientas&lt;/div&gt;&lt;/div&gt;&lt;strong&gt; &lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Etiqueta (label)&lt;/strong&gt;: elemento básico para añadir texto estático o etiquetas de columna en un informe.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Campo Texto (text-field)&lt;/strong&gt;: para visualizar el contenido de campos de texto recuperados del dataset del informe.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Campo Numérico ( number-field)&lt;/strong&gt;: para visualizar el contenido de campos numéricos recuperados del dataset del informe.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Campo Fecha (date-field)&lt;/strong&gt;: para visualizar el contenido de campos de fecha recuperados del dataset del informe.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Campo Mensaje (message-field)&lt;/strong&gt;: campo avanzado que nos permite combinar texto, referencias a campos y funciones en una única celda de datos. Por ejemplo, podremos definir un campo de este tipo con el contenido: “Cliente: $codigo_cliente domiciliado en: $poblacion”. Los campos precedidos por $ se refieren a campos del dataset.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Etiqueta de recurso (resource-label)&lt;/strong&gt;: basandonos en un fichero de recursos, PRD puede traducir etiquetas de textos a otros idiomas.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Campo de recurso (resource-field)&lt;/strong&gt;: idem que el anterior, pero para campos.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Mensaje de recurso (resource-message)&lt;/strong&gt;: idem que el anterior, pero para mensajes.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Campo Imagen (content-field)&lt;/strong&gt;: para visualizar campos del dataset que sean imagenes (recuperados, por ejemplo, de la base de datos).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Imagen (image)&lt;/strong&gt;: visualiza una imagen proveniente de un archivo o de una URL.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Elipse (ellipse)&lt;/strong&gt;: dibuja una elipse en el informe.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Rectangulo (rectangle)&lt;/strong&gt;: dibuja un rectangulo en el informe.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Linea horizontal (horizontal-line)&lt;/strong&gt;: dibuja una linea horizontal en el informe.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Linea vertical (vertical-line)&lt;/strong&gt;: dibuja una linea vertical en el informe.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gráfico de escala (survey-scale)&lt;/strong&gt;: para dibujar un mini-grafico para representar una escala de 1 a 5.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Grafico (char)&lt;/strong&gt;: inserta un gráfico de análisis, que se podrá editar mediante el correspondiente editor. Nos permite crear gráficos de barras, de área, de tarta, de lineas, de burbujas, de anillo, radar, etc.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2810" style="width: 688px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/editor-graficos.jpg"&gt;&lt;img alt="" class="size-full wp-image-2810" height="356" src="http://churriwifi.files.wordpress.com/2010/07/editor-graficos.jpg?w=678&amp;amp;h=356" title="Editor gráficos" width="678" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Editor de gráficos&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Código de barras (simple-barcodes)&lt;/strong&gt;: traduce el contenido de un campo a un código de barras que podrá ser leido por un lector apropiado.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Bar-sparkline&lt;/strong&gt;,&lt;strong&gt;Line-sparkline, &lt;/strong&gt;&lt;strong&gt;Pie-sparkline&lt;/strong&gt;: para crear mini gráficos de barras, lineas o tarta.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Banda (band)&lt;/strong&gt;: elemento para agrupar varios elementos y facilitar su formato de forma conjunta.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;external-element-ﬁeld&lt;/strong&gt;: válido para cargar subreports externos, desde una URL o desde una ubicación de archivos.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SubInforme (subreport)&lt;/strong&gt;: nos permite incluir un subinforme dentro de la ejecución de un informe (y al que podremos pasar también parámetros del propio informe padre).&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Definición de datasets.&lt;/strong&gt;&lt;br /&gt;La parte más importante cuando estemos creando un informe es la definición del dataset, pues va a determinar los datos que vamos a poder utilizar dentro de nuestro informe. PRD nos deja trabajar con varios tipos de origenes de datos, como son JDBC, el Metadata de la plataforma BI,&amp;nbsp; Pentaho Data Integration, origen de datos OLAP, fichero XML, etc. Vamos a ver un ejemplo sencillo utilizando JDBC como origen de datos.&lt;br /&gt;&lt;div style="text-align: left;"&gt;En primer lugar, configuraremos el origen de datos al que nos vamos a conectar utilizando JDBC. A continuación, definiremos las querys que van a determinar los datos devueltos desde el origen de datos, tal y como vemos en la imagen.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2812" style="width: 593px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jdbc-data-source.jpg"&gt;&lt;img alt="" class="size-full wp-image-2812" height="424" src="http://churriwifi.files.wordpress.com/2010/07/jdbc-data-source.jpg?w=583&amp;amp;h=424" title="JDBC Data Source" width="583" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Configuración de Dataset - Origen JDBC&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Para la construcción de las querys, tenemos un asistente que nos permite ver las tablas disponibles e ir construyendo las diferentes secciones de la sentencia SQL (Select, From, Where, Group By, Having, Order by). Disponemos la opción Preview para ir visualizando los resultados que devolvería la ejecución de la query.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2814" style="width: 658px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jdbc-data-source2.jpg"&gt;&lt;img alt="" class="size-full wp-image-2814" height="547" src="http://churriwifi.files.wordpress.com/2010/07/jdbc-data-source2.jpg?w=648&amp;amp;h=547" title="JDBC Data Source2" width="648" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Editor de querys&lt;/div&gt;&lt;/div&gt;Una vez concluida la definición de la query, nos aparece en la parte derecha de la aplicación, en la sección Data (tal y como vemos en la imagen siguiente). Tendremos todas las querys que hayamos definido y la lista de campos que devuelve la query, para poder ser utilizados en las diferentes secciones y controles del informe.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2817" style="width: 240px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/jdbc-data-source3.jpg"&gt;&lt;img alt="" class="size-full wp-image-2817" height="345" src="http://churriwifi.files.wordpress.com/2010/07/jdbc-data-source3.jpg?w=230&amp;amp;h=345" title="JDBC Data Source3" width="230" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Sección Data en PRD&lt;/div&gt;&lt;/div&gt;&lt;strong&gt;Uso de parámetros y funciones.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Para poder definir restricciones a los datos que devuelvan los informes, PRD nos permite trabajar con parametros, que se nos pediran en el momento de ejecución del informe y que se podrán incluir en las condiciones de las querys definidas. Podremos definir diferentes tipos de parametros, desde lista simple, lista multiple, casilla de selección, radio button, etc. Los valores a mostrar en los filtros también se pueden hacer que sean determinados por el resultado de ejecución de una query contra base de datos (por ejemplo, una lista de provincias para determinar los resultados que queremos mostrar).&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2818" style="width: 368px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/editor-parametros.jpg"&gt;&lt;img alt="" class="size-full wp-image-2818" height="349" src="http://churriwifi.files.wordpress.com/2010/07/editor-parametros.jpg?w=358&amp;amp;h=349" title="Editor Parametros" width="358" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Editor de Parametros&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Para incluir los parametros en la ejecución de las querys, utilizaremos la notación ${nombre_parametro} en el lugar apropiado. Por ejemplo:&lt;/div&gt;&lt;address&gt;SELECT DISTINCT&lt;br /&gt;‘dim_date_en_us’.'year4′,&lt;br /&gt;‘dim_date_en_us’.'quarter_name’,&lt;br /&gt;‘dim_date_en_us’.'month_number’,&lt;br /&gt;‘dim_date_en_us’.'month_name’&lt;br /&gt;FROM&lt;br /&gt;‘dim_date_en_us’&lt;br /&gt;WHERE&lt;br /&gt;‘dim_date_en_us’.'year4′ = ${param_year}&lt;br /&gt;AND ‘dim_date_en_us’.'quarter_name’ IN (${param_quarter})&lt;/address&gt;Observar el uso de un parametro que es una lista de valores en la ultima linea de la sentencia SQL, utilizando el operador IN para que un campo de una tabla se compare contra una lista de valores.&lt;br /&gt;PRD también nos permite la utilización de funciones para realizar calculos y operaciones complejas (incluyendo la utilización de formulas al igual que vimos con PDI).&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2819" style="width: 444px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/07/editor-formulas.jpg"&gt;&lt;img alt="" class="size-full wp-image-2819" height="318" src="http://churriwifi.files.wordpress.com/2010/07/editor-formulas.jpg?w=434&amp;amp;h=318" title="Editor Formulas" width="434" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Editor de fórmulas&lt;/div&gt;&lt;/div&gt;&lt;strong&gt;Uso de subinformes.&lt;/strong&gt;&lt;br /&gt;Otra característica interesante de PRD es la posiblidad de utilizar un informe dentro de otro informe (lo que llaman subinformes). Esto nos puede permitir superar las limitaciones que tiene un generador de informes del tipo Banded. Por ejemplo, lo podremos utilizar para mostrar diferentes vistas del mismo conjunto de datos. Cuando incluimos un subinforme dentro de otro, al hacer doble click accedemos al informe hijo para realizar su modificación y diseño.&lt;br /&gt;Todos los elementos vistos hasta ahora tienen sus correspondientes tablas de propiedades donde podemos configurar su compartamiento, propiedades de formato y visualización, calculos, etc. Disponemos igualmente de una opción de previsualización para ver como quedaría el resultado del informe tras la fase de diseño.&lt;br /&gt;&lt;strong&gt;Publicación y ejecución de informes.&lt;/strong&gt;&lt;br /&gt;Los informes que hayamos creado se pueden ejecutar directamente desde PRD o bien publicarlos en la plataforma BI, momento en el que ya estarán disponibles para ser usados por los usuarios (habrá que acordarse previamente de refrescar la cache del&amp;nbsp; metadata en la plataforma para que tenga en cuenta y sea accsesible el nuevo informe).&lt;br /&gt;&lt;h2&gt;&lt;strong&gt;Otras alternativas. Birt y JasperReports.&lt;/strong&gt;&lt;/h2&gt;Ademas de las herramientas propias de Pentaho, la plataforma nos permite integrar con otras de las herramientas de reporting Open Source mas conocidas, como son &lt;a href="http://www.eclipse.org/birt/"&gt;Birt&lt;/a&gt; y &lt;a href="http://jasperforge.org/projects/jasperreports"&gt;JasperReports&lt;/a&gt;. Os dejo algunos links donde se explica la forma de configurar y ejecutar informes de Birt y Jasper en la plataforma BI de Pentaho.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Ejecución de informes BIRT en la plataforma de Pentaho: &lt;a href="http://wiki.pentaho.com/display/ServerDoc1x/BIRT"&gt;link&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Ejecución de informes JASPER en la plataforma de Pentaho: &lt;a href="http://wiki.pentaho.com/display/ServerDoc1x/Jasper"&gt;link&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;Igualmente, os dejo otros links interesantes donde hablan de la integración de Pentaho con estas herramientas y algunos posibles problemas o cosas a tener en cuenta:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://todobi.blogspot.com/2010/01/integrando-birt-con-pentaho.html"&gt;Todobi.com&lt;/a&gt;: Integrando BIRT con Pentaho.&lt;/li&gt;&lt;li&gt;Eclipse BIRT 2.5 and Pentaho 3.5 Integration and Configuration: &lt;a href="http://ftp.itb.ac.id/pub/sourceforge/b/project/bi/birt25pentaho35/BIRT2.5%20and%20Pentaho%203.5%20Configuration%20Guide.pdf"&gt;link&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;Con el uso de PRD y estas dos herramientas alternativas de reporting quedan mas que cubiertas las necesidades de reporting en la plataforma.&lt;br /&gt;&lt;div class="sharedaddy sd-rating-enabled sd-sharing-enabled"&gt;&lt;div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"&gt;&lt;h3 class="sd-title"&gt;Compartelo:&lt;/h3&gt;&lt;div class="sd-content"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="sharing-anchor sd-button share-more" href="http://churriwifi.wordpress.com/category/pentaho/#"&gt;&lt;span&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="share-end"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="category"&gt;Publicado en  &lt;a href="http://churriwifi.wordpress.com/category/business-intelligence/" rel="category tag" title="Ver todas las entradas en Business Intelligence"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/opensource/" rel="category tag" title="Ver todas las entradas en OpenSource"&gt;OpenSource&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/pentaho/" rel="category tag" title="Ver todas las entradas en Pentaho"&gt;Pentaho&lt;/a&gt; |    &lt;a href="http://churriwifi.wordpress.com/2010/07/15/17-4-reporting-en-pentaho-con-pentaho-report-designer-otras-posibilidades-de-reporting-birt-y-jasperreports/#comments" title="Comentarios en 17.4. Reporting en Pentaho con Pentaho Report Designer. Otras posibilidades de reporting (Birt y JasperReports)."&gt;4 Comentarios »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-2680 post type-post status-publish format-standard hentry category-business-intelligence category-opensource category-pentaho" id="post-2680"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/07/04/17-3-preparando-el-analisis-dimensional-definicion-de-cubos-utilizando-schema-workbench/" rel="bookmark" title="Permanent link to 17.3. Preparando el analisis dimensional. Definición de cubos utilizando Schema Workbench."&gt;17.3. Preparando el analisis dimensional. Definición de cubos utilizando Schema&amp;nbsp;Workbench.&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 4 julio 2010&lt;/div&gt;&lt;div class="entry"&gt;     En lo referente al análisis dimensional, Pentaho nos proporciona en su plataforma BI una solucion &lt;strong&gt;ROLAP&lt;/strong&gt; a través de lo que llaman &lt;strong&gt;Pentaho Analysis Services&lt;/strong&gt;. PAS esta basado en &lt;strong&gt;Mondrian&lt;/strong&gt;, que es el corazon de este, y en &lt;strong&gt;Jpivot&lt;/strong&gt;, que es la herramienta de análisis de usuario, con el que realizamos la navegación dimensional sobre los cubos desde la plataforma BI y visualizamos los resultados de las consultas. Estas son ejecutadas por Mondrian, que traduce los resultados relacionales a resultados dimensionales, que a su vez son mostrados al usuario en formato Html por Jpivot.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2730" style="width: 370px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/arquitectura-mondrian.jpg"&gt;&lt;img alt="" class="size-full wp-image-2730" height="525" src="http://churriwifi.files.wordpress.com/2010/06/arquitectura-mondrian.jpg?w=360&amp;amp;h=525" title="Arquitectura Mondrian" width="360" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Arquitectura Pentaho Analysis Services&lt;/div&gt;&lt;/div&gt;Tal y como vemos en la imagen, donde se representa la arquitectura de Pentaho Analysis Services, el elemento principal del sistema son los &lt;strong&gt;ficheros xml donde se representan los esquemas dimensionales&lt;/strong&gt;. Para construir estos ficheros xml, podriamos utilizar cualquier editor de texto o xml, o bien la herramienta que nos ofrece Pentaho, que se llama Schema Workbench. Pentaho Schema Workbench es la herramienta gráfica que permite la  construcción de los esquemas de Mondrian, y además permite  publicarlos al servidor BI para que puedan ser utilizados en los  analisis por los usuarios de la plataforma.&lt;br /&gt;En los ficheros de esquema XML, se describen la relaciones entre las dimensiones y medidas del cubo  (modelo multidimensional)&amp;nbsp; con las tablas y campos de la base de datos,  a nivel relacional.Este mapeo se utiliza para ayudar la traducción de las querys MDX (que es el lenguaje con el que trabaja Mondrian), y para transformar los resultados recibidos de las consultas SQL a un formato dimensional. Vamos a ver a continuación como utilizar PSW para definir los esquemas de nuestro proyecto y publicar los resultados en el servidor BI. Más adelante veremos como funciona jpivot a nivel de frontend, para sacarle todo el partido a los análisis.&lt;br /&gt;&lt;h2&gt;Pentaho Schema Workbench.&lt;/h2&gt;Como en todas las herramientas de Pentaho, en primer lugar hemos de definir las conexiones a base de datos como paso previo a la configuración de los esquemas. Además, hemos de colocar el driver jdbc en el directorio drivers que cuelga de la instalación de PSW. En nuestro caso, hemos configurado la conexión con Oracle de la siguiente manera:&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2738" style="width: 739px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/definicion-conexion-bd-psw3.jpg"&gt;&lt;img alt="" class="size-full wp-image-2738  " height="195" src="http://churriwifi.files.wordpress.com/2010/06/definicion-conexion-bd-psw3.jpg?w=729&amp;amp;h=195" title="Definicion conexion BD PSW" width="729" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Definición de la conexion a BD en PSW&lt;/div&gt;&lt;/div&gt;Vamos a ver a continuación las tareas básicas para definir un esquema utilizando PSW. Os recomiendo la lectura de la documentación &lt;a href="http://mondrian.pentaho.org/documentation/schema.php"&gt;Online de Pentaho&lt;/a&gt; referente a este tema antes de continuar, pues en ella se explican los conceptos básicos que tendremos que conocer para realizar el diseño de forma correcta.&lt;br /&gt;En primer lugar, procederemos a crear el&lt;strong&gt; Esquema&lt;/strong&gt;. Un esquema es un contenedor de cubos (tendra un único fichero xml), donde podremos crear tantos cubos como deseemos. La propiedades que se pueden indicar al crear un esquema son un nombre, la descripción, un nombre para la dimensión que agrupara a las medidas y un rol por defecto para utilizar en las conexiones de base de datos. Como ayuda en este momento y en la creación del resto de elementos, podemos poner el ratón en el nombre del atributo a definir, y nos aparecera un texto explicativo de este (tal y como veis en la imagen siguiente).&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2741" style="width: 579px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/creacion-esquema.jpg"&gt;&lt;img alt="" class="size-full wp-image-2741 " height="260" src="http://churriwifi.files.wordpress.com/2010/06/creacion-esquema.jpg?w=569&amp;amp;h=260" title="Creacion esquema" width="569" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Creacion esquema&lt;/div&gt;&lt;/div&gt;Una vez creado el esquema, procederemos a la creación de los &lt;strong&gt;Cubos&lt;/strong&gt;, aunque previamente hemos de hacer una consideración.&amp;nbsp;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;En cada cubo, podemos definir la estructura de tabla de hechos,  medidas, miembros calculados y dimensiones. La dimensiones y sus  jerarquias podemos definirlas dentro de cada cubo, o crearlas de una  forma general dentro del esquema, y luego utilizarlas en los cubos que nos interesen. &lt;/strong&gt;Esto nos evita tener que definir varias veces lo mismo para cada uno de los cubos, así como reutilizar elementos ya definidos que se tratan en varios cubos. Esta será mi elección de diseño. Por tanto, antes de crear los cubos vamos a crear las dimensiones compartidas con sus correspondientes jerarquías.&lt;br /&gt;&lt;h3 style="text-align: left;"&gt;&lt;strong&gt;Creación de dimensiones compartidas.&lt;/strong&gt;&lt;/h3&gt;&lt;div style="text-align: left;"&gt;Para añadir las dimensiones, seleccionaremos el esquema y pulsaremos la opción &lt;strong&gt;Add Dimension&lt;/strong&gt;. Le daremos un nombre significativo a la dimensión, y seleccionaremos su tipo (TimeDimension en este caso) y una descripción.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2742" style="width: 678px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/creacion-dimension.jpg"&gt;&lt;img alt="" class="size-full wp-image-2742 " height="314" src="http://churriwifi.files.wordpress.com/2010/06/creacion-dimension.jpg?w=668&amp;amp;h=314" title="Creacion dimension" width="668" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Creacion dimension compartida&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;A continuación, iremos creando las diferentes&lt;strong&gt; jerarquias&lt;/strong&gt; que tenga la dimensión. Por ejemplo, en nuestra dimensión tiempo tenemos la jerarquías: Año – Mes – Dia, Semana – Dia, Año – Trimestre – Mes – Dia, etc. Como veis, podemos tener tantas jerarquías como deseemos. Las jerarquías son los niveles de análisis y detalle de la información de nuestro modelo dimensional, que luego nos permitiran realizar el análisis y la navegación por los datos utilizando Mondrian. En cada jerarquía, indicaremos una serie de parámetros (importantes el hasAll, si queremos que haya un agrupador de todos los valores de la jerarquía, y su descripcion en el caso de que este marcado (allMemberName)). Igualmente importante la clave de la jerarquía y una descripción que luego nos aparecerá al configurar la ejecución del cubo.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2743" style="width: 564px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/creacion-jerarquia-dimension.jpg"&gt;&lt;img alt="" class="size-full wp-image-2743" height="223" src="http://churriwifi.files.wordpress.com/2010/06/creacion-jerarquia-dimension.jpg?w=554&amp;amp;h=223" title="Creacion jerarquia dimension" width="554" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Propiedades de la jerarquía de una dimension&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Para cada jerarquía, indicaremos una tabla de la dimensión, y a continuación iremos creando los diferentes &lt;strong&gt;Niveles (levels)&lt;/strong&gt; que componen la jerarquía.Para cada nivel, iremos indicando la columna de la base de datos que la describe, el tipo de datos, el tipo de nivel, la columna que contiene la descripción, etc. Esto lo realizaremos para cada uno de los niveles de la jerarquía. El orden con el que vamos creandolos determina la estructura de la jerarquía.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2744" style="width: 703px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/creacion-jerarquia-dimension-2.jpg"&gt;&lt;img alt="" class="size-full wp-image-2744 " height="388" src="http://churriwifi.files.wordpress.com/2010/06/creacion-jerarquia-dimension-2.jpg?w=693&amp;amp;h=388" title="Creacion jerarquia dimension 2" width="693" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Creación de niveles dentro de la jerarquía&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Podemos tener tantas jerarquías como sea necesario dentro de la dimensión. Luego podremos utilizar la que deseemos a la hora de realizar los análisis (la primera será la jerarquía por defecto). Una vez concluido el diseño de todas las dimensiones con sus correspondientes jerarquías, ya podemos proceder a la creación de los cubos.&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;Creación de Cubos.&lt;/h3&gt;&lt;div style="text-align: left;"&gt;Al crear el &lt;strong&gt;Cubo&lt;/strong&gt;, le indicaremos un nombre y una descripción, pudiendo marcar ademas las opciones cache (para que Mondrian trabaje con cache en este cubo) y la opción enabled (para que el cubo sea visible. Sino esta marcada este flag, el cubo no aparecerá).&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2745" style="width: 543px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/creacion-cubos.jpg"&gt;&lt;img alt="" class="size-full wp-image-2745 " height="371" src="http://churriwifi.files.wordpress.com/2010/06/creacion-cubos.jpg?w=533&amp;amp;h=371" title="Creacion Cubos" width="533" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Creacion del Cubo&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;A continuación, seleccionaremos la &lt;strong&gt;Tabla de Hechos&lt;/strong&gt; del cubo (a partir de la cual podremos calcular las medidas o indicadores). Antes de proceder a crear las medidas, seleccionaremos las dimensiones que queremos incluir en el cubo, con la opción&lt;strong&gt; Add Dimension Usage&lt;/strong&gt;. Incluiremos todas las dimensiones necesarias(de las compartidas que hemos creado antes). El cubo hereda todas las características que hayamos incluido en la dimensión, incluyendo todas las jerarquías y sus correspondientes atributos.&lt;/div&gt;&lt;div style="text-align: left;"&gt;Como ultimo paso en la creación del cubo, nos tocará definir las &lt;strong&gt;Medidas&lt;/strong&gt;, que van a ser los valores de análisis. Tenemos aquellas que se calculan directamente con campos de la base de datos, y los &lt;strong&gt;Miembros Calculados&lt;/strong&gt;, que son formulas en las que utilizamos otras medidas.&amp;nbsp; Los atributos que podemos indicar para las Medidas son su nombre, descripción, función de agregación (suma, media, valor máximo, valor mínimo, contador, etc), la columna que genera la medida, si es visible o no (puede interesar que campos intermedios que se utilizan para otras medidas no se vean), tipo de datos, formato y caption (nombre que aparecera cuando lo utilicemos).&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2750" style="width: 543px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/creacion-medida.jpg"&gt;&lt;img alt="" class="size-full wp-image-2750 " height="371" src="http://churriwifi.files.wordpress.com/2010/06/creacion-medida.jpg?w=533&amp;amp;h=371" title="Creacion Medida" width="533" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Creacion Medida&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;En lo referente a los &lt;strong&gt;Miembros Calculados, &lt;/strong&gt;los atributos están mas limitados. Podremos indicar su nombre, descripción, caption (nombre que aparecerá en los análisis), si es visible o no, y el atributo mas importante, la formula que genera el valor de la medida calculada. Para indicar los valores de otras medidas, utilizamos la notación [dimension_medidas].[medida]. Por ejemplo, para calcular el importe bruto de ventas, la formula, siguiendo esta notación sera la siguiente:&lt;em&gt; [Measures].[Unidades]*[Measures].[Precio_Bruto]&lt;/em&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/creacion-miembro-calculado.jpg"&gt;&lt;img alt="" class="aligncenter size-full wp-image-2751" height="371" src="http://churriwifi.files.wordpress.com/2010/06/creacion-miembro-calculado.jpg?w=533&amp;amp;h=371" title="Creacion Miembro Calculado" width="533" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h3 style="text-align: left;"&gt;Publicación del Esquema y utilización desde el portal BI.&lt;/h3&gt;&lt;div style="text-align: left;"&gt;Hemos visto los elementos básicos que podemos utilizar en la definición de un esquema de Mondrian y sus cubos. Disponemos de otros elementos, como los NS (Named Set) o los UDF (User Defined Functions), así como los elementos virtuales (Cubos, Dimensiones y Medidas), en los que no vamos a entrar en detalle. Tras construir el esquema, el paso final para poder utilizarlo en los análisis del portal BI de Pentaho es su publicación. Para ello, salvamos el cubo y seleccionamos la opción de menú File –&amp;gt; Publish. Se nos pide la dirección de publicación del servidor, la contraseña de publicación y los datos del usuario. Se realiza la conexión con el servidor y el esquema ya esta disponible para ser utilizado.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2753" style="width: 265px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/publicacion-cubo.jpg"&gt;&lt;img alt="" class="size-full wp-image-2753 " height="248" src="http://churriwifi.files.wordpress.com/2010/06/publicacion-cubo.jpg?w=255&amp;amp;h=248" title="Publicacion Cubo" width="255" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Publicacion de un esquema de Mondrian desde PSW&lt;/div&gt;&lt;/div&gt;Accedemos al portal para ver si esto es asi. Al crear una nueva vista de análisis, nos aparecen los diferentes esquemas disponibles, y ya aparece el nuestro, ademas de los esquema de demostración que incluye el servidor. Tal y como veis en la imagen, disponemos de nuestro primer análisis. Aparecen todas las dimensiones (aunque solo se visualiza una jerarquía por dimensión) y solo se ve una medida de todas las que hayamos definido.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/ejemplo-analisis-1.jpg"&gt;&lt;img alt="" class="aligncenter size-full wp-image-2754" height="446" src="http://churriwifi.files.wordpress.com/2010/06/ejemplo-analisis-1.jpg?w=503&amp;amp;h=446" title="Ejemplo analisis 1" width="503" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Aunque veremos más adelante todas las opciones que podremos utilizar con Mondrian y jpivot, rapidamente modificamos el análisis, modificando la configuración de las dimensiones y los indicadores de análisis, y nos queda algo así. Hemos dejado solo la dimensión tiempo, con la jerarquía Año-Mes-Dia partiendo del nivel de mes, y hemos modificado los indicadores (medidas) que se visualizan.&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2755" style="width: 594px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/ejemplo-analisis-2.jpg"&gt;&lt;img alt="" class="size-full wp-image-2755  " height="400" src="http://churriwifi.files.wordpress.com/2010/06/ejemplo-analisis-2.jpg?w=584&amp;amp;h=400" title="Ejemplo analisis 2" width="584" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Ejemplo de análisis sencillo&lt;/div&gt;&lt;/div&gt;Con la definición del metadatos que vimos en la entrada anterior del blog, y la creación y publicación de los esquema de Mondrian que hemos visto aquí, tenemos el portal de BI listo para profundizar en las herramientas de reporting y para sacar todo el partido de los análisis dimensionales. Estos son los aspectos que vamos a ver en profundidad en las próximas entradas del blog.&lt;br /&gt;&lt;div class="sharedaddy sd-rating-enabled sd-sharing-enabled"&gt;&lt;div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"&gt;&lt;h3 class="sd-title"&gt;Compartelo:&lt;/h3&gt;&lt;div class="sd-content"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="sharing-anchor sd-button share-more" href="http://churriwifi.wordpress.com/category/pentaho/#"&gt;&lt;span&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="share-end"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="category"&gt;Publicado en  &lt;a href="http://churriwifi.wordpress.com/category/business-intelligence/" rel="category tag" title="Ver todas las entradas en Business Intelligence"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/opensource/" rel="category tag" title="Ver todas las entradas en OpenSource"&gt;OpenSource&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/pentaho/" rel="category tag" title="Ver todas las entradas en Pentaho"&gt;Pentaho&lt;/a&gt; |    &lt;a href="http://churriwifi.wordpress.com/2010/07/04/17-3-preparando-el-analisis-dimensional-definicion-de-cubos-utilizando-schema-workbench/#comments" title="Comentarios en 17.3. Preparando el analisis dimensional. Definición de cubos utilizando Schema Workbench."&gt;3 Comentarios »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-2587 post type-post status-publish format-standard hentry category-business-intelligence category-opensource category-pentaho" id="post-2587"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/06/24/17-2-definicion-del-modelo-dimensional-utilizando-schema-workbench-y-agregation-designer/" rel="bookmark" title="Permanent link to 17.2. Preparando el reporting. Definición de metadatos con Metadata Editor."&gt;17.2. Preparando el reporting. Definición de metadatos con Metadata&amp;nbsp;Editor.&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 24 junio 2010&lt;/div&gt;&lt;div class="entry"&gt;     La plataforma Pentaho nos proporciona dos formas integradas de realizar reporting, ademas de permitir la utilización e integración de otras herramientas (como JasperReports o Birt). Las herramientas propias de Pentaho son las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Web Ad Hoc Query and Reporting Client (WAQR)&lt;/strong&gt;: herramienta integrada en el portal que nos permite realizar querys y reporting adhoc de una forma intuitiva y sencilla, aunque con limitaciones.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Pentaho Report Designer (PRD)&lt;/strong&gt;: a través de una herramienta de diseño desktop, que nos permite definir y construir nuestros informes, y luego publicarlos en el portal de BI para que puedan ser ejecutados por los usuarios.&lt;/li&gt;&lt;/ul&gt;Para poder trabajar con &lt;strong&gt;WAQR&lt;/strong&gt;, es indispensable tener definido el correspondiente metadatos con &lt;strong&gt;PME (Pentaho Metadata Editor)&lt;/strong&gt;, ya que es el único origen de datos permitido en la plataforma para ese componente. En cambio, con &lt;strong&gt;PRD&lt;/strong&gt; podremos utilizar otros muchos origenes de datos, aunque también podremos utilizar el metadata definido con PME como origen de datos (y asi poner una capa lógica encima del modelo físico que va a facilitar con toda probabilidad el diseño de informes).&lt;br /&gt;Veamos antes de entrar en detalle con &lt;strong&gt;Pentaho Metadata Editor&lt;/strong&gt; cual es el planteamiento de Pentaho respecto a los metadatos.&lt;br /&gt;&lt;h3&gt;&lt;strong&gt;¿Que son los metadatos?&lt;/strong&gt;&lt;/h3&gt;Como hemos visto en varias entradas del blog, los metadatos son información sobre los datos. Se utilizan en las herramientas ETL (como vimos al utilizar Talend), en las herramientas BI (como por ejemplo en Microstrategy) y Pentaho también tiene su propio enfoque.&lt;br /&gt;El metadata de Pentaho esta basado en el estandar &lt;strong&gt;Common Warehouse Metamodel (CWM)&lt;/strong&gt;, que es una especificación creada y mantenida por el &lt;strong&gt;Object Management Group (OMG)&lt;/strong&gt;. Intenta ser un estandar abierto y neutral para permitir el intercambio y representación de metadatos en plataformas Business Intelligence (&lt;a href="http://www.omg.org/technology/cwm"&gt;http://www.omg.org/technology/cwm&lt;/a&gt;).&lt;br /&gt;&lt;h3&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/metadata-en-pentaho.jpg"&gt;&lt;img alt="" class="aligncenter size-full wp-image-2695" height="732" src="http://churriwifi.files.wordpress.com/2010/06/metadata-en-pentaho.jpg?w=467&amp;amp;h=732" title="Metadata en Pentaho" width="467" /&gt;&lt;/a&gt;Ventajas del nivel de metadatos.&lt;/h3&gt;El hecho de poner este nivel de metadatos por encima del nivel físico de las tablas nos proporciona algunas ventajas bastante evidentes a la hora de trabajar con nuestro sistema BI.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Interfaz de usuario mas amigable&lt;/strong&gt;: cuando trabajamos con bases de datos relacionales, se hace complejo la interrogación de la base de datos, pues hay que conocer en profundidad el lenguaje SQL (para sacarle todo el partido a las consultas) y también se hace necesario conocer la estructura física de las tablas. Al poner la capa de metadatos&amp;nbsp; por encima, describimos las tablas, los campos y sus relaciones, y los podemos presentar al usuario de una forma&amp;nbsp; mas comprensible para que construya sus&amp;nbsp; propios reports sin necesidad de conocer la “compleja” realidad que puede haber detras.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Flexibilidad e independencia del esquema físico&lt;/strong&gt;: si tenemos un gran número de informes definidos en nuestro sistema BI, y es necesario cambiar la estructura física de los datos, esto nos obligara a modificar todo los informes para adaptarlos a esta casuística. Al tener la capa de metadatos por enmedio, en un caso como este, modificaremos su esquema con los cambios realizados sin necesidad de modificar los informes. En estos casos, la capa de metadatos nos va a ayudar a absorver el impacto de los cambios en el esquema físico de la base de datos.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Definición de privilegios de acceso&lt;/strong&gt;: normalmente, las bases de datos nos permiten establecer privilegios de acceso sobre los objetos o sobre las operaciones que se realizan sobre ellos. Pero no nos&amp;nbsp; permiten establecer privilegios de acceso sobre la granuralidad de los datos (por ejemplo, limitaciones de lectura según las zonas geográficas, en un tipo ejemplo de informes para delegados regionales). Es decir, no tenemos un control de acceso a nivel de registro. A través de los metadatos, podemos establecer autorizaciones de este tipo bien a nivel de usuario o de rol (grupo de autorizaciones), para establecer politicas de acceso a los datos con alto nivel de detalle.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Gestión de la localizacion (internacionalizacion)&lt;/strong&gt;: la definición de metadatos también nos&amp;nbsp; puede permitir gestionar la internacionalización de un sistema BI, definiendo propiedades como etiquetas o descripciones de las tablas y columnas a nivel de idioma. Cuando se utilizen esos elementos en los informes, aparecerán en el idioma del usuario, recuperando las descripciones (apropiadas a cada lenguaje) del metadatos.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Homogeneización del formateo de datos&lt;/strong&gt;: en un sistema de reporting de BI,&amp;nbsp; por ejemplo, puede ser aconsejable unificar la representación de los datos, especialmente en aquellos tipos de campos que necesita un formateo especial (importe monetarios, por ejemplo), con sus correspondientes indicadores de moneda, simbolo de decimales o de miles. Igual para el caso de links a otros informes o páginas (que se han de representar de una forma especial) o similares. El metadatos también nos puede ayudar en estos casos a definir un formato asociado a los campos, que luego se aplicara cuando sean utilizados en los informes.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Caracteristicas del metadatos de Pentaho.&lt;/h3&gt;Antes de ver como definir nuestro metadatos utilizando PME, vamos a ver como Pentaho utiliza esta capa en la práctica. Cuando definimos el metadatos, al terminar el proceso este queda archivado en un fichero .xmi (o a nivel de base datos, en el repositorio), y se exporta al servidor BI. En este momento ya puede ser utilizado por la herramienta de reporting Adhoc, o bien desde Pentaho Reporting Designer, para construir nuestro propios informes, utilizandolo como si fuese un origen de datos mas (como cualquier origen de base de datos relacional, por ejemplo).&lt;br /&gt;La construcción de los informes se realiza sin necesidad de ver el esquema físico de los datos, sino que utilizamos la definición que se haya descrito en el metadatos. Al ejecutar uno de estos informes, la definición de las querys se guardan en un formato llamado Metadata Query Language (MQL), que se resuelve contra el metadatos, y se traduce a nivel SQL&amp;nbsp; para lanzar la consulta contra la base de datos en el lenguaje que esta entiende. Tenemos por tanto un motor MQL que se encarga de realizar este mapeo entre el esquema Lógico y el esquema Físico (tal y como podeis ver en la imagen anterior).&lt;br /&gt;Podemos hablar de 3 niveles en la definición del metadatos: &lt;strong&gt;physical layer, logical layer y delivery layer&lt;/strong&gt;.&lt;br /&gt;En primer lugar, tenemos el &lt;strong&gt;physical layer&lt;/strong&gt;, que conocen los consultores de BI en profundidad (pues lo han diseñado y construido según los requerimientos). Corresponde a los campos y tablas de la base de datos. Estos objetos son los componentes que nos van a permitir construir el logical layer (pues no tiene sentido que los usuarios finales tengan que conocer como esta creada realmente la base datos).&lt;br /&gt;En el &lt;strong&gt;logical layer&lt;/strong&gt;, las tablas del nivel físico son redefinidas, y enriquecidas con columnas adicionales construidas a partir de las campos de las tablas y operaciones o expresiones sobre ellas. Ademas establecemos relaciones entre las tablas, que serán la forma de extraer información de forma conjunta (joins). Ademas, podemos crear varias tablas lógicas sobre la misma tabla física, para el tratamiento,por ejemplo, de las dimensiones role-playing (la misma tabla de dimensión juega diferentes roles).&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2703" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/lavers-en-pentaho.jpg"&gt;&lt;img alt="" class="size-full wp-image-2703 " height="413" src="http://churriwifi.files.wordpress.com/2010/06/lavers-en-pentaho.jpg?w=614&amp;amp;h=413" title="Layers en Pentaho" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Layers en Pentaho Metadata Editor&lt;/div&gt;&lt;/div&gt;En el &lt;strong&gt;delivery layer&lt;/strong&gt; se realiza una selección de columnas de la capa lógica y se agrupan en unidades que tengan sentido para el usuario de negocio (&lt;strong&gt;Business View&lt;/strong&gt;). Esta es la única parte del metadatos que es visible para los usuarios finales, y partir de ella se realizará la construcción de los informes.&lt;br /&gt;En todos los niveles, podemos definir diferentes elementos, que son principalmente conceptos y propiedades. Ademas, se puede establecer como los conceptos pueden heredar propiedades de otros. Veamos un poco más en detalle en que consiste esto:&lt;br /&gt;&lt;strong&gt;Propiedades&lt;/strong&gt;&lt;br /&gt;Los objetos en el metadata pueden tener un gran número de propiedades. Las propiedades son items con nombres que se usan para asociar diferentes tipos de información a los objetos. Las propiedades se pueden dividir en categorias:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Propiedades generales&lt;/strong&gt;: como el nombre y la descripción.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Propiedades de visualización&lt;/strong&gt;: como fuente de letra, color, etc.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Descriptores de modelo&lt;/strong&gt;: expresiones, tipo de datos, reglas de agregacion, etc.&lt;/li&gt;&lt;/ul&gt;Dependiendo del tipo de objeto con el que estemos&amp;nbsp; trabajando, habra propiedades que seran obligatorias y habrá que definir siempre. Otras estarán o no disponibles según el tipo de objeto.&lt;br /&gt;&lt;strong&gt;Conceptos.&lt;/strong&gt;&lt;br /&gt;Ademas de las propiedades, en el metadata de Pentaho podemos trabajar con una colección de propiedades y agruparlas en lo que llaman Concepto. Un concepto se puede aplicar a un objeto del metadatos, y sus propiedades son heredadas por el objeto. Por ejemplo, para todos los importes monetarios (que vamos a mostrar con un formato determinado de numeros decimales) o tipo de letra, podemos crear un concepto y luego aplicarlo a todas las columnas que queremos que compartan propiedades comunes. De esta forma, en lugar de modificar las características&amp;nbsp; en los todos los objetos del metadata, lo haremos en los conceptos y asi nos aseguramos su consistencia y mantenerlo de una forma más fácil.&lt;br /&gt;&lt;strong&gt;Herencia.&lt;/strong&gt;&lt;br /&gt;Las propiedades se pueden gestionar utilizando la herencia. La herencia ocurre basando un objeto (el objeto hijo) en otro objeto (el objeto padre). De esta forma, las propiedades del hijo y sus valores se construyen a partir de las del padre. Los cambios en las propiedades se transmiten en forma de cascada en la cadena de herencia.&lt;br /&gt;Las propiedades que hereda un objeto se pueden quedar como las del padre, o bien ser modificadas y configuradas como una instanciacion propia de dichas propiedades. En ese momento se rompe la cadena de herencia de esa propiedad con respecto al padre. Cuando se modifique algo del padre, no se modificara la propiedad en el&amp;nbsp; hijo. En Pentaho tenemos dos niveles de herencia:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Herencia de objetos derivados&lt;/strong&gt;: los objetos del metadata heredan las propiedades de sus objetos padre. Por ejemplo, definimos una tabla en el nivel físico y configuramos sus propiedades. Al utilizarla en el logical layer, todas las propiedades de nombres de tabla, campos, formatos, autorizaciones que hubieramos definido antes se heredan en el nuevo objeto. Si la tabla fisica se utiliza en varios tablas lógicas, todas heredaran las&amp;nbsp; mismas propiedades. Puede ser util, pues seguramente para unas columnas&amp;nbsp; determinadas pondremos unas descripciones y un formato que nos interesan que se utilicen en todos los sitios de la misma manera. En ese caso, cualquier cambio en el modelo físico se transmitiran a los objetos “descendientes”.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Herencia de conceptos&lt;/strong&gt;: como hemos visto los conceptos son una forma de asignar propiedades a los objetos de una forma centralizada. Dentro de los conceptos, podemos establecer tambien jerarquía de propiedades, de forma que podemos tener un concepto general, y luego conceptos descendientes de este con propiedades especificas (que luego podremos también asignar a los objetos del metadatos).&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Pentaho Metadata Editor.&lt;/h2&gt;Como paso final, vamos a ver como definir el metadatos para nuestro modelo (en una entrada anterior del &lt;a href="http://churriwifi.wordpress.com/2010/04/23/15-4-modelo-fisico-modelo-normalizado-y-desnormalizado-dimensional/"&gt;blog&lt;/a&gt; vimo como quedaba la estructura física de nuestra base de datos), teniendo en cuenta todas las características de PME vistas hasta ahora.&lt;br /&gt;Al trabajar con PME, podemos utilizar un repositorio local (a nivel de ficheros) o un repositorio de base de datos. El repositorio de PME es independiente del de la plataforma BI o el de Kettle, no tiene nada que ver. Se trabaja con el concepto de &lt;strong&gt;Dominio&lt;/strong&gt;, que es un contenedor que incluye la definición del metadatos.&lt;br /&gt;Los tres niveles que hemos indicado antes (physical layer, logical layer y delivery layer), se implementan de la siguiente manera.&lt;br /&gt;&lt;h3&gt;&lt;strong&gt;Physical Layer&lt;/strong&gt;&lt;/h3&gt;Contiene los objetos físicos que existen a nivel de base de datos. Es la parte básica de la definición del metadata. Podemos tener varios origenes de datos (varias conexiones), de las que seleccionaremos las tablas que nos interesen para nuestro modelo, y para cada tabla, los campos que la componen. Podemos seleccionar solo aquellos campos que nos interesen, o bien seleccionarlos y luego ocultarlos cuando pasemos al nivel lógico.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Conexiones&lt;/strong&gt;: definimos las conexiones de la forma habitual (es necesario tener el jdbc correspondiente y depositarlo en el directorio \libext\jdbc dentro de la carpeta donde tengamos instalado PMD).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Tablas&lt;/strong&gt;: desde la conexión, con el menú contextual podremos importar las tablas que queremos añadir a nuestro modelo (con la opción Import Tables o desde Import from explorer). Una vez las tablas estan importadas, podremos modificar sus propiedades, tales como su nombre (incluyendo la internacionalización), descripcion, tipo de tabla (Dimension, Hechos u Otros)&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2707" style="width: 357px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/database-explorer.jpg"&gt;&lt;img alt="" class="size-full wp-image-2707 " height="336" src="http://churriwifi.files.wordpress.com/2010/06/database-explorer.jpg?w=347&amp;amp;h=336" title="Database explorer" width="347" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Database Explorer&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Campos&lt;/strong&gt;: por defecto, se importan todos los campos de las tablas. Posteriormente podemos eliminar aquellos campos que no nos interese tener en el metadata, o bien incluir nuevos campos, como calculos de los existentes o iguales que los existentes pero cambiando determinadas propiedades (por ejemplo, el formato). Al igual que en las tablas, en los campos tenemos un conjunto de propiedades (Nombre, Descripción, Fuente, Color, Alineación del texto, Tipo de datos, forma de agregación). Si el campo es una formula, podremos indicar la composición de esta y también podremos indicar si el campo queremos que este oculto. Además de estas propiedades por defecto, podemos añadir otras, como temas de seguridad, mascaras de edición, ancho de columna, textos explicativos adicionales, etc.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2713" style="width: 623px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/physical-layer-campos.jpg"&gt;&lt;img alt="" class="size-full wp-image-2713 " height="358" src="http://churriwifi.files.wordpress.com/2010/06/physical-layer-campos.jpg?w=613&amp;amp;h=358" title="Physical Layer - Campos" width="613" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Propiedades de metadata de los campos en una tabla física&lt;/div&gt;&lt;/div&gt;A la hora de la construcción de los campos físicos, podemos definir campos que sean operaciones entre varios campos o formulas. Para ampliar la información sobre esta funcionalidad, podeís ver la documentación Online de &lt;a href="http://wiki.pentaho.com/display/ServerDoc2x/02.+Pentaho+Metadata+Formulas"&gt;Pentaho&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;Logical Layer.&lt;/h3&gt;Una vez tenemos definidos todos los componentes del nivel físico (que van a ser las piezas básicas de nuestro metadatos), continuaremos con el segundo nivel, el nivel lógico.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Models&lt;/strong&gt;: es un contenedor que nos permite agrupar los objetos lógicos y sus relaciones, para disminuir de la mejor manera posible el impacto de los cambios a nivel físico. Podemos tener varios modelos de negocio dentro de un dominio de metadatos (aunque solo soporta una conexión a base de datos por cada uno de ellos).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Business Tables y Columns&lt;/strong&gt;: cuando creamos una nueva Business Table, nos aparece la lista de tablas físicas disponibles en nuestro dominio y seleccionamos las que nos interesan. En ese momento se crean la BT, como una abstracción de la tabla física. Como podeís ver en la imagen, cada tabla lógica (business table) tiene asociada su correspondiente tabla física, y hereda todas las propiedades que tuviera esta. Podemos dejar los atributos como estan o modificarlos en el caso de que nos interese. La tabla también hereda todos los campos que tuviera definidos la tabla física, aunque se pueden eliminar los que queramos. A la hora de añadir, solo se pueden utilizar los definidos en la tabla física, aunque podremos añadir cuantas veces deseemos campos que ya existen y modificar sus propiedades para crear nuevos campos.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2719" style="width: 727px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/logical-layer-business-table.jpg"&gt;&lt;img alt="" class="size-full wp-image-2719" height="482" src="http://churriwifi.files.wordpress.com/2010/06/logical-layer-business-table.jpg?w=717&amp;amp;h=482" title="Logical layer - business table" width="717" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Editor de propiedades de las Business Tables&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Relaciones&lt;/strong&gt;: puede haber casos en que para hacer la lectura de datos, necesitemos juntar varias tablas. En la parte de relaciones, definimos como se va a realizar el join entre las diferentes tablas de nuestro modelo. En la imagen podeis ver el correspondiente editor donde vamos definiendo, en cada tupla de tablas, como va a ser la relación entre ellas.&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2720" style="width: 448px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/logical-layer-definicion-relaciones.jpg"&gt;&lt;img alt="" class="size-full wp-image-2720" height="346" src="http://churriwifi.files.wordpress.com/2010/06/logical-layer-definicion-relaciones.jpg?w=438&amp;amp;h=346" title="Logical layer - definicion relaciones" width="438" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Editor de relaciones entre Business Tables&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Delivery Layer.&lt;/h3&gt;La parte final de la definición del metadata es decidir, de todos los elementos de los que disponemos en el modelo de negocio, cuales van a estar a disposición de los usuarios. Esto lo realizamos a traves de las Business Views y las Business Categories. Veamos en que consiste esto:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Business Views&lt;/strong&gt;: las vistas de negocio son los contenedores que visualizaran los usuarios, y que contendrán los elementos que van a poder utilizar en el reporting y análisis ad-hoc. Podremos tener varias vistas de negocio a través de lo que llamamos categorias. Las categorias pueden contener una tabla lógica completa o bien una lista de campos seleccionados de varias tablas lógicas. Las diferentes categorias apareceran luego en el reporting, con todos los elementos que hayamos incluido en su definición. Aquí también podremos incluir seguridad para determinar que usuarios pueden trabajar con ellas. Las propiedades de los elementos, igual que con las tablas de negocio, son heredadas de estas, aunque pueden ser modificadas (sobrescribiendo la herencia por defecto).&lt;/li&gt;&lt;/ul&gt;&lt;div class="wp-caption aligncenter" id="attachment_2723" style="width: 571px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/delivery-layer-categorias.jpg"&gt;&lt;img alt="" class="size-full wp-image-2723" height="314" src="http://churriwifi.files.wordpress.com/2010/06/delivery-layer-categorias.jpg?w=561&amp;amp;h=314" title="Delivery layer - categorias" width="561" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Gestión de categorias&lt;/div&gt;&lt;/div&gt;Hemos realizado la definición del metadata de nuestro proyecto EnoBI para permitir el reporting sobre el.&amp;nbsp; Como paso final, nos quedaría publicar el metadatos en el portal de BI para poder utilizarlo en el reporting ad-hoc. Para ello, lo publicaremos en el portal (solo puede haber un fichero por solución). También podriamos haber hecho público el fichero ubicandolo en la correspondiente carpeta del servidor (colgando de pentaho-solutions). Igualmente, podemos exportar el fichero xmi para utilizarlo directamente con Pentaho Reporting Designer, como un origen de datos más a la hora de construir los informes.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2714" style="width: 435px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/publicacion-metadata.jpg"&gt;&lt;img alt="" class="size-full wp-image-2714" height="315" src="http://churriwifi.files.wordpress.com/2010/06/publicacion-metadata.jpg?w=425&amp;amp;h=315" title="Publicacion metadata" width="425" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Publicacion del metadata en el servidor BI&lt;/div&gt;&lt;/div&gt;Para trabajar con PRD no hace falta publicar en el servidor BI, sino que accedemos directamente al fichero xmi como origen de datos. Para verificar que el metadata esta correctamente importado en el portal BI, nos conectamos con nuestro usuario de pruebas y realizamos nuestro primer informe Ad-hoc. Todo se ha configurado correctamente.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2717" style="width: 685px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/informe-adhod-ejemplo1.jpg"&gt;&lt;img alt="" class="size-full wp-image-2717" height="354" src="http://churriwifi.files.wordpress.com/2010/06/informe-adhod-ejemplo1.jpg?w=675&amp;amp;h=354" title="Informe Adhoc - Ejemplo" width="675" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Informe Adhoc - Ejemplo sencillo de listado de clientes&lt;/div&gt;&lt;/div&gt;Podeis ampliar información sobre todo lo visto en esta entrada del blog en la &lt;a href="http://wiki.pentaho.com/display/ServerDoc2x/Pentaho+Metadata+Editor"&gt;documentación online&lt;/a&gt; de Pentaho. A continuación vamos a ver como podemos definir nuestro esquema dimensional utilizando Pentaho Schema Workbench, lo que nos permitira posteriormente trabajar con los análisis sobre los cubos Olap.&lt;br /&gt;  &lt;div class="sharedaddy sd-rating-enabled sd-sharing-enabled"&gt;&lt;div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"&gt;&lt;h3 class="sd-title"&gt;Compartelo:&lt;/h3&gt;&lt;div class="sd-content"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="sharing-anchor sd-button share-more" href="http://churriwifi.wordpress.com/category/pentaho/#"&gt;&lt;span&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="share-end"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="category"&gt;Publicado en  &lt;a href="http://churriwifi.wordpress.com/category/business-intelligence/" rel="category tag" title="Ver todas las entradas en Business Intelligence"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/opensource/" rel="category tag" title="Ver todas las entradas en OpenSource"&gt;OpenSource&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/pentaho/" rel="category tag" title="Ver todas las entradas en Pentaho"&gt;Pentaho&lt;/a&gt; |    &lt;a href="http://churriwifi.wordpress.com/2010/06/24/17-2-definicion-del-modelo-dimensional-utilizando-schema-workbench-y-agregation-designer/#respond" title="Comentarios en 17.2. Preparando el reporting. Definición de metadatos con Metadata Editor."&gt;Deja un Comentario »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-2583 post type-post status-publish format-standard hentry category-business-intelligence category-opensource category-pentaho" id="post-2583"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/06/20/17-1-instalacion-y-configuracion-de-la-plataforma-bi-de-pentaho/" rel="bookmark" title="Permanent link to 17.1. Instalación y configuración de la plataforma BI de Pentaho."&gt;17.1. Instalación y configuración de la plataforma BI de&amp;nbsp;Pentaho.&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 20 junio 2010&lt;/div&gt;&lt;div class="entry"&gt;     Con la ultima versión estable de la plataforma BI descargada de la web de Pentaho (la &lt;a href="http://sourceforge.net/projects/pentaho/files/Business%20Intelligence%20Server/3.5.2-stable/biserver-ce-3.5.2.stable.zip/download"&gt;3.5.2&lt;/a&gt;), y siguiendo las &lt;a href="http://www.prashantraju.com/projects/pentaho/"&gt;instrucciones&lt;/a&gt; de Prashant Raju para esta versión en la plataforma &lt;strong&gt;Windows&lt;/strong&gt; utilizando &lt;strong&gt;MySql&lt;/strong&gt;, realizamos la instalación y configuración de nuestro sistema realizando los siguientes pasos:&lt;br /&gt;&lt;strong&gt;1) Requisitos previos: maquina virtual Java y la base de datos MySQL (u otra de las soportadas).&lt;/strong&gt;&lt;br /&gt;Para poder ejecutar la plataforma de BI de Pentaho es necesario disponer de una máquina virtual Java instalada en el equipo donde vamos a trabajar. Pentaho recomienda la versión 1.5 de Sun JRE. Con versiones anteriores no funciona y la 1.6 no esta oficialmente soportada (es la que tengo instalada yo), aunque si funciona.&lt;br /&gt;Para ver la versión instalada, ejecutaremos el comando:&lt;em&gt; java&amp;nbsp; -version&lt;/em&gt;. En el caso de no disponer de la máquina, podemos descargarla en la web de &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;Sun&lt;/a&gt;.&lt;br /&gt;A continuación comprobaremos que la variable de entorno &lt;strong&gt;JAVA_HOME&lt;/strong&gt; apunte al directorio donde tenemos instalado Java. Igualmente, la variable &lt;strong&gt;PATH&lt;/strong&gt; también debera apuntar al directorio de ejecutables de la instalación de Java. En mi caso, el valor de las variables será el siguiente:&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;JAVA_HOME&amp;nbsp;&amp;nbsp; c:\Program Files\Java\jdk1.6.0_17&lt;br /&gt;PATH        c:\Program Files\Java\jdk1.6.0_17\bin;.....&lt;/pre&gt;Para configurar las variables, lo realizaremos desde Propiedades del Sistema, Variables de Entorno.&lt;br /&gt;Con respecto a MySQL, en el caso de que no lo tengamos instalado en nuestra máquina, lo descargaremos de la &lt;a href="http://dev.mysql.com/downloads/"&gt;web&lt;/a&gt; y realizaremos la instalación según las instrucciones que nos proporcionan en su portal de &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/windows-installation.html"&gt;documentación&lt;/a&gt;.&lt;br /&gt;&lt;strong&gt;2) Descomprimir los ficheros de la plataforma.&lt;/strong&gt;&lt;br /&gt;Seleccionamos una carpeta (por ejemplo c:\pentaho), y en ella vamos a descomprimir el fichero Zip que nos hemos bajado de la web. Tras el proceso, tendremos dos carpetas diferenciadas, llamadas &lt;em&gt;&lt;strong&gt;administration-console&lt;/strong&gt;&lt;/em&gt; y &lt;em&gt;&lt;strong&gt;biserver-ce&lt;/strong&gt;&lt;/em&gt;. La primera carpeta alberga los ficheros de la plataforma de administración, que utilizamos para configurar y administrar el servidor BI (utiliza Jetty). La segunda, es la plataforma de BI propiamente dicha (la que utilizarán los usuarios), que utiliza tomcat.&lt;br /&gt;En este momento, ya podriamos arrancar la plataforma desde los correspondientes scripts que se encuentran en la carpeta c:\pentaho\biserver-ce (start-pentaho.bat para iniciar el servidor y stop-pentaho.bat para pararlo). Este Script arranca en primer lugar la base de datos HSQLDB de ejemplo (donde residen las datos necesarios para el funcionamiento de la plataforma, junto con datos de pruebas para los ejemplos precargados). A continuación, arranca la plataforma de BI, a través del tomcat. Como no queremos trabajar con esa base de datos, sino con MySQL, vamos a proceder a realizar una serie de ajustes antes de arrancar la plataforma.&lt;br /&gt;&lt;strong&gt;3) Creación de catalogos en base de datos necesarios para la plataforma.&lt;/strong&gt;&lt;br /&gt;La plataforma Pentaho necesita dos bases de datos para su funcionamiento (además de la base de datos de test para poder trabajar con el set de ejemplos). Las bases de datos y su cometido son las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;hibernate&lt;/strong&gt;: esta base de datos almacena la autentificación de usuarios y los datos de autorizaciones, el contenido BI (solution repository) y los origenes de datos disponibles en la plataforma.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;quartz&lt;/strong&gt;: es el repositorio para el scheduler Quartz, que es uno de los componentes que forma la plataforma, que nos permite la planificación de procesos dentro del servidor BI.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;sampledate&lt;/strong&gt;: contiene las tablas para ilustrar y hacer posible la ejecución de todos los ejemplos por defecto que proporciona la plataforma, para poder hacernos una idea de sus funcionalidades y sus posibilidades de análisis.&lt;/li&gt;&lt;/ul&gt;Por defecto, los catálogos de estas bases de datos estarán creados en la base de datos HSQLDB que se puede arrancar en la configuración del servidor por defecto.&amp;nbsp; Para crearlos en MySQL, como es nuestro caso, ejecutaremos los scripts que se encuentran en la carpeta c:\pentaho\biserver-ce\data o bien descargarlos de la web de &lt;a href="http://docs.google.com/leaf?id=0B9Jmocc0fj_EN2MyZjc4ZjEtNzFkNC00NzIzLTljZTctZjIzZWQ1NjU3MzJk&amp;amp;hl=en"&gt;Prashant Raju&lt;/a&gt;. Decido utilizar estos últimos, pues ademas de crear todos los catalogos de tablas, también incluye la carga de datos de ejemplo (paso 5), que es una opción que no incluye la instalación estandar. El orden de ejecución será el siguiente:&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;mysql&amp;gt; &lt;strong&gt;source 1_create_repository_mysql.sql;&lt;/strong&gt;&lt;br /&gt; ...output&lt;br /&gt; mysql&amp;gt; &lt;strong&gt;source 2_create_quartz_mysql.sql;&lt;/strong&gt;&lt;br /&gt; ...output&lt;br /&gt; mysql&amp;gt; &lt;strong&gt;source 3_create_sample_datasource_mysql.sql;&lt;/strong&gt;&lt;br /&gt; ...output&lt;br /&gt; mysql&amp;gt; &lt;strong&gt;source 4_load_sample_users_mysql.sql;&lt;/strong&gt;&lt;br /&gt; ...output&lt;br /&gt; mysql&amp;gt; &lt;strong&gt;source 5_sample_data_mysql.sql;&lt;/strong&gt;&lt;br /&gt; ...output&lt;/pre&gt;La ejecución de los scripts sql la realizaremos desde MySQL Query Browser (la herramienta gráfica para ejecución de sentencias SQL) o bien desde linea de comandos con la utilidad mysql que llevar incluido el servidor MySQL para ejecutar scripts. Podiamos haber utilizado cualquier otro editor sql, como &lt;a href="http://squirrel-sql.sourceforge.net/"&gt;SQuirreL&lt;/a&gt;.&lt;br /&gt;&lt;strong&gt;4) Configuracion JDBC, Hibernate and Quartz.&lt;/strong&gt;&lt;br /&gt;Todas las aplicaciones de Pentaho, incluyendo el Pentaho Server, utilizan la conectividad JDBC (Java Database Connectivity) para la comunicación con las bases de datos. Por tanto, será necesario disponer de los correspondientes conectores según la base de datos que vayamos a utilizar. En nuestro caso, vamos a dejar tanto el conector para MySQL (donde iran las bases de datos de Hibernate y Quartz), como el de Oracle (donde va la base de datos del DW). Las carpetas donde vamos a copiar serán las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;C:\Pentaho\biserver-ce\tomcat\common\lib&lt;/strong&gt;: ubicación de los drivers JDBC para poder utilizar en el servidor Pentaho la base de datos para la que el conector proporciona conectividad.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;C:\Pentaho\administration-console\jdbc&lt;/strong&gt;: es necesario ponerlos aquí también para poder definir correctamente las conexiones a base de datos en la consola de administración.&lt;/li&gt;&lt;/ul&gt;A continuación, configuraremos los ficheros de parametrización del sistema para que Hibernate y Quartz lean de los catalogos de base de datos en Mysql que hemos creado en el punto 3, en lugar de la base de datos HSQLDB proporcionada por defecto.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Configuracion de Hibernate (I)&lt;/strong&gt;: en el fichero &lt;strong&gt;&lt;em&gt;applicationContext-spring-security-jdbc.xml&lt;/em&gt;&lt;/strong&gt; (ubicado en la carpeta C:\Pentaho\biserver-ce\pentaho-solutions\system), modificaremos la parte que veis subrayada a continuación, con los valores referidos para utilizar MySQL.&lt;/li&gt;&lt;/ul&gt;&lt;pre style="padding-left: 60px;"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;lt;!-- &amp;nbsp;This is only for Hypersonic. Please  update this section for any other database you are using --&amp;gt; &lt;/span&gt;&lt;/pre&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;lt;bean id="dataSource"&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;class="org.springframework.jdbc.datasource.DriverManagerDataSource"&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;lt;property name="driverClassName" value="&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;com.mysql.jdbc.Driver&lt;/strong&gt;&lt;/span&gt;"&lt;/strong&gt; /&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;lt;property  name="url"&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;value="&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;jdbc:mysql://localhost:3306/hibernate&lt;/strong&gt;&lt;/span&gt;"  /&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;lt;property  name="username" value="hibuser" /&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;lt;property name="password" value="password" /&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre style="padding-left: 60px;"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;lt;/bean&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Configuracion de Hibernate (II)&lt;/strong&gt;: en el fichero &lt;strong&gt;&lt;em&gt;applicationContext-spring-security-hibernate.xml&lt;/em&gt;&lt;/strong&gt; (ubicado en la carpeta  C:\Pentaho\biserver-ce\pentaho-solutions\system), modificaremos la parte  que veis subrayada a continuación, con los valores referidos para  utilizar MySQL.&lt;/li&gt;&lt;/ul&gt;&lt;pre style="padding-left: 60px;"&gt;&lt;span style="font-family: 'Courier New';"&gt;jdbc.driver=&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;com.mysql.jdbc.Driver&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'Courier New';"&gt;jdbc.url=&lt;strong&gt;jdbc:&lt;span style="text-decoration: underline;"&gt;mysql://localhost:3306/hibernate&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'Courier New';"&gt;jdbc.username=hibuser&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="padding-left: 60px;"&gt;&lt;pre&gt;&lt;span style="font-family: 'Courier New';"&gt;jdbc.password=password&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;pre style="padding-left: 60px;"&gt;&lt;span style="font-family: 'Courier New';"&gt;hibernate.dialect=&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;org.hibernate.dialect.MySQLDialect&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Configuración de Hibernate (y III)&lt;/strong&gt;: en el fichero &lt;strong&gt;hibernate-settings.xml&lt;/strong&gt; ( ubicado en la carpeta  C:\Pentaho\biserver-ce\pentaho-solutions\system\hibernate),  modificaremos la parte  que veis subrayada a continuación.&lt;/li&gt;&lt;/ul&gt;&lt;pre style="padding-left: 60px;"&gt;&lt;span style="font-family: 'courier new';"&gt;&amp;lt;config-file&amp;gt;&lt;span style="text-decoration: underline;"&gt;system/hibernate/&lt;/span&gt;&lt;strong&gt;&lt;span style="text-decoration: underline;"&gt;mysql5.hibernate.cfg.xml&lt;/span&gt;&amp;lt;&lt;/strong&gt;/config-file&amp;gt;&lt;/span&gt;&lt;/pre&gt;Con la configuración anterior, hemos configurado la seguridad JDBC de la plataforma. Ahora nos falta indicar en los contextos del servidor de aplicación, la ubicación de las bases de datos, para decirle al servidor que lea de las bases de datos en Mysql, utilizando los drivers y la configuración de seguridad realizada anteriormente. Para ello, modificamos el fichero &lt;strong&gt;contexts.xml&lt;/strong&gt; (ubicado en C:\Pentaho\biserver-ce\tomcat\webapps\pentaho\META-INF) de la siguiente manera:&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt; &amp;lt;Context path="/pentaho" docbase="webapps/pentaho/"&amp;gt;&lt;br /&gt; &amp;lt;Resource name="jdbc/Hibernate" auth="Container" type="javax.sql.DataSource"&lt;br /&gt; factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"&lt;br /&gt; maxWait="10000" username="hibuser" password="password"&lt;br /&gt; driverClassName="&lt;span style="text-decoration: underline;"&gt;com.mysql.jdbc.Driver&lt;/span&gt;" url="&lt;span style="text-decoration: underline;"&gt;jdbc:mysql://localhost:3306/hibernate&lt;/span&gt;"&lt;br /&gt; validationQuery="&lt;span style="text-decoration: underline;"&gt;select 1&lt;/span&gt;" /&amp;gt;&lt;/pre&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;Resource name="jdbc/Quartz" auth="Container" type="javax.sql.DataSource"&lt;br /&gt; factory="org.apache.commons.dbcp.BasicDataSourceFactory" maxActive="20" maxIdle="5"&lt;br /&gt; maxWait="10000" username="pentaho_user" password="password"&lt;br /&gt; driverClassName="&lt;span style="text-decoration: underline;"&gt;com.mysql.jdbc.Driver&lt;/span&gt;" url="&lt;span style="text-decoration: underline;"&gt;jdbc:mysql://localhost:3306/quartz&lt;/span&gt;"&lt;br /&gt; validationQuery="&lt;span style="text-decoration: underline;"&gt;select 1&lt;/span&gt;"/&amp;gt;&lt;br /&gt; &amp;lt;/Context&amp;gt;&lt;/pre&gt;Con esta configuración ya tendriamos lista la parte de conectividad con la base de datos. Solo en el caso de que no hubieramos utilizado los scripts de Prashant Raju, tendriamos que realizar un último paso, que sería ejecutar la siguiente sentencia SQL para indicarle al servidor que los datos de ejemplo los hemos cambiado de lugar:&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;UPDATE hibernate.DATASOURCE&lt;br /&gt; SET DRIVERCLASS = 'com.mysql.jdbc.Driver’,&lt;br /&gt; URL = 'jdbc:mysql://localhost:3306/sampledata’,&lt;br /&gt; QUERY = 'SELECT 1’&lt;br /&gt; WHERE NAME = 'SampleData’&lt;br /&gt; ;&lt;/pre&gt;&lt;strong&gt;5) Configuración Servidor Apache-Tomcat.&lt;/strong&gt;&lt;br /&gt;La plataforma Pentaho utiliza Apache-Tomcat como servidor de aplicaciones para desplegar los servicios que la componen. El servidor lleva una configuración por defecto que podemos modificar (por ejemplo, para variar el puerto donde nos conectamos, para el caso de que haya conflicto con otras aplicaciones instaladas en el servidor), la ubicación html, el lenguaje, etc. Para ello, modificaremos el fichero &lt;strong&gt;web.xml&lt;/strong&gt; que se encuentra en la carpeta C:\Pentaho\biserver-ce\tomcat\webapps\pentaho\WEB-INF. Veamos alguna de la cosas que podemos cambiar.&lt;span style="font-family: arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: arial;"&gt;solution-path&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-family: 'Courier New';"&gt;&lt;span style="font-family: arial;"&gt;Con este parámetro, le indicamos a la plataforma BI la ubicación de la carpeta pentaho-solutions. Por defecto, tiene el valor c:\biserver-ce\.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;En nuestro caso, vamos a cambiar el valor para que apunte a la carpeta donde hemos instalado:&lt;/span&gt;&lt;span style="font-family: arial;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;lt;context-param&amp;gt;&amp;lt;param-name&amp;gt;solution-path&amp;lt;/param-name&amp;gt;&lt;br /&gt; &amp;lt;param-value&amp;gt;&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;C:\Pentaho\biserver-ce\pentaho-solutions&lt;/span&gt;&lt;span style="font-family: 'Courier New';"&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt; &amp;lt;/context-param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;strong&gt;&lt;span style="font-family: arial;"&gt;base-url&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Al instalar, la ruta URL por defecto para acceder a la plataforma será la siguiente: &lt;/span&gt;&lt;a href="http://localhost:8080/pentaho" id="ybcb" target="_blank" title="http://localhost:8080/pentaho"&gt;http://localhost:8080/pentaho&lt;/a&gt;&lt;br /&gt;Podemos cambiarla si lo desamos modificando el parmetro base_url dentro del mismo fichero. En nuestro caso, como vamos a cambiar el puerto por defecto, modificamos su valor indicando lo siguiente:&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt; &amp;lt;param-name&amp;gt;base-url&amp;lt;/param-name&amp;gt;&lt;br /&gt; &amp;lt;param-value&amp;gt;&lt;span style="text-decoration: underline;"&gt;http://localhost:9999/pentaho/&lt;/span&gt;&amp;lt;/param-value&amp;gt;&lt;br /&gt; &amp;lt;/context-param&amp;gt;&lt;/pre&gt;Esto nos obligará a cambiar tambien la configuración del fichero server.xml, que veremos mas adelante.&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family: arial;"&gt;port&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;En la ruta C:\Pentaho\biserver-ce\tomcat\conf, tenemos el fichero &lt;strong&gt;server.xml&lt;/strong&gt;, donde podemos modificar el puerto por defecto de nuestro servidor BI (que es el 8080).&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;&amp;lt;!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --&amp;gt;&lt;br /&gt; &amp;lt;Connector port="&lt;span style="text-decoration: underline;"&gt;9999&lt;/span&gt;" maxHttpHeaderSize="8192"&lt;br /&gt; maxThreads="150" minSpareThreads="25" maxSpareThreads="75"&lt;br /&gt; enableLookups="false" redirectPort="8443" acceptCount="100"&lt;br /&gt; connectionTimeout="20000" disableUploadTimeout="true" /&amp;gt;&lt;/pre&gt;Ahora pararemos el servidor tomcat y al arrancar la nueva URL de acceso será la siguiente: http://localhost:9999/pentaho&lt;br /&gt;&lt;strong&gt;6) Otros elementos. Scripts arranque. Configuración de la publicación de contenidos y del correo SMTP.&lt;/strong&gt;&lt;br /&gt;Antes de continuar, vamos a ajustar el script de arranque de la plataforma BI, omitiendo la parte de arranque de la base de datos HSQLDB, que por defecto se arranca cuando lanzamos el script &lt;strong&gt;start-pentaho.bat&lt;/strong&gt; (de la carpeta c:\pentaho\biserver-ce). Es tan sencillo como comentar la linea donde se arranca la base de datos. El script quedaría como sigue (la linea subrayada se ha comentado para que no se ejecute):&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;@echo off&lt;br /&gt;setlocal&lt;br /&gt;cscript promptuser.js //nologo //e:jscript&lt;br /&gt;rem errorlevel 0 means user chose "no"&lt;br /&gt;if %errorlevel%==0 goto quit&lt;br /&gt;echo WScript.Quit(1); &amp;gt; promptuser.js&lt;br /&gt;&lt;br /&gt;if exist "%~dp0jre" call "%~dp0set-pentaho-java.bat" "%~dp0jre"&lt;br /&gt;if not exist "%~dp0jre" call "%~dp0set-pentaho-java.bat"&lt;br /&gt;&lt;br /&gt;cd data&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;rem start start_hypersonic.bat&lt;/span&gt;&lt;br /&gt;cd ..\tomcat\bin&lt;br /&gt;set CATALINA_HOME=%~dp0tomcat&lt;br /&gt;set CATALINA_OPTS=-Xms256m -Xmx768m -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000&lt;br /&gt;set JAVA_HOME=%_PENTAHO_JAVA_HOME%&lt;br /&gt;call startup&lt;br /&gt;:quit&lt;br /&gt;endlocal&lt;/pre&gt;Ademas de toda la configuración realizada hasta ahora, nos quedan por configurar dos aspectos importantes para el funcionamiento del sistema:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Publicación de contenido&lt;/strong&gt;: por defecto, la publicación de contenido en el servidor BI esta desactivada, por lo que para publicar los informes o análisis que vayamos realizando, lo deberiamos de hacer dejando los ficheros en la correspondientes carpetas del servidor. Pero es mas fácil hacerlo mediante lo que se llama publicación (que veremos en detalle mas adelante). Para habilitar la publicación, modificaremos el fichero &lt;strong&gt;publisher_config.xml&lt;/strong&gt;, que se encuentra en la carpeta C:\Pentaho\biserver-ce\pentaho-solutions\system. Ahí indicaremos la contraseña de publicación. Por defecto, no tiene ninguna contraseña, y por tanto, no esta habilitada la publicación.&lt;/li&gt;&lt;/ul&gt;&lt;pre style="padding-left: 60px;"&gt;&amp;lt;publisher-config&amp;gt;&lt;br /&gt; &amp;lt;publisher-password&amp;gt;&lt;span style="text-decoration: underline;"&gt;passpublic&lt;/span&gt;&amp;lt;/publisher-password&amp;gt;&lt;br /&gt;&amp;lt;/publisher-config&amp;gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Servicio de correo SMTP&lt;/strong&gt;: como ultimo paso, configuraremos la posibilidad de envio de correo electrónico, a través de un servidor externo (ya que la plataforma no dispone de un servidor de correo electrónico propio). Para ello, configuraremos el fichero email-config.xml en el directorio C:\Pentaho\biserver-ce\pentaho-solutions\system\smtp-email, de la siguiente manera:&lt;/li&gt;&lt;/ul&gt;&lt;pre style="padding-left: 60px;"&gt;&amp;lt;email-smtp&amp;gt;&lt;br /&gt; &amp;lt;properties&amp;gt;&lt;br /&gt; &amp;lt;mail.smtp.host&amp;gt;&lt;span style="text-decoration: underline;"&gt;smtp.gmail.com&lt;/span&gt;&amp;lt;/mail.smtp.host&amp;gt;&lt;br /&gt; &amp;lt;mail.smtp.port&amp;gt;&lt;span style="text-decoration: underline;"&gt;587&lt;/span&gt;&amp;lt;/mail.smtp.port&amp;gt;&lt;br /&gt; &amp;lt;mail.transport.protocol&amp;gt;&lt;span style="text-decoration: underline;"&gt;smtps&lt;/span&gt;&amp;lt;/mail.transport.protocol&amp;gt;&lt;br /&gt; &amp;lt;mail.smtp.starttls.enable&amp;gt;&lt;span style="text-decoration: underline;"&gt;true&lt;/span&gt;&amp;lt;/mail.smtp.starttls.enable&amp;gt;&lt;br /&gt; &amp;lt;mail.smtp.auth&amp;gt;&lt;span style="text-decoration: underline;"&gt;true&lt;/span&gt;&amp;lt;/mail.smtp.auth&amp;gt;&lt;br /&gt; &amp;lt;mail.smtp.ssl&amp;gt;&lt;span style="text-decoration: underline;"&gt;true&lt;/span&gt;&amp;lt;/mail.smtp.ssl&amp;gt;&lt;br /&gt; &amp;lt;mail.smtp.quitwait&amp;gt;false&amp;lt;/mail.smtp.quitwait&amp;gt;&lt;br /&gt; &amp;lt;/properties&amp;gt;&lt;br /&gt; &amp;lt;mail.pop3&amp;gt;&amp;lt;/mail.pop3&amp;gt;&lt;br /&gt; &amp;lt;mail.from.default&amp;gt;&lt;span style="text-decoration: underline;"&gt;respinosamilla@gmail.com&lt;/span&gt;&amp;lt;/mail.from.default&amp;gt;&lt;br /&gt; &amp;lt;mail.userid&amp;gt;&lt;span style="text-decoration: underline;"&gt;respinosamilla@gmail.com&lt;/span&gt;&amp;lt;/mail.userid&amp;gt;&lt;br /&gt; &amp;lt;mail.password&amp;gt;&lt;span style="text-decoration: underline;"&gt;password&lt;/span&gt;&amp;lt;/mail.password&amp;gt;&lt;br /&gt;&amp;lt;/email-smtp&amp;gt;&lt;/pre&gt;En este caso, estoy utilizando gmail para enviar los correos desde la plataforma. Los valores subrayados son los que yo he indicado. En el caso de estar utilizando otro servidor de correo, tendreís que modificar la configuración de servidor, puertos, tipo de conexión, ect, para que funcione según la configuración de este. Con esta funcionalidad habilitamos la distribución de contenido a través del correo electrónico (por ejemplo, para el envío de la ejecución de informes o análisis).&lt;br /&gt;En este momento, ya podemos arrancar la plataforma. Al iniciarla, y conectarnos en el puerto http://localhost:9999, nos aparece la consola de usuario, con una configuración por defecto. Tendría el siguiente aspecto.&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2635" style="width: 299px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/portal-bi-por-defecto.jpg"&gt;&lt;img alt="" class="size-medium wp-image-2635 " height="300" src="http://churriwifi.files.wordpress.com/2010/06/portal-bi-por-defecto.jpg?w=289&amp;amp;h=300" title="Portal BI por Defecto" width="289" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Consola de Usuario por defecto&lt;/div&gt;&lt;/div&gt;Ya podemos conectarnos con alguno de los usuarios existentes y trastear con el proyecto de ejemplo&lt;em&gt; Steel Wheels&lt;/em&gt; o la colección de muestras y ejemplos que incluye la plataforma. Con ellos nos podemos hacer una idea de las posibilidades de análisis de las que vamos a disponer.&lt;br /&gt;&lt;h2&gt;Personalizando la plataforma de usuario.&lt;/h2&gt;Como queremos personalizar el portal, vamos a realizar algunos cambios en la consola de usuario (también llamada Mantle). Para ello, vamos a utilizar el blog de &lt;a href="http://www.prashantraju.com/2010/02/customising-the-pentaho-user-console-part-1/"&gt;Prashant Raju&lt;/a&gt; donde nos explica muy bien los pasos a seguir para configurar nuestra plataforma. Esta personalización va a consistir en lo siguiente:&lt;br /&gt;&lt;h3&gt;No queremos que aparezcan los usuarios de ejemplo al conectarnos al sistema.&lt;/h3&gt;Con la configuración por defecto del sistema, cuando entramos al portal de usuario, nos aparece la siguiente ventana:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/login-usuario-antes.jpg"&gt;&lt;img alt="" class="aligncenter size-full wp-image-2663" height="195" src="http://churriwifi.files.wordpress.com/2010/06/login-usuario-antes.jpg?w=165&amp;amp;h=195" title="Login Usuario - Antes" width="165" /&gt;&lt;/a&gt;&lt;/div&gt;Aparecen los usuarios de ejemplo, y al seleccionarlos podemos entrar directamente en la plataforma (sin necesidad de recordad su nombre de usuario o contraseña), ya que el sistema nos lo recuerda. Esto no es operativo para un sistema productivo, y por tanto, vamos a modificarlo. Para ello, modificaremos el fichero &lt;strong&gt;loginsettings.properties&lt;/strong&gt; (ubicando en la carpeta C:\Pentaho\biserver-ce\tomcat\webapps\pentaho\mantleLogin). La configuración por defecto del fichero es la siguiente:&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;# this file contains settings to configure the login dialog&lt;br /&gt;# flag to turn on/off show users list (overrides pentaho.xml)&lt;br /&gt;#showUsersList=true&lt;br /&gt;# launch PUC in new window (default setting)&lt;br /&gt;openInNewWindow=false&lt;br /&gt;# sample users (be sure that each group has the same # of items as the rest)&lt;br /&gt;userIds=joe, suzy, pat, tiffany&lt;br /&gt;userDisplayNames=Joe (admin), Suzy, Pat, Tiffany&lt;br /&gt;userPasswords=password, password, password, password&lt;/pre&gt;Vamos a modificar los valores de la siguiente manera:&lt;br /&gt;&lt;pre style="padding-left: 30px;"&gt;# this file contains settings to configure the login dialog&lt;br /&gt;# flag to  turn on/off show users list (overrides pentaho.xml)&lt;br /&gt;&lt;strong&gt;showUsersList=false&lt;/strong&gt;&lt;/pre&gt;Reiniciamos el servidor y al entrar en el portal, el aspecto de login habrá variado, apareciendo la siguiente pantalla:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/login-usuario-despues.jpg"&gt;&lt;img alt="" class="aligncenter size-full wp-image-2664" height="182" src="http://churriwifi.files.wordpress.com/2010/06/login-usuario-despues.jpg?w=165&amp;amp;h=182" title="Login Usuario - Despues" width="165" /&gt;&lt;/a&gt;&lt;/div&gt;Este login es mas acorde con un sistema donde hay que mantener la seguridad.&lt;br /&gt;&lt;h3&gt;Ventana de conexión personalizada para nuestra empresa.&lt;/h3&gt;Para modificar el aspecto de la ventana de login, hemos de modificar el fichero &lt;strong&gt;PUC_login.jsp&lt;/strong&gt; que se encuentra en la carpeta C:\Pentaho\biserver-ce\tomcat\webapps\pentaho\jsp. En este fichero hemos modificado textos, alguna de las imagenes que aparecen, hasta conseguir el siguiente aspecto:&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/portal-personalizado2.jpg"&gt;&lt;img alt="" class="aligncenter size-full wp-image-2668" height="512" src="http://churriwifi.files.wordpress.com/2010/06/portal-personalizado2.jpg?w=493&amp;amp;h=512" title="Portal Personalizado" width="493" /&gt;&lt;br /&gt;&lt;/a&gt;Esto es solo un ejemplo sencillo de como podemos ajustar el diseño de la página a las necesidades corporativas de una empresa (logos, infografia, etc). Os dejo el link al fichero &lt;a href="http://roberto-espinosa.es/doc/PUCLogin.jsp"&gt;PUC_login.jsp&lt;/a&gt; modificado.&lt;/div&gt;&lt;h3&gt;Configuración de mensajes de login y de mensajes de error.&lt;/h3&gt;Para modificar los mensajes de usuario en el momento del login, habrá que modificar el fichero &lt;strong&gt;MantleLoginMessages_es.PROPERTIES&lt;/strong&gt; (para el caso del idioma castellano, o el fichero &lt;strong&gt;MantleLoginMessages_en.PROPERTIES&lt;/strong&gt; en el caso de estar trabajando con el ingles). El fichero se encuentra en dos ubicaciones distintas y habra que modificarlo en ambos casos para que siempre salgan los mismos mensajes. Las ubicaciones son las siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;C:\Pentaho\biserver-ce\tomcat\webapps\pentaho\mantleLogin\messages&lt;/li&gt;&lt;li&gt;C:\Pentaho\biserver-ce\tomcat\webapps\pentaho\mantle\messages&lt;/li&gt;&lt;/ul&gt;Cambiaremos los textos de los mensajes, y al grabar el fichero automaticamente seran utilizados por el servidor con los nuevos valores.&lt;br /&gt;&lt;h3&gt;Personalización del panel de control y del area de trabajo.&lt;/h3&gt;Se pueden personalizar muchisimos aspectos de la consola de usuario (area de trabajo), tal y como nos cuenta Prashant Raju en su &lt;a href="http://www.prashantraju.com/2010/03/customising-the-pentaho-user-console-part-4/"&gt;blog&lt;/a&gt;, desde los logotipos, barras de menu, barra de herramientas, colores, etc. En nuestro ejemplo, vamos a modificar el fichero &lt;strong&gt;launch.jsp&lt;/strong&gt; (ubicado en C:\Pentaho\biserver-ce\tomcat\webapps\pentaho\mantle\launch). En el ejemplo, he modificado el fichero para que en la parte de la derecha aparezca mi blog a los usuarios de la plataforma, en el momento de conectarse. El resultado es el siguiente:&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2670" style="width: 624px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/workspace-personalizado.jpg"&gt;&lt;img alt="" class="size-full wp-image-2670 " height="470" src="http://churriwifi.files.wordpress.com/2010/06/workspace-personalizado.jpg?w=614&amp;amp;h=470" title="Workspace personalizado" width="614" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Workspace personalizado&lt;/div&gt;&lt;/div&gt;Este es solo un ejemplo sencillo de lo que se puede personalizar, que puede ser casi todo (hasta el código fuente si fuese necesario).&lt;br /&gt;Con todos los elementos que hemos configurado, la plataforma de BI de Pentaho esta preparada y lista para ser utilizada, y ademas personalizada a nuestro gusto o necesidades. A continuación vamos a ir viendo las diferentes herramientas que nos proporciona Pentaho para construir nuestros análisis y la forma de configurar su ejecución dentro de la plataforma BI de Pentaho. Además realizaremos la configuración del metadata y la definición de los cubos Olap que luego nos permitiran realizar los análisis dimensionales.&lt;br /&gt;  &lt;div class="sharedaddy sd-rating-enabled sd-sharing-enabled"&gt;&lt;div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"&gt;&lt;h3 class="sd-title"&gt;Compartelo:&lt;/h3&gt;&lt;div class="sd-content"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="sharing-anchor sd-button share-more" href="http://churriwifi.wordpress.com/category/pentaho/#"&gt;&lt;span&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="share-end"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="category"&gt;Publicado en  &lt;a href="http://churriwifi.wordpress.com/category/business-intelligence/" rel="category tag" title="Ver todas las entradas en Business Intelligence"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/opensource/" rel="category tag" title="Ver todas las entradas en OpenSource"&gt;OpenSource&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/pentaho/" rel="category tag" title="Ver todas las entradas en Pentaho"&gt;Pentaho&lt;/a&gt; |    &lt;a href="http://churriwifi.wordpress.com/2010/06/20/17-1-instalacion-y-configuracion-de-la-plataforma-bi-de-pentaho/#comments" title="Comentarios en 17.1. Instalación y configuración de la plataforma BI de Pentaho."&gt;10 Comentarios »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-2581 post type-post status-publish format-standard hentry category-business-intelligence category-opensource category-pentaho" id="post-2581"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/06/08/17-implementando-nuestro-sistema-bi-con-pentaho/" rel="bookmark" title="Permanent link to 17. Implementando nuestro sistema BI con Pentaho."&gt;17. Implementando nuestro sistema BI con&amp;nbsp;Pentaho.&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 8 junio 2010&lt;/div&gt;&lt;div class="entry"&gt;     Durante los próximos días vamos a montar nuestro sistema de Business Intelligence utilizando la &lt;a href="http://community.pentaho.com/"&gt;Community Editión&lt;/a&gt; de Pentaho. Hemos conseguido concluir el diseño de los procesos ETL que van a llenar nuestro Data Warehouse a partir de nuestros sistemas origen y ahora queremos explotar esta información en los diferentes ambitos de la inteligencia de negocio, pero con Pentaho CE. Para ello, configuraremos en primer lugar la plataforma de BI, realizando las siguientes tareas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Descarga del software necesario&lt;/strong&gt;: nos descargamos la ultima versión estable de los diferentes elementos de la plataforma y del proyecto en la web de &lt;a href="http://community.pentaho.com/"&gt;Pentaho&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Instalación y configuración&lt;/strong&gt; de la plataforma BI para utilizar con &lt;a href="http://docs.google.com/Doc?docid=0AdJmocc0fj_EZDJ3YmZiZF83OWRkOHY2M2Rn&amp;amp;hl=en"&gt;MySql&lt;/a&gt; y Windows 7. En esta base de datos tendremos el catalogo para el BI Server (aunque la base de datos del DW la tendremos en Oracle, como ya vimos).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Personalización del portal&lt;/strong&gt;: realizaremos un tuneado del portal para adaptarlo a los requerimientos del proyecto, personalizando logotipos, pantalla de inicio, menús, para ver las posibilidades de configurarlo según las necesidades del cliente. Prepararemos igualmente el metadata y los diferentes cubos de análisis antes de continuar con el resto de herramientas.&lt;/li&gt;&lt;/ul&gt;A continuación, una vez preparada la plataforma, iremos haciendo un recorrido por las diferentes soluciones de las que dispone Pentaho para abordar el análisis de nuestro datos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Reporting&lt;/strong&gt;: &lt;a href="http://wiki.pentaho.com/display/Reporting/Pentaho+Reporting+Community+Documentation"&gt;Pentaho Report Designer&lt;/a&gt;. Otras posibilidades de reporting (&lt;a href="http://www.eclipse.org/birt/"&gt;Birt&lt;/a&gt; y  &lt;a href="http://jasperforge.org/projects/jasperreports"&gt;JasperReports&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Analisis Olap&lt;/strong&gt;: Cubos Olap y navegación dimensional con &lt;a href="http://mondrian.pentaho.org/"&gt;Mondrian&lt;/a&gt;, jpivot y &lt;a href="https://code.google.com/p/stpivot/"&gt;stpivot&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cuadros de mando y tableros&lt;/strong&gt; en Pentaho con Community Dashboard Framework (&lt;a href="http://wiki.pentaho.com/display/COM/Community+Dashboard+Framework"&gt;CDF&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;DataMining&lt;/strong&gt; con &lt;a href="http://weka.pentaho.org/"&gt;Weka&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Integración de otros componentes&lt;/strong&gt;: Design Studio.&lt;/li&gt;&lt;/ul&gt;Los materiales que vamos a utilizar para este cometido serán principalmente los siguientes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Libro Pentaho&lt;/strong&gt;: como guia para el recorrido por todas las soluciones he elegido el libro &lt;strong&gt;&lt;a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470484322.html"&gt;Pentaho Solutions: &lt;/a&gt;&lt;a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470484322.html"&gt;Business Intelligence and Data Warehousing with   Pentaho and MySQL&lt;/a&gt;&lt;/strong&gt;, escrito por&lt;a href="http://eu.wiley.com/WileyCDA/Section/id-302479.html?query=Roland+Bouman"&gt; Roland  Bouman&lt;/a&gt;, &lt;a href="http://eu.wiley.com/WileyCDA/Section/id-302479.html?query=Jos+van+Dongen"&gt;Jos  van Dongen.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Documentación Web&lt;/strong&gt;:&amp;nbsp; &lt;a href="http://wiki.pentaho.com/display/ServerDoc2x/BI+Server+2.x-3.x+Community+Documentation"&gt;BI Server 2.x-3.x Community Documentation&lt;/a&gt;, &lt;a href="http://mondrian.pentaho.org/documentation/doc.php"&gt;Mondrian&lt;/a&gt;, &lt;a href="http://wiki.pentaho.com/display/Reporting/Pentaho+Reporting+Community+Documentation"&gt;Pentaho Reporting&lt;/a&gt;, &lt;a href="http://wiki.pentaho.com/display/DATAMINING/Pentaho+Data+Mining+Community+Documentation"&gt;Weka&lt;/a&gt;, &lt;a href="http://wiki.pentaho.com/display/COM/Community+Wiki+Home"&gt;Wiki&lt;/a&gt; de la comunidad Pentaho, &lt;a href="http://wiki.pentaho.com/display/COM/Community+Dashboard+Framework"&gt;Community Dashboard Framework&lt;/a&gt;, &lt;a href="http://www.pentaho.com/products/demos/showNtell.php?tab=demos&amp;amp;article=ad-hoc-reporting"&gt;Demos y Videos&lt;/a&gt;, &lt;a href="http://www.youtube.com/cssmgt"&gt;Youtube&lt;/a&gt;, etc.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span class="embed-youtube" style="display: block; text-align: center;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.prashantraju.com/"&gt;Prashant Raju&lt;/a&gt;&lt;/strong&gt;: en su blog ha  incluido una serie de articulos donde explica aspectos tan interantes  como la &lt;a href="http://www.prashantraju.com/2010/02/customising-the-pentaho-user-console-part-1/"&gt;personalización  de la consola de Usuario de Pentaho (Mantle)&lt;/a&gt;, guias de&lt;a href="http://www.prashantraju.com/projects/pentaho/"&gt; instalación y  configuración para trabajar con diferentes bases de datos&lt;/a&gt; ( &lt;a href="http://docs.google.com/Doc?docid=0AdJmocc0fj_EZDJ3YmZiZF83OWRkOHY2M2Rn&amp;amp;hl=en"&gt;MySql&lt;/a&gt;,  &lt;a href="http://docs.google.com/Doc?docid=0AdJmocc0fj_EZDJ3YmZiZF84NmhrN2Y0aGd4&amp;amp;hl=en"&gt;PostgreSQL&lt;/a&gt; y &lt;a href="http://docs.google.com/Doc?docid=0AdJmocc0fj_EZDJ3YmZiZF84OGZ6bmRibWhj&amp;amp;hl=en"&gt;Oracle&lt;/a&gt; ), serie de tutoriales para trabar con &lt;a href="http://www.prashantraju.com/category/pentaho/report-designer/"&gt;Pentaho  Report Designer&lt;/a&gt;, etc.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Maquina Virtual&lt;/strong&gt;: en&lt;a href="http://www.dataprix.com/blogs/bernabeu-dario/pentaho-20-imagen-virtual"&gt; dataprix.com&lt;/a&gt;, gracias al magnifico trabajo de Carlos Fernandez y &lt;a href="http://tgx-hefesto.blogspot.com/"&gt;Dario Bernabeu&lt;/a&gt;, teneis una máquina virtual de la plataforma Pentaho totalmente operativa, incluyendo ejemplos de todos los componentes listos para funcionar. Puede ser un punto de partida para ver una plataforma totalmente operativa, utilizando VMWare.&lt;/li&gt;&lt;/ul&gt;La arquitectura de nuestro sistema va a ser la siguiente:&lt;br /&gt;&lt;div class="wp-caption aligncenter" id="attachment_2613" style="width: 426px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/arquitectura1.jpg"&gt;&lt;img alt="" class="size-full wp-image-2613" height="495" src="http://churriwifi.files.wordpress.com/2010/06/arquitectura1.jpg?w=416&amp;amp;h=495" title="Arquitectura" width="416" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Configuración de nuestro sistema BI&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;Os adelanto que nos va a tocar modificar bastantes ficheros de configuración para que todo funcione correctamente y para personalizar tanto el portal como el funcionamiento de las herramientas, lo cual resulta un poco farragoso en ocasiones. Por ejemplo, para las conexiones a Base de Datos, hay que configurar lo mismo en un montón de sitios, echandose de menos una especie de repositorio común.&amp;nbsp; Empezemos…&lt;br /&gt;  &lt;div class="sharedaddy sd-rating-enabled sd-sharing-enabled"&gt;&lt;div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"&gt;&lt;h3 class="sd-title"&gt;Compartelo:&lt;/h3&gt;&lt;div class="sd-content"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="sharing-anchor sd-button share-more" href="http://churriwifi.wordpress.com/category/pentaho/#"&gt;&lt;span&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="share-end"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="category"&gt;Publicado en  &lt;a href="http://churriwifi.wordpress.com/category/business-intelligence/" rel="category tag" title="Ver todas las entradas en Business Intelligence"&gt;Business Intelligence&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/opensource/" rel="category tag" title="Ver todas las entradas en OpenSource"&gt;OpenSource&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/pentaho/" rel="category tag" title="Ver todas las entradas en Pentaho"&gt;Pentaho&lt;/a&gt; |    &lt;a href="http://churriwifi.wordpress.com/2010/06/08/17-implementando-nuestro-sistema-bi-con-pentaho/#respond" title="Comentarios en 17. Implementando nuestro sistema BI con Pentaho."&gt;Deja un Comentario »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-2148 post type-post status-publish format-standard hentry category-etl category-kettle category-pentaho category-talend" id="post-2148"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/06/01/comparativa-talend-vs-kettle-pdi/" rel="bookmark" title="Permanent link to 16.4. Comparativa ETL Talend vs Pentaho Data Integration (Kettle)."&gt;16.4. Comparativa ETL Talend vs Pentaho Data Integration&amp;nbsp;(Kettle).&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 1 junio 2010&lt;/div&gt;&lt;div class="entry"&gt;     &lt;pre&gt;(Read in English language &lt;a href="http://churriwifi.wordpress.com/2010/06/01/comparing-talend-open-studio-and-pentaho-data-integration-kettle/"&gt;here&lt;/a&gt;)&lt;/pre&gt;Vamos a intentar en esta ultima entrada de la serie de procesos ETL realizar una comparativa lo mas completa posible de las herramientas Talend Open Studio y Pentaho Data Integration (Kettle), que hemos estado utilizando en los últimos meses. Para que este estudio sea lo mas completo y riguroso posible, vamos a dividir esta tarea en 5 secciones:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2521" style="width: 684px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/05/jobdimcliente.jpg"&gt;&lt;img alt="" class="size-full wp-image-2521" height="429" src="http://churriwifi.files.wordpress.com/2010/05/jobdimcliente.jpg?w=674&amp;amp;h=429" title="JobDimCliente" width="674" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Ejemplo de proceso ETL utilizando Talend&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Tabla de características.&lt;/li&gt;&lt;li&gt;Ejemplos de Uso.&lt;/li&gt;&lt;li&gt;Cuadro de puntos fuertes/puntos debiles.&lt;/li&gt;&lt;li&gt;Links de recursos (comparativas e informacion adicional).&lt;/li&gt;&lt;li&gt;Conclusiones.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Tabla de Características.&lt;/h2&gt;&lt;table border="1" cellpadding="0" cellspacing="0" style="height: 1647px; width: 658px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Producto&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;&lt;strong&gt;TALEND OPEN STUDIO ver.4.0&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="215"&gt;&lt;strong&gt;PENTAHO DATA INTEGRACION CE (KETTLE) ver 3.2&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Fabricante&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Talend – Francia&lt;/td&gt;&lt;td valign="top" width="215"&gt;Pentaho – Estados Unidos&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;&lt;a href="http://www.talend.com/"&gt;www.talend.com&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="215"&gt;&lt;a href="http://churriwifi.wordpress.com/category/pentaho/www.pentaho.com"&gt;www.pentaho.com&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Licencia&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;&lt;a href="http://www.pentaho.com/license/lgplv2.1" title="GNU Lesser  General Public License Version 2.1 (LGPLv2.1)"&gt;GNU Lesser General Public License   Version 2.1 (LGPLv2.1)&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="215"&gt;&lt;a href="http://www.pentaho.com/license/lgplv2.1" title="GNU Lesser  General Public License Version 2.1 (LGPLv2.1)"&gt;GNU Lesser General Public License   Version 2.1 (LGPLv2.1)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Lenguaje de desarrollo&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Java&lt;/td&gt;&lt;td valign="top" width="215"&gt;Java&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Año de lanzamiento&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;2006&lt;/td&gt;&lt;td valign="top" width="215"&gt;2000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Entorno gráfico&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Herramienta gráfica basada en &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="215"&gt;Herramienta de diseño (Spoon) basada en &lt;a href="http://www.eclipse.org/swt/"&gt;SWT&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Entorno de ejecución&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Desde la herramienta de diseño,   o a nivel de línea de comandos con Java o Perl (independiente de la   herramienta)&lt;/td&gt;&lt;td valign="top" width="215"&gt;Desde la herramienta de diseño, o desde línea de comandos   con las utilidades &lt;a href="http://wiki.pentaho.com/pages/viewpage.action?pageId=11869063"&gt;&lt;strong&gt;Pan&lt;/strong&gt;&lt;/a&gt; y &lt;a href="http://wiki.pentaho.com/pages/viewpage.action?pageId=11869458"&gt;&lt;strong&gt;Kitchen&lt;/strong&gt;&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Características&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Con la herramienta de diseño construimos los Jobs,   utilizando el set de componentes disponibles.Trabaja además con el concepto de proyecto, que es   un contenedor de los diferentes Jobs que lo forman y sus metadatos y   contextos.Talend es un generador de código, de forma que los   Jobs definidos son traducidos al correspondiente lenguaje (podemos elegir   Java o Perl al crear un proyecto), compilados y ejecutados.Los componentes se enlazan entre si con diferentes tipos de conexiones. Una son de paso de información (que pueden ser del tipo Row o Iterate, segun la forma de pasar los datos). Ademas, se pueden conectar unos con otros con conexiones disparadoras (Run If, If Component Ok, If Component Error), que nos permiten articular la secuencia de ejecución y su control.Una vez se termina el diseño de los trabajos,   se exportan a nivel de SO, y se pueden ejecutar independientemente de la   herramienta de diseño en cualquier plataforma que permita la ejecución del   lenguaje seleccionado. Además, todo el código generado es visible y   modificable (aunque lo modifica la herramienta al realizar cualquier cambio en   los Jobs).&lt;/td&gt;&lt;td valign="top" width="215"&gt;Con la herramienta   de diseño Spoon construimos las transformaciones (mínimo nivel de diseño)   utilizando los pasos o steps. En un nivel superior tenemos los Jobs, que   permiten ejecutar las transformaciones y otros componentes, y orquestar los procesos.PDI no es un   generador de código, es un motor de transformación, donde los datos y sus   transformaciones están separadas.Las Transformaciones y Jobs son almacenadas   en formato XML, donde se especifican las acciones a realizar en los datos.Para construir las transformaciones, se utilizan los pasos o componentes, que se enlazan entre si mediante saltos o steps, que determinan el flujo de datos entre los diferentes componentes.Para los jobs, tenemos otro set de pasos, en los que podemos realizar diferentes acciones (o ejecutar transformaciones). Los steps o saltos en este caso determinan el orden de ejecución o la ejecución condicional.&lt;strong&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Componentes&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Talend tiene una   gran cantidad de componentes. El enfoque es tener un componente distinto   según la acción a realizar, y para el acceso a&amp;nbsp;&amp;nbsp; base de datos u otro sistemas, hay   componentes diferentes según el motor de base de datos al que vayamos a   atacar. Por ejemplo, tenemos un table input para cada fabricante (Oracle,   MySQL, Informix, Ingres) o uno para la gestión de SCD para cada SGBDR. Podeis ver la lista de componentes disponibles&lt;a href="http://www.talendforge.org/components/index.php"&gt; aquí&lt;/a&gt;.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Set mas reducido de componentes, pero muy orientados a   integración de datos. Para acciones similares (por ejemplo, lectura de tablas   de BD), un único paso (no uno por cada fabricante), y el comportamiento según   la base de datos lo define la conexión. Los elementos disponibles son: para las transformaciones ver &lt;a href="http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+v3.2.+Steps"&gt;aquí&lt;/a&gt; y para los jobs &lt;a href="http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+v3.2.+Job+Entries"&gt;aquí&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Plataforma&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Windows, Unix y Linux.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Windows, Unix y Linux.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Repositorio&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Trabaja con el concepto de workspace, a nivel de sistema de ficheros. En ese lugar se   almacenan todos los componentes de un proyecto (todos los Jobs, su definición   de metadatos, código personalizado y contextos). El repositorio se actualiza con las dependencias de   objetos al ser modificados (se expanden a todo el proyecto los cambios). Si   modificamos el repositorio de una tabla, por ejemplo, &amp;nbsp;se actualiza en todos los Jobs donde se   utiliza.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Los Jobs y transformaciones son almacenados en formato   xml. Podemos elegir almacenar a nivel de sistema de fichero o en el   repositorio de base de datos (para trabajo en equipo). No se actualizan las   dependencias si modificamos una transformación llamada desde otra, por   ejemplo. Si a nivel de componentes dentro de una misma transformación o job.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Metadatos&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Completo metadata que incluye las conexiones a base de   datos y los objetos de esta (tablas, vistas, querys). Al traer el metadata de   los objetos de BD deseados, no se vuelve a acceder al sistema origen o   destino, lo que agiliza los procesos. Además, podemos definir metadatos de   estructuras de ficheros (delimitados, posicionales, Excel, xml, etc), que   luego pueden ser reutilizados en cualquier componente. Se almacenan de forma   centralizada en el repositorio (workspace)&lt;/td&gt;&lt;td valign="top" width="215"&gt;EL metadata se limita a las conexiónes de base de datos,   que si pueden ser compartidas por diferentes transformaciones y jobs.La información de metadata de base de datos (catalogo de   tablas/campos) o de ficheros esta en los pasos y no se puede reutilizar. Además   se lee en el momento de diseño.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Contextos&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Set de Variables que se configuran en el proyecto y que se   pueden utilizar luego en los Jobs para personalizar su comportamiento (por   ejemplo para definir entorno de desarrollo y productivo).&lt;/td&gt;&lt;td valign="top" width="215"&gt;Uso de variables   en fichero de parámetros de la herramienta (fichero kettle. Properties). Paso   de parámetros y argumentos a los procesos (similar a los contextos).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Versiones&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Nos permite realizar una completa gestión del versionado   de objetos (pudiendo recuperar versiones anteriores)&lt;/td&gt;&lt;td valign="top" width="215"&gt;Funcionalidad   prevista en la versión 4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Lenguajes para definir componentes propios (scripting)&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Talend nos permite introducir nuestro código personalizado   utilizando Java y &lt;a href="http://blog.gobansaor.com/2008/07/20/groovy-as-talends-scripting-language/"&gt;Groovy&lt;/a&gt;.Además podemos realizar scripting en SQL y Shell.&lt;/td&gt;&lt;td valign="top" width="215"&gt;PDI&lt;strong&gt; &lt;/strong&gt;utiliza JavaScript para los cálculos y formulas.Ademas podemos realizar scripting con SQL, Java, Shell y formulas Open Office.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Herramientas complementarias&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Talend dispone de herramientas complementarias para &lt;a href="http://www.talend.com/products-data-quality/talend-open-profiler.php"&gt;Data   Profiling&lt;/a&gt; y &lt;a href="http://www.talend.com/master-data-management/talend-mdm.php"&gt;Gestión de   Datos Maestros (MDM)&lt;/a&gt;. En Open Studio tenemos una herramienta de modelado   sencilla para dibujar procesos y modelos lógicos.&lt;/td&gt;&lt;td valign="top" width="215"&gt;PDI ofrece en la versión 4.0 la funcionalidad Agile para   modelado dimensional y su publicación en Pentaho BI.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Plugins&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Descarga de nuevos componentes a través de Talend &lt;a href="http://www.talendforge.org/exchange/"&gt;Exchange&lt;/a&gt;.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Incorporación de plugins adicionales en la &lt;a href="http://wiki.pentaho.com/display/EAI/List+of+Available+Pentaho+Data+Integration+Plug-Ins"&gt;web&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Soporte&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Un completa comunidad online con &lt;a href="http://talendforge.org/wiki/doku.php"&gt;Talend’s wiki&lt;/a&gt;, &lt;a href="http://talendforge.org/forum/"&gt;Talend Forum&lt;/a&gt; y &lt;a href="http://talendforge.org/bugs"&gt;bugtracker&lt;/a&gt;, para la gestión de   incidencias y Bugs.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Incluye   el &lt;a href="http://forums.pentaho.org/"&gt;Pentaho forum&lt;/a&gt;, &lt;a href="http://jira.pentaho.org/"&gt;Issue Tracking&lt;/a&gt; y la &lt;a href="http://community.pentaho.com/"&gt;Pentaho Community&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Documentación&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Completa documentación en &lt;a href="http://www.talend.com/resources/documentation.php"&gt;pdf&lt;/a&gt; que incluye:   Manual de Instalación, Manual de Usuario y Documentación de componentes.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Documentación &lt;a href="http://wiki.pentaho.com/display/EAI/Latest+Pentaho+Data+Integration+%28aka+Kettle%29+Documentation"&gt;Online&lt;/a&gt; en la web. Libros: &lt;a href="http://wiki.pentaho.com/display/COM/Pentaho+3.2+Data+Integration-+Beginner%27s+Guide" title="Pentaho Data Integration 3.2 &amp;quot;Beginner's Guide"&gt;Data  Integration-Pentaho 3.2 Beginner’s Guide&lt;/a&gt;(M.C.Roldan), &lt;a href="http://www.amazon.com/Pentaho-Kettle-Solutions-Building-Integration/dp/0470635177"&gt;Pentaho Kettle Solutions&lt;/a&gt; (M.Casters, R.Bouman, J.van Dongen).&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;Ejemplos de Uso.&lt;/h2&gt;&lt;table border="1" cellpadding="0" cellspacing="0" style="height: 468px; width: 656px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;&lt;strong&gt;EJEMPLO&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;strong&gt;TALEND OPEN STUDIO&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;strong&gt;PENTAHO DATA INTEGRATION   (KETTLE)&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Carga de dimensión tiempo de un DW&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/01/01/12-proceso-etl-para-la-carga-de-la-dimension-tiempo-ejemplo-de-uso-de-la-etl-talend/" title="Enlace Permanente a 12. Proceso ETL para la carga de la  Dimensión Tiempo. Ejemplo de uso de la ETL Talend."&gt;Proceso   ETL para la carga de la Dimensión Tiempo. Ejemplo de uso de la   ETL&amp;nbsp;Talend.&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/12/16-3-1-dimension-tiempo/" title="Permanent link to 16.3.1. ETL  Dimensión Tiempo  con PDI."&gt;ETL   Dimensión Tiempo con&amp;nbsp;PDI.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Ejecución de sentencias sql dinámicas&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/01/05/13-1-mas-ejemplos-talend/" title="Enlace Permanente a 13.1. Mas ejemplos de Talend. Ejecución de  sentencias SQL construidas en tiempo ejecución."&gt;Mas   ejemplos de Talend. Ejecución de sentencias SQL construidas en   tiempo&amp;nbsp;ejecución.&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/28/paso-de-parametros-y-operaciones-dinamicas-en-una-transformacion-de-pdi/" title="Permanent link to Paso de  parametros y  operaciones dinamicas  en una transformación de PDI."&gt;Paso   de parametros y operaciones dinamicas en una transformación de&amp;nbsp;PDI.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Carga de dimensión producto de un DW&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/01/09/13-2-etl-para-carga-dimension-producto-mas-ejemplos-de-talend/" title="Enlace Permanente a 13.2. ETL para carga Dimension Producto.  Mas ejemplos de Talend. Uso de logs, metricas y estadisticas."&gt;ETL   para carga Dimension Producto. Mas ejemplos de Talend. Uso de logs, metricas   y&amp;nbsp;estadisticas.&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/22/16-3-2-etl-dimension-producto-con-pdi/" title="Permanent link to 16.3.2. ETL  Dimensión Producto  con PDI  (I). Extraccion a Stage Area."&gt;ETL   Dimensión Producto con PDI (I). Extraccion a Stage&amp;nbsp;Area.&lt;/a&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/25/16-3-2-etl-dimension-producto-con-pdi-ii-carga-al-dw/" title="Permanent link to 16.3.2.2. ETL  Dimensión Producto con PDI  (II). Carga al DW."&gt;ETL   Dimensión Producto con PDI (II). Carga al&amp;nbsp;DW.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Carga de dimensión cliente de un DW&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/01/12/13-3-etl-dimension-cliente/" title="Enlace Permanente a 13.3. ETL Talend Dimension Cliente.Tipos  de Mapeo para lookup. Gestión de SCD (Dimensiones  lentamente cambiantes)."&gt;ETL   Talend Dimension Cliente.Tipos de Mapeo para lookup.&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/27/16-3-3-etl-dimension-cliente-con-pdi/" title="Permanent link to 16.3.3. ETL  Dimensión Cliente  con PDI."&gt;ETL   Dimensión Cliente con&amp;nbsp;PDI.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Tratamiento de dimensiones lentamente cambiantes&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/01/12/13-3-etl-dimension-cliente/" title="Enlace Permanente a 13.3. ETL Talend Dimension Cliente.Tipos  de Mapeo para lookup. Gestión de SCD (Dimensiones  lentamente cambiantes)."&gt; Gestión de SCD (Dimensiones   lentamente&amp;nbsp;cambiantes).&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/19/tratamiento-de-scd-con-pdi/" title="Permanent link to Tratamiento  de Dimensiones  Lentamente  Cambiantes (SCD) con PDI."&gt;Tratamiento   de Dimensiones Lentamente Cambiantes (SCD) con&amp;nbsp;PDI.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Conexión al ERP Sap&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/01/13/ejemplo-talend-sap/" title="Enlace Permanente a Ejemplo Talend para conectarnos a Sap"&gt;Ejemplo   Talend para conectarnos a&amp;nbsp;Sap&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/07/ejemplo-kettle-para-conectarnos-a-sap-via-proerpconn-de-proratio/" title="Permanent link to Ejemplo  Kettle para conectarnos a Sap (con  el plugin ProERPConn)"&gt;Ejemplo   Kettle para conectarnos a Sap (con el plugin&amp;nbsp;ProERPConn)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Carga de tablas de hechos de ventas en un DW&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/01/18/13-4-2-etl-talend-tabla-hechos/" title="Enlace Permanente a 13.4.2. Tabla Hechos Venta. Ajuste diseño  fisico y procesos carga ETL. Contextos en Talend."&gt;Tabla   Hechos Venta. Ajuste diseño fisico y procesos carga ETL. Contextos   en&amp;nbsp;Talend.&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/30/16-3-4-etl-carga-de-hechos-de-ventas-con-pdi/"&gt;ETL   Carga de hechos de ventas con PDI.&lt;/a&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/30/16-3-5-etl-carga-de-hechos-de-presupuestos-con-pdi/"&gt;ETL   Carga de hechos de presupuestos con PDI.&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Exportación de Jobs y planificación procesos&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/01/18/13-5-planif-procesos-talend/" title="Enlace Permanente a 13.5. Exportación jobs en  Talend.Planificacion procesos ETL."&gt;Exportación   jobs en Talend.Planificacion procesos&amp;nbsp;ETL.&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Tratamiento de datos públicos&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/03/24/14-11-1-modelo-datos-londres/"&gt;Modelo   de Datos y Procesos de Carga del DW de datos públicos de Londres.&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Explicación de la interfaz de usuario&lt;/td&gt;&lt;td valign="top" width="224"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="232"&gt;&lt;a href="http://churriwifi.wordpress.com/2010/05/10/16-3-construccion-procesos-etl-utilizando-kettle-pentaho-data-integration/"&gt;Construccion   procesos ETL utilizando Kettle (Pentaho Data Integration)&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="127"&gt;Proyecto de Grado (comparativa Pentaho/JasperETL). Realizado por Rodrigo Almeida y Mariano Heredia&lt;/td&gt;&lt;td valign="top" width="224"&gt;Proyecto fin de carrera donde se detalla un proyecto de Business Intelligence, utilizando las herramientas de Pentaho y Jasper. En la parte de ETL´s, se compara Kettle con JasperETL (basado en Talend).&lt;/td&gt;&lt;td valign="top" width="232"&gt;Descarga del libro en la web: &lt;a href="http://sites.google.com/site/magm33332/bifloss"&gt;http://sites.google.com/site/magm33332/bifloss. &lt;/a&gt;Incluye un magnifico detalle de las características de cada herramienta.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Como ejemplos adicionales, podeis consultar igualmente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tutorial de Talend Open Studio 4 realizado por Victor Javier Madrid en la web &lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=TOS4.0"&gt;adictosaltrabajo.com&lt;/a&gt;. Incluye otro &lt;a href="http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=talendEDI"&gt;ejemplo&lt;/a&gt; para procesar un fichero EDI con Talend.&lt;/li&gt;&lt;li&gt;Libro blanco de las heramientas ETL Open Source, realizado en frances por &lt;a href="http://www.atolcd.com/fileadmin/Publications/Atol_CD_Livre_Blanc_ETL_Open_Source.pdf"&gt;Atol&lt;/a&gt;. Incluye una serie de ejemplos prácticos muy completos.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2522" style="width: 829px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/05/transformacion-etl-tabla-hechos-ventas3.jpg"&gt;&lt;img alt="" class="size-full wp-image-2522" height="318" src="http://churriwifi.files.wordpress.com/2010/05/transformacion-etl-tabla-hechos-ventas3.jpg?w=819&amp;amp;h=318" title="Transformacion ETL Tabla Hechos Ventas" width="819" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Ejemplo de proceso ETL utilizando Pentaho Data Integration&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Cuadro de puntos fuertes/puntos debiles.&lt;/h2&gt;Desde mi punto de vista, con la experiencia de utilización de las dos herramientas y la información recopilada sobre las herramientas y la experiencia de usuarios, puedo destacar los siguientes aspectos:&lt;br /&gt;&lt;table border="1" cellpadding="0" cellspacing="0" style="height: 1827px; width: 655px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;TALEND OPEN STUDIO&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;PENTAHO DATA   INTEGRATION (KETTLE)&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;Es un &lt;strong&gt;generador de código&lt;/strong&gt;, y este aspecto hace que tenga   una gran dependencia del lenguaje elegido en los proyectos (Java en mi caso).   &lt;strong&gt;Al elegir Java, tenemos todas las ventajas e inconvenientes de este lenguaje&lt;/strong&gt;.   Se necesita tener un nivel alto de este lenguaje para sacarle el máximo   partido a la aplicación.&lt;/td&gt;&lt;td valign="top" width="286"&gt;Es un &lt;strong&gt;motor de transformación, y desde el principio se   observa que ha sido diseñado por gente que necesitaba cubrir sus necesidades   en la integración de datos&lt;/strong&gt;, con gran experiencia en ese ámbito. Igualmente, es mas fácil gestionar los tipos de datos con PDI, pues no es tan riguroso como Java.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;Herramienta &lt;strong&gt;poco intuitiva y difícil de entender, pero una   vez superada esta dificultad inicial se observan las grandísimas posibilidades   y la potencia de la aplicación&lt;/strong&gt;.&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;La herramienta es muy intuitiva, y con unos conceptos   básicos te puedes poner a hacer cosas. Conceptualmente muy sencilla y   potente.&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Interfaz de usuario unificada&lt;/strong&gt; en todos los componentes.   Basada en &lt;strong&gt;Eclipse&lt;/strong&gt;, el conocimiento de la herramienta nos facilita el uso de   la interfaz.&lt;/td&gt;&lt;td valign="top" width="286"&gt;El &lt;strong&gt;diseño de la interfaz&lt;/strong&gt; puede resultar un poco &lt;strong&gt;pobre&lt;/strong&gt;, y   &lt;strong&gt;no hay una interfaz unificada&lt;/strong&gt; en todos los componentes, siendo en ocasiones   la interfaz de los componentes confusa.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;La empresa Talend esta invirtiendo gran cantidad de   recursos en su desarrollo (gracias a aportaciones de capital de varios fondos   de inversión), lo que esta produciendo una &lt;strong&gt;evolución muy rápida&lt;/strong&gt; de la   herramienta. Se observa un gran potencial de futuro. &lt;strong&gt;El producto además se   esta complementando con otras herramientas para Data Profiling y MDM&lt;/strong&gt;.&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;Evolución mucho más lenta de la herramienta&lt;/strong&gt; e incierta,   pues Pentaho tiende a &lt;a href="http://wiki.pentaho.com/download/attachments/12386846/community_user_guide.pdf?version=1"&gt;abandonar&lt;/a&gt; la parte Open.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;Gran disponibilidad de componentes para conectarnos a múltiples   sistemas y orígenes de datos, y en continua evolución.&lt;/td&gt;&lt;td valign="top" width="286"&gt;Disponibilidad de componentes más limitada, aunque más que   suficiente para la mayoría de procesos ETL o de integración de datos.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;Aunque &lt;strong&gt;no disponemos de un repositorio en base de datos&lt;/strong&gt; para trabajo en equipo (si en las versiones de pago), el trabajo con el   &lt;strong&gt;Workspace&lt;/strong&gt; nos da muchas posibilidades, al trabajar &lt;strong&gt;con el concepto de   proyecto.&lt;/strong&gt; Muy útil el análisis y actualización de dependencias cuando se   modifican elementos (que son distribuidos a todos los Jobs de un proyecto).&lt;/td&gt;&lt;td valign="top" width="286"&gt;El &lt;strong&gt;repositorio en base de datos nos da muchas   posibilidades para el trabajo en equipo&lt;/strong&gt;. En este repositorio se almacenan los   &lt;strong&gt;xml&lt;/strong&gt; que contienen las acciones que realizan sobre los datos las   transformaciones y los Jobs.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;Enfoque un componente por cada fabricante en los elementos   para trabajar con bases de datos.&lt;/td&gt;&lt;td valign="top" width="286"&gt;Enfoque un único componente por tipo de acción sobre la   base de datos (y las características de la conexión utilizada son las que   determinan su comportamiento).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Ayuda contextual en la aplicación&lt;/strong&gt;. Completa ayuda online   de los componentes. Cuando diseñamos nuestros propios controles en Java,   tenemos la ayuda contextual del lenguaje proporcionada por Eclipse.&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;Ayuda muy pobre&lt;/strong&gt;, casi inexistente en la aplicación. La   ayuda online en la web de Pentaho no es especialmente completa, y en algunos   componentes es muy reducida, de forma que la única forma de averiguar el   funcionamiento del componente es probándolo.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Logs:&lt;/strong&gt; podemos   configurarlos a nivel de proyecto o en cada uno de los Jobs. Indicando si   queremos sobrescribir la configuración del proyecto en ese aspecto. El log se   puede enviar a base de datos, a consola o a ficheros. La funcionalidad esta   muy desarrollada, distinguiendo logs de estadísticas, de métricas de procesos   y de los logs propiamente dichos (para gestionar los errores).&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;Logs:&lt;/strong&gt; diferentes niveles de logs (desde el más básico,   hasta el nivel de cada registro). Suficiente para analizar las ejecuciones de   las transformaciones y jobs. Posiblidad de registrar log en base de datos,   aunque muy limitado. Los logs se configuran a nivel de transformaciones y   Jobs.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Debug:&lt;/strong&gt; con la perspectiva Debug de Eclipse, podemos seguir   la traza de la ejecución (viendo el código fuente) tal y como si estuviéramos   programando en Eclipse. También se puede incluir visualización de   estadísticas y datos de traza o tiempos de respuesta en la ejecución de la   herramienta gráfica.&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;Debug:&lt;/strong&gt; contiene una sencilla herramienta de debug, muy   básica.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Versionado de objetos:&lt;/strong&gt; en el Workspace tenemos una   completa gestión de versionado de Jobs (con minus y major number). Nos   permite recuperar las versiones anteriores en caso de problemas. Dispone de una herramienta para modificación masiva de versiones de objetos (puede ser muy util para realizar el versionado de distribuciones).&lt;/td&gt;&lt;td valign="top" width="286"&gt;El versionado de objetos esta previsto que se incluya en   la versión 4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Paralelismo: muy reducido&lt;/strong&gt; en las versiones Open. Funcionalidad avanzada en las versiones de pago (Integration Suite).&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;Paralelismo: es muy sencillo realizar paralelismo de   procesos con la opcion Distribute Data&lt;/strong&gt; en la configuración del paso de información entre pasos, aunque habrá que   llevar cuidado con las incosistentencias según el  tipo de proceso.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Generación de documentación automática en HTML&lt;/strong&gt; de los   Jobs. Incluye visualización gráfica de los diseños, tablas de propiedades,   documentación adicional o textos explicativos que hayamos introducido en los   componentes, etc. Podéis ver un ejemplo &lt;a href="http://roberto-espinosa.es/talend/DimProducto/DimProducto_0.1.html"&gt;aquí&lt;/a&gt;.&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;&lt;del&gt;No se puede generar documentación de las transformaciones   y Jobs&lt;/del&gt;. A nivel gráfico, podemos incluir notas con comentarios&lt;/strong&gt; en el dibujo   de los procesos.&lt;strong&gt; Con el proyecto &lt;a href="http://code.google.com/p/kettle-cookbook/"&gt;kettle-cookbook&lt;/a&gt; se puede generar documentacion en html.&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Herramienta sencilla para modelado gráfico.&lt;/strong&gt; En ella   podemos dibujar de forma conceptual los diseños de nuestras Jobs y procesos.&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Generación continúa de nuevas versiones, que incorporan   mejoras y arreglo de Bugs&lt;/strong&gt;.&lt;/td&gt;&lt;td valign="top" width="286"&gt;La &lt;strong&gt;generación de nuevas versiones no&lt;/strong&gt; es muy &lt;strong&gt;frecuente&lt;/strong&gt;, y tenemos que generarnos   nosotros mismos las versiones actualizadas con los últimos fuentes   disponibles: Ver entrada del Blog de &lt;a href="http://www.fabianschladitz.de/index.php/Diverses/howto-build-your-very-own-pdi-aka-kettle-version-from-svn.html"&gt;Fabian   Schladitz&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;a href="http://talendforge.org/exchange/index.php"&gt;Talend   Exchange&lt;/a&gt;: lugar donde la comunidad elaborar sus propios componentes y los   comparte con el resto de usuarios.&lt;/td&gt;&lt;td valign="top" width="286"&gt;Pentaho también dispone de colaboradores que desarrollan y   liberan plugins en &lt;a href="http://wiki.pentaho.com/display/EAI/List+of+Available+Pentaho+Data+Integration+Plug-Ins"&gt;su   web&lt;/a&gt;, aunque con menos actividad que Talend.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;Como punto negativo, en ocasiones se nota en demasía la   &lt;strong&gt;lentitud ocasionada por el uso de Java&lt;/strong&gt;.&lt;/td&gt;&lt;td valign="top" width="286"&gt;Como punto negativo, &lt;strong&gt;algunos componentes no se han   comportando de la forma esperada&lt;/strong&gt;, al realizar transformaciones muy complejas   o al enlazar llamadas entre diferentes transformaciones a Jobs. Los problemas   se pudieron superar cambiando el diseño de las transformaciones.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;Es una &lt;strong&gt;ventaja tener un repositorio en local, donde nos   guardamos en local la parte que nos interesa de la información de bases de   datos, tablas, vistas, estructuras de ficheros (texto, Excel, xml). Al estar   en el repositorio, se pueden reutilizar en los componentes asociados y no se   tiene que volver a leer de los orígenes de datos su metadata cada vez que se   usa&lt;/strong&gt; (para el caso de las bases de datos, por ejemplo). Dispone de un   asistente de construcción de querys (SQL Builder) muy potente y con muchas   funcionalidades.&lt;/td&gt;&lt;td valign="top" width="286"&gt;Cuando trabajamos con bases de datos con catálogos muy   grandes, es incomodo tener que recuperarlo entero para poder construir, por   ejemplo, una sentencia sql para leer de una tabla (cuando utilizamos la   opción de navegación por el catalogo).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Reutilización de código:&lt;/strong&gt; podemos incluir nuestras propias   librerías, que son visibles en todos los Jobs de un proyecto. Esto nos   permite de alguna manera &lt;strong&gt;diseñar nuestros propios componentes&lt;/strong&gt;.&lt;/td&gt;&lt;td valign="top" width="286"&gt;El código escrito en JavaScript dentro de los componentes   no se puede reutilizar en otros componentes. &lt;strong&gt;Bastante limitado para añadir   nuevas funcionalidades o modificar las existentes&lt;/strong&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Control del flujo en los procesos&lt;/strong&gt;: tenemos por un lado flujo&amp;nbsp; de datos (row, iterate o row lookup) y por otro lado disparadores para control de ejecución y orquestación de procesos. La combinación row e iterate es muy útil para orquestar procesos del tipo bucle, con el objetivo de repetir tareas. Hay un inconveniente importante que nos puede complicar el diseño de los jobs, y es que no se pueden juntar varios flujos de datos que provengan del mismo origen (han de tener un diferente punto de partida), nunca se han de cruzar en un elemento padre común.&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;Control del flujo en los procesos&lt;/strong&gt;: se pasa la información entre componentes (pasos) con los saltos, de una forma única, y el flujo resultante varía según el tipo de control. Esta forma de interactuar tiene limitaciones para el control de procesos iterativos. Como característica interesante, la encapsulación de transformaciones a traves de los mappings, que nos permite definir transformaciones para procesos repetitivos (similar a una funcion).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Gestión de errores&lt;/strong&gt;: cuando se producen errores, podemos   gestionar el log, pero perdemos el control.&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;Gestión de errores&lt;/strong&gt;: con la gestión de errores en los pasos   que lo permiten, podemos interactuar con esos errores y solucionarlos sin   terminar el proceso (no es siempre posible).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="295"&gt;&lt;strong&gt;Ejecución&lt;/strong&gt;: bien desde la herramienta (que a veces es muy   lenta, sobre todo si incluimos estadísticas y trazas de ejecución).&lt;strong&gt; Para ejecutar a nivel de línea de comandos, se exportan   los Jobs. La exportación genera todos los objetos (librerias jar) necesarias   para poder ejecutar el trabajo, incluyendo un .bat o .sh para ejecutarlo.   Esta forma de exportar los Jobs nos permite llevarlos a cualquier plataforma   donde se pueda ejecutar el lenguaje java o perl, sin necesidad de tener instalado Talend.&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="286"&gt;&lt;strong&gt;Ejecución&lt;/strong&gt;: bien desde la herramienta (tiempos de respuesta   bastante buenos) o bien a nivel de comandos con &lt;a href="http://wiki.pentaho.com/pages/viewpage.action?pageId=11869063"&gt;&lt;strong&gt;Pan (para las transformacionse)&lt;/strong&gt;&lt;/a&gt; y &lt;a href="http://wiki.pentaho.com/pages/viewpage.action?pageId=11869458"&gt;&lt;strong&gt;Kitchen( para los jobs)&lt;/strong&gt;&lt;/a&gt;.   Son &lt;strong&gt;dos utilidades muy sencillas y funcionales que nos permiten ejecutar los   xmls de los diseños (bien desde fichero o desde el repositorio). Siempre es necesario tener instalado PDI para poder ejecutar las herramientas&lt;/strong&gt;. También disponemos de la herramienta&lt;strong&gt; &lt;/strong&gt;&lt;a href="http://wiki.pentaho.com/pages/viewpage.action?pageId=11869469"&gt;Carte&lt;/a&gt;, que es un sencillo servidor web que permite la ejecución remota de jobs y transformaciones.&lt;strong&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;Comparativas e Información adicional.&lt;/h2&gt;&lt;table border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Benchmark entre Pentaho Data Integration y Talend   realizado por Matt Caster.&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://www.ibridge.be/?p=150"&gt;http://www.ibridge.be/?p=150&lt;/a&gt;. Opiniones sobre la prueba en el blog de &lt;a href="http://blog.gobansaor.com/2008/12/04/pentaho-data-integration-kettle-v-talend-benchmark/"&gt;Gobán   Saor&lt;/a&gt; y &lt;a href="http://www.nicholasgoodman.com/bt/blog/2008/11/26/an-arms-race-my-customers-dont-care-about/"&gt;Nicholas   Goodman&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Comparativa entre Kettle y Talend, realizada por Vicent   McBurnety (año 2007)&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://it.toolbox.com/blogs/infosphere/wiki-wednesday-comparing-talend-and-pentaho-kettle-open-source-etl-tools-16294"&gt;http://it.toolbox.com/blogs/infosphere/wiki-wednesday-comparing-talend-and-pentaho-kettle-open-source-etl-tools-16294&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Comparativa entre Kettle, Talend y CloverETL.&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://www.cloveretl.org/_upload/clover-etl/Comparison%20CloverETL%20vs%20Talend%20and%20Pentaho.pdf" target="_blank"&gt;http://www.cloveretl.org/_upload/clover-etl/Comparison%20CloverETL%20vs%20Talend%20and%20Pentaho.pdf&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Benchmark entre PDI, Talend, Datastage e Informatica&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://it.toolbox.com/blogs/infosphere/etl-benchmark-favours-datastage-and-talend-28695"&gt;http://it.toolbox.com/blogs/infosphere/etl-benchmark-favours-datastage-and-talend-28695&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Comparativa de funcionalidades y benchmark entre Talend y   PDI&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://www.atolcd.com/fileadmin/Publications/Atol_CD_Livre_Blanc_ETL_Open_Source.pdf"&gt;http://www.atolcd.com/fileadmin/Publications/Atol_CD_Livre_Blanc_ETL_Open_Source.pdf&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Comparativa entre PDI e Informatica&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://www.jonathanlevin.co.uk/2008/03/pentaho-kettle-vs-informatica.html"&gt;http://www.jonathanlevin.co.uk/2008/03/pentaho-kettle-vs-informatica.html&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Tabla comparada de características en la web   Openmethodology.org&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://mike2.openmethodology.org/wiki/Talend"&gt;Talend&lt;/a&gt; vs &lt;a href="http://mike2.openmethodology.org/wiki/Kettle"&gt;PDI (Kettle).&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Ejemplo sencillo comparado Kettle y Talend&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://forums.pentaho.org/showthread.php?t=57305"&gt;http://forums.pentaho.org/showthread.php?t=57305&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Comparativa de herramientas ETL realizada por la empresa   Adeptia.&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://www.adeptia.com/products/etl_vendor_comparison.html"&gt;http://www.adeptia.com/products/etl_vendor_comparison.html&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Pentaho   Kettle Open Source Review&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://www.datawg.com/pentaho-kettle-open-source-etl-tool-review.html"&gt;http://www.datawg.com/pentaho-kettle-open-source-etl-tool-review.html&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Benchmark entre Pentaho Data Integration y Talend   realizado por Marc Russel.&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://marcrussel.files.wordpress.com/2007/08/benchmark-tos-vs-kettle.pdf"&gt;http://marcrussel.files.wordpress.com/2007/08/benchmark-tos-vs-kettle.pdf&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Comparativa entre Datastage, Talend, Informatica y PDI   (Manapps).&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://marcrussel.files.wordpress.com/2009/02/etlbenchmarks_manapps_090127.pdf"&gt;http://marcrussel.files.wordpress.com/2009/02/etlbenchmarks_manapps_090127.pdf&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;Presentación   PowerPoint comparativa Kettle vs Talend&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://svn2.assembla.com/svn/bbdd_dd/Presentaciones/Kettle%20Vs%20Talend.pptx"&gt;http://svn2.assembla.com/svn/bbdd_dd/Presentaciones/Kettle%20Vs%20Talend.pptx&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;EOS: Open Source Directory.&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;a href="http://www.eosdirectory.com/project/397/Talend+Open+Studio.html"&gt;http://www.eosdirectory.com/project/397/Talend+Open+Studio.html &lt;/a&gt;vs &lt;a href="http://www.eosdirectory.com/project/202/KETTLE++pentaho+data+integration+.html"&gt;http://www.eosdirectory.com/project/202/KETTLE++pentaho+data+integration+.html&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="211"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="370"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;Conclusiones.&lt;/h2&gt;Desde mi punta de vista, creo que &lt;strong&gt;ambas herramientas son complementarias. Cada una con un enfoque, pero permiten realizar las mismas tareas de transformación e integración de datos&lt;/strong&gt;. El producto &lt;strong&gt;Talend tiene para mi mas recorrido, pues se estan poniendo muchos recursos en su desarrollo, y se esta complementando con otras herramientas para crear una verdadera suite de integración de datos&lt;/strong&gt;. También se utiliza en el proyecto de Jaspersoft. Igualmente, el hecho de ser mas abierto y poder ser complementado con el uso del lenguaje Java también le da ciertas ventajas con respecto a Pentaho.&lt;br /&gt;Por otro lado, &lt;strong&gt;Pentaho Data Integration es una herramienta muy intuitiva y facil de utilizar&lt;/strong&gt;. Se nota desde el principio cuando se empieza a usar, como ya mencione, que esta desarrollada bajo el prisma de las problematicas de procesos ETL y transformación de datos. En algunas aspectos se le ve más rápida y ágil que Talend, al no tener que estar moviendo generación de código Java en todo momento. Aunque si se echa de menos la gestión de un repositorio de proyectos verdaderamente integrado, como en Talend, y con un metadatos independiente de los origenes/destinos de datos.&lt;br /&gt;A nivel de rendimiento, y revisando las diferentes comparativas, tampoco  se ve un claro ganador. Una herramienta es mas rapida en algunas cosas (Talend en calculo de agregaciones o Lookups), mientras Pentaho es mas rápido, por ejemplo en el tratamiento de SCD o con los procesos de paralelización. En mis procesos ETL tampoco ha habido unas grandes diferencias de rendimiento, aunque si me ha parecido ligeramente más ágil Pentaho a la hora de realizar los procesos masivos.&lt;br /&gt;&lt;strong&gt;Teniendo en cuenta todo lo visto (y todo lo detallado en los puntos anteriores), yo me decanto ligeramente a favor de Talend, aunque antes de elegir una herramienta para un proyecto, yo realizaría un estudio profundo del tipo de trabajos y casuisticas a las que nos vamos a enfrentar en el diseño de nuestros procesos antes de decantarme por una u otra herramienta. Seguramente habrá factores especificos que pueden recomendar el uso de una u otra (como la necesidad de conectarnos a determinada aplicación o las plataformas donde ejecutar los procesos). Y lo que esta claro en ambos casos, es que cualquiera de las dos nos podría valer para los procesos de construcción de un DW en un entorno real (como he demostrado en este blog con toda la serie de ejemplos publicados)&lt;/strong&gt;.&lt;br /&gt;Si habeis trabajado con alguna de las herramientas, o ambas, quizas tengais algo que añadir a esta comparativa. Espero vuestras opiniones.&lt;br /&gt;&lt;h2&gt;Actualización 18.06.10&lt;/h2&gt;Os dejo el link al ultimo estudio de Gartner sobre Integración de Datos, publicado en noviembre de 2009:&lt;br /&gt;&lt;a href="http://www.gartner.com/technology/media-products/reprints/oracle/article109/article109.html"&gt;Magic Quadrant for Data Integration Tools.&lt;/a&gt;&lt;br /&gt;En el ultimo estudio se ha incluido a Talend como un proveedor emergente de herramientas de Integración de Datos. Si estáis pensando en trabajar con Talend, se dicen cosas interesantes (tanto Pro´s como contras) sobre la evolución del producto y su futuro:&lt;br /&gt;Puntos Fuertes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Dos niveles: nivel de entrada con herramienta Open Source gratuita (Talend Open Studio) y nivel superior con herramienta de pago con mas funcionalidades y soporte (Talend Integration Suite).&lt;/li&gt;&lt;li&gt;Talend esta consiguiendo casi por unanimidad resultados positivos en las empresas. Aunque el factor determinante inicial puede ser su precio, sus características y funcionalidades son el segundo factor determinante de su exito.&lt;/li&gt;&lt;li&gt;Buena conectividad en general. Complementada con las herramientas de Data Profiling y Data Quality. El paso de las versiones Open a las de pago no requiere curva de aprendizaje adicional.&lt;/li&gt;&lt;/ul&gt;Precauciones:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hay escasez de expertos en la herramienta, aunque se esta desarrollando una red de alianzas con otras empresas y desarrollando su red comercial (aunque no estan en todas las regiones).&lt;/li&gt;&lt;li&gt;Existen algunos problemas en las herramientas de pago con el repositorio central (que no esta en la versión&amp;nbsp; Open), cuando se trabaja para coordinar trabajos de desarrollo. Parece que lo estan intentando solucionar en las nuevas versiones.&lt;/li&gt;&lt;li&gt;Algunos clientes han reportado que la documentación es errónea y algún problema en la gestión de los metadatos. Igualmente, es necesario disponer de un experto en Java o Perl para sacarle todo el partido a la herramienta (como indicamos en la comparativo con Pentaho).&lt;/li&gt;&lt;/ul&gt;Os recomiendo la lectura del informe, se dicen cosas muy interesantes en general sobre las herramientas de integración de datos y en particular si estais buscando información de alguna en concreto (como es Talend, el objeto de esta comparativa de productos).&lt;br /&gt;  &lt;div class="sharedaddy sd-rating-enabled sd-sharing-enabled"&gt;&lt;div class="robots-nocontent sd-block sd-social sd-social-official sd-sharing"&gt;&lt;h3 class="sd-title"&gt;Compartelo:&lt;/h3&gt;&lt;div class="sd-content"&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="sharing-anchor sd-button share-more" href="http://churriwifi.wordpress.com/category/pentaho/#"&gt;&lt;span&gt;Share&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li class="share-end"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="category"&gt;Publicado en  &lt;a href="http://churriwifi.wordpress.com/category/etl/" rel="category tag" title="Ver todas las entradas en ETL"&gt;ETL&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/kettle/" rel="category tag" title="Ver todas las entradas en Kettle"&gt;Kettle&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/pentaho/" rel="category tag" title="Ver todas las entradas en Pentaho"&gt;Pentaho&lt;/a&gt;, &lt;a href="http://churriwifi.wordpress.com/category/talend/" rel="category tag" title="Ver todas las entradas en Talend"&gt;Talend&lt;/a&gt; |    &lt;a href="http://churriwifi.wordpress.com/2010/06/01/comparativa-talend-vs-kettle-pdi/#comments" title="Comentarios en 16.4. Comparativa ETL Talend vs Pentaho Data Integration (Kettle)."&gt;8 Comentarios »&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="post-2535 post type-post status-publish format-standard hentry category-etl category-kettle category-pentaho category-talend" id="post-2535"&gt;   &lt;h2&gt;&lt;a href="http://churriwifi.wordpress.com/2010/06/01/comparing-talend-open-studio-and-pentaho-data-integration-kettle/" rel="bookmark" title="Permanent link to ETL´s: Talend Open Studio vs Pentaho Data Integration (Kettle). Comparative."&gt;ETL´s: Talend Open Studio vs Pentaho Data Integration (Kettle).&amp;nbsp;Comparative.&lt;/a&gt;&lt;/h2&gt;&lt;div class="date"&gt;Posted by &lt;a href="http://churriwifi.wordpress.com/"&gt;Roberto Espinosa&lt;/a&gt; en 1 junio 2010&lt;/div&gt;&lt;div class="entry"&gt;     &lt;pre&gt;(Read in Spanish language &lt;a href="http://churriwifi.wordpress.com/2010/06/01/comparativa-talend-vs-kettle-pdi/"&gt;here&lt;/a&gt;)&lt;/pre&gt;Let’s  try in this latest entry of the ETL processes series to make a  comparison as complete as possible of Tools Talend Open Studio and Pentaho  Data Integration (Kettle), which we have been using in last months. For this study to be as comprehensive  and rigorous as possible, we will divide the task in 5 sections:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="wp-caption aligncenter" id="attachment_2538" style="width: 684px;"&gt;&lt;a href="http://churriwifi.files.wordpress.com/2010/06/jobdimcliente.jpg"&gt;&lt;img alt="" class="size-full wp-image-2538" height="429" src="http://churriwifi.files.wordpress.com/2010/06/jobdimcliente.jpg?w=674&amp;amp;h=429" title="JobDimCliente" width="674" /&gt;&lt;/a&gt;&lt;div class="wp-caption-text"&gt;Using Talend Open Studio in ETL Process Design&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt; Property table.&lt;/li&gt;&lt;li&gt; Examples of Use&lt;/li&gt;&lt;li&gt; Strengths /  weaknesses table.&lt;/li&gt;&lt;li&gt; Resource Links (comparative and additional  information.)&lt;/li&gt;&lt;li&gt; Final opinion.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Property table.&lt;/h2&gt;&lt;table border="1" cellpadding="0" cellspacing="0" style="width: 658px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Product&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;&lt;strong&gt;TALEND  OPEN STUDIO ver.4.0&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="215"&gt;&lt;strong&gt;PENTAHO DATA INTEGRACION CE (KETTLE) ver  3.2&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Manufacturer&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Talend – France&lt;/td&gt;&lt;td valign="top" width="215"&gt;Pentaho – United States&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Web&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt; &lt;a href="http://www.talend.com/"&gt;www.talend.com&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="215"&gt;&lt;a href="http://churriwifi.wordpress.com/category/pentaho/www.pentaho.com"&gt;www.pentaho.com&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;&lt;a href="http://www.pentaho.com/license/lgplv2.1" title="GNU Lesser General Public License Version 2.1 (LGPLv2.1)"&gt;GNU Lesser General Public  License   Version 2.1 (LGPLv2.1)&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="215"&gt;&lt;a href="http://www.pentaho.com/license/lgplv2.1" title="GNU Lesser General Public License Version 2.1 (LGPLv2.1)"&gt;GNU Lesser General Public  License   Version 2.1 (LGPLv2.1&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt; &lt;strong&gt;Development &lt;/strong&gt;&lt;strong&gt;Language&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Java&lt;/td&gt;&lt;td valign="top" width="215"&gt;Java&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Release Year&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;2006&lt;/td&gt;&lt;td valign="top" width="215"&gt;2000&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;GUI&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Graphical tool based on &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;&lt;/td&gt;&lt;td valign="top" width="215"&gt;Design Tool (Spoon) based on &lt;a href="http://www.eclipse.org/swt/"&gt;SWT&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Runtime&lt;/strong&gt;&lt;strong&gt; Environment&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;From design tool, or command line with Java or Perl language (independent  of the tool)&lt;/td&gt;&lt;td valign="top" width="215"&gt;From design tool, or command line with utilities&amp;nbsp; &lt;a href="http://wiki.pentaho.com/display/EAI/Pan+User+Documentation"&gt;&lt;strong&gt;Pan&lt;/strong&gt;&lt;/a&gt; and &lt;a href="http://wiki.pentaho.com/display/EAI/Kitchen+User+Documentation"&gt;&lt;strong&gt;Kitchen&lt;/strong&gt;&lt;/a&gt; .&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;With the design tool build the Jobs, using the set of components available.Work with project concept, which is a container of  different Jobs with metadata and contexts. Talend is a code  generator, so Jobs are translated into corresponding defined  language (Java or Perl can choose when create a new project), compiled and executed .Components bind to each other with different types of  connections.&amp;nbsp; One  is to pass information (which may be of Row or Iterate, as how to move  the data).&amp;nbsp; Also, you can connect with each other triggering  connections (Run If, If Component Ok, If Component Error) that allow us  to articulate the sequence of execution and ending time control.Jobs are exported at SO, and can run independently of the design  tool on any platform that allows the execution of the selected  language.&amp;nbsp; In  addition, all generated code is visible and modifiable (although you  modify the tool to make any changes to the Jobs).&lt;/td&gt;&lt;td valign="top" width="215"&gt;With the design tool built Spoon transformations (minimum  design level) using the steps. At a  higher level we have the Jobs that let you run the transformations and  other components, and orchestrate process. PDI is not a code generator,  is a transformation engine, where data and its transformations are  separated.The transformations and Jobs are stored in XML format, which  specifies the actions to take in data processing. In transformations use steps, which are linked to each  other by jumps, which determine the flow of data between  different components. For the jobs, we have another set of steps, which  can perform different actions (or run transformations). The jumps in this case determine  the execution order or conditional execution. &lt;strong&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Components&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Talend has a large number of components. The approach is to have a separate component as the action to take, and  access to databases or other systems, there are different components  according to the database engine that we will attack. For example, we have an input table component for each manufacturer (Oracle,  MySQL, Informix, Ingres), or one for the SCD management&amp;nbsp; for each  RDBMS. You can see available components list &lt;a href="http://www.talendforge.org/components/index.php"&gt;here&lt;/a&gt;.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Smallest components set, but very much  oriented towards data integration. For similar actions (eg reading  database tables), a single step (no one from each manufacturer), and behavior  according to the database defined by the connection. You can see available elements for transformations &lt;a href="http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+v3.2.+Steps"&gt;here&lt;/a&gt; and for jobs &lt;a href="http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+v3.2.+Job+Entries"&gt;here&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Platform&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Windows, Unix and  Linux.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Windows, Unix and Linux.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Repository&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Works with the workspace concept, at filesystem level.&amp;nbsp; In this place you  store all the components of a project (all Jobs, metadata definitions, custom code and contexts). The  repository is updated with the dependencies of changend objects  (expand to all project changes.) If we change the table definition in repository, for example, is updated in all  the Jobs where it is used.&lt;/td&gt;&lt;td valign="top" width="215"&gt;The  Jobs and transformations are stored in XML format. We can choose to store at&amp;nbsp; file system level or in the database repository (for teamwork).  Dependencies are not updated if you  change a transformation who is called from another. If  the level of components within a single transformation or job.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Metadata&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Full metadata that includes links to databases and the objects (tables,  views, querys).&amp;nbsp; Metadata info is centrally stored in workspace and its not necesary to read again from source or destination system, which  streamlines the process. In  addition, we can define metadata file structures (delimited, positional,  Excel, xml, etc), which can then be reused in any component.&lt;/td&gt;&lt;td valign="top" width="215"&gt;The metadata is limited to database  connections, which metadata can be shared by different transformations and&amp;nbsp; jobs.Database information (catalog tables / fields) or files specifications (structure) is stored in steps and can not be reused. This info is read in design time.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Contexts&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Set of  variables that are configured in the project and that can be used later  in the Jobs for your behavior (for example to define productive  and development environment).&lt;/td&gt;&lt;td valign="top" width="215"&gt;Using Variables in tool parameters file (file  kettle.properties). Passing parameters and arguments to  the process (similar to the contexts), both in jobs and transformations.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Versions&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;It allows us to perform a complete management of objects versions (can  recover previous versions)&lt;/td&gt;&lt;td valign="top" width="215"&gt;Functionality provided in version  4.0.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Languages  to define their own components (scripting)&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Talend allows us to introduce our custom code using Java and &lt;a href="http://blog.gobansaor.com/2008/07/20/groovy-as-talends-scripting-language/"&gt;Groovy&lt;/a&gt;.Additional custom SQL and Shell.&lt;/td&gt;&lt;td valign="top" width="215"&gt;JavaScript used for the calculations and formulas.Aditional custom SQL, Java, Shell and open office formulas.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Additional tools&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Talend offers additional tools  for &lt;a href="http://www.talend.com/products-data-quality/talend-open-profiler.php"&gt;Data  Profiling&lt;/a&gt; and &lt;a href="http://www.talend.com/master-data-management/talend-mdm.php"&gt;Master  Data Management (MDM)&lt;/a&gt;. Open  Studio have too a simple modeling tool to draw logical processes and  models.&lt;/td&gt;&lt;td valign="top" width="215"&gt;PDI 4.0  offers Agile functionality&amp;nbsp; for dimensional modeling and models publication in  Pentaho BI.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Plugins&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Download new components through Talend &lt;a href="http://www.talendforge.org/exchange/"&gt;Exchange&lt;/a&gt; .&lt;/td&gt;&lt;td valign="top" width="215"&gt;Incorporation of additional plugins in the &lt;a href="http://wiki.pentaho.com/display/EAI/List+of+Available+Pentaho+Data+Integration+Plug-Ins"&gt;web&lt;/a&gt; .&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;Support&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;An complete online community with &lt;a href="http://talendforge.org/wiki/doku.php"&gt;Talend’s  wiki&lt;/a&gt; , &lt;a href="http://talendforge.org/forum/"&gt;Talend  Forum&lt;/a&gt; and &lt;a href="http://talendforge.org/bugs"&gt;bugtracker&lt;/a&gt; for the management of incidents and Bugs.&lt;/td&gt;&lt;td valign="top" width="215"&gt;Includes &lt;a href="http://forums.pentaho.org/"&gt;forum  Pentaho&lt;/a&gt; , &lt;a href="http://jira.pentaho.org/"&gt;Issue  Tracking&lt;/a&gt; and &lt;a href="http://community.pentaho.com/"&gt;Pentaho  Community&lt;/a&gt; .&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="167"&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/td&gt;&lt;td valign="top" width="199"&gt;Complete documentation in &lt;a href="http://www.talend.com/resources/documentation.php"&gt;pdf&lt;/a&gt; format that includes: Installation, User Manual and Documentation of  components.&lt;/td&gt;&lt;td valign="top" width="215"&gt;&lt;a href="http://wiki.pentaho.com/display/EAI/Latest+Pentaho+Data+Integration+%28aka+Kettle%29+Documentation"&gt;Online&lt;/a&
