风人园

弱水三千,只取一瓢,便能解渴;佛法无边,奉行一法,便能得益。
随笔 - 99, 文章 - 181, 评论 - 56, 引用 - 0
数据加载中……

jBPM之hello world

参考
http://www.blogjava.net/chengang/archive/2006/07/13/57986.html

下面是根据官方开发向导及自己的经验写的

开发向导上提供的helloworld例子,这个流程是单向的,没有任何的分支,且没有自定义actionHandler,使用的是默认的handler
public void testHelloWorldProcess() {
  // This method shows a process definition and one execution// of the process definition.  The process definition has // 3 nodes: an unnamed start-state, a state 's' and an // end-state named 'end'.// The next line parses a piece of xml text into a// ProcessDefinition.  A ProcessDefinition is the formal // description of a process represented as a java object.
  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>"
  );
  
  // The next line creates one execution of the process definition.// After construction, the process execution has one main path// of execution (=the root token) that is positioned in the// start-state.
  ProcessInstance processInstance = 
      new ProcessInstance(processDefinition);
  
  // After construction, the process execution has one main path// of execution (=the root token).
  Token token = processInstance.getRootToken();
  
  // Also after construction, the main path of execution is positioned// in the start-state of the process definition.
  assertSame(processDefinition.getStartState(), token.getNode());
  
  // Let's start the process execution, leaving the start-state // over its default transition.
  token.signal();
  // The signal method will block until the process execution // enters a wait state.// The process execution will have entered the first wait state// in state 's'. So the main path of execution is now // positioned in state 's'
  assertSame(processDefinition.getNode("s"), token.getNode());

  // Let's send another signal.  This will resume execution by // leaving the state 's' over its default transition.
  token.signal();
  // Now the signal method returned because the process instance // has arrived in the end-state.
  
  assertSame(processDefinition.getNode("end"), token.getNode());
}

更详细的例子可以看参考,里面有很详细的操作说明。




下面是根据参考例子测试时出现的一些问题及说明。
一、关于数据库,首先要修改数据库连接,然后创建数据库,里面的表格jBPM提供相应的API去创建。
public void testDeployProcessDefinition() throws FileNotFoundException 
        
// 从 jbpm.cfg.xml 取得 jbpm 的配置 
        JbpmConfiguration config = JbpmConfiguration.getInstance();
        config.dropSchema();//删除数据表结构
        config.createSchema();//创建数据表结构
        
// 创建一个 jbpm 容器 
        JbpmContext jbpmContext = config.createJbpmContext(); 
        
// 由 processdefinition.xml 生成相对应的流程定义类 ProcessDefinition 
        InputStream is = new FileInputStream("processes/simple/processdefinition.xml"); 
        ProcessDefinition processDefinition 
= ProcessDefinition.parseXmlInputStream(is); 
        
        
// 利用容器的方法将流程定义数据部署到数据库上 
        jbpmContext.deployProcessDefinition(processDefinition); 
        
// 关闭 jbpmContext 
        jbpmContext.close(); 
    }

这个是根据流程配置文件最后生成的数据库信息的测试方法,刚开始我还有一个疑问,数据库和数据表是系统自动创建还
是要手动创建,数据库是要手动创建的,数据表可以自动创建的



posted on 2007-01-18 10:55 风人园 阅读(1000) 评论(0)  编辑  收藏 所属分类: jBPM


只有注册用户登录后才能发表评论。


网站导航: