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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值