raoul2000 / yii2-workflow

A simple workflow engine for Yii2
BSD 3-Clause "New" or "Revised" License
171 stars 48 forks source link

Question about afterEnterStatus Event #43

Closed marcoadasilvaa closed 7 years ago

marcoadasilvaa commented 7 years ago

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:

thanks for you attention

raoul2000 commented 7 years ago

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)

marcoadasilvaa commented 7 years ago

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:

raoul2000 commented 7 years ago

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

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 :

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

ciao 😉

marcoadasilvaa commented 7 years ago

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.