`
hxyt20
  • 浏览: 93309 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

第一个实现的jbpm的例子以及遇到的问题解决方案

阅读更多

第一个jbpm的例子实现步骤:

第一步:在eclipse中新建一个java project,项目名称为:jbpmExample_1。

 

第二步:导入Junit和jbpm的jar.

 

第三步:将jbpm下的config中的jbpm.cfg.xml拷贝到src目录下。

 

第四步:新建一个Junit Test Case 类名为:TestHelloWorld,代码如下:

package com.baoz.je.test;

import junit.framework.TestCase;

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

public class TestHelloWorld extends TestCase {

	protected void setUp() throws Exception {
		
	}
	
	public void testHelloWorldProcess(){
		ProcessDefinition processDefinition = new 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 processInstance = new ProcessInstance(processDefinition);
		Token token = processInstance.getRootToken();
		assertSame(processDefinition.getStartState(), token.getNode());
		System.out.println("processDefinition.getStartState()="+processDefinition.getStartState().getName());
		System.out.println("token.getNode()="+token.getNode().getName());
		token.signal();
		assertSame(processDefinition.getNode("s"), token.getNode());
		System.out.println("processDefinition.getNode('s')="+processDefinition.getNode("s").getName());
		System.out.println("token.getNode()="+token.getNode().getName());
		token.signal();
		assertSame(processDefinition.getNode("end"), token.getNode());
		System.out.println("processDefinition.getNode('end')="+processDefinition.getNode("end").getName());
		System.out.println("token.getNode()="+token.getNode().getName());
		
	}

	protected void tearDown() throws Exception {
		super.tearDown();
	}

}

 

第五步:运行如上的Test Case,如果没有报错,而且控制台打印出如下的内容,表示此示例运行成功:

processDefinition.getStartState()=null
token.getNode()=null
processDefinition.getNode('s')=s
token.getNode()=s
processDefinition.getNode('end')=end
token.getNode()=end

 

注意点:假如你的项目中报如下错误:

org.jbpm.JbpmException: couldn't parse jbpm configuration from resource 'jbpm.cfg.xml'
	at org.jbpm.JbpmConfiguration.getInstance(JbpmConfiguration.java:292)
	at org.jbpm.JbpmConfiguration.getInstance(JbpmConfiguration.java:257)
	at org.jbpm.JbpmConfiguration$Configs.getObjectFactory(JbpmConfiguration.java:425)
	at org.jbpm.JbpmConfiguration$Configs.getObject(JbpmConfiguration.java:437)
	at org.jbpm.JbpmConfiguration$Configs.getString(JbpmConfiguration.java:441)
	at org.jbpm.graph.def.ProcessDefinition.createNewProcessDefinition(ProcessDefinition.java:97)
	at org.jbpm.jpdl.xml.JpdlXmlReader.readProcessDefinition(JpdlXmlReader.java:138)
	at org.jbpm.graph.def.ProcessDefinition.parseXmlString(ProcessDefinition.java:150)
	at com.baoz.je.test.TestHelloWorld.testHelloWorldProcess(TestHelloWorld.java:16)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at junit.framework.TestCase.runTest(TestCase.java:154)
	at junit.framework.TestCase.runBare(TestCase.java:127)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:118)
	at junit.framework.TestSuite.runTest(TestSuite.java:208)
	at junit.framework.TestSuite.run(TestSuite.java:203)
	at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: org.jbpm.JbpmException: jbpm configuration resource 'jbpm.cfg.xml' is not available
	at org.jbpm.JbpmConfiguration.getInstance(JbpmConfiguration.java:286)
	... 26 more

 那么说明你没有将jbpm下的config中的jbpm.cfg.xml拷贝到src目录下,只有将jbpm下的config中的jbpm.cfg.xml拷贝到src目录下就能解决此问题,尽管jbpm.cfg.xml中没有内容,但是也必须拷贝进来。

 

0
1
分享到:
评论

相关推荐

    jbpm例子代码(入门)

    2. **创建第一个流程**:使用jbpm提供的kie-workbench,创建一个简单的请假流程,包括申请、审批和结束等步骤,每个步骤对应一个任务节点。 3. **部署流程**:将流程定义文件(.bpmn2)和对应的类文件打包成jar,...

    jbpm4.4 shh2 项目示例

    - jbpm4.4是jbpm的第4代版本,提供了一套完整的流程管理解决方案,包括流程设计、执行、监控和优化。 - 它支持BPMN2.0标准,使得业务流程可以通过图形化的方式进行建模,非技术人员也能理解和修改。 - jbpm4.4...

    提前试用spring 集成 jbpm4

    而jbpm4则是业务流程管理(BPM)的一个开源解决方案,它允许开发者设计、执行和监控业务流程。将jbpm4集成到Spring中,可以实现灵活的业务流程自动化,提高开发效率。 在"提前试用spring 集成 jbpm4"这个主题中,...

    jbpm深入浅出第7章实例代码

    "myWebJbpm"可能是示例代码中涉及的一个web应用项目,它可能包含了一个或多个jbpm工作流的实现,读者可以通过阅读和运行代码,进一步理解jbpm的工作原理和实践方法。 总之,"jbpm深入浅出第7章实例代码"是学习和...

    JBPM开发指南

    JBPM是一个全面的业务流程管理平台,它提供了从流程建模、部署到监控的一整套解决方案。JBPM支持BPMN(Business Process Modeling Notation)标准,使得流程图的创建更加直观易懂。它的核心组件包括流程引擎、工作流...

    jbpm帮助文档(中文带源码)

    总之,JBPM作为一个强大的工作流解决方案,提供了全面的功能和灵活的扩展性,使得企业能够有效地管理其业务流程,提高效率并降低成本。通过学习和实践这个中文带源码的文档,开发者可以快速掌握JBPM的使用,并将其...

    jbpm4.3 流程申请(mina通信)

    jbpm4.3是Java Business Process Management (BPM)系统的第四次重大版本更新,它提供了一套完整的业务流程管理解决方案,包括流程设计、执行、监控和优化等功能。在这个例子中,我们关注的是如何在jbpm4.3中实现基于...

    jbpm4整合流程例子 web流程设计器

    jbpm4是一款功能强大的开源工作流管理系统,它为业务流程管理(BPM)提供了全面的解决方案。jbpm4的核心特性包括流程定义、执行、监控以及集成能力。在这个例子中,我们将会探讨如何将jbpm4与Web流程设计器整合,...

    jbpm书

    它可能详细讲解了如何安装jbpm开发环境,包括Eclipse集成开发环境中的jbpm插件,以及如何配置和运行第一个示例流程。 《JBPM数据库表说明.doc》文档则会深入解析jbpm在数据库中的数据结构,这对于理解jbpm如何持久...

    JBPM工作流开发指南(中文)

    第二部分,第一个流程,通过一个简单的“Hello World”例子,引导开发者了解如何开始使用JBPM。这一章节涵盖了准备工作,如安装和配置JBPM环境,以及创建并运行一个基本的流程实例。这个基础的示例将帮助新手快速...

    JBPM_用户指南

    - 包括环境搭建、第一个流程的实现等内容。 - **2.3 社区** - 拥有一个活跃的社区,用户可以在其中交流心得、解决问题。 - **2.4 资源** - **许可证**: 明确了JBPM的开源许可类型,为开发者提供了法律保障。 -...

    jbpm 工作流开发指南

    二、第一个流程:Hello World 例子 在开始使用JBPM进行开发之前,通常会先创建一个简单的"Hello World"流程作为入门示例。这个例子通常包括创建流程定义,启动流程实例,以及完成任务等步骤。开发者会使用JPDL来编写...

    jBPM4.3用户指南

    - **迁移指南**: 提供了详细的步骤说明,帮助用户顺利从jBPM 3版本升级到4版本,包括可能遇到的问题及解决方法。 - **兼容性**: 介绍了新版本与旧版本之间的兼容性情况,以及如何处理不兼容的情况。 **1.7 报告问题...

    jbpm_流程_能让你熟练的掌握

    jbpm是一个基于Java的开源工作流引擎,旨在提供一个灵活的工作流解决方案。jbpm流程开发指南旨在帮助读者快速掌握jbpm流程开发技术,从而提高工作效率和质量。 第一个流程 在开始jbpm流程开发之前,需要进行一些...

    JBPM工作流

    ### JBPM工作流详解 JBPM是一个开源的工作流管理系统,主要使用Java开发,持久层采用Hibernate实现,...无论是简单的流程还是复杂的业务流程,JBPM都能提供相应的解决方案。希望本文能帮助大家更好地理解和使用JBPM。

    JBPM5 用户手册 (英文,PDF,有书签)

    jBPM(Java Business Process Management)是JBoss的一个开源项目,旨在为开发人员提供一个灵活且可扩展的工作流和业务流程管理解决方案。它支持多种流程定义语言,如BPMN2,同时也提供了强大的API来处理复杂的工作...

    Activiti6.0教程例子下载

    所谓工作流引擎是指workflow作为应用系统的一部分,并为之提供对各应用系统有决定作用的根据角色、分工和条件的不同决定信息传递路由、内容等级等核心解决方案。 例如开发一个系统最关键的部分不是系统的界面,也...

    Seam Framework 2.0 Reference中文版

    - **Seam 调试页面**:介绍了如何使用 Seam 的调试工具来诊断和解决开发过程中遇到的问题。 ##### 1.7 一个使用 Seam 和 jBPM 的完整范例:DVD 商店 该示例结合了 Seam 和 jBPM,构建了一个 DVD 商店应用程序。 - *...

    JPBM的学习文档,学习工作流的朋友可以看看

    JPBM(JBoss Business Process Management Suite)是Red Hat公司开发的一款开源工作流引擎,它提供了业务流程管理的全套解决方案,包括流程设计、执行、监控和优化。 在《JBPM工作流开发指南》中,首先会介绍工作流...

Global site tag (gtag.js) - Google Analytics