加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 是一种内部监控Akka FSM中第一个状态转换的方法吗?

发布时间:2020-12-16 19:23:13 所属栏目:安全 来源:网络整理
导读:考虑从状态空闲开始的FSM actor startWith(Idle,IdleData) 我想监控过渡到第一个状态(从没有州?) 我试过了 onTransition { case _ - Idle = // Wasn't called} 根据相关的FSM文件: It is also possible to pass a function object accepting two states to
考虑从状态空闲开始的FSM actor

startWith(Idle,IdleData)

我想监控过渡到第一个状态(从没有州?)

我试过了

onTransition {
    case _ -> Idle => // Wasn't called
}

根据相关的FSM文件:

It is also possible to pass a function object accepting two states to
onTransition,in case your transition handling logic is implemented as
a method:

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的强大功能,所以我的答案就是有一种可能的方法来实现这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读