现在的位置: 首页 > 综合 > 正文

seam pageflow 页面流demo

2013年10月29日 ⁄ 综合 ⁄ 共 4343字 ⁄ 字号 评论关闭

 

seam使JSFEJB3整合的天衣无缝,使得页面和后台代码实现了组件化,并且实现了针对客户一次操作会话管理。使用seam开发减少了大部分xml文件的配置。大量的注解封装了强大的功能,至少减少了30%的代码量。强大的功能,仅需少量的代码实现。

本文描述页面流程的开发过程,演示一个页面流的长会话功能。使用三个页面,输入表单信息,在最后的页面统一将三个页面所添加的内容统一保存到数据表内。

具体细节如下:

1 定义一个实体有7个属性,分别为主键、页面1标题、页面1内容、页面2标题、页面2内容、页面3标题、页面3内容。

2 基于eclipsejbpm可视化插件,编写jpdl流程定义语言。

3 定义有状态的session bean。用于实现业务逻辑,这里主要用于开始页面流程、页面跳转和数据持久化。

4 定义三个xhtml页面,用于表单录入与提交。

5 War目录下定义components.xml文件,加载流程定义描述,这里虽然使用jbpm但页面流不会持久化到数据库当中,页面流只负责页面级的页面流转。

6 配置page.xml 实现页面导航。

 

具体代码如下:

1 实体WorkFlowDoc

/*******************************************************************************

 * 文件名:WorkFlowDoc.java<br>

 * 版本: <br>

 * 描述:  <br>

 * 版权所有: <br>

 * //////////////////////////////////////////////////////// <br>

 * 创建者: 沙振中 <br>

 * 创建日期: May 12, 2009 <br>

 * 修改者:  <br>

 * 修改日期:  <br>

 * 修改说明:  <br>

 ******************************************************************************/

package org.shaneseam.entitybean;

 

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.Id;

 

import org.jboss.seam.annotations.Name;

 

@Entity

@Name("workFlowDoc")

public class WorkFlowDoc {

        

         Long workFlowId;

        

         String workOneTitle;

         String workOneContext;

        

         String workTwoTitle;

         String workTwoContext;

        

         String workThreeTitle;

         String workThreeContext;

        

         public WorkFlowDoc()

         {}

        

         /**

          * @return the workFlowId

          */

         @Id @GeneratedValue

         public Long getWorkFlowId() {

                   return workFlowId;

         }

         /**

          * @param workFlowId the workFlowId to set

          */

         public void setWorkFlowId(Long workFlowId) {

                   this.workFlowId = workFlowId;

         }

         /**

          * @return the workOneTitle

          */

         public String getWorkOneTitle() {

                   return workOneTitle;

         }

         /**

          * @param workOneTitle the workOneTitle to set

          */

         public void setWorkOneTitle(String workOneTitle) {

                   this.workOneTitle = workOneTitle;

         }

         /**

          * @return the workTwoTitle

          */

         public String getWorkTwoTitle() {

                   return workTwoTitle;

         }

         /**

          * @param workTwoTitle the workTwoTitle to set

          */

         public void setWorkTwoTitle(String workTwoTitle) {

                   this.workTwoTitle = workTwoTitle;

         }

         /**

          * @return the workTwoContext

          */

         public String getWorkTwoContext() {

                   return workTwoContext;

         }

         /**

          * @param workTwoContext the workTwoContext to set

          */

         public void setWorkTwoContext(String workTwoContext) {

                   this.workTwoContext = workTwoContext;

         }

         /**

          * @return the workThreeTitle

          */

         public String getWorkThreeTitle() {

                   return workThreeTitle;

         }

         /**

          * @param workThreeTitle the workThreeTitle to set

          */

         public void setWorkThreeTitle(String workThreeTitle) {

                   this.workThreeTitle = workThreeTitle;

         }

         /**

          * @return the workThreeContext

          */

         public String getWorkThreeContext() {

                   return workThreeContext;

         }

         /**

          * @param workThreeContext the workThreeContext to set

          */

         public void setWorkThreeContext(String workThreeContext) {

                   this.workThreeContext = workThreeContext;

         }

 

         /**

          * @return the workOneContext

          */

         public String getWorkOneContext() {

                   return workOneContext;

         }

 

         /**

          * @param workOneContext the workOneContext to set

          */

         public void setWorkOneContext(String workOneContext) {

                   this.workOneContext = workOneContext;

         }

}

 

2 PageFlowSwitch.jpdl.xml页面流程定义文件

<?xml version="1.0"?>

 

<pageflow-definition

    xmlns="http://jboss.com/products/seam/pageflow"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation=

        "http://jboss.com/products/seam/pageflow http://jboss.com/products/seam/pageflow-2.1.xsd"

    name="pageflowswitch">

    <start-state name="start">

        <transition to="page1"/>

    </start-state>

   

    <page name="page1" view-id="/pageflow/page1.xhtml">

        <redirect/>

        <transition name="next" to="toDecision"/>

    </page>

 

    <decision name="toDecision" expression="#{pageFlowAction.validInfo}"> 

        <transition name="true" to="page2"/>

        <transition name="false" to="page1"-->

作者:

抱歉!评论已关闭.