11 July, 2008

Curso J2EE (13ª semana) spring:webflow

Semana 13ª continuamos con spring, esta vez probamos spring webflow, el modulo de spring para definir e implementar flujos de trabajo (workflow).

Atrás quedan aquellos días con jbpm, en mi opinión creo que lo habíamos comenzado a utilizar demasiado pronto (recién salida del horno la primera stable) y la documentación era muy escasa por lo que los comienzos fueron muy pero que muy difíciles. A esto (y otra vez en mi opinión) le sumamos un equipo de trabajo falto de muchos conocimientos y conceptos en los que se basa jbpm y como tantas otras veces el poco tiempo disponible para asimilarlos. Por todo esto mi anterior experiencia con jbpm no fué del todo satisfactoria, pero quien sabe, quizás un día de estos tontos lo retome y me lleve una grata sorpresa, ganas no me faltan pero tiempo todo el del mundo como a la mayoría.

En general spring webflow no me resultó complejo, lo principal es tener claro como trabaja spring.

Puedes declarar tu flujo tanto en un fichero xml como en una clase java y como en todo workflow tendrás diferentes estados y tipos de estado por los que pasará el proceso. Así por ejemplo tendremos: view-state (estados que renderizan una vista), action-state (estados de lógica de negocio), start-state (estado de comienzo), end-state (estado de fin). Podrán tener n transiciones que especificaremos por ejemplo en el fichero xml de la forma:

  1. <action-state>
  2.    <action bean="loginAction"/>
  3.    <transition on="ok" to="listadoFacturas"/>
  4.    <transition on="nok" to="login"/>
  5. </action-state>

En este caso hemos declarado un action state que por ejemplo comprobaría los datos insertados por un usuario y le mostraría un listado de facturas si son correctos o lo devolvería a la página de login.

Podríamos definir subflujos con la etiqueta subflow-state.

Debemos declarar los beans utilizados en el flujo indicado anteriormente:

  1. <bean id="loginAction" class="net.jsanroman.webflow.action.LoginAction"/>

A los enlaces html que inicien el flujo debemos pasarle el parámetro _flowId=id_del_start_state.

Una de las diferencias significativas que en un primer momento he encontrado respecto a jbpm es que spring webflow no guarda la información entre los diferentes estados de forma automática, cosa que si hace jbpm, pero bueno dependiendo de lo que necesitemos siempre podemos hacerlo a mano.

Powered by WordPress
Bajo licencia Creative Commons
Contacto sanroman.javier at gmail.com