我可以在Akka FSM代码中使用“发件人”吗?

时间:2014-09-09 14:23:50

标签: scala akka scala-2.10 fsm gen-fsm

class RulesFSMActor extends Actor with FSM[State, Data]{
  When(Rule1)
  {
    case Event(CASE_MSG1, Data) => 
      if (<someconditon>)
        goto(Rule2)
  }
  When(Rule2)
  {
    case Event(CASE_MSG2, Data) => 
    if (<someconditon>){
      sender ! MessgeBackToCaller"    // Is it allowed to use "sender" ?
      goto(Rule1)
  }
 }
//unhandled ,...etc
}

假设我的初始状态是&#34; Rule1&#34;并且它一直在状态之间切换,如果它在&#34; Rule1&#34; ,它转移到&#34; Rule2&#34;反之亦然,根据某些条件,它必须将消息发送回呼叫者(发件人)。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

是的,你可以。 FSM是正常的角色,其接收是为处理状态而实施的。

答案 1 :(得分:0)

是的,当然! FSM只是用于定义具有多个状态的Actors的扩展(“域特定语言”)。