7. 行动
大多数流需要表达的不仅仅是视图导航逻辑。 通常,它们还需要调用应用程序的业务服务或其他作。
在流中,有几个点可以执行作:
- 
在流开始时 
- 
进入状态时 
- 
现场渲染 
- 
在转换执行时 
- 
在状态退出时 
- 
在流端 
使用简洁的表达式语言定义作。 默认情况下,Spring Web Flow 使用 Unified EL。 接下来的几节介绍了定义作的基本语言元素。
7.1.evaluate元素
最常用的动作元素是evaluate元素。
这evaluate元素在流中的某个点计算表达式。
使用这个单个元素,您可以调用 Spring bean 或任何其他流变量上的方法。
以下列表显示了一个示例:
<evaluate expression="entityManager.persist(booking)" />7.2. 检查点:流作
应查看已添加作的示例预订流:
<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
                          https://www.springframework.org/schema/webflow/spring-webflow.xsd">
    <input name="hotelId" />
    <on-start>
        <evaluate expression="bookingService.createBooking(hotelId, currentUser.name)"
                  result="flowScope.booking" />
    </on-start>
    <view-state id="enterBookingDetails">
        <transition on="submit" to="reviewBooking" />
    </view-state>
    <view-state id="reviewBooking">
        <transition on="confirm" to="bookingConfirmed" />
        <transition on="revise" to="enterBookingDetails" />
        <transition on="cancel" to="bookingCancelled" />
    </view-state>
    <end-state id="bookingConfirmed" />
    <end-state id="bookingCancelled" />
</flow>此流程现在创建了一个Booking启动时流作用域中的对象。
要预订的酒店的 ID 是从流量输入属性中获取的。