<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
	"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">

<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.5 or higher
		</para>
		<para>
			Spring 3.0 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>
		<para>
			Visit the <ulink url="http://www.springframework.org/webflow">Web Flow Project Home</ulink> for more resources on the project.
		</para>
	</sect1>
	<sect1 id="jars-mvn-central">
		<title>How to access Web Flow artifacts from Maven Central</title>
		<para>
			Each jar in the Web Flow distribution is available in the <ulink url="http://repo1.maven.org/maven2/">Maven Central Repository</ulink>.
			This allows you to easily integrate Web Flow into your application if you are already using Maven as the build system for your web development project.
		</para>
		<para>
			To access Web Flow jars from Maven Central, declare the following dependencies in your pom:			
		</para>
		<programlisting language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-binding</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-js</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-webflow</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
]]>
		</programlisting>
		<para>
			And if using JavaServerFaces:
		</para>
		<programlisting language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-faces</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency> 
]]>
		</programlisting>
	</sect1>	
	<sect1 id="jars-bundle-repository">
		<title>How to access Web Flow artifacts from the SpringSource Bundle Repository</title>
		<para>
			Each jar in the Web Flow distribution is also available in the <ulink url="http://www.springsource.com/repository">SpringSource Enterprise Bundle Repository</ulink>.
			Use this repository when you wish to run Spring Web Flow in an OSGi environment such as the <ulink url="http://www.springsource.com/products/dmserver">SpringSource dm Server</ulink>.
			All jars obtained from the SpringSource Bundle Repository are OSGi-ready.
		</para>
		<sect2 id="jars-maven">
			<title>Accessing Web Flow bundles with Maven</title>
			<para>
				To access bundles using Maven, add the following repositories to your Maven pom:
			</para>
			<programlisting language="xml"><![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 language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.binding</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency> 

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

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>]]>
			</programlisting>
			<para>
				And if using JavaServerFaces:
			</para>
			<programlisting language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.faces</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>]]>
			</programlisting>
			<para>
				Note the Web Flow artifacts in the SpringSource Bundle Repository are indexed under different ids because their transitive dependencies are different than the Maven Central artifacts.
				The difference is the transitive jars such as commons-logging have been patched by SpringSource to add the metadata required to make them OSGi-compatible.
			</para>
		</sect2>
		<sect2 id="jars-ivy">
			<title>Accessing Web Flow bundles with Ivy</title>
			<para>
				To access bundles using Ivy, add the following repositories to your Ivy config:
			</para>
			<programlisting language="xml"><![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 language="xml"><![CDATA[
<dependency org="org.springframework.webflow" name="org.springframework.binding"
            rev="2.1.0.RELEASE" conf="compile->runtime" />
<dependency org="org.springframework.webflow" name="org.springframework.js"
            rev="2.1.0.RELEASE" conf="compile->runtime" />
<dependency org="org.springframework.webflow" name="org.springframework.webflow"
            rev="2.1.0.RELEASE" conf="compile->runtime" />]]>
			</programlisting>
			<para>
				And if using JavaServerFaces:
			</para>
			<programlisting language="xml"><![CDATA[
<dependency org="org.springframework.webflow" name="org.springframework.faces"
            rev="2.1.0.RELEASE" conf="compile->runtime" />]]>
			</programlisting>
		</sect2>
		<sect2 id="webflow-dm-server-lib">
			<title>Accessing the dm Server Web Flow library</title>
			<para>
				A dm Server library for Web Flow is also available if you are deploying to a dm Server environment.
				Import this library in your MANIFEST.mf to automatically import all Web Flow bundles.
				To access the library, add the following repository:
			</para>
			<programlisting language="xml"><![CDATA[
<repository>
    <id>com.springsource.repository.libraries.release</id>
    <name>SpringSource Enterprise Bundle Repository - SpringSource Library Releases</name>
    <url>http://repository.springsource.com/maven/libraries/release</url>
</repository>]]>	
			</programlisting>
			<para>
				And declare the following dependency:
			</para>	
			<programlisting language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow-library</artifactId>
    <type>libd</type>
    <version>2.1.0.RELEASE</version>
</dependency>]]>	
			</programlisting>
		</sect2>
	</sect1>
	<sect1>
		<title>How to access nightly builds</title>
		<para>
			Nightly snapshots of Web Flow development branches are available using Maven, and distribution zips are also available for download.
			These snapshot builds are useful for testing out fixes you depend on in advance of the next release, and provide a convenient way for you to provide feedback about whether a fix meets your needs.
		</para>
		<para>
			If using Maven, you may obtain snapshots from either the SpringSource-managed Maven Central-compatible repository or the SpringSource Enterprise Bundle Repository.
			Use the <ulink url="http://s3browse.com/explore/maven.springframework.org/snapshot/org/springframework/webflow">Maven Central-compatible snapshot repository</ulink> when your project obtains its other open source dependencies from Maven Central.
			Use the <ulink url="http://s3browse.com/explore/repository.springsource.com/maven/bundles/snapshot/org/springframework/webflow">Spring Source Enterprise Bundle Snapshot Repository</ulink> when you wish to run Web Flow in an OSGi environment.
		</para>
		<sect2>
			<title>Accessing snapshots from the Maven-central compatible repository</title>
			<para>
				Add the following repository your pom:
			</para>			
			<programlisting language="xml"><![CDATA[
<repository>
    <id>org.springsource.maven.snapshot</id>
    <name>SpringSource Maven Central-compatible Snapshot Repository</name>
    <url>http://maven.springframework.org/snapshot</url>
</repository>]]>
			</programlisting>
			<para>
				Then declare the following dependencies:			
			</para>
			<programlisting language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-binding</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-js</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-webflow</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>]]>
			</programlisting>
			<para>
				And if using JavaServerFaces:
			</para>
			<programlisting language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>spring-faces</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>]]>
			</programlisting>
		</sect2>
		<sect2>
			<title>Accessing snapshots from the SpringSource Enterprise Bundle Repository</title>
			<para>
				Add the following repository your pom:
			</para>			
			<programlisting language="xml"><![CDATA[
<repository>
    <id>com.springsource.repository.bundles.snapshot</id>
    <name>SpringSource Enterprise Bundle Snapshot Repository</name>
    <url>http://repository.springsource.com/maven/bundles/snapshot</url>
</repository>]]>
			</programlisting>
			<para>
				Then declare the following dependencies:			
			</para>
			<programlisting language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.binding</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.js</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency> 

<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.webflow</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>]]>
			</programlisting>
			<para>
				And if using JavaServerFaces:
			</para>
			<programlisting language="xml"><![CDATA[
<dependency>
    <groupId>org.springframework.webflow</groupId>
    <artifactId>org.springframework.faces</artifactId>
    <version>x.y.z.BUILD-SNAPSHOT</version>
</dependency>]]>
			</programlisting>
		</sect2>
		<sect2>
			<title>Accessing snapshot distribution archives</title>
			<para>
				Get the snapshot zip with the most recent CI build number from the <ulink url="http://static.springframework.org/downloads/nightly/snapshot-download.php?project=SWF">Web Flow snapshot download area</ulink>.		
			</para>
		</sect2>
	</sect1>
</chapter>
