`
xuantian868
  • 浏览: 30515 次
  • 性别: Icon_minigender_1
  • 来自: 济南
最近访客 更多访客>>
社区版块
存档分类
最新评论

Jbpm学习一

    博客分类:
  • JBPM
阅读更多
import junit.framework.TestCase;

import org.jbpm.context.exe.ContextInstance;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;

public class ContextTest extends TestCase {

	public void testContext(){
		ProcessDefinition processDefinition=ProcessDefinition.parseXmlString(
				"<process-definition>"+
				" <start-state>"+
				"  <transition to='s'/>"+
				" </start-state>"+
				"<state name='s'>"+
				"  <transition to='end'/>"+
				"</state>"+
				"  <end-state name='end' />" +
				"</process-definition>"
		);

		//一个流程实例ProcessInstance就是某个流程定义的一次执行。一个流程定义ProcessDefinition可以有多个流程实例。
		//当流程实例ProcessInstance创建的时候,一个主路径就随之创建,这个主路径称为root token。此时主路径指向开始节点start-state
		ProcessInstance processInstance=new ProcessInstance(processDefinition);
		
		//一个运行标记Token代表一个Process Definitio中的一个执行。token是运行时的概念,用来维护指向图节点的指针。
		//token需要一个信号(signal)来让流程向前执行。当一个signal来到的时候。Token就会通过弧(transition)离开当前的节点走到下一个节点。
		Token token=processInstance.getRootToken();
		Token token2=new Token(processInstance);
		
		ContextInstance contextInstance=processInstance.getContextInstance();
		contextInstance.setVariable("amount",new Integer(500));
		contextInstance.setVariable("reason", "i met my deadline");
		
		token2.signal();
		//processInstance.signal();
		
		System.out.println(contextInstance.getVariable("amount"));
		System.out.println(contextInstance.getVariable("reason"));
		
		assertEquals(token2.getNode(), processDefinition.getNode("s"));
		token2.signal();
		//processInstance.signal();
		assertEquals(contextInstance.getVariable("reason"),"i met my deadline");
		System.out.println(token2.getNode().getName());
	}
}



例子是jbpm中自带的。
驱动流程向下运行的方式上面采用
prcessInstance.signal();或token.signal();
通过查看流程实例ProcessInstance的源码可以发现
他的构造函数中会将成员变量rootToken初始化为rootToken=new Token(this);
this表示当前的流程实例对象;在调用processInstance.signal()方法时该方法的实现是
  public void signal() {
    if ( hasEnded() ) {
      throw new IllegalStateException("couldn't signal token : token has ended");
    }
    rootToken.signal();
  }

最终还是调用Token的signal()方法。

获得root Token的方式
Token token=processInstance.getRootToken();
Token token2=new Token(processInstance);

分享到:
评论

相关推荐

    jbpm学习笔记.docx

    个人学习jbpm的文档,其中包括一些bug的修改。主要以《jbpm流程》一书为参考

    jbpm学习.doc

    jbpm学习资料 1. 新建一个项目 2. 在项目里面添加流程定义,如下图所示:

    jbpm 4.4 学习笔记

    最近通过使用jbpm,学习了一下,自己整理的一份jbpm的学习笔记,,希望对你们有帮助

    JBPM5.1入门学习

    3.4 学习使用JBPM控制台 11 3.5 学习使用drools-guvnor设计器 13 4 用TOMCAT+SSH+JOTM+MYSQL+JBPM移植DEMO 14 4.1 环境准备 14 4.1.1 安装JDK 14 4.1.2 安装Ant 14 4.1.3 安装Eclipse 15 4.1.4 安装Tomcat 15 4.1.5 ...

    jbpm4.4学习笔记

    1 工作流的概念 5 2 工作流的过程 7 3 Jbpm4.4介绍 7 3.1工作流引擎 8 3.2jpdl 8 3.3数据库 8 3.3.1资源库和运行时表结构 8 3.3.2历史数据库表 9 3.3.3身份认证表 9 3.4jbpm.cfg.xml 9 3.5 jbpm.hibernate.cfg.xml ...

    JBPM4学习经验总结第1季

    JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,它使用要遵循 Apache ...

    jbpm4.4学习

    jBPM 即java Business Process Management,是基于java的业务流程管理系统,它是一组J2SE组件,可以作为J2EE应用集群部署。jBPM是公开源代码项目。jBPM是市面上相当流行的一款开源工作流引擎,引擎底层基于Active ...

    一个Jbpm实例代码

    Jbpm实例代码,供学习参考。里面包含源代码!

    JBPM学习笔记—框架设计简介

    相关资料:《jBPM学习笔记(V3.2环境部署)》《jBPM学习笔记(流程设计与控制)》概述:jBPM(JBossBusinessProcessManagement业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易...

    jbpm 学习介绍,工作流的一种方式主要就是配置xml'

    我感觉还不错,拿来和大家分享一下,通过xml配置实现

    JBPM工作流学习资料

    jbpm学习资料,对你有帮助!近几年来,工作流管理技术迅速发展,其产品广泛应用于办公自动化OA(Office Automation)、电子政务、计算机集成制造系统CIMS(Computer Integrated Manufacturing System)等领域。工作流...

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

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

    jbpm4 学习笔记 心得

    jbpm是一款免费开源的工作流引擎,虽然现在还不完善,但是用起来还是不错的..... 我学习jbpm的一些笔记心得

    jsp jbpm 做的一个小实例

    这是我自己在这里几天学习jbpm做的一个小实例,完全用JSP+JBPM,接下来我会和spring结合在一起,希望在学习的你有帮助

    jbpm4.4学习分享

    里面有关于jbpm4.4相关的文档,api,操作手册已经一个简单的web工程实例, 刚接触的人很有帮助

    jBPM-jPDL学习笔记

    jBPM(JBoss Business Process Management业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。  jPDL是构建于jBPM框架上的流程语言之一。在jPDL...

    ssh与jbpm完整报销例子

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

    Jbpm5.4整合springMVC+spring3+hibernate4的请假流程

    在学习jbpm5的过程中,发现很难找到一个合适的,能跑的起来的,整合ssh的例子,之前在csdn上花费不少分下了好多个,能跑起来的好像就1个,不是jar包不匹配就是些其他的莫名奇妙的错误,对应刚刚接触jbpm的人来说,一...

    JBPM工作流开发指南

    三、学习JPDL 11 3.1 、简介 11 3.2 、流程版本(Version) 11 3.3 、流程定义 12 3.3.1 process-definition(流程定义) 12 3.3.2 node(自动节点) 13 3.3.3 start-state(开始状态) 13 3.3.4 end-state(结束节点) 14 ...

Global site tag (gtag.js) - Google Analytics