package org.jbpm.tutorial.helloworld;
import junit.framework.TestCase;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
public class HelloWorldTest extends TestCase {
public void testHelloWorldProcess() {
/*
这个段测试方法演示了一个流程的在代码中以字符串形式定义和这个流程定义的具体执行。
这个流程定义包含三个节点:一个未命名的开始状态(start-state),
一个名字为's'的状态(state)和一个名字为'end'的结束状态(end-state)。
下一行的功能是把一段xml文本解析为一个ProcessDefinition,
一个ProcessDefinition是一个java对象的形式对流程的正式的描述。
*/
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>"
);
/*
下边的一行根据流程定义构造了的一个具体的执行实例。 构造以后,执行的流程就有了一个被定位在开始
状态(start-state)上的主要的执行路径
*/
ProcessInstance processInstance =
new ProcessInstance(processDefinition);
/*
构造以后,执行的流程就有了一个主要的执行路径(root token)
*/
Token token = processInstance.getRootToken();
/*
当然,构造以后,流程定义的主要的执行路径被定位在开始状态(start-state)
*/
assertSame(processDefinition.getStartState(), token.getNode());
/*
开始流程执行,通过默认的转换(transition)离开开始状态(start-state)
*/
token.signal();
/*
直到运行的流程进入一个等待状态,signal方法将一直被阻塞,运行的流程将要进入第一个等待状态:状
态‘s’.因此现在主要的执行路径,定位到了状态‘s’上。
*/
assertSame(processDefinition.getNode("s"), token.getNode());
/*
执行signal,流程将继续执行,将通过默认的转换(transition)离开状态‘s’
*/
token.signal();
/*
流程实例已经到达了结束状态。
*/
assertSame(processDefinition.getNode("end"), token.getNode());
}
}
分享到:
相关推荐
这可能是解决一个特定问题的完整程序,如计算两个数的和,或者模拟简单的游戏。初学者可以通过阅读和理解这些代码,了解如何组织代码结构、定义类和方法,以及如何调用它们来达到预期的效果。 在源代码中,你会看到...
在`GeneticAlgorithm.cs`中,首先会定义一个个体(Chromosome)类,它通常包含一组解决方案的编码(基因),比如二进制字符串或整数数组。每个个体都有一个适应度函数(Fitness Function),用于评估其解决方案的...
在这个"一个简单C语言实例"中,我们将探讨C语言的基础知识,并通过分析提供的文件来理解C程序的构建过程。 首先,让我们来看一下`Measure.cpp`。在C++中,`.cpp`文件通常用于存放实现部分,也就是函数的定义。`...
在测试程序中,可能包含一个或多个示例流程定义,用于演示如何创建和配置流程。 2. **流程实例**:流程定义是静态的,而流程实例则是根据需要动态创建的。每个实例都代表了流程的一个具体运行。测试程序可能包含...
在请假流程实例中,Java可能被用来创建一个服务端应用程序,处理请假请求、审批流程以及相关的数据存储。 1. **请假申请**:在代码中,可能会有一个`LeaveRequest`类,用于表示请假申请。此类通常包含如申请人ID、...
- 你的小程序可能是为了演示基本的请求响应流程,比如用户提交一个表单,Struts2接收并处理这个请求,然后返回一个简单的响应,如"Hello, Struts2!"。 通过实践这个小程序,你可以逐步了解Struts2的工作原理,以及...
在C#编程语言的世界里,这30个小程序实例提供了丰富的学习材料,涵盖了从基础到进阶的各种概念。对于初学者来说,它们是理解和掌握C#语法、编程逻辑以及常见问题解决方案的理想起点。以下是这些实例可能包含的一些...
通过上述知识点,我们可以看出,一个简单的Java图书管理程序涉及到了Java编程的多个核心领域,包括UI设计、数据库操作、对象建模以及错误处理。这样的项目对于学习和掌握Java编程和数据库管理是一个很好的实践机会。
总之,“OpenGL简单程序实例”涵盖的基本概念包括:OpenGL上下文创建、坐标系统、基本图元(直线、多边形)、颜色设置、几何变换、深度测试以及基本的渲染流程。随着学习的深入,你将能够利用OpenGL实现更复杂的3D...
总之,"一个简单的iOS实例"可能涵盖了iOS应用开发的基础概念,包括Xcode项目结构、编程语言、界面设计、MVC模式等,是一个很好的学习和实践起点。通过分析和操作`testproj.xcodeproj`,你不仅可以了解iOS开发的基本...
例如,一个小程序可能会要求创建一个简单的计算器,这涉及到基本的算术运算和用户输入处理;另一个可能涉及数组操作,比如排序或搜索元素。 详细答案部分是学习过程中非常宝贵的资源,它会解释如何解决特定问题,...
在进行C++实例测试时,可以针对以上知识点设计各种练习题,如编写简单的计算器程序、实现链表和树结构、运用STL容器和算法解决问题,或者实现面向对象的设计模式等。通过实际编码和调试,加深对C++语言特性的理解和...
下面,我们将对这个实例源程序进行详细的解读和分析。 首先,我们需要解压"TM(实例源程序).rar",从中提取出TM的源代码文件。源代码文件通常包含`.java`、`.cpp`、`.py`或其他编程语言的文件,这些文件是我们理解...
ASP.NET是一个用于构建Web应用程序的框架,这里可能被用来开发与流程引擎交互的测试网站。用户可以通过这个网站来启动流程、查看流程状态、分配任务等,实现业务流程的可视化管理和监控。 压缩包中的"WorkFlow"文件...
在本入门程序中,我们将主要关注如何使用Flowable构建一个简单的命令行程序。 首先,解压flowable-demo.rar后,你将看到项目的基本结构,通常包括源代码、配置文件和依赖库。在Java项目中,源代码可能位于src/main/...
这个“c#窗体应用程序实例”压缩包很显然是一个面向C#初学者的教学资源,包含了多个实际操作的例子,帮助学习者更好地理解和掌握C#窗体开发技术。 首先,C#窗体应用程序的基础在于.NET Framework或.NET Core,它是...
单片机C语言实例-综合测试程序.zip是一个包含与单片机编程相关的资源包,主要使用C语言编写。单片机是一种集成了微处理器、存储器和外围接口的微型计算机,广泛应用于各种嵌入式系统中。C语言因其简洁、高效和可移植...
单片机C语言实例综合测试程序是一个集合了多种单片机编程应用场景的实践项目,旨在帮助学习者加深对单片机C语言编程的理解并提升实际操作能力。在电子工程、自动化控制等领域,单片机是核心控制器,而C语言则是其...
在Java编程语言中,开发一个计算器程序是一项基础但重要的任务,它可以帮助初学者理解控制流程、数据类型和函数等核心概念。"Java程序计算器很简单的"这个项目包含三个不同的程序,可能分别代表了计算器的不同阶段或...