Diferencia entre revisiones de «Ejemplo de proyecto web para ABMs creado con Roo»

De Dos Ideas.
Saltar a: navegación, buscar
(Tareas de solución de problemas)
(Blanqueada la página)
 
Línea 1: Línea 1:
== Creación del proyecto ==
 
  
El proyecto ejemplo es para una aplicación web básica para atender pedidos en una pizzeria. Donde se contará con la posibilidad de tomar pedidos de pizza/s y de crear nuevos tipos de pizzas. Una pizza está compuesta de una base y una o más cubiertas.
 
 
El diagrama de clases representa un modelo simplificado del dominio problema de la pizzeria.
 
 
Es un buen punto de partida para el proyecto en cuestión a fin de entregar un primer prototipo de la aplicación para el dueño del producto.
 
 
[[Archivo:DiagramaDominioPizzeria.jpg]]
 
 
* Paso 1: Crear carpeta del proyecto
 
 
<code>
 
mkdir pizzaDosIdeas
 
cd pizzaDosIdeas
 
roo
 
</code>
 
 
Nota: con el comando 'hint' se obtiene cual es el siguiente paso para generar el proyecto.
 
 
* Paso 2: Crear el proyecto Java
 
 
<code>
 
project --topLevelPackage com.springsource.roo.pizzaDosIdeas
 
</code>
 
 
* Paso 3: Configurar el ORM y la base de datos del sistema
 
 
<code>
 
persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
 
</code>
 
 
* Paso 4: Crear las entidades, atributos y como se relacionan
 
 
<code>
 
entity --class ~.domain.Cubierta --testAutomatically
 
field string --fieldName nombre --notNull --sizeMin 2
 
 
entity --class ~.domain.Base --testAutomatically
 
field string --fieldName nombre --notNull --sizeMin 2
 
 
entity --class ~.domain.Pizza --testAutomatically
 
field string --fieldName nombre --notNull --sizeMin 2
 
field number --fieldName precio --type java.lang.Float
 
field set --fieldName coberturas --element ~.domain.Cubierta
 
field reference --fieldName base --type ~.domain.Base
 
 
entity --class ~.domain.Pedido --testAutomatically
 
field string --fieldName nombre --notNull --sizeMin 2
 
field string --fieldName direccion --sizeMax 30
 
field number --fieldName importe --type java.lang.Float
 
field date --fieldName fechaEntrega --type java.util.Date
 
field set --fieldName pizzas --element ~.domain.Pizza
 
</code>
 
 
* Paso 5: Ejecutar test y, según IDE desarrollo, ejecutar tarea para estructurar proyecto. Se puede utilizar [http://www.dosideas.com/wiki/index.php?title=Uso_de_Roo_desde_SpringSource_Tool_Suite&action=edit&redlink=1 STS].
 
 
<code>
 
perform tests
 
perform eclipse
 
</code>
 
 
* Paso 6: Crear la capa web con los test de selenium para esa capa
 
 
<code>
 
controller all --package ~.web
 
selenium test --controller ~.web.CubiertaController
 
selenium test --controller ~.web.BaseController
 
selenium test --controller ~.web.PizzaController
 
selenium test --controller ~.web.PedidoController
 
</code>
 
 
Y ahora sí, generamos el paquete y lo desplegamos en un contenedor web:
 
 
<code>
 
perform package
 
quit (salimos de roo)
 
mvn tomcat:run (en la carpeta raiz del proyecto)
 
</code>
 
 
Y tenemos la aplicación corriendo en http://localhost:8080/pizzadosideas/ !!!!
 
 
== Automatizar tarea con script de roo ==
 
 
<code>
 
// Spring Roo 1.0.2.RELEASE
 
// Crear proyecto
 
project --topLevelPackage com.springsource.roo.pizzaDosIdeas
 
// Definir persistencia de datos
 
persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY
 
// Definir modelo de datos
 
entity --class ~.domain.Cubierta --testAutomatically
 
field string --fieldName nombre --notNull --sizeMin 2
 
entity --class ~.domain.Base --testAutomatically
 
field string --fieldName nombre --notNull --sizeMin 2
 
entity --class ~.domain.Pizza --testAutomatically
 
field string --fieldName nombre --notNull --sizeMin 2
 
field number --fieldName precio --type java.lang.Float
 
field set --fieldName coberturas --element ~.domain.Cubierta
 
field reference --fieldName base --type ~.domain.Base
 
entity --class ~.domain.Pedido --testAutomatically
 
field string --fieldName nombre --notNull --sizeMin 2
 
field string --fieldName direccion --sizeMax 30
 
field number --fieldName importe --type java.lang.Float
 
field date --fieldName fechaEntrega --type java.util.Date
 
field set --fieldName pizzas --element ~.domain.Pizza
 
// Ejecutar test
 
perform test
 
// Definir IDE
 
perform eclipse
 
// Agregar capa de presentacion
 
controller all --package ~.web
 
selenium test --controller ~.web.CubiertaController
 
selenium test --controller ~.web.BaseController
 
selenium test --controller ~.web.PizzaController
 
selenium test --controller ~.web.PedidoController
 
// Generar paquete y terminar
 
perform package
 
quit
 
</code>
 

Revisión actual del 14:55 15 jul 2010