### 1、状态机

Solon 状态机（不需要持久化，通过上下文传递），作为 solon-flow 的互补。 主要用于管理和优化应用程序中的状态转换逻辑，通过定义状态、事件和转换规则，使代码更清晰、可维护。其核心作用包括：简化状态管理、提升代码可维护性、增强业务灵活性等。

核心概念包括：

* 状态（State）：代表系统中的某种状态，例如 "已下单"、"已支付"、"已发货" 等。
* 事件（Event）：触发状态转换的事件，例如 "下单"、"支付"、"发货" 等。
* 动作（Action）：在状态转换发生时执行的操作或行为。
* 转换（Transition）：定义状态之间的转换规则，即在某个事件发生时，系统从一个状态转换到另一个状态的规则


### 2、主要接口


| 接口                            | 说明 | 
| ------------------- | -------- | 
| Event                           | 事件接口                           | 
| EventContext                 | 事件上下文接口                 | 
| EventContextDefault       | 事件上下文接口默认实现     | 
| State                            | 状态接口                         | 
| StateMachine                 | 状态机（不需要持久化，通过上下文传递）                           | 
| StateTransition               | 状态转换器                    | 
| StateTransitionContext     | 状态转换上下文              | 
| StateTransitionDecl         | 状态转换说明（声明）      | 


### 3、StateTransitionDecl 状态转换（DSL）说明

 主要方法说明：
 

| 方法 | 要求 | 说明 | 
| -------- | -------- | -------- |
| from   | 必须   | 转换的源状态（可以有多个）     | 
| to       | 必须  | 转换的目标状态（一个）     | 
| on      | 必须  | 触发事件（当事件发生时，触发转换）     | 
| when   | 可选  | 额外条件     | 
| then    | 可选  | 然后执行动作     | 

转换声明示例：

```java
StateMachine<State, Event, String> stateMachine = new StateMachine<>();

//t.from(oldState).to(newState).on(event).when(?).then(...) //when, then 为可选
stateMachine.addTransition(t ->
    t.from(State.NONE).to(State.CREATED).on(Event.CREATE).then(ctx -> {
        Order payload = ctx.getPayload();
        payload.setStatus("已创建");
        payload.setState(State.CREATED);
        System.out.println(payload);
    }));
```
