JBPM數據庫表解析與實例

1.jbpm_action表

字段     含義
ID_                       標識    主鍵
class                    流程動作分類
                          A(動作): org.jbpm.graph.def.Action
                          B(腳本):org.jbpm.graph.action.Script
                          C(創建定時器):        org.jbpm.scheduler.def.CreateTimerAction
                          I(取消定時器): org.jbpm.scheduler.def.CancelTimerAction
NAME_               流程動作名稱
ISPROPAGATIONALLOWED_            boolean類型通常值爲true
ACTIONEXPRESSION_                     動作類行爲I時,表示動作執行的腳本
ISASYNC_                                       該動作是否支持異步機制
REFERENCEDACTION_                    動作中引用的動作,對應JBPM_ACTION
ACTIONDELEGATION_                     動作類型爲A時使用,表示動作執行的代理類,對JBPM_DELEFGATION
EVENT_                                           動作中指定的事件,對應JBPM_EVENT
PROCESSDEFINITION_                   動作在流程模板id
TIMERNAME_                                  定時器名稱
DUEDATE_                                     定時器間隔時間
REPEAT_                                        定時器動作執行次數
TRANSITIONNAME                          動作指定後的transition的name
TIMERACTION                                定時器動作代理類,對應JBPM_ACTION
EXPRESSION_                                定時器執行表達式
EVENTINDEX_                                事件索引
EXCEPTIONHANDLER_                   異常處理類,對應JBPM_EXCEPTIONHANDLER
EXCEPTIONHANDLERINDEX           異常處理類索引

 

2.jbpm_processdefinition表
字段                          含義
ID_                           標識   主鍵
CLASS_
NAME_                      流程定義的名字
DESCRIPTION_         流程定義表述
VERSION_                 流程的版本
ISTERMINATIONIMPLICIT_                         是否支持強制終止流程
STARTSTATE_                                         起始節點ID,在JBPM_NODE表中

3.jbpm_transition表
字段                含義
ID_                 流程遷移標識    主鍵
NAME_            流程遷移的名字
DESCRIPTION_         流程遷移描述
PROCESSDEFINITION_                 流程定義的ID_   外鍵
FROM_                                         遷移的來源,與node節點的id對應
TO_                                             遷移的目的,與node節點的id對應
CONDITION_                               還不瞭解
FROMINDEX_                               還不瞭解

 

4.jbpm_ node表
字段 含義
ID_         節點的標識     主鍵
CLASS_ 節點類型:
                  C: org.jbpm.graph.node.ProcessState
                  D: org.jbpm.graph.node.Decision
                  E: org.jbpm.graph.node.EndState
                  F: org.jbpm.graph.node.Fork
                  J: org.jbpm.graph.node.Join
                  K: org.jbpm.graph.node.TaskNode
                  N: org.jbpm.graph.def.Node
                  R: org.jbpm.graph.node.StartState
                  S: org.jbpm.graph.node.State
                  U: org.jbpm.graph.def.SuperState
