M Basic o Spring Web Flow
M Basic o Spring Web Flow
M Basic o Spring Web Flow
Nuestra mejor referencia son los conocimientos que compartimos en nuestro web
www.adictosaltrabajo.com
Decenas de entidades cuentan ya con nosotros
Para ms informacin vistenos en www.autentia.com
Tel. 91 675 33 06 - info@autentia.com
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
Tutoriales | Contacte
Lanzado
( 12/07/2007)
Desde Autentia ponemos a vuestra disposicin el software que hemos construido (100% gratuito y sin restricciones funcionales) para nuestra gestin interna, llamado TNTConcept (auTeNTia). Construida con las ltimas tecnologas de desarrollo Java/J2EE (Spring, JSF, Acegi, Hibernate, Maven, Subversion, etc.) y disponible en licencia GPL, seguro que a muchos profesionales independientes y PYMES os ayudar a organizar mejor vuestra operativa. Las cosas grandes empiezan siendo algo pequeo ..... Saber ms en: http://tntconcept.sourceforge.net/
Tutorial desarrollado por: Javier Antoniucci Puedes encontrarme en Autentia Somos expertos en Java/J2EE Contacta en:
NUEVO CATLOGO DE SERVICIOS DE AUTENTIA (PDF 6,2MB) www.adictosaltrabajo.com es el Web de difusin de conocimiento de www.autentia.com
Catlogo de cursos Descargar este documento en formato PDF mbasicoSpringWebFlow.pdf Firma en nuestro libro de Visitas <-----> Asociarme al grupo AdictosAlTrabajo en eConozco
Programadores Java Un empleo de Informtico te espera aqu, ofertas por Tecnologas www.informaticos.com cursos java Aprende de una forma fcil y rpida Elige tu curso y Especialzate! www.Solocursos.net/Cursos Juegos Java Gratuitos Divertidos Juegos Java en Regalo iDate Prisa! Los Juegos son por 0 www.JuegoJavaGratis.Dindo.es Alojamiento Web - 7,90 1GB Web, 20GB Transferencia, PHP4/5, ASP .NET, MySQL, SQL Server silicontower.net
1 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
2 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
3 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
Copiamos en la carpeta /pruebaWebFlowSimple/web/WEB-INF/lib los JAR los jar que se encuentran en los zip que descargamos y los aadimos al proyecto:
4 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
<servlet> <servlet-name>pruebaWebFlow</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/pruebaWebFlow-servlet-config.xml </param-value> </init-param>
5 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
</servlet>
<jsp-config> <taglib> <taglib-uri>http://www.adesis.com/cm/oi/2</taglib-uri> <taglib-location>/WEB-INF/tld/adesis-cm-io-2.tld</taglib-location> </taglib> </jsp-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Tambin crearemos un fichero /pruebaWebFlowSimple/web/WEB-INF/pruebaWebFlowSimple-servlet-config.xml como se muestra a continuacin: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:flow="http://www.springframework.org/schema/webflow-config" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-1.0.xsd">
<bean name="/asistente.flow" class="org.springframework.webflow.executor.mvc.FlowController"> <property name="flowExecutor" ref="pruebaFlowExecutor" /> <property name="defaultFlowId" value="asistente-flow" /> <property name="cacheSeconds" value="5" /> </bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean>
6 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
</beans>
<view-state id="mostrarPaso1" view="paso1"> <transition on="siguiente" to="avanzaAPaso2"> <action bean="formAction" method="bind" /> </transition> </view-state>
<action-state id="avanzaAPaso2"> <action bean="formAction" method="validarPaso1YPrepararPaso2" /> <transition on="success" to="mostrarPaso2" /> <transition on="error" to="mostrarPaso1" /> </action-state>
<view-state id="mostrarPaso2" view="paso2"> <transition on="siguiente" to="avanzaAPaso3"> <action bean="formAction" method="bind" /> </transition> <transition on="anterior" to="mostrarPaso1"> <action bean="formAction" method="bind" /> </transition>
7 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
</view-state>
<action-state id="avanzaAPaso3"> <action bean="formAction" method="validarPaso2YPrepararPaso3" /> <transition on="success" to="mostrarPaso3" /> <transition on="error" to="mostrarPaso2" /> </action-state> <end-state id="mostrarPaso3" view="paso3" />
</flow>
Vemos cmo el flujo queda determinado por estados desde donde se realizan transiciones a otros estados. Los estados pueden ser de visualizacin o de ejecucin de operaciones, y utilizan beans definidos en asistente-beans.xml:
<bean id="formAction" class="es.autentia.tutoriales.manualBasicoSpringWebFlow.controller.action.AsistenteAction"> <property name="formObjectScope" value="FLOW" /> <property name="formObjectName" value="form" /> <property name="formObjectClass" value="es.autentia.tutoriales.manualBasicoSpringWebFlow.controller.form.AsistenteForm" /> </bean>
</beans>
package es.autentia.tutoriales.manualBasicoSpringWebFlow.controller.form;
import java.io.Serializable;
8 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
package es.autentia.tutoriales.manualBasicoSpringWebFlow.controller.action;
import es.autentia.tutoriales.manualBasicoSpringWebFlow.controller.form.AsistenteForm;
@Override public Event setupForm(RequestContext context) throws Exception { AsistenteForm form = (AsistenteForm) getFormObject(context); form.setNumero1(1);
9 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
public Event validarPaso1YPrepararPaso2(RequestContext context) throws Exception { AsistenteForm form = (AsistenteForm) getFormObject(context); Event resultado = null; if (form.getNumero1() < 0 || form.getNumero2() < 0) { form.setMensaje("Los nmeros a sumar deben ser positivos"); resultado = error(); } else { form.setMensaje("El resultado de la suma es " + (form.getNumero1() + form.getNumero2())); resultado = success(); } return resultado; }
public Event validarPaso2YPrepararPaso3(RequestContext context) throws Exception { AsistenteForm form = (AsistenteForm) getFormObject(context); form.setMensaje("Fin de la operacin"); return success(); }
} En el mismo vemos que es muy simple acceder a los datos que se le muestran o que introduce el usuario con la ayuda del form indicado en la configuracin.
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Asistente sumador</title> </head> <body> <h1>Asistente sumador: Paso 1</h1> <form> <input type="hidden" name="_flowId" value="asistente-flow" /> <input type="hidden" name="_eventId" value="siguiente" /> <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}" /> <p>${form.mensaje}</p> <p>Primer nmero: <input type="text" name="numero1" value="${form.numero1}"/></p> <p>Segundo nmero: <input type="text" name="numero2" value="${form.numero2}"/></p> <input type="submit" value="siguiente" />
10 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
Donde en los campos del formulario se indican el identificador de flujo, de evento y la clave de ejecucin que utiliza WebFlow para mantener el estado de un usuario. En /pruebaWebFlowSimple/web/WEB-INF/jsp/paso2.jsp ponemos:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Asistente sumador</title> </head> <body> <h1>Asistente sumador: Paso 2</h1> <form> <input type="hidden" name="_flowId" value="asistente-flow" /> <input type="hidden" name="_eventId" value="siguiente" /> <input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}" /> <p>${form.mensaje}</p> <input type="submit" value="siguiente" /> <input type="submit" value="anterior" onclick="document.forms[0]._eventId.value='anterior';return true;"/> </form> </body> </html>
Y en /pruebaWebFlowSimple/web/WEB-INF/jsp/paso3.jsp:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Asistente sumador</title> </head> <body> <h1>Asistente sumador: Paso 3</h1> <form> <p>${form.mensaje}</p> </form> </body> </html>
Ejecutando la aplicacin
Lanzamos el servidor con la URL http://localhost:8080/pruebaWebFlowSimple/asistente.flow y veremos en funcionamiento el ejemplo del asistente sumador. Una mejora que podemos implementar es utilizar el envo del formulario mediante Post, para conservar limpia la url del navegador del usuario.
11 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
Conclusiones
Tras utilizarlo en proyectos de envergadura concluimos que: El Spring WebFlow es un Controlador que orienta a procesos el flujo de navegacin, que no se debe confundir con un BPM (Ver http://en.wikipedia.org/wiki/Business_process_management) ya que el proceso de negocio puede diferir con la navegacin de su interfaz de usuario, los BPM son independientes de las tecnologas de interfaz de usuario y muchos etcteras.. Lo vemos especialmente til en aplicaciones con flujos de mediana a gran complejidad cuyo mantenimiento sea relativamente peridico. Permite generar documentacin actualizada del flujo de navegacin mediante una simple XSD. Puede convivir con otros MVC como el Spring MVC o Struts. Securiza la ejecucin de flujos, evitnado re-call y ataques deny-of-service o cross-site-scripting.
Desde Autentia contamos con los conocimientos y experiencia para ayudarle a sacar la mxima ventaja de las tecnologas ms innovadoras y mejorar la calidad de sus desarrollos software. No dude en contactarse con nosotros mediante www.autentia.com .
This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 License.
Recuerda
que el personal de Autentia te regala la mayora del conocimiento aqu compartido (Ver todos los tutoriales) Nos vas a tener en cuenta cuando necesites consultora o formacin en tu empresa? Vas a ser tan generoso con nosotros como lo tratamos de ser con vosotros? info@autentia.com Somos pocos, somos buenos, estamos motivados y nos gusta lo que hacemos ...... Autentia = Soporte a Desarrollo & Formacin
Autentia S.L. Somos expertos en: J2EE, Struts, JSF, C++, OOP, UML, UP, Patrones de diseo .. y muchas otras cosas
Nota: Los tutoriales mostrados en este Web tienen como objetivo la difusin del
12 de 13
26/11/07 22:57
http://adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=mbasicoS...
Los contenidos y comentarios de los tutoriales son responsabilidad de sus respectivos autores. En algn caso se puede hacer referencia a marcas o nombres cuya propiedad y derechos es de sus respectivos dueos. Si algn afectado desea que incorporemos alguna resea especfica, no tiene ms que solicitarlo. Si alguien encuentra algn problema con la informacin publicada en este Web, rogamos que informe al administrador rcanales@adictosaltrabajo.com para su resolucin. Patrocinados por enredados.com .... Hosting en Castellano con soporte Java/J2EE
www.AdictosAlTrabajo.com
Opimizado 800X600
13 de 13
26/11/07 22:57