Spring Web Flow PR4 发布

发布 | Keith Donald | 2005 年 7 月 17 日 | ...

亲爱的 Spring 社区成员:

我很高兴地宣布 Spring Web Flow Preview 4 (PR4) 发布了。此版本使 Spring Web Flow 与 Spring 1.2.2+ 兼容。

这将是 Web Flow 的最后一个预览版;下一个版本将是 1.0 RC1。要下载,请访问:http://sourceforge.net/project/showfiles.php?group_id=73357&package_id=148517

注意:PR3 和 PR4 之间存在一些不兼容的更改。这包括将根包从 org.springframework.web.flow 重命名为 org.springframework.webflow,表明 Web Flow 是一个独立的模块,值得拥有一个顶层包。  有关更改的完整列表,请在此处访问更改日志:http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Change+Log

给 WebFlow Portlet 用户的特别说明:PR4 不包含 Portlet MVC 集成。  Portlet MVC 用户需要再等几周,直到 Web Flow RC1 发布,届时 Portlet MVC 将与 Spring 1.3 集成一起发布。对于由此造成的短期不便,我们深表歉意:预计在未来几周内将恢复更好的 Portlet MVC 集成和示例应用程序。

PR4 版本包含许多新的和值得注意的增强功能。以下是其中一些:

状态进入动作

任何 State 类型的实例都可以配置一个进入动作,该动作将在进入状态时执行。  这有助于实现通用的状态设置逻辑。例如,ViewState 可以设置一个进入动作来执行任意的预渲染逻辑。此类预渲染逻辑可能会加载参考数据以填充表单下拉列表。  可以按顺序执行任意数量的动作,作为复合状态进入动作的一部分。

<view-state id="displayCriteria" view="searchCriteria">
<entry>
<action bean="searchFormAction" method="setupForm"/>
<action bean="searchFormAction" method="setupReferenceData"/>
</entry>

<transition on="search" to="executeSearch">
<action bean="searchFormAction" method="bindAndValidate"/>
</transition>
</view-state>

可转换状态退出动作

任何 TransitionableState 类型的实例都可以配置一个退出动作,该动作将在退出状态时执行。这有助于实现通用的状态清理逻辑。  可以再次指定多个动作,它们将自动封装在 CompositeAction 中。

<action-state id="executeSearch">
<action bean="searchAction"/>
<transition on="success" to="displayResults"/>
<exit>
<action bean="auditAction" method="logResults"/>
</exit>
</action-state>

流程执行监听器条件

在 PR4 之前,没有简单的方法可以为一组流程定义指定哪些监听器应观察已启动的流程执行。  新的 FlowExecutionListenerCriteria 提供了一种可插拔的策略,可以针对给定的 Flow 定义按请求计算适用于执行的监听器集。

<bean id="flowExecutionManager"
class="org.springframework.webflow.execution.servlet.ServletFlowExecutionManager">
<property name="listenerMap">
<map>
<entry value="*">
<key>
<list>
<bean class="example.Listener1"/>
<bean class="example.Listener2"/>
</list>
</key>
</entry>

<entry value="sampleFlowA">
<key>
<list>
<bean class="example.Listener3"/>
</list>
</key>
</entry>
</map>
</property>
...
</bean>

上述 Spring 配置将监听器 1 和 2 附加到所有流程 (*) 的执行上,而监听器 3 仅附加到 "sampleFlowA"。

大大增强的表达式语言支持

此版本的一大亮点是新的 Spring 数据绑定模块的持续进展。  spring-binding 中包含一个表达式解析和评估抽象,与健壮的类型转换工具无缝集成。  这两者结合起来,允许任意字符串(代表一个或多个表达式,例如“Announcement: ${org} ${product} ${release} is out!”)被消费并转换为可评估的表达式,利用任何表达式语言,默认使用 OGNL。  Spring Web Flow 在多个地方利用了这一机制,包括重定向表达式、转换表达式和属性映射表达式。

  1. 例如,用于针对请求上下文进行评估的重定向表达式
    redirect:/${sourceEvent.parameters.url}?attribute1=${flowScope.foo}&attribute
    2=${requestScope.bar}"
  2. 用于驱动动态状态转换决策的转换表达式
    <transition on="${result == 'success' && ${flowScope.selectedItinerary.price} > 500.0" to="requireCreditCheck"/>
  3. 用于在两个源之间映射属性的属性映射表达式
    <subflow-state id="browseDetails" flow="detailFlow">
    <attribute-mapper>
    <input value="${sourceEvent.parameters.id}" as="someBean.id" from="string" to="long"/>
    </attribute-mapper>
    ...
    </subflow-state>

增强的属性映射器类型转换支持

输入和输出映射元素的“from”和“to”属性可用于指定类型转换规则。  因此,该定义

<input value="${sourceEvent.parameters.id}" as="someBean.id" from="string" to="long"/>

表示

将 ${sourceEvent.parameters.id} 的值从字符串转换为 long 类型,并将 long 类型结果设置到 someBean.id。

基于会话的事务同步器策略

PR4 新增了一个 TransactionSynchronizer,它在 HTTP 会话作用域存储中管理事务令牌。  它非常适合与利用延续且需要防止重复应用程序事务发生的流程一起使用。

新的便利动作实现

webflow.action 包现在提供了几个新的动作实现,包括:CompositeAction、DelegatingAction 和 GuardedAction。

启用 JMX 的流程执行统计信息

sellitem 示例现在演示了使用 JMX 管理协议收集所有 Web Flow 的全局统计信息,并使用任何 JMX 客户端(例如 JDK 1.5 JConsole)监视这些统计信息的能力。  未来的 Web Flow 版本将增强此功能,以允许按每个流程执行进行管理和监视。

简化和改进的 Struts 集成

PR4 大大简化了 Struts 1.x 集成,并与 Spring 1.2.2 引入的 SpringBindingActionForm 对齐。  不再需要特殊的 FlowActionMapping,因为所有特定于 webflow 的配置现在都由 Spring 管理。  有关具体示例,请参阅 birthdate 示例应用程序。

其他

改进的 javadoc、错误消息和日志记录

大大改进的构建系统,支持“一步式”示例应用程序构建/部署

Erwin 和我必须感谢 Colin Sampaleanu 构建了一个非常棒的构建系统来管理整个开发和发布过程。  您会发现,下载 PR4 后,构建和部署示例应用程序以及 Spring Web Flow 的任何组件(例如项目本身或绑定模块)都变得简单易行,并且带有细致、自动的 jar 文件管理。  这个“通用构建”系统基于 Ant 1.6.x,并利用 Ivy 进行 jar 依赖管理--

这些只是此版本的一些新特性。  有关更改的完整列表,请参阅 http://opensource.atlassian.com/confluence/spring/display/WEBFLOW/Change+Log

和 往常一样,我们非常珍视您的反馈意见。  预计 Web Flow 1.0 RC1 将于 7 月底发布,届时将集成 Portlet MVC 和 JSF。

祝好,

Keith Donald
Erwin Vervaet

订阅 Spring 资讯

通过 Spring 资讯保持联系

订阅

抢先一步

VMware 提供培训和认证,助您快速进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将到来的活动

查看 Spring 社区中所有即将到来的活动。

查看全部