Spring Web Flow 项目团队刚刚完成了Web Flow 2 的第 7 次维护版本。这是我们迄今为止最好的版本,发布日期几乎与Web Flow 2.0.0 最终版本发布一周年纪念日相同。现在,随着 2.0.x 系列已经成熟和稳定,我们开始着手下一个主要版本的工作。在本篇文章中,我想回顾过去一年,并提供一些有关我们未来方向的信息。
Web Flow 2 采用情况
当 Web Flow 2 去年发布时,我们在发布后的头两个月看到了 50,000 次下载。从那时起,我们的论坛流量稳步增长,并且我们看到了在多个令人兴奋的行业中新采用的情况。你们中的许多人知道 Spring Web Flow 是 Orbitz 在线旅行平台的基础,该平台如今为ebookers.com和nwa.com等网站提供支持。如果您一直在关注 2009 年的 NBA 季后赛,您可能还会发现 Web Flow 也是nba.com的重要组成部分。
我们过去一年的工作
像所有 Spring 项目一样,Web Flow 依赖于反馈才能取得成功。与客户和 SpringSource 支持工程师的现场互动推动了我们过去一年在 2.0.x 上的大部分工作。社区在报告错误、贡献补丁、突出显示使用场景以及总体上讨论改进方法方面也表现出色。
我想快速概括一下自 2.0.0.RELEASE 以来的一些具体改进。
-
流 URL 映射的配置简化和约定
此项改进应用于 2.0.5,并由客户反馈以及Dan Allen 的 JSFOne 演示推动,将典型 webflow-config.xml 的大小减少了一半,降至约 20 行配置。如您所见,这是通过结合使用通配符搜索流定义以及根据流 ID 将流定义绑定到 URL 的约定来实现的。
-
支持显式视图状态模型绑定
此改进首先针对响应此安全公告的 SpringSource 客户提供,随后在 2.0.3 中发布,允许您限制视图状态允许的模型绑定集。这是通过此处所示的声明式样式实现的。
发布后重定向改进
Web Flow 最有用的功能之一是发布后重定向模式只需正常工作,这是良好的后退按钮支持和受控导航的关键先决条件之一。2.0.5、2.0.6 和 2.0.7 都对此支持进行了后续改进。最新的改进确保在所有情况下(包括存在绑定或验证错误时)一致地应用重定向行为。您可以在ViewState.java的 doEnter 和 doResume 方法中查看控制此模式执行的源代码。
支持流式操作
社区已经找到方法将文件流回参与流程的客户端。Web Flow 2.0.0 中忽略了对此的支持文档,并在 2.0.6 版本中添加了支持。
类型转换改进
从 2.0.2 到 2.0.6,对支持视图状态模型绑定的系统进行了大量改进。该系统提供了 Spring 的 DataBinder 的所有独特功能,例如支持转换泛型集合的元素,并且与 Java PropertyEditors 相比,它使用更简单的类型转换器 API。
除了这些核心改进之外,在过去一年中,我们还看到了一些有趣的 Web Flow 集成,例如Grails 1.1、ZK RIA 框架、Terracotta、IceFaces、SpringSource 的richweb 培训课程、IntelliJ、Skyway Software和第一本 Web Flow 2 书籍。
未来的发展方向
我们计划了很多未来的工作。我将在以后再详细介绍所有技术细节,但想总结一下这项工作的一些关键主题。首先,Web Flow 3 将是第一个需要 Java 5 的版本,因为它将以 Spring Framework 3 为基础。其次,您可以期待引入一个 @Flow 模型,它可以补充 Spring MVC 的无状态 @Controller 模型,并允许将有状态 Web 流程定义为 POJO。第三,您可以期待 Spring JavaScript 和 Spring Faces 这两个从 Web Flow 2 工作中发展出来的模块都被提升为顶级 Spring 项目。Spring JavaScript 将成为 Spring 官方的 Ajax 集成项目,而 Spring Faces 将成为 Spring 官方的 JavaServerFaces 集成项目。
我期待下周在 SpringOne 与你们中的许多人见面,讨论你们在应用该项目方面的经验以及我们的未来方向!