package com.serliunx.statemanagement.machine; import com.serliunx.statemanagement.machine.external.FlexibleStateMachine; import com.serliunx.statemanagement.machine.handler.StateHandler; import java.util.concurrent.Executor; /** * 状态机之状态事件注册 *
  • 注册状态切换时的事件, 一般用于状态机构建和支持动态调整的状态机{@link FlexibleStateMachine}; * 当然实际不仅于此, 任何相关的都可以使用. * * @author SerLiunx * @since 2025/3/28 * @see FlexibleStateMachine */ public interface StateEventRegistry { /** * 添加进入事件 *
  • 切换到了指定状态时执行的逻辑 * * @param state 状态 * @param handler 处理逻辑 * @param async 是否异步执行 * @param executor 异步执行器, 异步执行时将使用, 不指定时将使用状态机内置的执行器 */ StateEventRegistry whenEntry(S state, StateHandler handler, Boolean async, Executor executor); /** * 添加进入事件 *
  • 切换到了指定状态时执行的逻辑 * * @param state 状态 * @param handler 处理逻辑 * @param async 是否异步执行 */ StateEventRegistry whenEntry(S state, StateHandler handler, Boolean async); /** * 添加进入事件 *
  • 切换到了指定状态时执行的逻辑 * * @param state 状态 * @param handler 处理逻辑 */ StateEventRegistry whenEntry(S state, StateHandler handler); /** * 添加离开事件 *
  • 从指定状态切换到别的状态时执行的逻辑 * * @param state 状态 * @param handler 处理逻辑 * @param async 是否异步执行 * @param executor 异步执行器, 异步执行时将使用, 不指定时将使用状态机内置的执行器 */ StateEventRegistry whenLeave(S state, StateHandler handler, Boolean async, Executor executor); /** * 添加离开事件 *
  • 从指定状态切换到别的状态时执行的逻辑 * * @param state 状态 * @param handler 处理逻辑 * @param async 是否异步执行 */ StateEventRegistry whenLeave(S state, StateHandler handler, Boolean async); /** * 添加离开事件 *
  • 从指定状态切换到别的状态时执行的逻辑 * * @param state 状态 * @param handler 处理逻辑 */ StateEventRegistry whenLeave(S state, StateHandler handler); /** * 添加交换事件 *
  • 从A状态切换至B状态时触发 * * @param from 源状态 * @param to 目的状态 * @param handler 处理器 * @param async 是否异步执行 * @param executor 异步执行器, 异步执行时将使用, 不指定时将使用状态机内置的执行器 */ StateEventRegistry exchange(S from, S to, StateHandler handler, Boolean async, Executor executor); /** * 添加交换事件 *
  • 从A状态切换至B状态时触发 * * @param from 源状态 * @param to 目的状态 * @param handler 处理器 * @param async 是否异步执行 */ StateEventRegistry exchange(S from, S to, StateHandler handler, Boolean async); /** * 添加交换事件 *
  • 从A状态切换至B状态时触发 * * @param from 源状态 * @param to 目的状态 * @param handler 处理器 */ StateEventRegistry exchange(S from, S to, StateHandler handler); }