NAME_           節點名字
DESCRIPTION_             節點描述
PROCESSDEFINITION_ 節點所在流程定義的ID 外鍵
ISASYNC_                     節點是否支持異步機制
ISAYYNCEXCL_              ???
ACTION_                      節點上的動作,對應與JBPM_ACTION表
SUPERSTATE_              節點對應的superState的id,表明該節點屬於某個SuperState
SUBPROCNAME_          節點類型爲ProcessState時使用,代表子流程定義的Name
SUBPROCESSDEFINITION_     節點類型爲ProcessState時使用,代表子流程定義的ID外鍵
DECISIONEXPRESSION_         節點類型爲Decision時使用,該屬性表示Decision中使用的判斷表達式
DECISIONDELEGATION           節點類型爲Decision時使用,表明Decision對應的代理類,對應JBPM_DELEGATION
SCRIPT_                    腳本
SIGNAL_                   節點類型爲Task
CREATETASKS_        節點類型爲Task
ENDTASKS_              節點類型爲Task
NODECOLLECTIONINDEX_           節點類型爲SuperState時使用       `

 

5.jbpm_delegation表:
字段                      含義
ID_                        流程代理標識
CLASSNAME_         流程代理類名稱
CONFIGURATION_ 流程代理類配置信息
CONFIGTYPE_          流程代理類配置類型
PROCESSDEFINITION_                流程代理類所屬流程定義,對應JBPM_PROCESSDEFINITION 外鍵

 

6.jbom_event表:
字段              含義
ID_                     流程事件標識
EVENTTYPE_        流程事件類型名稱
TYPE_                   流程事件所在的圖形節點類型
"A" :Task
"C" :ProcessState
"D" :Decision"
"E" :EndState"
"F" :Fork"
"J" :Join"
"K" :TaskNode"
"N" :Node"
"P" :ProcessDefinition"
"R" :StartState"
"S" :State"
"T" :Transition"
"U" :SuperState"
GRAPHELEMENT_                流程事件所在的圖形節點的ID
PROCESSDEFINITION_       流程事件所屬流程定義,對應JBPM_PROCESSDEFINITION
外鍵
NODE_                               流程定義所屬的節點,對應於JBPM_NODE
外鍵
TRANSITION_                     流程事件所屬遷移,對應於JBPM_TRANSITION,外鍵
TASK_                                 流程事件所屬任務,對應JBPM_TASK,外鍵

 
看一個例子:
Processdefinition.xml

<?xml version="1.0" encoding="UTF-8"?>

<process-definition
  xmlns="urn:jbpm.org:jpdl-3.2"
  name="simple">
   <start-state name="start">
      <transition name="to_state" to="first">
         <action name="action" class="com.sample.action.Test1Action">
            <message>Going to the first state!</message>
         </action>
      </transition>
   </start-state>
   <state name="first">
      <transition name="to_end" to="end">
         <action name="action" class="com.sample.action.Test2Action">
            <message>About to finish!</message>
         </action>
      </transition>
   </state>
   <end-state name="end"></end-state>
</process-definition>


Test1Action.java
public class Test1Action implements ActionHandler{

private static final long serialVersionUID = 1L;

public void execute(ExecutionContext executionContext) throws Exception {
System.out.println("你好,我是Test1Action動作!");
}

}


Test2Action.java
public class Test2Action implements ActionHandler{

private static final long serialVersionUID = 1L;

public void execute(ExecutionContext executionContext) throws Exception {
System.out.println("你好,我是Test2Action動作!");
}

}


SimpleProcessTest.java
public class SimpleProcessTest extends TestCase {

public void testCreateSchema() {
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
jbpmConfiguration.createSchema();
System.out.println("the database is created successfully!");
}

public void testDeployProcessDefinition() {
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
ProcessDefinition pdf = ProcessDefinition
.parseXmlResource("simple/processdefinition.xml");
jbpmContext.deployProcessDefinition(pdf);
} finally {
if (jbpmContext != null)
jbpmContext.close();
}
System.out.println("the deploy is successful!");
}
}

我用的是mysql數據庫,Hibernate配置

<!-- hibernate dialect -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

    <!-- JDBC connection properties (begin) -->
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql:///jbpm</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">****</property>
    <!-- JDBC connection properties (end) -->
  
    <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>

1.Jbpm_task
字段 含義
ID_ 流程任務的標識 主鍵
NAME_ 任務名字
DESCRIPTION_ 任務描述
PROCESSDEFINITION_ 任務所屬的流程定義 對應JBOM_PROCESSDEFINITION外鍵
ISBLOCKING_ 任務時候阻塞
ISSINGALLING_ 任務是否驅動TOKEN
CONDITION_ ??
DUEDATE_ 任務的持續時間,表明任務應在多長時間內完成
PRIORITY_ ??
ACTORIDEXPRESSION_ ??
POOLEDACTORSEXPRESSION_ ??
TASKMGMTDEFINITION_ 任務所屬的任務模塊ID
TASKNODE_ 任務所屬的TASK_NODE,對應JBPM_NODE
STARTSTATE_ 任務所屬的START_NODE,對應JBPM_NODE
ASSIGNMENTDELEGATION_ ?
SWIMLANE_ 任務的角色
TASKCONTROLLER_ 所屬流程任務的控制器

2.jbpm_taskcontroller表:
字段 含義
ID_ 流程任務控制器的標識,主鍵
TASKCONTROLLERDELEGATION_ 流程任務控制器的代理,對應JBPM_DELEGATION

 

jbpm_taskinstance表:
字段 含義
ID_ 任務實例的標識 主鍵
CLASS_ 任務類型
VERSION_ 任務版本號
NAME_ 任務名字
DESCRIPTION_ 任務描述
ACTORID_ 任務參與者的ID
CREATE_ 任務創建時間
START_ 任務開始時間
END_ 任務結束時間
DUEDATE_ 任務持續時間
PRIORITY_ ??
ISCANCLLED_ 是否被取消
ISSUSPENDED_ ??
ISOPEN_ ??
ISSIGNALLING_ 是否執行下去
ISBLOCKING_ 是否阻塞
TASK_ 任務的ID,對一個於jbpm_task的ID,外鍵
TOKEN_ 令牌的ID,對應於jbpm_token的ID,外鍵
PROCINST_ ??
SWIMLANINSTANCE_ 泳道實例,對應於jbpm_swimlaneinstance的ID,外鍵
TASKMGMTINSTANCE_ 任務所屬的流程模塊實例,對應於jbpm_moduleinstance的ID,外鍵


jbpm_moduledefinition_表:
字段 含義
ID_ 模塊定義的ID
CLASS_ 模塊定義的類型:
M:org.jbpm.module.def.ModuleDefinition
C:org.jbpm.context.def.ContextDefinition
F:org.jbpm.file.def.FileDefinition
L:org.jbpm.logging.def.LoggingDefinition
I:org.jbpm.logging.def.LoggingDefinition
T:org.jbpm.taskmgmt.def.TaskMgmtDefinition
NAME_ 模塊定義的名字
PROCESSDEFINITION_ 流程定義的ID,對應於jbpm_processdefinition的ID,外鍵
STARTTASK_ 類型爲T時使用,對應於jbpm_task,外鍵

 

jbpm_moduleinstance表:
字段 含義
ID_ 模塊實例的標識,主鍵
VERSION_ 模塊實例的版本
PROCESSINSTANCE_ 流程實例ID,對應於jbpm_processinstance的ID,外鍵
TASKMGMTDEFINITION_ 任務類模塊實例所屬的任務模塊,對應於jbpm_moduledefinition
NAME_ 模塊名字

 


processdefinition.xml
<?xml version="1.0" encoding="UTF-8"?>

<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="simple">

<start-state name="開始節點">
<transition name="走着" to="第一個任務節點">
<action name="action"
class="org.yaoyuan.Test1ActionHandler">
去第一個任務節點-->
</action>
</transition>
</start-state>

<task-node name="第一個任務節點">
<task name="task1">
<assignment class="org.yaoyuan.Task1Action"></assignment>
</task>
<transition name="去第二個任務節點" to="第二個任務節點">
<action name="goSecond" class="org.yaoyuan.Test2ActionHandler"></action>
</transition>
</task-node>

<task-node name="第二個任務節點">
<task name="task2">
<assignment class="org.yaoyuan.Task2Action"></assignment>
</task>
<transition name="去結束節點" to="結束節點">
<action name="goEnd" class="org.yaoyuan.Test3ActionHandler"></action>
</transition>
</task-node>

<end-state name="結束節點"></end-state>
</process-definition>


Hibernate配置文件部分內容如下:
<!-- hibernate dialect -->
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

    <!-- JDBC connection properties (begin) -->
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql:///jbpm</property>
    <property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>

jbpm_processinstance表:
字段      含義
ID           流程實例標識,主鍵
KEY_
START_   流程實例開始時間
END_      流程實例開始時間
ISSUSPENDED_            流程實例是否停止
PROCESSDEFINITION_ 流程實例所屬的流程定義,對應於JBPM_PROCESSDEFINITION
ROOTTOKEN_               流程實例對應的TOKEN,對應於JBPM_TOKEN
SUPERPROCESSTOKEN_           父流程的當前TOKEN的ID,當流程實例爲子流程

實例時使用,表明由父流程進入子流程時,父流程的當前TOKEN,對應於

JBPM_TOKEN


jbpm_token表:
字段           含義
ID_            令牌標識
VERSION_ 令牌版本
NAME_      令牌名字
START_     令牌開始時間
END_        令牌結束時間
NODEENTER_      令牌進入節點的時間
NEXTLOGINDEX_ ?
ISABLETOREACTIVATEPARENT_    能否重新激活父令牌標誌
ISTERMINATIONIMPLICIT_           能否強行終止令牌標誌
ISSUSPENED_                             令牌是否處於暫停狀態
LOCK_    鎖
NODE_   令牌所在的當前節點,對應於JBPM_NODE
PROCESSINSTANCE_          令牌所屬的流程實例,對應於

JBPM_PROCESSINSTANCE
PARENT_                            令牌的父令牌,當令牌是由fock產生或處

於子流程中時使用,對應JBPM_TOKEN
SUBPROCESSINSTANCE_    子流程實例

Jbpm_runtimeaction表(流程實時action表):
字段             含義
ID_              實時action標識
VERSION_   實時action版本
EVENTTYPE_       實時action事件類型
TYPE_                 實時action類型
A: Task
C: ProcessState
D: Decision
E: EndState
F: Fork
J: Join
K: TaskNode
N: Node
P: ProcessDefinition
R: StartState
S: State
T: Transition
U: SuperState
GRAPHELEMENT_         實時action所在圖形節點的ID
PROCESSINSTANCE_   實時action所在的流程實例,對應於JBPM_PROCESSINSTANCE
ACTION_                     實時action對應的action,對應於JBPM_ACTION
PROCESSINSTANCEINDEX_    流程實例索引

jbpm_bytearray表:
字段             含義
ID_              流程變量標識
NAME_         流程標量名字
FILEDEFINITION_       文件定義模式,對應於jbpm_moduledefinition,外鍵

jbpm_comment表:
字段          含義
ID_            備註標識
VERSION_ 備註版本
ACTORID_ 產生該備註的actorID
TIME_        備註產生的時間
MESSAGE_ 備註信息
TOKEN_     備註所屬的TOKEN
TASKINSTANCE_         備註所屬的任務實例,jbpm_taskinstance
TOKENINDEX_            令牌索引
TASKINSTANCEINDEX_         任務實例索引


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/frank3G/archive/2010/02/04/5289064.aspx

發佈了15 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章