Estoy realizando una aplicación web con las tecnologías xhtml, JSF, RichFaces, Java, MySQL en un servidor de aplicaciones JBoss.
Quiero saber cómo solucionar cuando un proceso se queda incompleto, supongo que a más de un diseñador web le ha ocurrido este problema. Quiero que el proceso sea atómico, o se hacen todos los pasos o que no se haga ninguno.
Pongo un ejemplo resumido para que sea más didáctico:
La aplicación web es para hacer facturas electrónicas.
Voy a tener una tabla "Facturas" con los campos idFactura, fecha, cliente.
Voy a tener una tabla "LineaFactura" con los campos idLineaFactura, idFactura, producto, precio, cantidad. Es decir el campo idFactura indica a que factura pertenece dicho renglón.
La interfaz de la aplicacion web sería:
Primero un formulario donde se rellena la fecha y el cliente. Luego se pulsa un botón (botón1) que guardara los datos en la tabla "Facturas" y redirecciona a otro formulario donde se rellenan los datos producto, precio y cantidad, habrá un botón (botón2) que ponga añadir producto que guardará la línea de factura en la tabla "LineaFactura"una vez añadidos todos los productos que se deseen, por último se pulsará un botón (botón3) para generar un pdf.
Qué ocurre si el usuario de la aplicación no realiza todos los pasos y no llega a pulsar el botón3, ya sea porque ha cerrado el explorador a mitad del proceso o ha cambiado de página manualmente. Pues que en la base de datos si aparecería los datos de la factura, y aparecería como que la factura existe pero no existiría el pdf. Cómo hacer para deshacer todos los cambios en las bases de datos?, cómo sabe la aplicación que el usuario ha cerrado el explorador, para ejecutar un supuesto código para deshacer los cambios?...
Necesito ayuda sobre el tema. Gracias!