现在的位置: 首页 > 综合 > 正文

JBPM数据库表解析与实例

2013年09月23日 ⁄ 综合 ⁄ 共 10623字 ⁄ 字号 评论关闭

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_         任务实例索引

抱歉!评论已关闭.