Saltar la navegación

4.3.- Ejercicio resuelto 1 ("Generar pedido")(Elaboración de un diagrama de estados).

Diagrama de estados:

Para ejemplificar la creación de un diagrama de estados vamos a ver el que representa el caso de uso "Generar pedido" del diagrama de casos de uso del ejercicio resuelto 1 "ZAPATERÍA TACÓN DE ORO" (en el punto 2 de "Los diagramas de casos de uso") que cumple con las condiciones que hemos visto al principio, tiene un comportamiento significativo en tiempo real, ya que su situación tanto física, como el sistema, va evolucionando conforme pasa el tiempo, y participa en varios casos de uso (como Hacer pedido y Cumplimentar pedido).

Los diferentes estados en los que puede estar un pedido son:

  • En creación: es cuando se están seleccionando los productos que formará el pedido.
  • Pendiente: está en este estado desde que se confirma el pedido hasta que se selecciona para preparar su envío.
  • En almacén: está en este estado cuando es elaborado el paquete y se ha asignado a una ruta, hasta que se envía a través de la ruta que le corresponde.
  • Servido: Cuando el pedido es enviado. En este caso se envía una señal física desde el almacén cuando el transporte abandona el almacén.
  • Cancelado: puede llegarse a esta situación por dos motivos, o bien se cancela mientras se está haciendo por problemas con la tarjeta de crédito, o bien porque, una vez pendiente de su gestión el usuario decide cancelarlo, la diferencia fundamental entre ambos es que en el segundo caso hay que devolver el importe pagado por el pedido al socio que lo ha comprado.

Las transiciones entre estados se producen por llamadas a procedimientos en todos los casos, no intervienen cambios de estado o el tiempo, ni señales.

El diagrama quedaría de la siguiente manera:

Diagrama de estados. Cuenta con los siguientes estados: En creación que tiene como acción añadirArtículo, pendiente que tiene como acción de entrada revisarArticulosDisponibles, acción añadirRuta y acción de salida disminuirStock, cancelado con la acción eliminar pedido que cuenta con el código body= si [pedido=pendiente] devolverDinero; eliminarLineaPedido; eliminarPedido; y los estados almacén y servido. Las transiciones entre estados son del nodo inicial a en creación, con la signatura /crearPedido, de en creación a sí mismo con la signatura Seleccionar artículo/ añadirArtículo, de enCreación a cancelado con la signatura Seleccionar cancelar pedidoBotonCancelar.click() / cancelarPedido, de en creación a pendiente con la signatura Seleccionar confirmación botonConfirmar.click() [Datos correctos]/confirmarPedido(), de pendiente a cancelado con la signatura Seleccionar cancelar pedidoBotonCancelar.click() / cancelarPedido, de pendiente a almacén con la signatura Artículos empaquetados botonEnviarALmacen.click() [artículos disponibles] / cumplimentarPedido(), y de almacén a servido  con la signatura Pedido enviado a ruta dejar en almacén / enviarRuta. De almacén y de cancelado se pasa al nodo final.

En las transiciones se ha incluido el nombre de la transición, el evento que la dispara (normalmente hacer clic en algún botón de la interfaz), si existe condición de guarda se pone entre corchetes y la acción a realizar para llegar al siguiente estado junto al símbolo /. En todos los casos el evento de disparo es de tipo llamada (incluye la llamada a una función o pulsar un botón de la interfaz), salvo en el caso de pedido enviado que se controla por una señal que se envía cuando el transporte abandona el almacén.

A los estados se les ha añadido la acción a realizar, apartado do/ y en algunos casos la acción de entrada, por ejemplo en el caso del estado pendiente, se debe revisar que los artículos a enviar tengan disponibilidad y la de salida, en el ejemplo disminuir el stock.

Nota: para incluir las condiciones de guarda en el diagrama debes rellenar el apartado "Guard" de la especificación, si necesitas añadir alguna acción puedes hacerlo rellenando el apartado "Effect". Los eventos de disparo.