Spring Web Flow PR4 发布

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

尊敬的 Spring 社区:

我很高兴地宣布 Spring Web Flow 预览版 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 版本包含许多新的和值得注意的增强功能。以下是一些:

状态进入操作

任何状态类型的实例都可以配置进入操作,该操作将在进入该状态时执行。这有助于通用状态设置逻辑。例如,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>

可转换状态退出操作

任何可转换状态类型的实例都可以配置退出操作,该操作将在退出该状态时执行。这有助于通用状态拆卸逻辑。可以再次指定多个操作,并且它们将自动包装在 CompositeAction 中。

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

流程执行监听器条件

在 PR4 之前,没有简单的方法为一组流程定义定义哪些监听器应该观察已启动的流程执行。新的 FlowExecutionListenerCriteria 提供了一种可插拔策略,其中给定流程定义的执行适用的监听器集是在每次请求的基础上计算的。

<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 配置将 Listener 1 和 2 附加到所有流程 (*) 的执行,而 Listener 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} 的值从字符串转换为长整型,并将长整型结果设置在 someBean.id 上。

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

PR4 中新增了一个事务同步器,它在 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,因为所有特定于 Web Flow 的配置现在都由 Spring 管理。请参阅生日示例应用程序以了解具体示例。

其他

改进了 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

与往常一样,我们非常重视您的反馈。预计 7 月底发布 Web Flow 1.0 RC1,其中包含 Portlet MVC 和 JSF 集成。

此致,

Keith Donald
Erwin Vervaet

获取 Spring Newsletter

通过 Spring Newsletter 保持联系

订阅

领先一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部