jbpm 事务边界处理:
jbpmcontext
graphsession 操作流程定义级别的对象的。
taskmgntsession操作任务级别的对象的。
JbpmContest jbpmContext = JbpmConfiguration.getinstance().createJbpmContext();
processDefinition processDefinition = ProcessDefinition.....( 流程定义的文件)
定义数据对象。baoxiaoForm
将数据对象保存到数据库里面
jbpmContext.getSession().save(baoxiaoForm);
ProcessInstance pi = new ProcessInstance(pd);
将数据和流程绑定。
pi.getContextInstance().setVariable("infoid",new Long(baoxiaoForm.getId()));
jbpmContext.deployProcessDefinition(processDefinition);
jbpmContext.close();
数据库
jbpm_bytearray 流程定义文件名字
jbpm_byteblock 流程定义文件内容
流程跟踪
Jbpm表结构说明
JBPM_ACTION action记录表
JBPM_DECISIONCONDITIONS 结果条件表
JBPM_DELEGATION 委托表
JBPM_EVENT 事件表 处理进入或者离开事件
JBPM_EXCEPTIONHANDLER 异常处理表
JBPM_ID_GROUP 用户组表
JBPM_ID_MEMBERSHIP 用户成员表 表现用户和组之间的多对多关系
JBPM_ID_PERMISSIONS 用户权限表
JBPM_ID_USER 用户表
JBPM_MODULEDEFINITION 模块定义表
JBPM_MODULEINSTANCE 模块实例表
JBPM_NODE 流程节点表
JBPM_POOLEDACTOR 汇集参与着表
JBPM_PROCESSDEFINITION 流程定义表
JBPM_PROCESSFILE 流程文件表
JBPM_PROCESSFILEBLOCK 流程文件块表
JBPM_PROCESSINSTANCE 流程实例表
JBPM_RUNTIMEACTION 运行中行为表
JBPM_SCRIPTVARIABLES 脚本变量表
JBPM_SWIMLANE 泳道表
JBPM_SWIMLANEINSTANCE 泳道实例表
JBPM_TASK 任务表
JBPM_TASKACTORPOOL 用户行为汇总
JBPM_TASKINSTANCE 任务实例
JBPM_TIMER 计时表
JBPM_TOKEN 令牌表
JBPM_TOKENVARIABLEMAP 令牌变量影射表
JBPM_TRANSITION 转换表
JBPM_VARIABLEINSTANCE 变量实例表 (将数据和流程绑定。id)
JBPM_VARIABLEINSTANCEBLOCK 变量实例块表
JBPM_VARIABLEMAPPING 变量影射表
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>
流程的路由