JBPM-HelloWorld

在Eclipse下创建一个新的process-project工程jbpm-test,目录结构如下图所示:
[img]http://royzhou1985.iteye.com/upload/attachment/126562/e8d730eb-f78b-373d-9fcb-0d077d324fed.jpg[/img]
可以看出,通过前面指定jbpm的运行环境,工程自动为我们引入了第三方jar包和需要的配置文件,这个我喜欢,哈,不用自己去导入那么多的jar包,同时工程中还自动生成了一个名叫sample的流程定义文件及其相关的测试用例。使用eclipse流程设计器打开这个processdefinition.xml文件,就可以看到流程设计器的界面:
[img]http://royzhou1985.iteye.com/upload/attachment/126564/b58c40c9-aa55-3fa2-a7a4-0e20f98b8d32.jpg[/img]
打开junit测试用例类SimpleProcessTest运行测试用例,可以得到如下结果:
[img]http://royzhou1985.iteye.com/upload/attachment/126566/016573e8-fdcf-39a7-b7ac-ae83897cf421.jpg[/img]

具体的代码我们暂时不需要去理会。下面我们开始我们的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
[img]http://royzhou1985.iteye.com/upload/attachment/126568/2e61dc47-ca29-3879-9952-8f04a688a0ed.jpg[/img]
对应的流程定义文件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建立了一定的感觉了,不过应该还有很多不明白的东西,, 哈哈 …… 那就加油把 。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值