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(Java Business Process Management)是一款开源的工作流管理系统,它为业务流程自动化提供了一套全面的解决方案。jbpm不仅支持工作流的建模、执行,还提供了监控和管理功能,使得开发者可以方便地构建和部署...
在本篇jbpm学习笔记中,我们将深入探讨如何安装jbpm插件,配置运行环境,发布流程定义以及查看流程定义。 首先,下载jbpm的最新版本可以从官方指定的源获取,例如在SourceForge上...
工作流引擎jbpm学习笔记 jbpm是一个专业的工作流引擎,用于定义、管理和执行业务流程。它可以帮助我们简化工作流程的开发和维护,提高工作效率和可扩展性。 一、什么是公文流转? 公文流转是指公文在定义流转中的...
通过JBPM学习杂记,我们可以了解如何创建和配置这些元素,以及如何将它们连接起来形成一个完整的业务流程。 接着,我们需要了解jbpm的数据模型,包括实体类和持久化。jbpm的核心实体如ProcessInstance、Task、Job等...
【JBPM学习视频11~14】是一系列关于企业级业务流程管理(Business Process Management,简称BPM)系统的教程,特别聚焦在JBoss提供的开源工具JBPM4.4版本。这一系列视频教程旨在帮助学习者深入理解并掌握JBPM框架,...
jbpm3.1.4是其历史版本之一,虽然现在有更高级的版本,但对于学习工作流基础概念和原理,这个版本仍然具有很高的价值。 首先,我们要理解jbpm的核心概念。jbpm提供了流程定义的语言(BPMN,Business Process Model ...
jbpm学习笔记主要涵盖了jbpm(Java Business Process Management)的多个方面,包括Signavio的使用和配置、jBPM数据库的安装、Graphical Process Designer(GPD)的安装以及jBPM在Eclipse环境中的配置。以下是这些...
### JBPM5入门学习知识点详解 #### 一、JBPM5简介 **1.1 什么是JBPM** JBPM(Java Business Process Management)是一个开源的业务流程管理框架,旨在为开发者提供一个简单、灵活且可扩展的平台来设计、执行和...
1. **流程建模**:JBPM3提供了一个基于Eclipse的图形化建模工具,用户可以通过拖拽节点来创建流程图。 2. **流程部署**:部署后的流程模型会转换为可执行的JAR文件,可以在JBPM服务器上运行。 3. **流程实例管理**:...
### jBPM学习资料知识点详解 #### 一、jBPM概述 jBPM,即Java Business Process Management,是一款基于J2EE的轻量级工作流管理系统,专为简化业务流程设计与执行而生。该项目自2004年加入JBoss家族以来,成为其...
jbpm4.4学习教程是一套专为初学者设计的教育资源,旨在帮助用户掌握jbpm这一业务流程管理(Business Process Management)框架的第4.4版本。jbpm是一款开源的Java平台工具,它允许开发者设计、执行和管理业务流程,...
在开始jBPM-jPDL的学习之前,首先要搭建一个合适的运行环境。系统平台通常要求Java运行环境(JRE或JDK),因为jBPM是基于Java的。安装包通常包括jBPM的核心库、示例项目以及相关的开发工具。对于部署,可以将jBPM...
【JBPM工作流全套学习资料】是一份详尽的学习资源,涵盖了JBPM工作流系统的基础到高级知识。JBPM(Java Business Process Management)是开源的企业级工作流管理系统,它允许开发者设计、部署和执行业务流程。这个...
【jbpm学习资料汇总】 jbpm,全称是Java Business Process Management,是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。它提供了一种灵活的方式,使得开发人员和业务分析师能够协同工作,创建、...
【jBPM4学习总结】 jBPM,全称为Java Business Process Management,是一个开源的、灵活且可扩展的业务流程管理框架,涵盖了业务流程管理、工作流和服务协作等多个领域。自2004年10月加入JBoss组织后,jBPM逐渐成为...
总的来说,这个压缩包提供了一个系统化的jbpm学习路径:从基本概念的理解,到与其他工作流引擎的对比,再到实际开发的入门指导,最后深入到流程定义的语言规范。无论是想要了解jbpm,还是准备在项目中实施,这些资料...
【jbpm学习文档】是专为初学者设计的教程资源,旨在帮助新手理解和掌握jbpm这一流程管理系统。jbpm是一个开源的、可扩展且灵活的流程引擎,可以在独立服务器或任何Java应用程序中运行。它支持多种流程语言和执行模式...
jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. **jbpm4表结构和表字段说明**: jbpm4.3表结构和表字段说明文档通常会详细...
**JBPM4学习文档CHM**是一份专为学习和理解JBPM4设计的工作流引擎技术文档,适合那些对工作流框架感兴趣的Java开发者,特别是希望将JBPM与Spring框架集成的人员。JBPM是一个开源的工作流程管理系统,它提供了一整套...
本文将深入解析jbpm4.4的相关知识点,帮助那些寻找优质学习资源的朋友更好地理解和应用这一技术。 一、jbpm概述 jbpm是一个开源的BPM(Business Process Management)框架,它允许开发者设计、执行、监控和优化业务...