Saturday, May 15, 2010

Usabilidad de la consola de Spring Roo

A todos nos ha pasado. Cuando sale un nuevo framework o herramienta y leemos un poco de lo que hace y esto nos emociona, corremos a bajar el software y lo instalamos inmediatamente. Pero si al estar usandolo un rato encontramos que para lograr que un programa ejecute o para que un simple 'hola mundo' despliegue algo en pantalla tenemos que configurar muchas cosas o realizar muchos pasos nuestra emoción muere rápido. La simplicidad y usabilidad de un producto es una característica muy importante, es el punto de entrada para que nuestro software venda mucho y/o sea muy popular.

En este corto post hablare un poco de la gran usabilidad que tiene la consola de Spring Roo y como esa simplicidad de uso es una de las razones de la popularidad que esta tomando esta herramienta.

Empecemos entrando a la consola de Roo.

Si damos TAB aparecerá algo como:


roo>

*/ /* // ; addon date development exit help hint metadata poll project
quit reference script system version


Hay que notar los comandos que aparecen.

Por el momento Roo solo nos brinda ayuda (help), guia (hint), la fecha del sistema (date), la versión de Roo (version), entre otros comandos.

Si ya han usando Roo antes recordaran que hay comandos para crear entidades (entity) y sus controllers web (controller), pero en este momento Roo no nos muestra esos comandos, ¿porque? la consola de Roo tiene la capacidad de ser consciente del contexto actual bajo el cual se esta ejecutando un comando. Por esta razón oculta comandos como entity y controller, porque para poder crear una entidad antes es necesario tener creado un proyecto y tener configurado el método de persistencia, solo cuando esas condiciones se cumplen Roo nos muestra los comandos.

Por ponerlo en otras palabras, la consola de Spring Roo oculta los comandos que no aplican

Por ejemplo, tratemos de ejecutar el comando entity en la consola de Roo en este momento. Como pueden notar no hemos creado un proyecto ni configurado su persistencia. Veamos que pasa:


roo> entity
Command 'entity' was found but is not currently available (type 'help' then ENTER to learn about this command)


Roo nos dice que el comando 'entity' no esta disponible por el momento.

Ok, ahora vamos a crear el proyecto con el comando 'project' pero no vamos a teclear todo el comando solo la letra 'p' y vamos a dar TAB, veamos que pasa:


roo> p

poll now poll speed poll status project


Roo nos muestra todos aquellos comandos disponibles por el momento que empiecen por la letra 'p'. Esta es otra característica de la consola de Roo la capacidad de completar comandos con TAB, pero no solo nos sirve para completar comandos parcialmente escritos también nos ayuda a que Roo nos muestre todas aquellas opciones que son 'requeridas' por un comando o si tecleamos '--' y TAB nos muestre las opciones (requeridos y no requeridas) del comando. Por ejemplo, tecleemos 'project' y demos TAB:


roo> project --topLevelPackage


Roo nos completo la opción 'topLevelPackage' del comando 'project' ya que esta opción es requerida. ¿Como nos podemos dar cuenta de que esta opción es requerida?, es simple, si tecleamos el comando 'project' y damos ENTER:


roo> project
You must specify a default option (otherwise known as option 'topLevelPackage') for this command


Si bien Roo tiene muchos comandos y conforme salgan mas liberaciones y mejoras tendrá muchos mas, no debemos preocuparnos ya que con la gran usabilidad que tiene podemos obtener fácilmente ayuda y guía de como usarlos.

Siempre podemos ver las opciones y descripción completa de un comando usando 'help':


roo> help project
Keyword: project
Description: Creates a new project
Keyword: ** default **
Keyword: topLevelPackage
Help: The uppermost package name (this becomes the in Maven and also the '~' value when using Roo's shell)
Mandatory: true
Default if specified: '__NULL__'
Default if unspecified: '__NULL__'

Keyword: projectName
Help: The name of the project (last segment of package name used as default)
Mandatory: false
Default if specified: '__NULL__'
Default if unspecified: '__NULL__'

Keyword: java
Help: Forces a particular major version of Java to be used (will be auto-detected if unspecified; specify 5 or 6 or 7 only)
Mandatory: false
Default if specified: '__NULL__'
Default if unspecified: '__NULL__'

Keyword: template
Help: The type of project to create (defaults to STANDARD_PROJECT)
Mandatory: false
Default if specified: 'STANDARD_PROJECT'
Default if unspecified: 'STANDARD_PROJECT'


Keyword: project
Description: Creates a new project
Keyword: ** default **
Keyword: topLevelPackage
Help: The uppermost package name (this becomes the in Maven and also the '~' value when using Roo's shell)
Mandatory: true
Default if specified: '__NULL__'
Default if unspecified: '__NULL__'

Keyword: projectName
Help: The name of the project (last segment of package name used as default)
Mandatory: false
Default if specified: '__NULL__'
Default if unspecified: '__NULL__'

Keyword: java
Help: Forces a particular major version of Java to be used (will be auto-detected if unspecified; specify 5 or 6 or 7 only)
Mandatory: false
Default if specified: '__NULL__'
Default if unspecified: '__NULL__'

Keyword: template
Help: The type of project to create (defaults to STANDARD_PROJECT)
Mandatory: false
Default if specified: 'STANDARD_PROJECT'
Default if unspecified: 'STANDARD_PROJECT'

* project - Creates a new project

** Type 'hint' (without the quotes) and hit ENTER for step-by-step guidance **


Es todo por ahora. Comenten por favor.

2 comments:

blogonix said...

gracias por el artículo, estaré atento, soy nuevo en esto de Roo pero ya me está emocionando, saludos

RHLeone said...

Muy bueno, realmente creo que Spring roo es una herramienta bastante simple de usar.