在Eclipse下创建一个新的process-project工程jbpm-test,目录结构如下图所示:
可以看出,通过前面指定jbpm的运行环境,工程自动为我们引入了第三方jar包和需要的配置文件,这个我喜欢,哈,不用自己去导入那么多的jar包,同时工程中还自动生成了一个名叫sample的流程定义文件及其相关的测试用例。使用eclipse流程设计器打开这个processdefinition.xml文件,就可以看到流程设计器的界面:
打开junit测试用例类SimpleProcessTest运行测试用例,可以得到如下结果:
具体的代码我们暂时不需要去理会。下面我们开始我们的HelloWorld之旅。
新建一个helloworld流程,New->Other->jBoss-jBpm->processdefinition,process-name为helloworld,finish之后我们来到流程设计界面,流程设计器分为上下两部分,上面是流程设计主框体,下面是一些属性的配置。虽然jboss为我们提供了流程设计器,但是它不能帮助我们完成全部的流程设计工作,实际开发中我们仍然需要手动去增加一些工作
对于任何流程,都必须有且只有一个start节点和一个end节点。如果缺少了其中一个,流程将不能正常运转。我们的helloworld流程还需要一个node节点和一个state节点
Node节点是JBPM中的自动类型节点,可以对它定义一个Action(实现ActionHandler接口),流程流转到node节点是将会触发Action的执行,然后流程就是处于等待状态,等待流程触发到下一个节点。注意,如果我们没有对Node节点设置action的话,流程将不会在这个节点停留,而是直接流往node节点的下一个节点。State节点与Node节点不同之处在于State节点没有自动流转的功能,必须通过代码触发流程流转。通过Transition指定流程流转的路径。
现在我们开始我们的helloworld流程的设计。Statr -> Node -> State -> End
对应的流程定义文件xml为:
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="helloworld">
<start-state name="start-state1">
<transition to="node1"></transition>
</start-state>
<state name="state1">
<transition to="end-state1"></transition>
</state>
<node name="node1">
<transition to="state1"></transition>
</node>
<end-state name="end-state1"></end-state>
</process-definition>
下面我们编写一个测试类来测试我们的流程
package com.royzhou.test;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
public class HelloWorld {
public static void main(String[] args) {
//获取流程定义
ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("helloworld/processDefinition.xml");
/**
* 生成流程实例
* 此时流程还没有开始流转
* 必须给令牌发送信令驱动流程流转
*/
ProcessInstance processInstance = new ProcessInstance(processDefinition);
//得到流程令牌
Token token = processInstance.getRootToken();
//打印流程当前所处节点
System.out.println("1:流程现在所处节点:" + token.getNode().getName());
//触发流程流转到下一个节点Node
token.signal();
/**
* 注意因为Node节点没有设置Action
* 所以流程会自动流转到下一个节点
* 也就是State1
*/
System.out.println("2:流程现在所处节点:" + token.getNode().getName());
//触发流程流转到下一个节点End
token.signal();
System.out.println("3:流程现在所处节点:" + token.getNode().getName());
System.out.println("流程状态是否结束:" + token.getProcessInstance().hasEnded());
}
}
运行上面的测试类,得到预期的输出结果:
1:流程现在所处节点:start-state1
2:流程现在所处节点:state1
3:流程现在所处节点:end-state1
流程状态是否结束:true
(测试例子中所使用的代码我们在后面的文章中会专门介绍)
通过helloworld的例子,相信大家已经对jbpm建立了一定的感觉了,不过应该还有很多不明白的东西,, 哈哈 …… 那就加油把 。。。
- 大小: 49.1 KB
- 大小: 17.7 KB
- 大小: 9.7 KB
- 大小: 8.1 KB
分享到:
相关推荐
Simple workflow hello World jBPM
jBPM 4.2 HelloWorld实例,jBPM 4.2 HelloWorld实例
jbpm4 helloworld,详细参考 《partner4java 讲述jBPM4》之第一步:jBPM4概念 & helloworld http://blog.csdn.net/partner4java
JBPM 例子 Hello World 例子 希望对大家有用
NULL 博文链接:https://exjava2.iteye.com/blog/1451974
JBPM4.4之HelloWorld示例
jbpm入门的第一个例子 使用最少的jar包
大名鼎鼎的Jbpm main HelloWorld版
JBPM4.4的一个helloworld 例子,Junit测试通过
NULL 博文链接:https://tiger-hu.iteye.com/blog/1573548
JBPM4.4之HelloWorld示例.doc jbpm4.4会签实例.doc jbpm4.4安装配置step by step.doc jbpm4自带数据库分析.doc jBPM_4教程PPT.pdf JBPM与SSH架构融合.doc 工作流模型分析_v1.1.pdf 揭秘jbpm流程引擎内核设计...
配置文档详述了ant环境变量的配置,jbpm4.4的安装过程,以及在myeclipse里安装jbpm插件,并且,最后展示了一个helloworld示例,如何向数据库里发布process。
jBPM4.1中文用户手册.pdf,【精华】jBPM详解_工作流管理系统.doc,【精华】深入浅出_jBPM_电子书.doc,压缩包jbpm-lh.rar(包括jbpm4helloworld和jbpm4web两个项目);有jbpm手册和文档详解以及实例项目参考,希望...
2.2 、Hello World 例子 6 三、学习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...
3个JBPM的经典电子教程: jBPM4.1中文用户手册.pdf jBPM详解_工作流管理系统.doc 深入浅出_jBPM_电子书.doc 以及一个JBPM的HelloWorld的例子
JBPM4.4 工作流 入门 例子 HelloWorld
family168-jBPM 4视频教程的代码.rar family168-jBPM 4视频教程的代码.rar 包含 请假流程 和 helloworld
1、JBPM 安装 2、JBPM 部署 3、JBPM 实例 4、HELLO WORLD
Alfresco从jBPM公司挖出了jBPM的创建人和若干核心人员,意欲创建一个基于Apache License的,并且遵循BPMN 2.0工作流标准的开源项目,看来Alfresco真是煞费苦心啊。不过Alfresco 4.0 中jBPM是仍然存在的,也就是说两...
近期网上有人介绍jBPM4与Spring整合的2种方式,但没有人贴出代码,闲着无聊写了个例子,源码见附件,在WEBLOGIC下运行正常,事务由spring控制http://ip:7001/Spring/helloWorld.do