ONJava.com -- JBoss Seam --> page 5

Pages: 1, 2, 3, 4, 5

 

在 DVD 商店的以下示例中,我们将添加对定单进行验证的业务流程。 该业务流程自动接受所有 100 美元以下的定单,并将大金额的定单交给管理员处理。 验证通过时,还需要一个添加发货数量的步骤。 为完成这个流程,编写如下 JPDL:

<process-definition name="OrderManagement">    <start-state>        <transition to="decide"/>    </start-state>        <decision name="decide" expression="#{orderApproval.howLargeIsOrder}">        <transition name="large order"                        to="approval"/>        <transition name="small order"                        to="process"/>    </decision>    <task-node name="approval">        <task name="approve">           <assignment              pooled-actors="reviewers" />        </task>        <transition name="approve"                        to="process"/>        <transition name="reject"                         to="complete"/>    </task-node>        <task-node name="process">        <task name="ship">           <assignment pooled-actors=           "#{shipperAssignment.pooledActors}"/>        </task>        <transition name="shipped"                        to="complete">            <action expression=                   "#{afterShipping.log}"/>        </transition>    </task-node>        <end-state name="complete"/></process-definition>

在这个简单但是强大的示例中,结合使用 jBPM 和 Seam 可以使你在 jPDL 中直接输入 JSF 语句。 #{orderApproval.howLargeIsOrder}"orderApproval" Seam 组件上调用 howLargeIsOrder 方法,而这正是它在 JSF 页面中工作的方式。 以下是该 Seam 组件的源代码:

package com.jboss.dvd.seam;import org.jboss.seam.annotations.In;import org.jboss.seam.annotations.Name;@Name("orderApproval")public class OrderApprovalDecision {   @In float amount;   public String getHowLargeIsOrder()   {      return amount > 100 ?         "large order" : "small order";   }}

没有特别之处,我们只是注入了有态上下文中的金额(amount),和一个字符串,就可以返回采取何种操作。 还注意到在页面流程定义中,从 "process""complete" 的过渡激活了一个对 Seam 组件"afterShipping""log" 方法的调用。

移植性和简单性

Seam 完成依赖于 JDK 5.0 标注来声明组件以及它们如何根据特定上下文进行关联--没有 XML 的深奥。 Seam 可以用于任何 JSF 形式,并且可以运行于任何 JEE 5.0 容器。 对于较小的容器,Seam 甚至可以在 Tomcat 或者测试单元中使用。 对于尚未准备好使用 EJB 3.0 的开发者,Seam 还支持 POJO 和 Hibernate 持久性类作为组件。

添加少量的配置文件,此 DVD 商店示例即可在 Tomcat 中工作,在 Seam 发行版本中就有这样一个例子。

资源

Thomas Heute 是 JBoss Seam 项目的带头人


返回 ONJava.com



你可能感兴趣的:(tomcat,jboss,jbpm,JSF,seam)