diff --git a/Chapter6-1-1/pom.xml b/Chapter6-1-1/pom.xml
new file mode 100644
index 0000000..ef3fd65
--- /dev/null
+++ b/Chapter6-1-1/pom.xml
@@ -0,0 +1,46 @@
+
+
+ 4.0.0
+
+ com.didispace
+ statemachine
+ 0.0.1-SNAPSHOT
+ jar
+
+ statemachine
+ Demo project for Spring Boot
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.4.2.RELEASE
+
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.statemachine
+ spring-statemachine-core
+ 1.2.0.RELEASE
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/Chapter6-1-1/src/main/java/com/didispace/Application.java b/Chapter6-1-1/src/main/java/com/didispace/Application.java
new file mode 100644
index 0000000..34c59f4
--- /dev/null
+++ b/Chapter6-1-1/src/main/java/com/didispace/Application.java
@@ -0,0 +1,26 @@
+package com.didispace;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.statemachine.StateMachine;
+
+@SpringBootApplication
+public class Application implements CommandLineRunner {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+ @Autowired
+ private StateMachine stateMachine;
+
+ @Override
+ public void run(String... args) throws Exception {
+ stateMachine.start();
+ stateMachine.sendEvent(Events.PAY);
+ stateMachine.sendEvent(Events.RECEIVE);
+ }
+
+}
diff --git a/Chapter6-1-1/src/main/java/com/didispace/EventConfig.java b/Chapter6-1-1/src/main/java/com/didispace/EventConfig.java
new file mode 100644
index 0000000..9ef447a
--- /dev/null
+++ b/Chapter6-1-1/src/main/java/com/didispace/EventConfig.java
@@ -0,0 +1,40 @@
+package com.didispace;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.statemachine.annotation.*;
+
+/**
+ * 该配置实现了com.didispace.StateMachineConfig类中定义的状态机监听器实现。
+ */
+@WithStateMachine
+public class EventConfig {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @OnTransition(target = "UNPAID")
+ public void create() {
+ logger.info("订单创建,待支付");
+ }
+
+ @OnTransition(source = "UNPAID", target = "WAITING_FOR_RECEIVE")
+ public void pay() {
+ logger.info("用户完成支付,待收货");
+ }
+
+ @OnTransitionStart(source = "UNPAID", target = "WAITING_FOR_RECEIVE")
+ public void payStart() {
+ logger.info("用户完成支付,待收货: start");
+ }
+
+ @OnTransitionEnd(source = "UNPAID", target = "WAITING_FOR_RECEIVE")
+ public void payEnd() {
+ logger.info("用户完成支付,待收货: end");
+ }
+
+ @OnTransition(source = "WAITING_FOR_RECEIVE", target = "DONE")
+ public void receive() {
+ logger.info("用户已收货,订单完成");
+ }
+
+}
\ No newline at end of file
diff --git a/Chapter6-1-1/src/main/java/com/didispace/Events.java b/Chapter6-1-1/src/main/java/com/didispace/Events.java
new file mode 100644
index 0000000..3d67888
--- /dev/null
+++ b/Chapter6-1-1/src/main/java/com/didispace/Events.java
@@ -0,0 +1,6 @@
+package com.didispace;
+
+public enum Events {
+ PAY, // 支付
+ RECEIVE // 收货
+}
\ No newline at end of file
diff --git a/Chapter6-1-1/src/main/java/com/didispace/StateMachineConfig.java b/Chapter6-1-1/src/main/java/com/didispace/StateMachineConfig.java
new file mode 100644
index 0000000..919004c
--- /dev/null
+++ b/Chapter6-1-1/src/main/java/com/didispace/StateMachineConfig.java
@@ -0,0 +1,82 @@
+package com.didispace;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.statemachine.config.EnableStateMachine;
+import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter;
+import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer;
+import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
+import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
+import org.springframework.statemachine.listener.StateMachineListener;
+import org.springframework.statemachine.listener.StateMachineListenerAdapter;
+import org.springframework.statemachine.transition.Transition;
+
+import java.util.EnumSet;
+
+
+@Configuration
+@EnableStateMachine
+public class StateMachineConfig extends EnumStateMachineConfigurerAdapter {
+
+ private Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public void configure(StateMachineStateConfigurer states)
+ throws Exception {
+ states
+ .withStates()
+ .initial(States.UNPAID)
+ .states(EnumSet.allOf(States.class));
+ }
+
+ @Override
+ public void configure(StateMachineTransitionConfigurer transitions)
+ throws Exception {
+ transitions
+ .withExternal()
+ .source(States.UNPAID).target(States.WAITING_FOR_RECEIVE)
+ .event(Events.PAY)
+ .and()
+ .withExternal()
+ .source(States.WAITING_FOR_RECEIVE).target(States.DONE)
+ .event(Events.RECEIVE);
+ }
+
+// @Override
+// public void configure(StateMachineConfigurationConfigurer config)
+// throws Exception {
+// config
+// .withConfiguration()
+// .listener(listener());
+// }
+//
+// @Bean
+// public StateMachineListener listener() {
+// return new StateMachineListenerAdapter() {
+//
+// @Override
+// public void transition(Transition transition) {
+// if(transition.getTarget().getId() == States.UNPAID) {
+// logger.info("订单创建,待支付");
+// return;
+// }
+//
+// if(transition.getSource().getId() == States.UNPAID
+// && transition.getTarget().getId() == States.WAITING_FOR_RECEIVE) {
+// logger.info("用户完成支付,待收货");
+// return;
+// }
+//
+// if(transition.getSource().getId() == States.WAITING_FOR_RECEIVE
+// && transition.getTarget().getId() == States.DONE) {
+// logger.info("用户已收货,订单完成");
+// return;
+// }
+// }
+//
+// };
+// }
+
+}
diff --git a/Chapter6-1-1/src/main/java/com/didispace/States.java b/Chapter6-1-1/src/main/java/com/didispace/States.java
new file mode 100644
index 0000000..4adbb0e
--- /dev/null
+++ b/Chapter6-1-1/src/main/java/com/didispace/States.java
@@ -0,0 +1,7 @@
+package com.didispace;
+
+public enum States {
+ UNPAID, // 待支付
+ WAITING_FOR_RECEIVE, // 待收货
+ DONE // 结束
+}
diff --git a/Chapter6-1-1/src/main/resources/application.properties b/Chapter6-1-1/src/main/resources/application.properties
new file mode 100644
index 0000000..a60671a
--- /dev/null
+++ b/Chapter6-1-1/src/main/resources/application.properties
@@ -0,0 +1,2 @@
+spring.application.name=statemachine
+