# solon-statemachine **Repository Path**: wangzhongqi0917/solon-statemachine ## Basic Information - **Project Name**: solon-statemachine - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-02 - **Last Updated**: 2025-08-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目介绍 Solon StateMachine 是一个轻量级状态机实现,用于管理对象的状态转换。它提供了简洁的 API 来定义状态、事件和转换规则,支持条件转换和转换动作执行。 ## 核心组件 1. **State**:状态接口,所有状态枚举或类都需要实现此接口 2. **Event**:事件接口,所有事件枚举或类都需要实现此接口 3. **StateContext**:状态机上下文,保存状态转换相关信息 4. **StateTransition**:状态转换定义,表示从一个状态通过某个事件转换到另一个状态 5. **StateMachine**:状态机实现类,管理状态和状态转换规则 ## 使用示例 以下是一个订单状态管理的示例: ```java // 1. 定义状态和事件枚举 public enum OrderState implements State { NONE, CREATED, PAID, SHIPPED, DELIVERED, CANCELLED } public enum OrderEvent implements Event { CREATE, PAY, SHIP, DELIVER, CANCEL } // 2. 创建状态机并配置转换规则 StateMachine stateMachine = new StateMachine<>(OrderState.NONE); // 3. 添加状态转换规则 stateMachine.addTransition(new StateTransition<>( OrderState.CREATED, OrderState.PAID, OrderEvent.PAY, (context) -> { Order order = context.getPayload(); order.setStatus("已支付"); System.out.println("订单已支付: " + order); } )); // 4. 执行状态转换 Order order = new Order("1", "商品", "创建中"); stateMachine.execute(OrderEvent.CREATE, order); stateMachine.execute(OrderEvent.PAY, order); ``` ## 特性 - **泛型支持**:支持自定义状态、事件和负载数据类型 - **条件转换**:支持基于条件的状态转换 - **动作执行**:支持在状态转换时执行自定义动作 - **线程安全**:关键方法使用 synchronized 保证线程安全 - **简洁 API**:易于理解和使用的 API 设计