15.2. Flow Definition Language

The core concepts behind the flow definition language have not changed between Web Flow 1 and 2. However, some of the element and attribute names have changed. These changes allow for the language to be both more concise and expressive. A complete list of mapping changes is available as an appendix.

Flow Definition Updater Tool

An automated tool is available to aid in the conversion of existing 1.x flows to the new 2.x style. The tool will convert all the old tag names to their new equivalents, if needed. While the tool will make a best effort attempt at conversion, there is not a one-to-one mapping for all version 1 concepts. If the tool was unable to convert a portion of the flow, it will be marked with a WARNING comment in the resulting flow.

The conversion tool requires spring-webflow.jar, spring-core.jar and an XSLT 1.0 engine. Saxon 6.5.5 is recommended.

The tool can be run from the command line with the following command. Required libraries must be available on the classpath. The source must be a single flow to convert. The resulting converted flow will be sent to standard output.

java org.springframework.webflow.upgrade.WebFlowUpgrader flow-to-upgrade.xml
			

Flow Definition Updater Tool Warnings

argument parameter-type no longer supported

Bean actions have been deprecated in favor of EL based evaluate expressions. The EL expression is able to accept method parameters directly, so there is no longer a need for the argument tag. A side effect of this change is that method arguments must be of the correct type before invoking the action.

inline-flow is no longer supported

Inline flows are no longer supported. The contents of the inline flow must be moved into a new top-level flow. The inline flow's content has been converted for your convenience.

mapping target-collection is no longer supported

Output mappings can no longer add an item to a collection. Only assignment is supported.

var bean is no longer supported

The var bean attribute is no longer needed. All spring beans can be resolved via EL.

var scope is no longer supported

The var element will place all variable into flow scope. Conversation scope was previously allowed.

EL Expressions

EL expressions are used heavily throughout the flow definition language. Many of the attributes that appear to be plain text are actually interpreted as EL. The standard EL delimiters (either ${} or #{}) are not necessary and will often cause an exception if they are included.

EL delimiters should be removed where necessary by the updater tool.