jBPM开发入门指南(3) 续


上接  :  jBPM开发入门指南(3)

6.5  部署processdefinition.xml

       我们要把 processdefinition.xml 的流程定义的数据部署到数据库中,因为 jBPM 在正式运行的时候不是去读 processdefinition.xml 文件,而是去读数据库中的流程定义。 这里写了一个个 JUnit 程序来部署 processdefinition.xml ,当然你用普通的 Java Main 也可以。

package com.sample;

 

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.InputStream;

 

import junit.framework.TestCase;

 

import org.jbpm.JbpmConfiguration;

import org.jbpm.JbpmContext;

import org.jbpm.graph.def.ProcessDefinition;

 

/**

  * 部署 processdefinition.xml

  *

  * @author chengang

  *

  */

public class DeployProcessTest extends TestCase {

    /**

      * 在本方法执行完毕后,检查 jbpm_processdefinition 表会多了一条记录

      *

      * @throws FileNotFoundException

      */

    public void testDeployProcessDefinition() throws FileNotFoundException {

        // jbpm.cfg.xml 取得 jbpm 的配置

        JbpmConfiguration config = JbpmConfiguration.getInstance ();

        // 创建一个 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();

    }

 

}

 

运行此程序,在控制台打印了一些日志,通过。如果出错,仔佃阅读出错信息以判断错误原因,并确定你按照前面两节:“修改 hibernate.cfg.xml ”和“完善库引用”的内容做好了设置。

 

6.6  从数据库中的查看部署效果

无论是 MySQL 还是 Oracle ,查询 jbpm_processdefinition 表,你会发现多了一条记录,如下图 ( PLSQL Developer 的显示为例 )

20060823_image006.jpg
 

依次检查各表我们可以发现有如下变化:

20060823_image007.jpg
20060823_image008.jpg
20060823_image009.jpg
20060823_image010.jpg
20060823_image011.jpg
20060823_image012.jpg
 

并由此简单判断出各表的作用,表中各字段的作用由字段名也能知晓一二。

 

jbpm_processdefinition

一个流程定义文件对应一条记录,可记录多个流程定义文件,可记录一个流程定义文件的对个版本。

jbpm_action

记录 ActionHandler 的对象实例(以名称为标识)

jbpm_delegation

记录了 ActionHandler 全类名,以便于用反射方式来加载

jbpm_envent

它的 transition 引用了 Jbpm_transition 表的 id ,再看其它字段,估计此表是表示流程转向事件的一个实例,或者是一个各表之间的联接表。

jbpm_node

流程结点

jbpm_transition

流程的转向定义

jbpm_variableaccess

流程中携带的变量。 ACCESS 字段是这些变量的读写权限

 

你可能感兴趣的:(oracle,Hibernate,xml,jbpm,JUnit)