<?xml version="1.0" encoding="UTF-8"?>
<preface id="preface">
	<title>Preface</title>
	<para>
		Many web applications require the same sequence of steps to execute in different contexts.
		Often these sequences are merely components of a larger task the user is trying to accomplish.
		Such a reusable sequence is called a flow.
	</para>
	<para>
		Consider a typical shopping cart application.
		User registration, login, and cart checkout are all examples of flows that can be invoked from several places in this type of application.
	</para>
	<para>
		Spring Web Flow is the module of Spring for implementing flows.
		The Web Flow engine plugs into the Spring Web MVC platform and provides declarative flow definition language.
		This reference guide shows you how to use and extend Spring Web Flow.
	</para>
</preface>

<chapter id="introduction">
	<title>Introduction</title>
	<sect1 id="manual-overview">
		<title>What this guide covers</title>
		<para>
			This guide covers all aspects of Spring Web Flow.
			It covers implementing flows in end-user applications and working with the feature set.
			It also covers extending the framework and the overall architectural model.
		</para>
	</sect1>
	<sect1 id="system-requirements">
		<title>What Web Flow requires to run</title>
		<para>
			Java 1.4 or higher
		</para>
		<para>
			Spring 2.5.4 or higher
		</para>
	</sect1>
	<sect1 id="support">
		<title>Where to get support</title>
		<para>
			Professional from-the-source support on Spring Web Flow is available from
			<ulink url="http://www.springsource.com">SpringSource</ulink>, the company behind Spring, and
			<ulink url="http://www.ervacon.com">Ervacon</ulink>, operated by Web Flow project co-founder Erwin Vervaet
		</para>
	</sect1>
	<sect1 id="development">
		<title>Where to follow development</title>
		<para>
			You can help make Web Flow best serve the needs of the Spring community by interacting with developers 
			at the <ulink url="http://forum.springframework.org">Spring Community Forums</ulink>.
		</para>
		<para>
			Report bugs and influence the Web Flow project roadmap using the <ulink url="http://jira.springframework.org">Spring Issue Tracker</ulink>.
		</para>
		<para>
			Subscribe to the <ulink url="http://www.springframework.org">Spring Community Portal</ulink> for the latest Spring news and announcements.
		</para>		
	</sect1>
	<sect1 id="jars">
		<title>How to obtain Web Flow artifacts from the SpringSource Bundle Repository</title>
		<para>
			Each jar in the Web Flow distribution is available in the <ulink url="http://www.springsource.com/repository/">SpringSource Enterprise Bundle Repository</ulink> for use in an OSGi environment.
			These jars may be accessed using Maven or Ivy dependency managers.
		</para>
		<sect2 id="jars-maven">
			<title>Accessing Web Flow with Maven</title>
			<para>
				To access jars using Maven, add the following repositories to your Maven pom:
			</para>
			<programlisting><![CDATA[
<repository>
    <id>com.springsource.repository.bundles.release</id>
    <name>SpringSource Enterprise Bundle Repository - SpringSource Releases</name>
    <url>http://repository.springsource.com/maven/bundles/release</url>
</repository>

<repository>
    <id>com.springsource.repository.bundles.external</id>
    <name>SpringSource Enterprise Bundle Repository - External Releases</name>
    <url>http://repository.springsource.com/maven/bundles/external</url>
</repository>]]>
			</programlisting>
			<para>
				Then declare the following dependencies:			
			</para>
			<programlisting><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.binding</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.js</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency> 
]]>
			</programlisting>
			<para>
				And if using JavaServerFaces:
			</para>
			<programlisting><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.faces</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency> 
]]>
			</programlisting>
		</sect2>
		<sect2 id="jars-ivy">
			<title>Accessing Web Flow with Ivy</title>
			<para>
				To access jars using Ivy, add the following repositories to your Ivy config:
			</para>
			<programlisting><![CDATA[
<url name="com.springsource.repository.bundles.release">
    <ivy pattern="http://repository.springsource.com/ivy/bundles/release/
                  [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    <artifact pattern="http://repository.springsource.com/ivy/bundles/release/
                       [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>

<url name="com.springsource.repository.bundles.external">
    <ivy pattern="http://repository.springsource.com/ivy/bundles/external/
                  [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    <artifact pattern="http://repository.springsource.com/ivy/bundles/external/
                       [organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
</url>]]>
			</programlisting>
			<para>
				Then declare the following dependencies:			
			</para>
			<programlisting><![CDATA[
<dependency org="org.springframework.webflow" name="org.springframework.binding"
            rev="2.0.0.RELEASE" conf="compile->compile" />
<dependency org="org.springframework.webflow" name="org.springframework.js"
            rev="2.0.0.RELEASE" conf="compile->compile" />
<dependency org="org.springframework.webflow" name="org.springframework.webflow"
            rev="2.0.0.RELEASE" conf="compile->compile" />
]]>
			</programlisting>
			<para>
				And if using JavaServerFaces:
			</para>
			<programlisting><![CDATA[
<dependency org="org.springframework.webflow" name="org.springframework.faces"
            rev="2.0.0.RELEASE" conf="compile->compile" />
]]>
			</programlisting>
		</sect2>
	</sect1>
	<sect1 id="jars-mvn-central">
		<title>How to obtain Web Flow artifacts from Maven Central</title>
		<para>
			Each jar in the Web Flow distribution is also available in the <ulink url="http://repo1.maven.org/maven2/">Maven Central Repository</ulink>.
			The large majority of artifacts retrieved from this repository are not OSGi bundles.
			If you wish to run your Web Flows in an OSGi environment, you are encouraged to use the <link linkend="jars">SpringSource Bundle Repository</link>.
		</para>
		<para>
			To access Web Flow jars from Maven Central, declare the following dependencies in you pom:			
		</para>
		<programlisting><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.binding</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.js</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>
]]>
		</programlisting>
		<para>
			And if using JavaServerFaces:
		</para>
		<programlisting><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.faces</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency> 
]]>
		</programlisting>
	</sect1>	
</chapter>