seam workflow 工作流demo

seam与jbpm工作流实现了无缝整合,在基于seam来开发具有工作流的功能时,只需简单的将hibernate.cfg.xml和jbpm.cfg.xml的文件配置一下,在WAR的components.xml声明使用流程定义的jpdl流程定义文件就实现了系统的整合。工作流的核心工作分为二个部分,一为流程的定义,二为流程实例与业务数据实例绑定。之后以不同的角色实现流程的流转即可。本例的流程定义十分
摘要由CSDN通过智能技术生成

seamjbpm工作流实现了无缝整合,在基于seam来开发具有工作流的功能时,只需简单的将hibernate.cfg.xmljbpm.cfg.xml的文件配置一下,在WARcomponents.xml声明使用流程定义的jpdl流程定义文件就实现了系统的整合。工作流的核心工作分为二个部分,一为流程的定义,二为流程实例与业务数据实例绑定。之后以不同的角色实现流程的流转即可。

本例的流程定义十分简单,共五个节点,为开始节点,结束节点和三个不同角色的节点的流程。页面的导航在page.xml是配置,各节点的任务开始和结束使用注解式声明,页面的任务列表使用seam提供的单用户。集合表达式和JSF标签来完成用户交互操作。

1 流程定义文件,此流程定义会持久化到对应的数据表内。

2 对登陆类进行指定jbpm用户

3 用户逻辑实现类,用户页面跳转、流程开始、节点流转等。

4 定义业务实体

5 页面交互页面。

 

代码如下:

1 processdefinition.xml流程定义文件

<?xml version="1.0" encoding="UTF-8"?>

<process-definition name="文档测试流程">

   <start-state name="开始">

      <transition name="提交张三审批" to="张三审批"></transition>

   </start-state>

   <task-node name="张三审批">

      <task name="审批1">

         <assignment actor-id="#{actor.id}"/>

      </task>

      <transition name="提交李四审批" to="李四审批"></transition>

   </task-node>

   <task-node name="李四审批">

      <task name="审批2">

         <assignment actor-id="#{actor.id}"/>

      </task>

      <transition name="提交王五审批" to="王五审批"></transition>

   </task-node>

   <task-node name="王五审批">

      <task name="审批3">

         <assignment actor-id="#{actor.id}"/>

      </task>

      <transition name="结束流程" to="结束"></transition>

   </task-node>

   <end-state name="结束"></end-state>

</process-definition>

 

2 对登陆类进行指定jbpm用户

@In(create=true) Actor actor;

actor.setId(user.getUsername());

3 用户逻辑实现类,用户页面跳转、流程开始、节点流转等

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

 * 文件名:WorkFlowAction.java<br>

 * 版本: <br>

 * 描述:  <br>

 * 版权所有: <br>

 * <br>

 * 创建者: 沙振中 <br>

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

 * 修改者:  <br>

 * 修改日期:  <br>

 * 修改说明:  <br>

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

package org.shaneseam.action;

 

import javax.annotation.Resource;

import javax.ejb.Remove;

import javax.ejb.SessionContext;

import javax.ejb.Stateful;

import javax.persistence.EntityManager;

import javax.persistence.PersistenceContext;

 

import org.shaneseam.action.inte.WorkFlow;

import org.shaneseam.entitybean.WorkFlowDoc;

import org.jboss.seam.ScopeType;

import org.jboss.seam.annotations.In;

import org.jboss.seam.annotations.Name;

import org.jboss.seam.annotations.Out;

import org.jboss.seam.annotations.bpm.BeginTask;

import org.jboss.seam.annotations.bpm.CreateProcess;

import org.jboss.seam.annotations.bpm.EndTask;

 

@Stateful

@Name("workflowaction")

public class WorkFlowAction implements WorkFlow{

 

         @PersistenceContext

    EntityManager em;

        

    @Resource

    SessionContext ctx;

        

    @In(create=true)

    @Out

    WorkFlowDoc workFlowDoc;

        

    @In (required=false)  

    @Out(scope=ScopeType.BUSINESS_PROCESS, required=false)  

    Long workFlowId;   

   

    @CreateProcess(definition="文档测试流程") 

         public String createDoc() {

                          

            em.persist(workFlowDoc);

            workFlowId= workFlowDoc.getWorkFlowId();  

            return "success";

         }

        

         public String toPage(){

                  

                   return "topage";

         }

        

         @BeginTask

         @EndTask   

         public String taskOne() {

                   System.out.println("workFlowId========="+workFlowId); 

                   workFlowDoc=(WorkFlowDoc)em.createQuery("select o from WorkFlowDoc o where o.workFlowId= :workFlowId")

                   .setParameter("workFlowId", workFlowId).getSingleResult();

                   return "accept"; 

         }

 

 

         public String toListNode()

         {

                   return "tonodetwo";

         }

        

         @BeginTask

         @EndTask

         public String taskTwo() {

                  return "accept";

         }

        

         @BeginTask

         @EndTask

         public String taskThree() {

                   return "finish";

         }

         @Remove

    public void destroy() {}

 

}

 

4 定义业务实体

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

 * 文件名:WorkFlowDoc.java<br>

 * 版本: <br>

 * 描述:  <br>

 * 版权所有: <br>

 * <br>

 * 创建者: 沙振中 <br>

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

 *

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值