天天看點

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;

public class DeployProcessTest extends TestCase {

    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 的顯示為例 )

jBPM開發入門指南(3) 續

依次檢查各表我們可以發現有如下變化:

jBPM開發入門指南(3) 續
jBPM開發入門指南(3) 續
jBPM開發入門指南(3) 續
jBPM開發入門指南(3) 續
jBPM開發入門指南(3) 續
jBPM開發入門指南(3) 續

并由此簡單判斷出各表的作用,表中各字段的作用由字段名也能知曉一二。

jbpm_processdefinition 一個流程定義檔案對應一條記錄,可記錄多個流程定義檔案,可記錄一個流程定義檔案的對個版本。
jbpm_action 記錄 ActionHandler 的對象執行個體(以名稱為辨別)
jbpm_delegation 記錄了 ActionHandler 全類名,以便于用反射方式來加載
jbpm_envent 它的 transition 引用了 Jbpm_transition 表的 id ,再看其它字段,估計此表是表示流程轉向事件的一個執行個體,或者是一個各表之間的聯接表。
jbpm_node 流程結點
jbpm_transition 流程的轉向定義
jbpm_variableaccess 流程中攜帶的變量。 ACCESS 字段是這些變量的讀寫權限