<?xml version="1.0"?>
|
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
|
|
<hibernate-mapping package="org.jbpm.pvm.internal.model" default-access="field">
|
|
<!-- ### TYPEDEFS ####################################################### -->
|
<typedef name="converter" class="org.jbpm.pvm.internal.hibernate.ConverterType">
|
<param name="org.jbpm.pvm.internal.type.converter.BooleanToStringConverter" >bool-str</param>
|
<param name="org.jbpm.pvm.internal.type.converter.ByteToLongConverter" >byte-long</param>
|
<param name="org.jbpm.pvm.internal.type.converter.CharacterToStringConverter" >char-str</param>
|
<param name="org.jbpm.pvm.internal.type.converter.DateToLongConverter" >date-long</param>
|
<param name="org.jbpm.pvm.internal.type.converter.DateToStringConverter" >date-str</param>
|
<param name="org.jbpm.pvm.internal.type.converter.DoubleToStringConverter" >double-str</param>
|
<param name="org.jbpm.pvm.internal.type.converter.FloatToDoubleConverter" >float-double</param>
|
<param name="org.jbpm.pvm.internal.type.converter.FloatToStringConverter" >float-str</param>
|
<param name="org.jbpm.pvm.internal.type.converter.IntegerToLongConverter" >int-long</param>
|
<param name="org.jbpm.pvm.internal.type.converter.SerializableToBytesConverter">ser-bytes</param>
|
<param name="org.jbpm.pvm.internal.type.converter.ShortToLongConverter" >short-long</param>
|
</typedef>
|
|
<!-- ### EXECUTION ############################################# -->
|
<class name="ExecutionImpl"
|
table="JBPM4_EXECUTION"
|
discriminator-value="pvm">
|
<id name="dbid" column="DBID_">
|
<generator class="assigned" />
|
</id>
|
<discriminator><column name="CLASS_" /></discriminator>
|
<version name="dbversion" column="DBVERSION_" />
|
|
<property name="activityName" column="ACTIVITYNAME_" />
|
<property name="processDefinitionId" column="PROCDEFID_" />
|
|
<property name="hasVariables" column="HASVARS_" />
|
<map name="variables"
|
cascade="all-delete-orphan">
|
<key foreign-key="FK_VAR_EXECUTION">
|
<column name="EXECUTION_" index="IDX_VAR_EXECUTION"/>
|
</key>
|
<map-key type="string" column="KEY_" />
|
<one-to-many class="org.jbpm.pvm.internal.type.Variable" />
|
</map>
|
<map name="systemVariables"
|
cascade="all-delete-orphan">
|
<key foreign-key="FK_VAR_EXESYS">
|
<column name="EXESYS_" index="IDX_VAR_EXESYS"/>
|
</key>
|
<map-key type="string" column="KEY_" />
|
<one-to-many class="org.jbpm.pvm.internal.type.Variable" />
|
</map>
|
|
|
<property name="name" column="NAME_" />
|
<property name="key" column="KEY_" />
|
<property name="id" column="ID_" unique="true" />
|
<property name="state" column="STATE_" />
|
<property name="suspendHistoryState" column="SUSPHISTSTATE_" />
|
|
<property name="priority" column="PRIORITY_" />
|
<property name="historyActivityInstanceDbid" column="HISACTINST_" />
|
|
<list name="executions"
|
cascade="all-delete-orphan"
|
inverse="false"
|
lazy="false">
|
<key column="PARENT_" foreign-key="FK_EXEC_PARENT" />
|
<list-index column="PARENT_IDX_" />
|
<one-to-many class="ExecutionImpl" />
|
</list>
|
|
<map name="swimlanes"
|
cascade="all-delete-orphan">
|
<key foreign-key="FK_SWIMLANE_EXEC">
|
<column name="EXECUTION_" index="IDX_SWIMLANE_EXEC"/>
|
</key>
|
<map-key type="string" column="NAME_" />
|
<one-to-many class="org.jbpm.pvm.internal.task.SwimlaneImpl" />
|
</map>
|
|
<many-to-one name="parent"
|
column="PARENT_"
|
class="ExecutionImpl"
|
foreign-key="FK_EXEC_PARENT"
|
index="IDX_EXEC_PARENT"
|
lazy="false" />
|
|
<many-to-one name="processInstance"
|
class="ExecutionImpl"
|
column="INSTANCE_"
|
foreign-key="FK_EXEC_INSTANCE"
|
index="IDX_EXEC_INSTANCE"
|
lazy="false" />
|
|
<many-to-one name="superProcessExecution"
|
column="SUPEREXEC_"
|
class="ExecutionImpl"
|
foreign-key="FK_EXEC_SUPEREXEC"
|
index="IDX_EXEC_SUPEREXEC" />
|
|
<many-to-one name="subProcessInstance"
|
column="SUBPROCINST_"
|
class="ExecutionImpl"
|
foreign-key="FK_EXEC_SUBPI"
|
index="IDX_EXEC_SUBPI" />
|
|
</class>
|
|
<!-- ### VARIABLE ####################################################### -->
|
<class name="org.jbpm.pvm.internal.type.Variable" abstract="true" discriminator-value=" " table="JBPM4_VARIABLE">
|
<!-- discriminator values:
|
date : org.jbpm.pvm.internal.type.variable.DateVariable
|
double : org.jbpm.pvm.internal.type.variable.DoubleVariable
|
hibl : org.jbpm.pvm.internal.type.variable.HibernateLongVariable
|
long : org.jbpm.pvm.internal.type.variable.LongVariable
|
hibs : org.jbpm.pvm.internal.type.variable.HibernateStringVariable
|
string : org.jbpm.pvm.internal.type.variable.StringVariable
|
null : org.jbpm.pvm.internal.type.variable.NullVariable
|
blob : org.jbpm.pvm.internal.type.variable.BlobVariable
|
clob : org.jbpm.pvm.internal.type.variable.ClobVariable
|
-->
|
|
<id name="dbid" column="DBID_">
|
<generator class="assigned" />
|
</id>
|
<discriminator column="CLASS_"/>
|
<version name="dbversion" column="DBVERSION_" />
|
|
<property name="key" column="KEY_"/>
|
<property name="converter" type="converter" column="CONVERTER_" />
|
<property name="isHistoryEnabled" column="HIST_" />
|
|
<many-to-one name="execution"
|
column="EXECUTION_"
|
class="org.jbpm.pvm.internal.model.ExecutionImpl"
|
foreign-key="none"/>
|
<many-to-one name="task"
|
column="TASK_"
|
class="org.jbpm.pvm.internal.task.TaskImpl"
|
foreign-key="none"/>
|
</class>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.BlobVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="blob">
|
<many-to-one name="lob"
|
column="LOB_"
|
cascade="all"
|
class="org.jbpm.pvm.internal.lob.Lob"
|
foreign-key="FK_VAR_LOB"
|
index="IDX_VAR_LOB" />
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.DateVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="date">
|
<property name="date" column="DATE_VALUE_" type="timestamp"/>
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.DoubleVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="double">
|
<property name="d" column="DOUBLE_VALUE_" type="double"/>
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.HibernateLongVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="hib-long">
|
<any name="hibernatable" id-type="long">
|
<column name="CLASSNAME_"/>
|
<column name="LONG_VALUE_"/>
|
</any>
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.HibernateStringVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="hib-string">
|
<any name="hibernatable" id-type="string">
|
<column name="CLASSNAME_"/>
|
<column name="STRING_VALUE_"/>
|
</any>
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.LongVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="long">
|
<property name="l" column="LONG_VALUE_" type="long"/>
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.NullVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="null">
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.StringVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="string">
|
<property name="string" column="STRING_VALUE_" type="string"/>
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.type.variable.TextVariable" extends="org.jbpm.pvm.internal.type.Variable" discriminator-value="text">
|
<property name="text" column="TEXT_VALUE_" type="text"/>
|
</subclass>
|
|
<!-- ### LOB ############################################################ -->
|
<class name="org.jbpm.pvm.internal.lob.Lob" table="JBPM4_LOB">
|
<id name="dbid" column="DBID_">
|
<generator class="assigned" />
|
</id>
|
<version name="dbversion" column="DBVERSION_" />
|
<property name="blob" type="blob"><column name="BLOB_VALUE_" /></property>
|
<!--
|
should only be re-introduced if there comes a concrete need for it.
|
<property name="bytes" type="binary" column="BINARY_VALUE_"/>
|
<property name="clob" type="clob" column="CLOB_VALUE_" />
|
<property name="text" type="text" column="TEXT_VALUE_"/>
|
-->
|
</class>
|
|
<class name="org.jbpm.pvm.internal.job.JobImpl" table="JBPM4_JOB" discriminator-value="Job">
|
<id name="dbid" column="DBID_">
|
<generator class="assigned" />
|
</id>
|
<discriminator column="CLASS_" />
|
<version name="dbversion" column="DBVERSION_" />
|
|
<property name="duedate" column="DUEDATE_" type="timestamp" index="IDX_JOBDUEDATE" />
|
<property name="state" column="STATE_" />
|
<property name="isExclusive" column="ISEXCLUSIVE_" />
|
<property name="lockOwner" column="LOCKOWNER_" />
|
<property name="lockExpirationTime" column="LOCKEXPTIME_" index="IDX_JOBLOCKEXP" />
|
<property name="exception" column="EXCEPTION_" type="text" />
|
<property name="retries" column="RETRIES_" index="IDX_JOBRETRIES" />
|
|
<many-to-one name="processInstance"
|
class="org.jbpm.pvm.internal.model.ExecutionImpl"
|
column="PROCESSINSTANCE_"
|
cascade="none"
|
foreign-key="none"
|
index="IDX_JOB_PRINST"
|
lazy="false"/>
|
|
<many-to-one name="execution"
|
class="org.jbpm.pvm.internal.model.ExecutionImpl"
|
column="EXECUTION_"
|
cascade="none"
|
foreign-key="none"
|
index="IDX_JOB_EXE"/>
|
|
<many-to-one name="configurationBytes"
|
column="CFG_"
|
cascade="all"
|
class="org.jbpm.pvm.internal.lob.Lob"
|
foreign-key="FK_JOB_CFG"
|
index="IDX_JOB_CFG" />
|
|
<subclass name="org.jbpm.pvm.internal.job.MessageImpl" discriminator-value="Msg">
|
<subclass name="org.jbpm.pvm.internal.model.op.ExecuteActivityMessage" discriminator-value="ExeAct" />
|
<subclass name="org.jbpm.pvm.internal.model.op.ExecuteEventListenerMessage" discriminator-value="ExeEvtLsnr" />
|
<subclass name="org.jbpm.pvm.internal.job.CommandMessage" discriminator-value="Cmd" />
|
</subclass>
|
|
<subclass name="org.jbpm.pvm.internal.job.TimerImpl" discriminator-value="Timer">
|
<property name="signalName" column="SIGNAL_" />
|
<property name="eventName" column="EVENT_" />
|
<property name="repeat" column="REPEAT_" />
|
</subclass>
|
|
</class>
|
|
<!-- ### HibernatePvmDbSession QUERIES ################################## -->
|
|
<query name="findTimers">
|
<![CDATA[
|
select t
|
from org.jbpm.pvm.internal.job.TimerImpl as t
|
order by duedate asc
|
]]>
|
</query>
|
|
<query name="findMessages">
|
<![CDATA[
|
select m
|
from org.jbpm.pvm.internal.job.MessageImpl as m
|
]]>
|
</query>
|
|
<query name="findJobsWithException">
|
<![CDATA[
|
select job
|
from org.jbpm.pvm.internal.job.JobImpl as job
|
where job.retries = 0
|
order by duedate asc
|
]]>
|
</query>
|
|
<!-- ### HibernateJobDbSession QUERIES ################################## -->
|
<query name="findFirstAcquirableJob">
|
<![CDATA[
|
select job
|
from org.jbpm.pvm.internal.job.JobImpl as job
|
where ( ( (job.lockExpirationTime is null)
|
or (job.lockExpirationTime <= :now)
|
)
|
and
|
( (job.duedate is null)
|
or (job.duedate <= :now)
|
)
|
and
|
( job.retries > 0 )
|
and
|
( job.state != 'suspended' )
|
)
|
order by job.duedate asc
|
]]>
|
</query>
|
|
<query name="findExclusiveJobs">
|
<![CDATA[
|
select job
|
from org.jbpm.pvm.internal.job.JobImpl as job
|
where job.lockOwner is null
|
and job.processInstance = :processInstance
|
and job.isExclusive = true
|
and job.retries > 0
|
and job.state != 'suspended'
|
and ( (job.duedate is null)
|
or (job.duedate <= :now)
|
)
|
order by job.duedate asc
|
]]>
|
</query>
|
|
<query name="findFirstDueJob">
|
<![CDATA[
|
select job
|
from org.jbpm.pvm.internal.job.JobImpl as job
|
where job.lockOwner is null
|
and job.retries > 0
|
and job.state != 'suspended'
|
order by job.duedate asc
|
]]>
|
</query>
|
|
<!-- ### HibernatePvmDbSession QUERIES ############################################# -->
|
<query name="findExecutionById">
|
<![CDATA[
|
select execution
|
from org.jbpm.pvm.internal.model.ExecutionImpl as execution
|
where execution.id = :id
|
]]>
|
</query>
|
|
<query name="findProcessInstanceById">
|
<![CDATA[
|
select processInstance
|
from org.jbpm.pvm.internal.model.ExecutionImpl as processInstance
|
where processInstance.id = :processInstanceId
|
and processInstance.parent is null
|
and processInstance.state != 'suspended'
|
]]>
|
</query>
|
|
<query name="findProcessInstanceByIdIgnoreSuspended">
|
<![CDATA[
|
select processInstance
|
from org.jbpm.pvm.internal.model.ExecutionImpl as processInstance
|
where processInstance.id = :processInstanceId
|
and processInstance.parent is null
|
]]>
|
</query>
|
|
</hibernate-mapping>
|