Seam 1.0 beta 2已发布
http://sourceforge.net/project/showfiles.php?group_id=22866&package_id=163777
更改和新功能太多,无法在此全部列出,但我会简要介绍三个最有趣的事情。
第一个是关于 工作空间管理
的想法。您可以通过尝试Seam发行版中包含的Seam Issue Tracker演示应用程序来看到这一功能的效果。工作空间管理就像Web应用程序的Windows任务栏:用户可以在单个浏览器窗口中查看活动工作空间(Seam会话)的列表,在它们之间切换和管理它们。工作空间列表可以表示为下拉菜单或可点击的列表。如果您使用Seam强大的新嵌套会话模型,Seam甚至可以自动管理有意义的面包屑路径。
您不需要编写任何Java代码就可以在Seam中使用工作空间管理功能,只需在您的JSP或Facelets页面中包含一些标准JSF片段即可。
有关此信息,请参阅Seam文档
http://docs.jboss.com/seam/reference/en/html/conversations.html#d0e2374
第二个新功能是与jBPM的紧密集成。在Seam中,jBPM可以扮演两个截然不同的角色。
第一个角色是传统的业务流程管理(工作流)。在这种情况下,jBPM和Seam提供任务列表管理、任务分配、业务流程执行和业务流程状态管理,而不需要编写任何Java代码。您可以从您的jPDL文件中以与从JSF页面调用Seam组件相同的方式调用Seam组件:通过编写JSF表达式。
例如,以下简单的Seam/jPDL工作流定义可能用于描述待办事项列表。
<process-definition name="todo"> <start-state name="start"> <transition to="todo"/> </start-state> <task-node name="todo"> <task name="todo" description="#{todoList.description}"> <assignment actor-id="#{actor.id}"/> </task> <transition to="done"> <action expression="#{todoList.sendEmail}"/> </transition> </task-node> <end-state name="done"/> </process-definition>
查看Seam DVD Store或待办事项列表示例,以了解这些功能如何结合使用,或参阅Seam文档
http://docs.jboss.com/seam/reference/zh/html/jbpm.html#d0e2696 jBPM 在 Seam 中的第二次应用是页面流程定义。Seam jPDL 页面流程定义了特定对话的导航。就像业务流程定义一样,我们使用 JSF EL 来定义页面流程与 Seam 组件之间的交互。这让我们能够将所有关于用户交互流程的信息,以及不同组件和页面如何组合在一起以实现用户交互的信息集中在一个地方。
以下是一个猜数字游戏的示例页面流程
<pageflow-definition name="numberGuess"> <start-state name="start"> <transition to="displayGuess"/> </start-state> <page name="displayGuess" view-id="/numberGuess.jsp" redirect="true"> <transition name="guess" to="evaluateGuess"> <action expression="#{numberGuess.guess}" /> </transition> </page> <decision name="evaluateGuess" expression="#{numberGuess.correctGuess}"> <transition name="true" to="win"/> <transition name="false" to="evaluateRemainingGuesses"/> </decision> <decision name="evaluateRemainingGuesses" expression="#{numberGuess.lastGuess}"> <transition name="true" to="lose"/> <transition name="false" to="displayGuess"/> </decision> <page name="win" view-id="/win.jsp" redirect="true"> <end-conversation /> </page> <page name="lose" view-id="/lose.jsp" redirect="true"> <end-conversation /> </page> </pageflow-definition>
注意,了解页面和 Seam 组件如何组合起来解决业务问题是多么简单。
有关更多信息,请参阅 Seam DVD Store 或 Number Guess 示例,或 Seam 文档
http://docs.jboss.com/seam/reference/zh/html/jbpm.html#d0e2530
最新发布的 Hibernate Tools 提供的应用逆向工程功能是最后一个有趣的新特性。只需几分钟就能创建一个功能齐全的应用程序,具有 CRUD、搜索界面和完整的关联导航。这是开始使用 Seam 的绝佳方式。
更多信息(包括截图)请参阅此处
http://docs.jboss.com/seam/reference/zh/html/tools.html
在过去几个月里,Seam 发展成了一个充满活力的社区,因此我比 Hibernate 早期时期更享受这个项目。感谢所有参与其中的人!