scala – 是一种内部监控Akka FSM中第一个状态转换的方法吗?
考虑从状态空闲开始的FSM actor
startWith(Idle,IdleData) 我想监控过渡到第一个状态(从没有州?) 我试过了 onTransition { case _ -> Idle => // Wasn't called } 根据相关的FSM文件:
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(某事物)时,它从状态Idle开始,并且有一个转换,你可以监视哪个是空闲 – >闲. 在上面的例子中,当我们启动FSM时,我们可以看到打印输出初始转换,您可以利用它来根据您的需要执行更复杂的操作 所以基本上如果你从case _ =>更新你现有的过渡空闲到案件闲置 – >空闲它应该工作 注意:可能有不止一种方法可以做到这一点,我还在探索Akka FSM的强大功能,所以我的答案就是有一种可能的方法来实现这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |