1. 개요
Spring Web Flow는 Spring MVC를 기반으로하며 웹 애플리케이션 내에서 흐름을 구현할 수 있습니다. 프로세스 또는 일부 비즈니스 논리를 통해 사용자를 안내하는 일련의 단계를 만드는 데 사용됩니다.
이 빠른 사용방법(예제)에서는 사용자 활성화 흐름의 간단한 예 를 살펴 보겠습니다 . 사용자에게 페이지가 표시 되고 계속 하려면 활성화 버튼을 클릭하고 활성화 를 취소 하려면 취소 버튼을 클릭합니다.
여기서 가정하는 것은 이미 설정된 Spring MVC 웹 애플리케이션이 있다는 것이 아닙니다.
2. 설정
Spring Web Flow 의존성을 pom.xml 에 추가하여 시작해 보겠습니다 .
<dependency>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-webflow</artifactId>
<version>2.5.0.RELEASE</version>
</dependency>
Spring Web Flow의 최신 버전은 Central Maven Repository 에서 찾을 수 있습니다 .
3. 흐름 만들기
이제 간단한 흐름을 만들어 보겠습니다. 앞서 언급했듯이 흐름은 프로세스를 통해 사용자를 안내하는 일련의 단계입니다. 현재이 작업은 XML 기반 구성을 통해서만 수행 할 수 있습니다.
흐름의 각 단계를 상태 라고합니다 .
이 간단한 예에서는 view-state를 사용합니다 . 뷰 상태가 일치 뷰를 렌더링하는 흐름 공정이다. 뷰 상태는 앱 (의 페이지를 의미 , WEB-INF /도) 의 ID가 뷰 상태 가 참조하는 페이지의 이름 인.
또한 전환 요소를 사용할 것입니다. 전이 소자는 특히 내에서 발생하는 이벤트의 처리에 사용되는 상태 .
이 예 흐름을 위해, 우리는 세 가지 설정됩니다 뷰 상태를 더 - 활성화 , 성공 및 실패 .
이 흐름의 프로세스는 매우 간단합니다. 시작점은 활성화 보기입니다. 는 IF 활성화 이벤트가 트리거, 그것은으로 전환해야 성공 볼 수 있습니다. 경우 취소 이벤트가 발생, 그것은으로 전환해야 실패 보기. 전환 요소는에서 일어나는 버튼 클릭 이벤트 처리 뷰 상태를 :
<view-state id="activation">
<transition on="activate" to="success"/>
<transition on="cancel" to="failure"/>
</view-state>
<view-state id="success" />
<view-state id="failure" />
ID 활성화로 참조 되고 WEB-INF / view / activation.jsp에 있는 초기 활성화 페이지는 activate 및 cancel 버튼이 두 개있는 간단한 페이지입니다 . 버튼을 클릭하면 전환이 트리거되어 사용자를 성공 보기 상태 ( WEB-INF / view / success.jsp ) 또는 실패 보기 상태 ( WEB-INF / view / failure.jsp)로 보냅니다.
<body>
<h2>Click to activate account</h2>
<form method="post" action="${flowExecutionUrl}">
<input type="submit" name="_eventId_activate" value="activate" />
<input type="submit" name="_eventId_cancel" value="cancel" />
</form>
</body>
flowExecutionUrl 을 사용하여 현재 흐름 실행 view-state 의 컨텍스트 상대 URI에 액세스합니다 .
4. 흐름 구성
다음으로 Spring Web Flow를 웹 환경에 구성합니다. Flow Registry 및 Flow Builder 서비스를 설정하여이를 수행합니다.
Flow Registry를 사용하면 흐름의 위치를 지정하고 사용중인 경우 Flow Builder 서비스도 지정할 수 있습니다.
Flow Builder 서비스는 흐름을 구축하는 데 사용되는 서비스 및 설정을 사용자 지정하는 데 도움이됩니다.
사용자 정의 할 수있는 서비스 중 하나는 view-factory-creator 입니다. 보기 공장 제작자는 우리가 사용자 정의 할 수 있습니다 ViewFactoryCreator 스프링 웹 플로우에서 사용합니다. Spring MVC를 사용하고 있기 때문에 Spring MVC 구성에서 뷰 리졸버를 사용하도록 Spring Web Flow를 구성 할 수 있습니다.
예제를 위해 Spring Web Flow를 구성하는 방법은 다음과 같습니다.
@Configuration
public class WebFlowConfig extends AbstractFlowConfiguration {
@Autowired
private WebMvcConfig webMvcConfig;
@Bean
public FlowDefinitionRegistry flowRegistry() {
return getFlowDefinitionRegistryBuilder(flowBuilderServices())
.addFlowLocation("/WEB-INF/flows/activation-flow.xml", "activationFlow")
.build();
}
@Bean
public FlowExecutor flowExecutor() {
return getFlowExecutorBuilder(flowRegistry()).build();
}
@Bean
public FlowBuilderServices flowBuilderServices() {
return getFlowBuilderServicesBuilder()
.setViewFactoryCreator(mvcViewFactoryCreator())
.setDevelopmentMode(true).build();
}
@Bean
public MvcViewFactoryCreator mvcViewFactoryCreator() {
MvcViewFactoryCreator factoryCreator = new MvcViewFactoryCreator();
factoryCreator.setViewResolvers(
Collections.singletonList(this.webMvcConfig.viewResolver()));
factoryCreator.setUseSpringBeanBinding(true);
return factoryCreator;
}
}
해당 구성에 XML을 사용할 수도 있습니다.
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping">
<property name="flowRegistry" ref="activationFlowRegistry"/>
</bean>
<flow:flow-builder-services id="flowBuilderServices"
view-factory-creator="mvcViewFactoryCreator"/>
<bean id="mvcViewFactoryCreator"
class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
<property name="viewResolvers" ref="jspViewResolver"/>
</bean>
<flow:flow-registry id="activationFlowRegistry"
flow-builder-services="flowBuilderServices">
<flow:flow-location id="activationFlow" path="/WEB-INF/flows/activation-flow.xml"/>
</flow:flow-registry>
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerAdapter">
<property name="flowExecutor" ref="activationFlowExecutor"/>
</bean>
<flow:flow-executor id="activationFlowExecutor"
flow-registry="activationFlowRegistry"/>
5. 흐름 탐색
흐름을 탐색하려면 웹 앱을 시작하고 http : // localhost : 8080 / {context-path} / activationFlow로 이동 합니다. 앱을 시작하려면 Tomcat 또는 Jetty 와 같은 애플리케이션 서버에 배포 하세요.
그러면 흐름 구성에 지정된 활성화 페이지 인 흐름의 초기 페이지로 이동합니다.

활성화 버튼을 클릭 하여 성공 페이지로 이동할 수 있습니다 .
