开始学习jbpm | #jbpm

  因为工作的关系,需要使用jbpm,可自己以前根本就没有接触过,算是从零开始吧。以后会记下的学习中的点滴,我使用的教程是《jBPM jPDL 用户开发手册 3.2.3 》的中译版,说实话,有的地方译的的确不怎么样,但总比自己慢慢看英文要快,现在讲的是效率,而且作者算是个有心的人。

   下载:(jbpm sourceforge 文件列表)

   jbpm-jpdl-suite-3.2.3.zip
   没有什么特殊原因,教程中用的就是这个版本,配套嘛。
   eclipse-jee-europa-winter-win32.zip
   要使用jbpm 3.2.3的设计器插件,需要eclipse 3.3版本的支持,只能暂时搁置eclipse 3.5了。

   安装:

  当然,使用jbpm的前提是你已经安装并配置了jdk,这个不必多谈吧,

  1. 解压jbpm-jpdl-stuite-3.2.3.zip
  2. 解压eclipse-jee-europa-winter-win32.zip
  3. 安装图形设计器插件。
  4.   将jbpm-jpdl-stuite-3.2.3.zip解压后的designer目录下的eclipse文件夹中的内容复制到eclipse 3.3的根目录下,重启eclipse,即可完成插件的安装。插件安装后,可以在新建对话框中找到jbpm的相关项。
  5. 配置jBPM插件运行环境。
  6.   在Eclipse的“window > Preferences”中展开“JBoss jBPM”分支,添加一个Runtime Location,路径为jbpm-jpdl-stuite-3.2.3解压后的路径。可以在Server Deployment分支中看到jbpm的布署配置 。


Hello,World:

  以教程中的Hello,World为例,流程如下。

开始学习jbpm | #jbpm

  在eclipse中新建一个“Process Project”项目,然后新建一个HelloWorld类。
package org.zym.helloworld;

import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;
import junit.framework.TestCase;

public class HelloWorld extends TestCase {
    public void testHelloWorldProcess() {
        // 这个方法显示一个流程定义和一个流程定义的执行。
        // 流程定义有三个节点:
        // 未命名的start-state, state's'和命名为'end'的end-state节点
        // 下一行解析xml文本到ProcessDefinition类
        // ProcessDefinition是作为java对象的流程的正规描述。
        String xml = "<process-definition>" + "<start-state>"
                + "<transition to='s'/>" + "</start-state>"
                + "<state name='s'>" + "<transition to='end'/>" + "</state>"
                + "<end-state name='end'/>" + "</process-definition>";
        ProcessDefinition processDefinition = ProcessDefinition
                .parseXmlString(xml);
        // 下一行建立一个流程定义的执行,在创建后,流程执行有一个执行的主路径
        // (=root token),定位在start-state节点位置。
        ProcessInstance processInstance = new ProcessInstance(processDefinition);
        // 创建流程执行的主路径(=root token)
        Token token = processInstance.getRootToken();
        // 在创建流程定义后,确定主路径牌开始状态节点处
        assertSame(processDefinition.getStartState(), token.getNode());
        // 让我们开始流程执行,通过它的缺省流程转换离开开始节点
        token.signal();
        // signal方法将阻止直到流程执行进入一个等待状态
        // 所以执行的主路径现在定位在状态's'
        assertSame(processDefinition.getNode("s"), token.getNode());
        // 让我们发送一个信号。假设执行离开状态's'通过缺省的流程转换
        token.signal();
        // 现在信息方法返回,因为这个流程实例已经到达结束节点(end-state)
        assertSame(processDefinition.getNode("end"), token.getNode());
    }
}

  使用JUnit运行这个hello,world即可。


你可能感兴趣的:(eclipse,xml,jboss,jbpm,JUnit)