raoul2000 / yii2-workflow

A simple workflow engine for Yii2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Question about afterEnterStatus Event

marcoadasilvaa opened this issue · comments

Hello, from what I understand, the event afterEnterStatus run before model safe this is correct?

For example, i have a relation model: Order and OrderItem in status draft i can add items and the end of the form have a list of the following status.

If the order enter to status budget send me email witch list of items, but if i change one item, send me the previous version of this list.

My order to save data:

  • OrderItem
  • Order
  • Order sendToStatus

thanks for you attention

commented

hi @markmarco16,
lo siento pero no entiendo bien cual es tu problema o cual es tu pregunta .... quizas puedes intentar explicarmelo en castellano (idioma que entiendo un poco)

Saludos raoul! Gracias por responder.

Tengo la siguiente duda en el manejo del workflow, según entiendo en el codigo el evento afterEnterStatus se ejecuta antes de realizar el safe del modelo que posee el workflow?

Por ejemplo, tengo un modelo relacional Orden y Productos en estatus borrador, en dicho estatus puedo agregar o eliminar productos y al final del formulario poseo un drop down list con los status al cual se puede avanzar la solicitud.

Si la orden entra en presupuesto envio notificaciones via correo electronico con la lista de productos que se solicitó, sin embargo, si agrego o elimino productos el modelo mantiene la version previa de la lista de productos.

El orden en el que guardo los modelos es el siguiente:

  • Productos
  • Orden
  • Orden sendToStatus
commented

Hola @markmarco16,
en respuesta a tu pregunta, el evento afterEnterStatus se ejecuta despues del save, y no antes. La secuencia es la siguiente :

  • before events
  • save the model
  • after events

Como puedes ver aqui el método firePendingEvents se ejecuta after save (mas detalles sobre before y after events).

Dicho lo cual, cabe aclarar que es dificil para mi entender lo que ocurre al aplicar yii2-workflow a tu caso particular. No obstante ten en cuenta que el uso del método sendToStatus no guarda el modelo, y que entonces, la secuencia de guarda :

  • Productos
  • Orden
  • Orden sendToStatus

Debe incluir una guarda despues del sendToStatus...no sé si alli puede encontrarse el problema.
Espero que te sea de ayuda...

ciao
😉

Muchas gracias por tu apoyo, estuve validando a profuncidad este caso y por algun motivo el modelo relational se mantiene en el valor anterior y no en el nuevo guardado.

Explique un caso sencillo en los Issues de Yii Framework Issue 13567

Espero a que la comunidad puedada aclararme este punto, si tiene algun comentario u oportunidad de comprobarlo mucho te lo agradeceria.