· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Spring Web Flow

Spring Web Flow


들어가기


웹어플리케이션은 점점 더 복잡해짐에 따라 페이지의 흐름따위를 관리하는것은 쉽지않은 일이 되어 버렸다. 반복된 코드의 복사와 붙여넣기를 할 수 밖에 없는 환경과 세션상태의 관리에 시간을 쏟는 일에 지치지 않았는가? Spring Web Flow를 시작해보자

Spring Web Flow란 무엇인가?


SpringWebFlow (SWF)는 Spring기반의 Web Application 개발 흐름의 한 모듈이라 할 수 있겠다.

SpringWebFlow의 목표는 웹어플리케이션의 페이지흐름의 최선의 솔루션을 제공하는 것이다. SWF는 한트랜잭션이 여러단계의 페이지로 구성된, 다시말해 사용자가 여러 단계를 밟아가며 한 트랜잭션을 수행하는 그런 환경에서 최상의 제어방식을 제공한다.

아래의 UML State Diagram은 위와 같은 환경에서 페이지이동을 제어하는 좋은 예가 된다.


위의 플로우는 전형적인 항공예약 플로우이다. - 비행기 예약시에 항상 겪게되는 그런 것이다.

Spring Web Fow의 발생 배경


기존의 웹어플리케이션은 페이지플로우가 명시적이지 않다. 스트러츠환경을 생각해보자. 스트러츠는 action과 view로 이루어진다. 하나의 액션이 요청된 URL에 맵핑되고, 그 액션은 일단의 프로세스를 실행하고 적절한 페이지에 그 결과를 보여준다.

여러단계의 페이지 플로우를 가지는 프로세스를 스트러츠에서 구현하려면 각각의 액션은 다양한 뷰들과 결합되어야 한다. "back"이나 "submit"과 같은 이벤트를 처리하기 위한 Action Url은 각각의 뷰에 하드코딩되어져야 할 것이다. 뿐만아니라 이러한 플로우를 처리하기 위해 무분별하게 세션이 사용될 수도 있다. 이러한 접근방식은 간단하고 기능적인 접근방식이나 주요한 단점을 가진다 : sturts-config.xml에 기술되는 액션의 정의들로만으로는 전체적인 페이지의 흐름을 파악할 수 없고 action과 view는 재사용되기 어려울 것이다.

Spring MVC는 보다 상위레벨의 기능을 제공한다 : 미리 정의된 페이지 플로우를 처리하는 폼 컨틀롤러를 제공한다. SimpleFormControllerAbstractWizardFormController가 그것이다. 허나 이것은 일반적인 페이지의 흐름을 처리하는데에 사용되는 정도로 생각하는것이 좋다.

Tapestry 와 JSF는 페이지레벨의 event-driven 방식을 취하는것들로 각각의 페이지와 뒤로가기의 제어로직은 한곳에 처리된다. 그러나 정리된 Lifecycle하에서 다른페이지로 뻗어나가고 경우에 따라 다른 경로로 이동해야 하는 논리적인 페이지의 흐름을 제공하지는 못한다. 이러한 환경에서 페이지의 흐름은 단일 리퀘스트보다는 존속주기가 길고 세션보다는 짧다.

이것이 SpringWebFlow의 발생배경이다. SpringWebFlow는 명확하고 간단한 방법으로 웹어플리케이션의 페이지플로우를 구현및 재사용할수 있게 한다. SpringWebFlow는 Struts, Spring MVC, Tapestry, JSF, Portlet등의 환경에서 적용이 가능하다.

좋은 점

SpringWebFlow는 다음과 같은 몇가지 이점을 제공한다. * 웹어플리케이션의 각 페이지흐름은 web flow definition에 정의 되어 한눈에 파악할 수 있다. * Web Flow는 비의존적으로 설계되어 다양한 환경에서 재사용될 수 있다. * Web Flow를 사용하여 일관된 방식의 기술을 web application에 적용할 수 있다. * Web Flow는 간단명료하고 lifecycle관리를 시스템에서 처리하게 하여 복잡성을 배재시켜 사용하기 쉽다.

SpringWebFlow 기동

web flow는 state의 집합으로 구성된다. 하나의 state는 플로우상에서 무언가가 일어나는 한 점이다. : 예를들어, 뷰를 표현하거나, 액션을 수행하는것이 될 것이다. 각각의 state는 하나 이상의 transition을 포함하는데 이것은 다른 단계의 state로 이동하는데에 사용된다.

transition은 event에 의해 기동된다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-06-23 22:36:16
Processing time 0.0046 sec