第一个实现的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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2017年jBPM 正式发布了全新的 7版本。jBPM 是一个完全开源的业务流程管理(BPM)和案例管理解决方案。它支持流程和案例的完整生命周期,从编写工具到执行一直到监控和管理。 在核心引擎之上,提供了许多功能和工具来支持整个生命周期中的业务流程: 基于Eclipse和基于Web的编辑器,用于支持业务流程的图形化创建(拖放)。 基于JPA / JTA的可插拔持久性和事务。 基于WS-HumanTask的可插拔人工任务服务,用于包含需要由人类执行者执行的任务。 管理控制台支持流程实例管理,任务列表和任务表单管理以及报告。 部署流程的可选流程仓库(和其他相关知识)。 历史记录(用于查询/监视/分析)。 与Seam,Spring,OSGi等集成 BPM通过以业务用户和开发人员喜欢的方式提供流程管理功能和工具,从而实现业务分析师,开发人员和最终用户之间的桥梁。域特定的节点可以插入调色板,使业务用户更容易理解这些过程。 jBPM支持自适应和动态过程,需要灵活性来模拟复杂的现实生活中的情况,这些情况不能用刚性过程轻松描述。我们通过允许他们控制进程的哪些部分来执行,动态地偏离进程等,使控制回到终端用户。 jBPM也不仅仅是一个独立的流程引擎。复杂的业务逻辑可以被建模为业务流程与业务规则和复杂事件处理的组合。jBPM可以与Drools项目相结合,以支持将这些范例集成到一起的统一环境,您可以将业务逻辑作为过程,规则和事件的组合进行建模。 工作是MAVEN+eclipse jBPM jars也可以在中央maven仓库中使用 (也可以在JBoss maven仓库中)。 如果您使用Maven,只需添加一个依赖关系pom.xml: org.jbpm jbpm-test 7.3.0.Final 这与Gradle,Ivy和Buildr类似。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值