它是什么?
就像松鼠这种小巧、敏捷、聪明、警觉、可爱的动物一样,松鼠基金会旨在为企业提供一个轻量级、高度灵活和可扩展、可诊断、易于使用和类型安全的 Java 状态机实现。
下面是描述 ATM 状态变化的状态机图:
示例代码可以在“org.squirrelframework.foundation.fsm.atm”包中找到。
Maven
squirrel-foundation已经部署到maven中央仓库,所以你只需要在pom.xml中添加以下依赖即可。
最新发布版本:
<dependency>
<groupId>org.squirrelframework</groupId>
<artifactId>squirrel-foundation</artifactId>
<version>0.3.8</version>
</dependency>
最新快照版本:
<dependency>
<groupId>org.squirrelframework</groupId>
<artifactId>squirrel-foundation</artifactId>
<version>0.3.9-SNAPSHOT</version>
</dependency>
快速开始
为了快速尝试 squirrel 状态机功能,请创建一个 Maven 项目并正确包含 squirrel-foundation 依赖项。然后只需运行以下示例代码即可。
public class QuickStartSample {
// 1. Define State Machine Event
enum FSMEvent {
ToA, ToB, ToC, ToD
}
// 2. Define State Machine Class
@StateMachineParameters(stateType=String.class, eventType=FSMEvent.class, contextType=Integer.class)
static class StateMachineSample extends AbstractUntypedStateMachine {
protected void fromAToB(String from, String to, FSMEvent event, Integer context) {
System.out.println("Transition from '"+from+"' to '"+to+"' on event '"+event+
"' with context '"+context+"'.");
}
protected void ontoB(String from, String to, FSMEvent event, Integer context) {
System.out.println("Entry State \'"+to+"\'.");
}
}
public static void main(String[] args) {
// 3. Build State Transitions
UntypedStateMachineBuilder builder = StateMachineBuilderFactory.create(StateMachineSample.class);
builder.externalTransition().from("A").to("B").on(FSMEvent.ToB).callMethod("fromAToB");
builder.onEntry("B").callMethod("ontoB");
// 4. Use State Machine
UntypedStateMachine fsm = builder.newStateMachine("A");
fsm.fire(FSMEvent.ToB, 10);
System.out.println("Current state is "+fsm.getCurrentState());
}
}
现在您可能对示例代码有很多疑问,请耐心等待。以下用户指南将回答您的大部分问题。但在深入了解细节之前,您需要对状态机概念有基本的了解。这些材料有助于理解状态机概念。