2014-06-30 4 views
1

Je doute que le code dans le bloc "onTransition" (akka FSM) est exécuté après le nouvel état est atteint? ou avant le nouvel état est atteint. Les articles et le livre que j'ai lus mentionnent le mot "pendant" ... ce qui (selon moi) suggère "avant que le nouvel état soit atteint".Quand les codes onTransition sont-ils exécutés, exactement? - Akka, FSM

Est-ce vraiment important?

Je suppose que ... Je veux dire, changer pour un nouvel état implique (dans la plupart des cas) de changer les données d'état. Habituellement, nous modifions les données d'état dans le gestionnaire d'événements (dans le bloc "when-case-event"). Mais que se passe-t-il si le nouvel état dépend du résultat des calculs/actions effectués dans le bloc "onTransition"? Dans ce cas, nous devrons déplacer ce bloc dans le bloc "when-case-event". Donc, ce n'est pas clair pour moi maintenant ...: y a-t-il des règles/conseils: quelles actions devraient aller dans le "cas-événement-événement", et quelles actions devraient aller dans le "onTransition"?

plus: J'espère que dans la prochaine révision du Doc Akka, une sorte de clarification/conseils sur ce sujet serait inclus.

Merci à l'avance, Raka

Répondre

2

En onTransition les anciennes données d'état est disponible via stateData, et les nouvelles données d'état est disponible en nextStateData. Le nouvel état ne peut pas être modifié par onTransition, mais vous pouvez envoyer un message à self.

+0

Quel état envoie le message à 'self'? Ancien ou nouveau? –

Questions connexes