JBPM 工作流引擎 JBPM指南 例子:Hello World 流程定义(3.1)

声明:

本人EVeryVeryPoor,又是刚刚开始学习JBPM工作流引擎,对原文及概念等理解不当的地方,请网友不吝赐教,吾将及时修改和更正。

本文仅是本人自己学习JBPM,对JBPM指南的学习理解过程。

还望可以对入门者有所帮助。共享之。

需要中英文对照Word文档者请联系:gutengcom@hotmail.com或留下邮件地址。

 

3 JBPM 指南

本篇指南将为你展示JBPM的管理运行时刻API的用法和在jpdl中的基本流程的建立。

本篇指南的格式是一组例子的说明。这些例子主要集中在说明详细的主题和包含的广泛的注释。这些例子可以在JBPM的下载包的例子目录中找到。

最好的学习方法是通过给出的例子建立各种变化来创建一个项目和实验。

对于使用eclipse的用户:下载jbpm-3.0-[version].zip解压。然后 在eclipse"File" --> "Import..." --> "Existing Project into Workspace""Next",然后浏览到JBPM根目录,点"Finish".这样你就有了一个在你的工作间里JBPM.3的项目了。你可以在目录src/java.examples/中找到指南中的例子。你可以在"Run" --> "Run As..." --> "JUnit Test"中运行它。

jBPM包括一个创建XML文件的图形化的设计工具,可以在例子中使用。你可以在

http://sourceforge.net/project/showfiles.php?group_id=70542

http://sourceforge.net/project/showfiles.php?group_id=70542&package_id=116692

下载图形化设计工具和使用说明。

 

3.1例子:Hello World

一个流程的定义是一个定向的图形,由节点(nodes)和转换(transitions)(或叫跃迁)组成。The hello world流程有3个节点。要看它是如何组合拼凑的,我们将从不使用图形设计工具开始一个简单的流程。

Figure 3.1. The hello world process graph

public void testHelloWorldProcess() {

 

/*

这个方法说明了一个流程定义和一个流程定义的执行。这个流程

定义有3个节点:an unnamed start-state, a state 's' and an

end-state named 'end'.

下面的文本行解析了一个XML文本片段成为一个流程定义。一个流程定义

是一个标准的把一个流程描绘为一个java object (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>"

  );

 

/*

下面的文本行在构造实例之后创建了一个流程定义的执行。这个流程的执行有一个主要的执行路线(path)或叫(轨迹)根tokenthe root token)它被定位在启始状态(start-state)的位置上。

*/

 

  ProcessInstance processInstance =

      new ProcessInstance(processDefinition);

 

 /*

在构造实例之后,这个流程执行有了主要的执行路线(path)或叫(轨迹)根tokenthe root token

*/

  Token token = processInstance.getRootToken();

 

 

/*

也是在构造实例之后,它被定位在启始状态(start-state)的位置上。

*/

  assertSame(processDefinition.getStartState(), token.getNode());

 

 

/*

让我们启动流程执行,离开启始状态转换到缺省的transition上。

*/

  token.signal();

 

/*

Signal方法将会阻止流程执行,直到进入一个等待状态a wait state

这个流程执行将会进入第一个等待状态,state ‘s’,因此这个主要执行路线(path)将被定位到 state ‘s’上。

*/

  assertSame(processDefinition.getNode("s"), token.getNode());

 

 

/*

让我们发送另一个信号。这将会重新启动执行,通过离开状态‘s’(state 's'),转换到它缺省的transition上。

*/

  token.signal();

 

/*

现在这个signal方法被送回,以为流程实例已经到达了结束状态end-state

*/

 

  assertSame(processDefinition.getNode("end"), token.getNode());

}

 

待续….

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值