考虑从状态 Idle 开始的 FSM actor
startWith(Idle, IdleData)
我想监视到第一个状态的转换(从无状态?)
I tried
onTransition {
case _ -> Idle => // Wasn't called
}
根据相关FSM http://doc.akka.io/docs/akka/snapshot/scala/fsm.html#Internal_Monitoring文档:
也可以将接受两种状态的函数对象传递给
onTransition,如果您的转换处理逻辑实现为
一个方法:
onTransition(handler _)
def handler(from: StateType, to: StateType) {
// handle it here ...
}
鉴于 from 类型是 StateType 而不是 Option[StateType] 我认为这可能不可能,但也许我错过了一些东西。
我最近正在寻找类似的东西。
如果我正确理解你的问题,这是一种监控何时从初始状态启动 FSM 的方法:
class ExampleFSM extends Actor with FSM[State, Data] {
// A FSM begins its existence in Idle state and can move to different states
startWith(Idle, NoData)
when(Idle) {
case Event(SetData(something), NoData) =>
goto(SomeOtherState) using Data(something)
}
onTransition {
case Idle -> Idle =>
stateData match {
case _ =>
println("Initial transition")
}
}
}
上面的例子中,当我们实例化FSM时传入消息SetData(something)
,它从状态开始Idle
您可以监控一个转换,即Idle -> Idle
.
在上述情况下,当我们启动 FSM 时,我们可以看到输出Initial transition
打印出来,您可以根据您的需要利用它来做更复杂的事情
所以基本上如果你更新现有的过渡case _ => Idle
to case Idle -> Idle
它应该起作用
注意:可能有不止一种方法可以做到这一点,我还在探索 Akka FSM 的强大功能,所以我的答案只是有一种可能的方法来实现这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)