5.2. Defining action states
Prev | 5. Executing actions | Next

## 5.2. Defining action states

Use the `action-state` element when you wish to invoke an action, then transition to another state based on the action's outcome:

    <action-state id="moreAnswersNeeded">
        <evaluate expression="interview.moreAnswersNeeded()" />
        <transition on="yes" to="answerQuestions" />
        <transition on="no" to="finish" />
    </action-state>

The full example below illustrates a interview flow that uses the action-state above to determine if more answers are needed to complete the interview:

    <flow xmlns="http://www.springframework.org/schema/webflow"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://www.springframework.org/schema/webflow
                              http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">

        <on-start>
            <evaluate expression="interviewFactory.createInterview()" result="flowScope.interview" />
        </on-start>

        <view-state id="answerQuestions" model="questionSet">
            <on-entry>
                <evaluate expression="interview.getNextQuestionSet()" result="viewScope.questionSet" />
            </on-entry>
            <transition on="submitAnswers" to="moreAnswersNeeded">
                <evaluate expression="interview.recordAnswers(questionSet)" />
            </transition>
        </view-state>

        <action-state id="moreAnswersNeeded">
            <evaluate expression="interview.moreAnswersNeeded()" />
            <transition on="yes" to="answerQuestions" />
            <transition on="no" to="finish" />
        </action-state>

        <end-state id="finish" />

    </flow>

Prev | Up | Next
5. Executing actions | Home | 5.3. Defining decision states