АККА ФСМ в искровом потоке

У меня есть требование создать реализацию конечного автомата в моем приложении потоковой передачи искры. После прочтения некоторых найденных сообщений АККА поставляется с FSM из коробки. Я создал простой AKKA FSM, и я могу запустить его локально. Я не уверен, как интегрировать этот код в потоковую структурированную искру (mapGroupsWithState). Я хочу взять этот FSM и подключиться к mapGroupsWithState, чтобы я мог сохранить последнее состояние, даже если мое приложение не работает.

object BuilderFSM {

//States
sealed trait MachineState
case object tuned extends MachineState
case object trick extends MachineState
case object nonTuned extends MachineState

case class TuningEvent(macId: String, acctNumber: String, eventType: String)

}

object InputEvent {
sealed trait tuneEvents
sealed trait trickEvents

case object PLAY extends tuneEvents
case object REPLAY extends trickEvents
case object PLAY1 extends trickEvents
}

class BuilderFSM extends FSM[MachineState, TuningEvent] {
startWith(nonTuned, TuningEvent("DEVICE", "ACCOUNT", "NOTHING"))

when(nonTuned) {
case Event(PLAY, _) => {
  println("I am in NON-TUNE -> Going to Tuned")
  goto(tuned)
}
case Event(REPLAY, _) => {
  println("I am in NON-TUNED -> Going to Tuned")
  goto(tuned)
}} initialize()
}

0 ответов

Другие вопросы по тегам