我是Spring Webflow的新手,我正在Internet上阅读代码和解释。我对spring webflow应用程序中的代码执行流程有基本的疑问。 据我所知,流请求被映射到flow.xml文件(我现在知道FlowHandlerAdapter,FlowHandlerMapping和FlowRegistry)。流xml文件中的起始状态(如果为视图状态)将呈现视图。 例如-
<?xml version="1.0" encoding="UTF-8"?>
<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">
<secured attributes="ROLE_USER" />
<input name="hotelId" required="true" />
<on-start>
<evaluate expression="bookingService.createBooking(hotelId, currentUser.name)" result="flowScope.booking" />
</on-start>
<view-state id="enterBookingDetails" model="booking">
<transition on="proceed" to="reviewBooking" />
<transition on="cancel" to="bookingCancelled" bind="false" />
</view-state>
<view-state id="reviewBooking">
<transition on="confirm" to="bookingConfirmed">
<evaluate expression="bookingService.persistBooking(booking)" />
</transition>
<transition on="revise" to="enterBookingDetails" />
<transition on="cancel" to="bookingCancelled" />
</view-state>
<end-state id="bookingConfirmed" />
<end-state id="bookingCancelled" />
</flow>
在这里,当执行流文件时,具有ID的第一个视图状态-“ enterBookingDetails”将呈现视图enterBookingDetails.xhtml。
控件现在是否进入视图页面enterBookingDetails.xhtml并等待用户事件?在用户单击“继续”按钮之后,控件返回到流XML文件,并执行<transition>
元素以转换为reviewBooking视图状态?
我正确地理解,流程执行被暂停直到用户事件发生,并且在用户事件发生时,控制权从网页转到流程xml文件,并执行转换并转换为相应状态。
答案 0 :(得分:0)
是的,您的理解基本上是正确的。 Spring Web Flow框架呈现视图,然后一旦接收到下一个动作“进行”,它将转换为“ reviewBooking”状态,在此状态下它将基本上暂停直到下一个用户动作。执行是基于状态从一个状态到另一个状态的转移,以逐步完成整个流程。
注意:您还可以在自己的流中重复使用其他Web流xml文件中定义的流。这使框架非常强大。