`
siashuayongsheng
  • 浏览: 121894 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

jbpm 小例子

    博客分类:
  • Java
阅读更多

package com.sample; 

 

import junit.framework.TestCase; 

 

import org.jbpm.JbpmConfiguration; 

import org.jbpm.JbpmContext; 

import org.jbpm.context.exe.ContextInstance; 

import org.jbpm.graph.def.ProcessDefinition; 

import org.jbpm.graph.exe.ProcessInstance; 

 

public class SimpleProcessTest extends TestCase { 

 

    private JbpmConfiguration config = JbpmConfiguration.getInstance(); 

    private JbpmContext ctx = config.createJbpmContext(); 

    // helloworld 对应于 jbpm_processdefinition 表的 name 字段值,也即 processdefinition.xml 的 name 

    // 这个值得取比较耗时,实际项目里最好和“数据库的 JDBC 连接”一样,让它共享,不要频繁打开关闭。 

    private ProcessDefinition processDefinition = ctx.getGraphSession().findLatestProcessDefinition("helloworld"); 

 

    public void testNewRequest() { 

       long id = newRequest(); 

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

       checkNewRequest(id); 

       confirmRequest(id); 

       checkconfirmRequest(id); 

       ctx.close();// 关闭 jbpm 容器 

    } 

 

    /** 

      * 创建一个请假单 

      * 

      * @return 

      */ 

    private long newRequest() { 

       // 创建一个新流程 

       ProcessInstance pi = processDefinition.createProcessInstance(); 

       // 取得流程的数据环境 

       ContextInstance ci = pi.getContextInstance(); 

       // 创建一张请假单 

       ci.setVariable("name", " 陈刚 www.chengang.com.cn" ); 

       ci.setVariable("day", 2); 

       assertEquals(null, ci.getVariable("note")); 

       // 请假申请结束,转到下一个流程结点 

       pi.signal(); 

       return pi.getId(); 

    } 

 

    /** 

      * 检查请假单的数据 

      * 

      * @param id 

      */ 

    private void checkNewRequest(long id) { 

       // 从数据库提取原流程 

       ProcessInstance pi = ctx.loadProcessInstance(id); 

       // 取得流程的数据环境 

       ContextInstance ci = pi.getContextInstance(); 

       // 创建一张请假单 

       assertEquals(" 陈刚 www.chengang.com.cn" , ci.getVariable("name")); 

       assertEquals(Integer.valueOf(2), ci.getVariable("day")); 

       assertEquals(" 我要请假 " , ci.getVariable("note")); 

 

       // 当前是结点为 confirm 

       assertEquals(pi.getRootToken().getNode().getName(), "confirm"); 

       // 流程还没结束 

       assertFalse(pi.hasEnded()); 

    } 

 

    /** 

      * 审批陈刚的请假申请 

      * 

      * @param id 

      */ 

    private void confirmRequest(long id) { 

       ProcessInstance pi = ctx.loadProcessInstance(id); 

       ContextInstance ci = pi.getContextInstance(); 

       // 不通过 

       ci.setVariable("note", " 不准请假,继续加班 " ); 

       // 审批结束,到下一个流程结点 

       pi.signal(); 

    } 

 

    private void checkConfirmRequest(long id) { 

       ProcessInstance pi = ctx.loadProcessInstance(id); 

       ContextInstance ci = pi.getContextInstance(); 

       // ConfirmAction 类在 signal 后执行,所以覆盖了经理的审批意见 

       assertEquals(" 准假 " , ci.getVariable("note")); 

 

       // 当前是结点为 end 

       assertEquals(pi.getRootToken().getNode().getName(), "end"); 

       // 流程结束了 

       assertTrue(pi.hasEnded()); 

    } 

 

} 



分享到:
评论

相关推荐

    我自己写的jbpm小例子

    这个"我自己写的jbpm小例子"旨在帮助用户快速理解jbpm的核心概念和基本操作,以轻松上手这个强大的工具。 首先,让我们深入理解jbpm的主要组件和功能: 1. **流程定义**:jbpm使用BPMN 2.0(Business Process ...

    JBPM4.4例子

    **JBPM4.4入门详解** JBPM,全称Java Business Process Management...通过实践这个简单的jsp+servlet例子,你将能够初步掌握如何在实际应用中使用JBPM。在学习过程中,不断探索和实践,逐步提升你的业务流程管理能力。

    JBPM例子

    【JBPM例子】是关于Java Business Process Management System (JBPM) 的一系列示例代码,用于展示如何在实际项目中使用这个工作流引擎。JBPM是一个开源的企业级平台,主要用于管理和执行业务流程。它提供了全面的...

    JBPM web(SSH+JBPM) 例子

    【JBPM web(SSH+JBPM)例子】是一个基于Java技术栈实现的工作流管理系统示例,其中SSH代表Spring、Struts和Hibernate这三个流行的Java企业级开发框架的组合,而JBPM则是Business Process Management(业务流程管理...

    jbpm5完整的例子

    【jbpm5完整的例子】是针对企业业务流程管理(Business Process Management, BPM)的一个实践教程,其中涵盖了jbpm5框架的多个核心功能和用法。jbPM是一个开源的工作流管理系统,它提供了强大的流程定义、执行和监控...

    jbpm的小例子

    这个“jbpm的小例子”是一个实际应用的案例,展示了如何利用jbpm构建请假审批流程,涵盖了流程定义、任务交互和审批流程的完整生命周期。对于学习和理解jbpm的工作原理和使用方法,这样的例子具有很高的参考价值。

    一个经典的jbpm例子,学jbpm必备的例子

    这是本人学习jbpm以来看过的写的最有条理的一个例子,基于现在网上jbpm的例子比较的少,所以上传上来和大家一起分享

    完整的jbpm借款例子

    这是一个完整的jbpm借款例子 调试环境tomcat6 +jbpm 3.2 + jdk5 tomcat6 lib里边要有 commons-collections.jar mysql-connector-java.jar jta.jar commons-digester.jar 然后创建数据名称 testjbpm 编码为gbk ...

    JBPM5.4例子程序

    3. **数据库支持**: 按照描述,这个例子程序使用了MYSQL数据库来存储流程实例、任务、变量等信息。JBPM支持多种数据库,包括MySQL,这使得它能在各种环境中灵活部署。 4. **任务服务**: JBPM提供了任务服务,使得...

    jbpm练习小例子

    这个“jbpm练习小例子”是针对jbpm 3.2版本的一系列教程,主要针对初学者,旨在帮助他们快速理解和掌握jbpm的基本概念和操作。 在这些压缩包中的文件名,我们可以推测出它们包含了多个不同主题的流程管理实践,如...

    jbpm演示demo例子

    jbpm演示demo例子

    jbpm3.2.3例子

    【jbpm3.2.3例子】是一个基于特定技术环境的流程管理实例,它涵盖了jbpm(Java Business Process Management)3.2.3版本的使用,该版本是jbpm流程引擎的一个早期迭代,用于实现业务流程自动化。在这个例子中,我们将...

    jbpm4.4请假例子,eclipse工程

    【jbpm4.4请假例子】是一个基于jbpm4.4流程引擎的示例项目,它展示了一个在Eclipse环境中开发的请假流程。jbPM(Java Business Process Management)是一个开源的工作流和业务流程管理框架,它允许开发者设计、执行...

    jbpm入门例子收藏

    jbpm入门例子收藏 jBPM(Java Business Process Management)是一个开源的工作流管理系统,由JBoss组织开发。它主要用于管理业务流程,支持流程定义、执行、监控和优化。jBPM提供了一整套工具,包括Eclipse插件,...

    jbpm请假例子完整源代码

    **jbpm请假例子完整源代码**是一套基于jbpm流程引擎的示例应用,它用于演示如何在实际项目中利用jbpm实现一个简单的请假流程。jbpm是一个开源的工作流管理系统,它提供了强大的业务流程建模、执行和管理能力。本示例...

    jbpm5 web整合例子

    【jbpm5 web整合例子】是一个关于如何将JBPM5工作流引擎与Web应用程序整合的实践项目,适合那些想要在Web环境中使用业务流程管理(BPM)功能的开发者。JBPM5是一个开源的工作流和业务规则管理系统,它提供了一整套...

    jbpm借款例子的JSP代码

    【jbpm借款例子的JSP代码】是一个基于Java技术栈的业务流程管理(Business Process Management,简称BPM)示例,主要使用了jbpm 3.2版本,它是一个开源的工作流管理系统,能够帮助开发者设计、执行和管理工作流。...

    ssh与jbpm完整报销例子

    本例子网上也有,只是有点问题,本人经过修改后想留给第一次学习jbpm的人,希望不让他们为一个问题而花费很长时间. 由于所有的jar包已上传,所以不在用QQ发jar包给各位下载的朋友, 请在以下页面下载本项目的jar包: ...

    jBPM4完整例子

    **jBPM4完整例子详解** jBPM4是一个企业级的工作流管理系统,它提供了强大的业务流程管理和工作流实现能力。这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常...

    ssh+jbpm流程例子jar包2

    这个"ssh+jbpm流程例子jar包2"是一个包含SSH和jbpm集成的示例项目,可能包括了以下关键知识点: 1. **SSH框架集成**:项目中会展示如何将Struts2、Spring和Hibernate整合在一起,实现从视图到模型再到数据访问的...

Global site tag (gtag.js) - Google Analytics