Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.activiti.db.mapping.entity.Execution.xml Maven / Gradle / Ivy
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl">
<!-- EXECUTION INSERT -->
<insert id="insertExecution" parameterType="org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl">
insert into ${prefix}ACT_RU_EXECUTION (ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, ACT_ID_, IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_,IS_EVENT_SCOPE_, IS_MI_ROOT_, PARENT_ID_, SUPER_EXEC_, ROOT_PROC_INST_ID_, SUSPENSION_STATE_, TENANT_ID_, NAME_, START_TIME_, START_USER_ID_, IS_COUNT_ENABLED_, EVT_SUBSCR_COUNT_, TASK_COUNT_, JOB_COUNT_, TIMER_JOB_COUNT_, SUSP_JOB_COUNT_, DEADLETTER_JOB_COUNT_, VAR_COUNT_, ID_LINK_COUNT_)
values (
#{id ,jdbcType=VARCHAR},
1,
#{processInstanceId, jdbcType=VARCHAR},
#{businessKey, jdbcType=VARCHAR},
#{processDefinitionId ,jdbcType=VARCHAR},
#{activityId ,jdbcType=VARCHAR},
#{isActive ,jdbcType=BOOLEAN},
#{isConcurrent ,jdbcType=BOOLEAN},
#{isScope ,jdbcType=BOOLEAN},
#{isEventScope ,jdbcType=BOOLEAN},
#{isMultiInstanceRoot, jdbcType=BOOLEAN},
#{parentId, jdbcType=VARCHAR},
#{superExecutionId, jdbcType=VARCHAR},
#{rootProcessInstanceId, jdbcType=VARCHAR},
#{suspensionState, jdbcType=INTEGER},
#{tenantId, jdbcType=VARCHAR},
#{name, jdbcType=VARCHAR},
#{startTime, jdbcType=TIMESTAMP},
#{startUserId, jdbcType=VARCHAR},
#{isCountEnabled, jdbcType=BOOLEAN},
#{eventSubscriptionCount, jdbcType=INTEGER},
#{taskCount, jdbcType=INTEGER},
#{jobCount, jdbcType=INTEGER},
#{timerJobCount, jdbcType=INTEGER},
#{suspendedJobCount, jdbcType=INTEGER},
#{deadLetterJobCount, jdbcType=INTEGER},
#{variableCount, jdbcType=INTEGER},
#{identityLinkCount, jdbcType=INTEGER}
)
</insert>
<insert id="bulkInsertExecution" parameterType="java.util.List">
insert into ${prefix}ACT_RU_EXECUTION (ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, ACT_ID_, IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_,IS_EVENT_SCOPE_, IS_MI_ROOT_, PARENT_ID_, SUPER_EXEC_, ROOT_PROC_INST_ID_, SUSPENSION_STATE_, TENANT_ID_, NAME_, START_TIME_, START_USER_ID_, IS_COUNT_ENABLED_, EVT_SUBSCR_COUNT_, TASK_COUNT_, JOB_COUNT_, TIMER_JOB_COUNT_, SUSP_JOB_COUNT_, DEADLETTER_JOB_COUNT_, VAR_COUNT_, ID_LINK_COUNT_)
values
<foreach collection="list" item="execution" index="index" separator=",">
(#{execution.id ,jdbcType=VARCHAR},
1,
#{execution.processInstanceId, jdbcType=VARCHAR},
#{execution.businessKey, jdbcType=VARCHAR},
#{execution.processDefinitionId ,jdbcType=VARCHAR},
#{execution.activityId ,jdbcType=VARCHAR},
#{execution.isActive ,jdbcType=BOOLEAN},
#{execution.isConcurrent ,jdbcType=BOOLEAN},
#{execution.isScope ,jdbcType=BOOLEAN},
#{execution.isEventScope ,jdbcType=BOOLEAN},
#{execution.isMultiInstanceRoot, jdbcType=BOOLEAN},
#{execution.parentId, jdbcType=VARCHAR},
#{execution.superExecutionId, jdbcType=VARCHAR},
#{execution.rootProcessInstanceId, jdbcType=VARCHAR},
#{execution.suspensionState, jdbcType=INTEGER},
#{execution.tenantId, jdbcType=VARCHAR},
#{execution.name, jdbcType=VARCHAR},
#{execution.startTime, jdbcType=TIMESTAMP},
#{execution.startUserId, jdbcType=VARCHAR},
#{execution.isCountEnabled, jdbcType=BOOLEAN},
#{execution.eventSubscriptionCount, jdbcType=INTEGER},
#{execution.taskCount, jdbcType=INTEGER},
#{execution.jobCount, jdbcType=INTEGER},
#{execution.timerJobCount, jdbcType=INTEGER},
#{execution.suspendedJobCount, jdbcType=INTEGER},
#{execution.deadLetterJobCount, jdbcType=INTEGER},
#{execution.variableCount, jdbcType=INTEGER},
#{execution.identityLinkCount, jdbcType=INTEGER})
</foreach>
</insert>
<insert id="bulkInsertExecution" databaseId="oracle" parameterType="java.util.List">
INSERT ALL
<foreach collection="list" item="execution" index="index">
into ${prefix}ACT_RU_EXECUTION (ID_, REV_, PROC_INST_ID_, BUSINESS_KEY_, PROC_DEF_ID_, ACT_ID_,
IS_ACTIVE_, IS_CONCURRENT_, IS_SCOPE_,IS_EVENT_SCOPE_, IS_MI_ROOT_, PARENT_ID_, SUPER_EXEC_, ROOT_PROC_INST_ID_, SUSPENSION_STATE_, TENANT_ID_, NAME_, START_TIME_, START_USER_ID_, IS_COUNT_ENABLED_, EVT_SUBSCR_COUNT_, TASK_COUNT_, JOB_COUNT_, TIMER_JOB_COUNT_, SUSP_JOB_COUNT_, DEADLETTER_JOB_COUNT_, VAR_COUNT_, ID_LINK_COUNT_) VALUES
(#{execution.id ,jdbcType=VARCHAR},
1,
#{execution.processInstanceId, jdbcType=VARCHAR},
#{execution.businessKey, jdbcType=VARCHAR},
#{execution.processDefinitionId ,jdbcType=VARCHAR},
#{execution.activityId ,jdbcType=VARCHAR},
#{execution.isActive ,jdbcType=BOOLEAN},
#{execution.isConcurrent ,jdbcType=BOOLEAN},
#{execution.isScope ,jdbcType=BOOLEAN},
#{execution.isEventScope ,jdbcType=BOOLEAN},
#{execution.isMultiInstanceRoot, jdbcType=BOOLEAN},
#{execution.parentId, jdbcType=VARCHAR},
#{execution.superExecutionId, jdbcType=VARCHAR},
#{execution.rootProcessInstanceId, jdbcType=VARCHAR},
#{execution.suspensionState, jdbcType=INTEGER},
#{execution.tenantId, jdbcType=VARCHAR},
#{execution.name, jdbcType=VARCHAR},
#{execution.startTime, jdbcType=TIMESTAMP},
#{execution.startUserId, jdbcType=VARCHAR},
#{execution.isCountEnabled, jdbcType=BOOLEAN},
#{execution.eventSubscriptionCount, jdbcType=INTEGER},
#{execution.taskCount, jdbcType=INTEGER},
#{execution.jobCount, jdbcType=INTEGER},
#{execution.timerJobCount, jdbcType=INTEGER},
#{execution.suspendedJobCount, jdbcType=INTEGER},
#{execution.deadLetterJobCount, jdbcType=INTEGER},
#{execution.variableCount, jdbcType=INTEGER},
#{execution.identityLinkCount, jdbcType=INTEGER})
</foreach>
SELECT * FROM dual
</insert>
<!-- EXECUTION UPDATE -->
<update id="updateExecution" parameterType="org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl">
update ${prefix}ACT_RU_EXECUTION set
REV_ = #{revisionNext, jdbcType=INTEGER},
BUSINESS_KEY_ = #{businessKey, jdbcType=VARCHAR},
PROC_DEF_ID_ = #{processDefinitionId, jdbcType=VARCHAR},
ACT_ID_ = #{activityId, jdbcType=VARCHAR},
IS_ACTIVE_ = #{isActive, jdbcType=BOOLEAN},
IS_CONCURRENT_ = #{isConcurrent, jdbcType=BOOLEAN},
IS_SCOPE_ = #{isScope, jdbcType=BOOLEAN},
IS_EVENT_SCOPE_ = #{isEventScope, jdbcType=BOOLEAN},
IS_MI_ROOT_ = #{isMultiInstanceRoot, jdbcType=BOOLEAN},
PARENT_ID_ = #{parentId, jdbcType=VARCHAR},
SUPER_EXEC_ = #{superExecutionId, jdbcType=VARCHAR},
ROOT_PROC_INST_ID_ = #{rootProcessInstanceId, jdbcType=VARCHAR},
SUSPENSION_STATE_ = #{suspensionState, jdbcType=INTEGER},
NAME_ = #{name, jdbcType=VARCHAR},
IS_COUNT_ENABLED_ = #{isCountEnabled, jdbcType=BOOLEAN},
EVT_SUBSCR_COUNT_ = #{eventSubscriptionCount, jdbcType=INTEGER},
TASK_COUNT_ = #{taskCount, jdbcType=INTEGER},
JOB_COUNT_ = #{jobCount, jdbcType=INTEGER},
TIMER_JOB_COUNT_ = #{timerJobCount, jdbcType=INTEGER},
SUSP_JOB_COUNT_ = #{suspendedJobCount, jdbcType=INTEGER},
DEADLETTER_JOB_COUNT_ = #{deadLetterJobCount, jdbcType=INTEGER},
VAR_COUNT_ = #{variableCount, jdbcType=INTEGER},
ID_LINK_COUNT_ = #{identityLinkCount, jdbcType=INTEGER}
where ID_ = #{id, jdbcType=VARCHAR}
and REV_ = #{revision, jdbcType=INTEGER}
</update>
<update id="updateExecutionTenantIdForDeployment" parameterType="java.util.Map">
update ${prefix}ACT_RU_EXECUTION set
TENANT_ID_ = #{tenantId, jdbcType=VARCHAR}
where
ID_ in (
SELECT E.ID_ from ${prefix}ACT_RU_EXECUTION E
inner join ${prefix}ACT_RE_PROCDEF P on E.PROC_DEF_ID_ = P.ID_
inner join ${prefix}ACT_RE_DEPLOYMENT D on P.DEPLOYMENT_ID_ = D.ID_
where D.ID_ = #{deploymentId, jdbcType=VARCHAR}
)
</update>
<!-- See http://stackoverflow.com/questions/4429319/you-cant-specify-target-table-for-update-in-from-clause
Tested this on MySQL 5.6: does NOT use a temporary table (so good, performance) -->
<update id="updateExecutionTenantIdForDeployment" databaseId="mysql" parameterType="java.util.Map">
update ${prefix}ACT_RU_EXECUTION set
TENANT_ID_ = #{tenantId, jdbcType=VARCHAR}
where
ID_ in (
SELECT tempExecution.tempId
FROM (
SELECT E.ID_ as tempId
FROM ${prefix}ACT_RU_EXECUTION E
inner join ${prefix}ACT_RE_PROCDEF P on E.PROC_DEF_ID_ = P.ID_
inner join ${prefix}ACT_RE_DEPLOYMENT D on P.DEPLOYMENT_ID_ = D.ID_
where D.ID_ = #{deploymentId, jdbcType=VARCHAR}
) AS tempExecution
)
</update>
<update id="updateProcessInstanceLockTime" parameterType="java.util.Map">
update ${prefix}ACT_RU_EXECUTION
set
LOCK_TIME_ = #{lockTime, jdbcType=TIMESTAMP}
where ID_ = #{id}
and (LOCK_TIME_ is null OR LOCK_TIME_ < #{expirationTime, jdbcType=TIMESTAMP})
</update>
<update id="clearProcessInstanceLockTime" parameterType="java.util.Map">
update ${prefix}ACT_RU_EXECUTION
set
LOCK_TIME_ = null
where ID_ = #{id}
</update>
<update id="updateExecutionRelatedEntityCountEnabled" parameterType="boolean">
update ${prefix}ACT_RU_EXECUTION
set IS_COUNT_ENABLED_ = #{parameter, jdbcType=BOOLEAN}
</update>
<!-- EXECUTION DELETE -->
<delete id="deleteExecution" parameterType="org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl">
delete from ${prefix}ACT_RU_EXECUTION where ID_ = #{id} and REV_ = #{revision}
</delete>
<delete id="bulkDeleteExecution" parameterType="java.util.Collection">
delete from ${prefix}ACT_RU_EXECUTION where
<foreach item="execution" collection="list" index="index" separator=" or ">
ID_ = #{execution.id, jdbcType=VARCHAR}
</foreach>
</delete>
<!-- EXECUTION RESULTMAP -->
<resultMap id="executionResultMap" type="org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl">
<id property="id" column="ID_" jdbcType="VARCHAR" />
<result property="revision" column="REV_" jdbcType="INTEGER" />
<result property="processInstanceId" column="PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="businessKey" column="BUSINESS_KEY_" jdbcType="VARCHAR" />
<result property="processDefinitionId" column="PROC_DEF_ID_" jdbcType="VARCHAR" />
<result property="activityId" column="ACT_ID_" jdbcType="VARCHAR" />
<result property="isActive" column="IS_ACTIVE_" jdbcType="BOOLEAN" />
<result property="isConcurrent" column="IS_CONCURRENT_" jdbcType="BOOLEAN" />
<result property="isScope" column="IS_SCOPE_" jdbcType="BOOLEAN" />
<result property="isEventScope" column="IS_EVENT_SCOPE_" jdbcType="BOOLEAN" />
<result property="isMultiInstanceRoot" column="IS_MI_ROOT_" jdbcType="BOOLEAN" />
<result property="parentId" column="PARENT_ID_" jdbcType="VARCHAR" />
<result property="superExecutionId" column="SUPER_EXEC_" jdbcType="VARCHAR" />
<result property="rootProcessInstanceId" column="ROOT_PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="suspensionState" column="SUSPENSION_STATE_" jdbcType="INTEGER"/>
<result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR" />
<result property="name" column="NAME_" jdbcType="VARCHAR" />
<result property="startTime" column="START_TIME_" jdbcType="TIMESTAMP" />
<result property="startUserId" column="START_USER_ID_" jdbcType="VARCHAR" />
<result property="isCountEnabled" column="IS_COUNT_ENABLED_" jdbcType="BOOLEAN" />
<result property="eventSubscriptionCount" column="EVT_SUBSCR_COUNT_" jdbcType="INTEGER" />
<result property="taskCount" column="TASK_COUNT_" jdbcType="INTEGER" />
<result property="jobCount" column="JOB_COUNT_" jdbcType="INTEGER" />
<result property="timerJobCount" column="TIMER_JOB_COUNT_" jdbcType="INTEGER" />
<result property="suspendedJobCount" column="SUSP_JOB_COUNT_" jdbcType="INTEGER" />
<result property="deadLetterJobCount" column="DEADLETTER_JOB_COUNT_" jdbcType="INTEGER" />
<result property="variableCount" column="VAR_COUNT_" jdbcType="INTEGER" />
<result property="identityLinkCount" column="ID_LINK_COUNT_" jdbcType="INTEGER" />
<result property="parentProcessInstanceId" column="PARENT_PROC_INST_ID_" jdbcType="VARCHAR"/>
</resultMap>
<resultMap id="processInstanceResultMap" type="org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl">
<id property="id" column="ID_" jdbcType="VARCHAR" />
<result property="revision" column="REV_" jdbcType="INTEGER" />
<result property="processInstanceId" column="PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="businessKey" column="BUSINESS_KEY_" jdbcType="VARCHAR" />
<!-- Lowercase 'columns', as they are filled in during a query and are not mapped directly to a table column -->
<result property="processDefinitionId" column="PROC_DEF_ID_" jdbcType="VARCHAR" />
<result property="processDefinitionName" column="ProcessDefinitionName" jdbcType="VARCHAR" />
<result property="processDefinitionKey" column="ProcessDefinitionKey" jdbcType="VARCHAR" />
<result property="processDefinitionVersion" column="ProcessDefinitionVersion" jdbcType="INTEGER" />
<result property="deploymentId" column="DeploymentId" jdbcType="VARCHAR" />
<result property="activityId" column="ACT_ID_" jdbcType="VARCHAR" />
<result property="isActive" column="IS_ACTIVE_" jdbcType="BOOLEAN" />
<result property="isConcurrent" column="IS_CONCURRENT_" jdbcType="BOOLEAN" />
<result property="isScope" column="IS_SCOPE_" jdbcType="BOOLEAN" />
<result property="isEventScope" column="IS_EVENT_SCOPE_" jdbcType="BOOLEAN" />
<result property="isMultiInstanceRoot" column="IS_MI_ROOT_" jdbcType="BOOLEAN" />
<result property="parentId" column="PARENT_ID_" jdbcType="VARCHAR" />
<result property="superExecutionId" column="SUPER_EXEC_" jdbcType="VARCHAR" />
<result property="rootProcessInstanceId" column="ROOT_PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="suspensionState" column="SUSPENSION_STATE_" jdbcType="INTEGER"/>
<result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR" />
<result property="name" column="NAME_" jdbcType="VARCHAR" />
<result property="lockTime" column="LOCK_TIME_" jdbcType="TIMESTAMP" />
<result property="startTime" column="START_TIME_" jdbcType="TIMESTAMP" />
<result property="startUserId" column="START_USER_ID_" jdbcType="VARCHAR" />
<result property="isCountEnabled" column="IS_COUNT_ENABLED_" jdbcType="BOOLEAN" />
<result property="eventSubscriptionCount" column="EVT_SUBSCR_COUNT_" jdbcType="INTEGER" />
<result property="taskCount" column="TASK_COUNT_" jdbcType="INTEGER" />
<result property="jobCount" column="JOB_COUNT_" jdbcType="INTEGER" />
<result property="timerJobCount" column="TIMER_JOB_COUNT_" jdbcType="INTEGER" />
<result property="suspendedJobCount" column="SUSP_JOB_COUNT_" jdbcType="INTEGER" />
<result property="deadLetterJobCount" column="DEADLETTER_JOB_COUNT_" jdbcType="INTEGER" />
<result property="variableCount" column="VAR_COUNT_" jdbcType="INTEGER" />
<result property="identityLinkCount" column="ID_LINK_COUNT_" jdbcType="INTEGER" />
<result property="parentProcessInstanceId" column="PARENT_PROC_INST_ID_" jdbcType="VARCHAR"/>
</resultMap>
<!-- TODO Review because not used anywhere -->
<resultMap id="executionAndVariablesResultMap" type="org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl">
<id property="id" column="ID_" jdbcType="VARCHAR" />
<result property="revision" column="REV_" jdbcType="INTEGER" />
<result property="processInstanceId" column="PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="businessKey" column="BUSINESS_KEY_" jdbcType="VARCHAR" />
<result property="processDefinitionId" column="PROC_DEF_ID_" jdbcType="VARCHAR" />
<result property="activityId" column="ACT_ID_" jdbcType="VARCHAR" />
<result property="isActive" column="IS_ACTIVE_" jdbcType="BOOLEAN" />
<result property="isConcurrent" column="IS_CONCURRENT_" jdbcType="BOOLEAN" />
<result property="isScope" column="IS_SCOPE_" jdbcType="BOOLEAN" />
<result property="isEventScope" column="IS_EVENT_SCOPE_" jdbcType="BOOLEAN" />
<result property="isMultiInstanceRoot" column="IS_MI_ROOT_" jdbcType="BOOLEAN" />
<result property="parentId" column="PARENT_ID_" jdbcType="VARCHAR" />
<result property="superExecutionId" column="SUPER_EXEC_" jdbcType="VARCHAR" />
<result property="rootProcessInstanceId" column="ROOT_PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="suspensionState" column="SUSPENSION_STATE_" jdbcType="INTEGER"/>
<result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR" />
<result property="name" column="NAME_" jdbcType="VARCHAR" />
<result property="startTime" column="START_TIME_" jdbcType="TIMESTAMP" />
<result property="startUserId" column="START_USER_ID_" jdbcType="VARCHAR" />
<result property="isCountEnabled" column="IS_COUNT_ENABLED_" jdbcType="BOOLEAN" />
<result property="eventSubscriptionCount" column="EVT_SUBSCR_COUNT_" jdbcType="INTEGER" />
<result property="taskCount" column="TASK_COUNT_" jdbcType="INTEGER" />
<result property="jobCount" column="JOB_COUNT_" jdbcType="INTEGER" />
<result property="timerJobCount" column="TIMER_JOB_COUNT_" jdbcType="INTEGER" />
<result property="suspendedJobCount" column="SUSP_JOB_COUNT_" jdbcType="INTEGER" />
<result property="deadLetterJobCount" column="DEADLETTER_JOB_COUNT_" jdbcType="INTEGER" />
<result property="variableCount" column="VAR_COUNT_" jdbcType="INTEGER" />
<result property="identityLinkCount" column="ID_LINK_COUNT_" jdbcType="INTEGER" />
<result property="parentProcessInstanceId" column="PARENT_PROC_INST_ID_" jdbcType="VARCHAR"/>
<collection property="queryVariables" column="EXECUTION_ID_" javaType="ArrayList" ofType="org.activiti.engine.impl.persistence.entity.VariableInstanceEntityImpl">
<id property="id" column="VAR_ID_"/>
<result property="name" column="VAR_NAME_" javaType="String" jdbcType="VARCHAR" />
<result property="type" column="VAR_TYPE_" javaType="org.activiti.engine.impl.variable.VariableType" jdbcType="VARCHAR" />
<result property="revision" column="VAR_REV_" jdbcType="INTEGER" />
<result property="processInstanceId" column="VAR_PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="executionId" column="VAR_EXECUTION_ID_" jdbcType="VARCHAR" />
<result property="taskId" column="VAR_TASK_ID_" jdbcType="VARCHAR" />
<result property="byteArrayRef" column="VAR_BYTEARRAY_ID_" typeHandler="ByteArrayRefTypeHandler"/>
<result property="doubleValue" column="VAR_DOUBLE_" jdbcType="DOUBLE" />
<result property="textValue" column="VAR_TEXT_" jdbcType="VARCHAR" />
<result property="textValue2" column="VAR_TEXT2_" jdbcType="VARCHAR" />
<result property="longValue" column="VAR_LONG_" jdbcType="BIGINT" />
</collection>
</resultMap>
<resultMap id="processInstanceAndVariablesResultMap" type="org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl">
<id property="id" column="ID_" jdbcType="VARCHAR" />
<result property="revision" column="REV_" jdbcType="INTEGER" />
<result property="processInstanceId" column="PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="businessKey" column="BUSINESS_KEY_" jdbcType="VARCHAR" />
<result property="processDefinitionId" column="PROC_DEF_ID_" jdbcType="VARCHAR" />
<result property="processDefinitionName" column="ProcessDefinitionName" jdbcType="VARCHAR" />
<result property="processDefinitionKey" column="ProcessDefinitionKey" jdbcType="VARCHAR" />
<result property="processDefinitionVersion" column="ProcessDefinitionVersion" jdbcType="INTEGER" />
<result property="deploymentId" column="DeploymentId" jdbcType="VARCHAR" />
<result property="activityId" column="ACT_ID_" jdbcType="VARCHAR" />
<result property="isActive" column="IS_ACTIVE_" jdbcType="BOOLEAN" />
<result property="isConcurrent" column="IS_CONCURRENT_" jdbcType="BOOLEAN" />
<result property="isScope" column="IS_SCOPE_" jdbcType="BOOLEAN" />
<result property="isEventScope" column="IS_EVENT_SCOPE_" jdbcType="BOOLEAN" />
<result property="isMultiInstanceRoot" column="IS_MI_ROOT_" jdbcType="BOOLEAN" />
<result property="parentId" column="PARENT_ID_" jdbcType="VARCHAR" />
<result property="superExecutionId" column="SUPER_EXEC_" jdbcType="VARCHAR" />
<result property="rootProcessInstanceId" column="ROOT_PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="suspensionState" column="SUSPENSION_STATE_" jdbcType="INTEGER"/>
<result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR" />
<result property="name" column="NAME_" jdbcType="VARCHAR" />
<result property="lockTime" column="LOCK_TIME_" jdbcType="TIMESTAMP" />
<result property="startTime" column="START_TIME_" jdbcType="TIMESTAMP" />
<result property="startUserId" column="START_USER_ID_" jdbcType="VARCHAR" />
<result property="isCountEnabled" column="IS_COUNT_ENABLED_" jdbcType="BOOLEAN" />
<result property="eventSubscriptionCount" column="EVT_SUBSCR_COUNT_" jdbcType="INTEGER" />
<result property="taskCount" column="TASK_COUNT_" jdbcType="INTEGER" />
<result property="jobCount" column="JOB_COUNT_" jdbcType="INTEGER" />
<result property="timerJobCount" column="TIMER_JOB_COUNT_" jdbcType="INTEGER" />
<result property="suspendedJobCount" column="SUSP_JOB_COUNT_" jdbcType="INTEGER" />
<result property="deadLetterJobCount" column="DEADLETTER_JOB_COUNT_" jdbcType="INTEGER" />
<result property="variableCount" column="VAR_COUNT_" jdbcType="INTEGER" />
<result property="identityLinkCount" column="ID_LINK_COUNT_" jdbcType="INTEGER" />
<result property="parentProcessInstanceId" column="PARENT_PROC_INST_ID_" jdbcType="VARCHAR"/>
<collection property="queryVariables" column="EXECUTION_ID_" javaType="ArrayList" ofType="org.activiti.engine.impl.persistence.entity.VariableInstanceEntityImpl">
<id property="id" column="VAR_ID_"/>
<result property="name" column="VAR_NAME_" javaType="String" jdbcType="VARCHAR" />
<result property="type" column="VAR_TYPE_" javaType="org.activiti.engine.impl.variable.VariableType" jdbcType="VARCHAR" />
<result property="revision" column="VAR_REV_" jdbcType="INTEGER" />
<result property="processInstanceId" column="VAR_PROC_INST_ID_" jdbcType="VARCHAR" />
<result property="executionId" column="VAR_EXECUTION_ID_" jdbcType="VARCHAR" />
<result property="taskId" column="VAR_TASK_ID_" jdbcType="VARCHAR" />
<result property="byteArrayRef" column="VAR_BYTEARRAY_ID_" typeHandler="ByteArrayRefTypeHandler"/>
<result property="doubleValue" column="VAR_DOUBLE_" jdbcType="DOUBLE" />
<result property="textValue" column="VAR_TEXT_" jdbcType="VARCHAR" />
<result property="textValue2" column="VAR_TEXT2_" jdbcType="VARCHAR" />
<result property="longValue" column="VAR_LONG_" jdbcType="BIGINT" />
</collection>
</resultMap>
<!-- EXECUTION SELECT -->
<sql id="selectExecutionsFromSql">
select E.*, S.PROC_INST_ID_ AS PARENT_PROC_INST_ID_
from ${prefix}ACT_RU_EXECUTION E LEFT OUTER JOIN ${prefix}ACT_RU_EXECUTION S ON E.SUPER_EXEC_ = S.ID_
</sql>
<select id="selectExecutionsWithSameRootProcessInstanceId" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.ROOT_PROC_INST_ID_ = (select ROOT_PROC_INST_ID_ from ${prefix}ACT_RU_EXECUTION where ID_ = #{parameter})
</select>
<select id="selectExecution" parameterType="string" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.ID_ = #{id, jdbcType=VARCHAR}
</select>
<select id="selectSuperExecution" parameterType="string" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.ID_ = #{id, jdbcType=VARCHAR}
</select>
<select id="selectExecutionsByParentExecutionId" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.PARENT_ID_ = #{parameter}
</select>
<select id="selectExecutionsByRootProcessInstanceId" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.ROOT_PROC_INST_ID_ = #{parameter}
</select>
<select id="selectChildExecutionsByProcessInstanceId" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.PROC_INST_ID_ = #{parameter} and E.PARENT_ID_ is not null
</select>
<select id="selectExecutionsByProcessInstanceId" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.PROC_INST_ID_ = #{parameter}
</select>
<select id="selectProcessInstanceIdsByProcessDefinitionId" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultType="string">
select ID_
from ${prefix}ACT_RU_EXECUTION
where PROC_DEF_ID_ = #{parameter} and PARENT_ID_ is null
</select>
<select id="selectInactiveExecutionsForProcessInstance" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.PROC_INST_ID_ = #{parameter.processInstanceId}
and E.IS_ACTIVE_ = #{parameter.isActive}
</select>
<select id="selectInactiveExecutionsInActivityAndProcessInstance" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.ACT_ID_ = #{parameter.activityId}
and E.PROC_INST_ID_ = #{parameter.processInstanceId}
and E.IS_ACTIVE_ = #{parameter.isActive}
</select>
<select id="selectExecutionsByParentExecutionAndActivityIds" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
<include refid="selectExecutionsFromSql"/>
where E.PARENT_ID_ = #{parameter.parentExecutionId}
and E.ACT_ID_ in
<foreach item="activityId" collection="parameter.activityIds" open="(" separator="," close=")">
#{activityId}
</foreach>
</select>
<select id="selectExecutionsByQueryCriteria" parameterType="org.activiti.engine.impl.ExecutionQueryImpl" resultMap="executionResultMap">
${limitBefore}
select distinct RES.* ${limitBetween}, P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, S.PROC_INST_ID_ AS PARENT_PROC_INST_ID_
<include refid="selectExecutionsByQueryCriteriaSql"/>
${orderBy}
${limitAfter}
</select>
<select id="selectExecutionCountByQueryCriteria" parameterType="org.activiti.engine.impl.ExecutionQueryImpl" resultType="long">
select distinct count(RES.ID_)
<include refid="selectExecutionsByQueryCriteriaSql"/>
</select>
<!-- same as selectExecutionsByQueryCriteria, but with different parameterType -->
<select id="selectProcessInstanceByQueryCriteria" parameterType="org.activiti.engine.impl.ProcessInstanceQueryImpl" resultMap="processInstanceResultMap">
${limitBefore}
select distinct RES.* ${limitBetween}, P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.DEPLOYMENT_ID_ as DeploymentId, S.PROC_INST_ID_ AS PARENT_PROC_INST_ID_
<include refid="selectExecutionsByQueryCriteriaSql"/>
${orderBy}
${limitAfter}
</select>
<select id="selectProcessInstanceCountByQueryCriteria" parameterType="org.activiti.engine.impl.ProcessInstanceQueryImpl" resultType="long">
select count(distinct RES.ID_)
<include refid="selectExecutionsByQueryCriteriaSql"/>
</select>
<sql id="selectExecutionsByQueryCriteriaSql">
from ${prefix}ACT_RU_EXECUTION RES
inner join ${prefix}ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_
left outer join ${prefix}ACT_RU_EXECUTION S on RES.SUPER_EXEC_ = S.ID_
<include refid="commonSelectExecutionsByQueryCriteriaSql"/>
</sql>
<select id="selectProcessInstanceWithVariablesByQueryCriteria" parameterType="org.activiti.engine.impl.ProcessInstanceQueryImpl" resultMap="processInstanceAndVariablesResultMap">
<include refid="selectProcessInstanceWithVariablesByQueryCriteriaColumns"/>
<include refid="selectProcessInstanceWithVariablesByQueryCriteriaSql"/>
${orderBy}
${limitAfter}
</select>
<sql id="selectProcessInstanceWithVariablesByQueryCriteriaColumns">
${limitBefore}
<if test="_databaseId != 'db2' and _databaseId != 'mssql'">
select distinct RES.*, P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.DEPLOYMENT_ID_ as DeploymentId,
S.PROC_INST_ID_ AS PARENT_PROC_INST_ID_,
VAR.ID_ as VAR_ID_, VAR.NAME_ as VAR_NAME_, VAR.TYPE_ as VAR_TYPE_, VAR.REV_ as VAR_REV_,
VAR.PROC_INST_ID_ as VAR_PROC_INST_ID_, VAR.EXECUTION_ID_ as VAR_EXECUTION_ID_, VAR.TASK_ID_ as VAR_TASK_ID_,
VAR.BYTEARRAY_ID_ as VAR_BYTEARRAY_ID_, VAR.DOUBLE_ as VAR_DOUBLE_,
VAR.TEXT_ as VAR_TEXT_, VAR.TEXT2_ as VAR_TEXT2_, VAR.LONG_ as VAR_LONG_
${limitBetween}
</if>
<if test="_databaseId == 'db2' || _databaseId == 'mssql'">
select distinct TEMPRES_ID_ as ID_, TEMPP_KEY_ as ProcessDefinitionKey, TEMPP_ID_ as ProcessDefinitionId, TEMPP_NAME_ as ProcessDefinitionName, TEMPP_VERSION_ as ProcessDefinitionVersion, TEMPP_DEPLOYMENT_ID_ as DeploymentId,
TEMPS_PARENT_PROC_INST_ID_ AS PARENT_PROC_INST_ID_,
TEMPRES_REV_ as REV_, TEMPRES_ACT_ID_ as ACT_ID_,
TEMPRES_BUSINESS_KEY_ as BUSINESS_KEY_, TEMPRES_IS_ACTIVE_ as IS_ACTIVE_,
TEMPRES_IS_CONCURRENT_ as IS_CONCURRENT_, TEMPRES_IS_SCOPE_ as IS_SCOPE_,
TEMPRES_IS_EVENT_SCOPE_ as IS_EVENT_SCOPE_, TEMPRES_IS_MI_ROOT_ as IS_MI_ROOT_,
TEMPRES_PARENT_ID_ as PARENT_ID_, TEMPRES_PROC_INST_ID_ as PROC_INST_ID_,
TEMPRES_SUPER_EXEC_ as SUPER_EXEC_, TEMPRES_PROC_DEF_ID_ as PROC_DEF_ID_,
TEMPRES_NAME_ as NAME_, TEMPRES_TENANT_ID_ as TENANT_ID_,
TEMPRES_SUSPENSION_STATE_ as SUSPENSION_STATE_,
TEMPRES_START_TIME_ as START_TIME_, TEMPRES_START_USER_ID_ as START_USER_ID_,
TEMPRES_IS_COUNT_ENABLED_ as IS_COUNT_ENABLED_,
TEMPRES_EVT_SUBSCR_COUNT_ as EVT_SUBSCR_COUNT_,
TEMPRES_TASK_COUNT_ as TASK_COUNT_,
TEMPRES_JOB_COUNT_ as JOB_COUNT_,
TEMPRES_TIMER_JOB_ as TIMER_JOB_COUNT_,
TEMPRES_SUSP_JOB_COUNT_ as SUSP_JOB_COUNT_,
TEMPRES_DEADLETTER_JOB_COUNT_ as DEADLETTER_JOB_COUNT_,
TEMPRES_VAR_COUNT_ as VAR_COUNT_,
TEMPRES_ID_LINK_COUNT_ as ID_LINK_COUNT_,
TEMPVAR_ID_ as VAR_ID_, TEMPVAR_NAME_ as VAR_NAME_, TEMPVAR_TYPE_ as VAR_TYPE_, TEMPVAR_REV_ as VAR_REV_,
TEMPVAR_PROC_INST_ID_ as VAR_PROC_INST_ID_, TEMPVAR_EXECUTION_ID_ as VAR_EXECUTION_ID_, TEMPVAR_TASK_ID_ as VAR_TASK_ID_,
TEMPVAR_BYTEARRAY_ID_ as VAR_BYTEARRAY_ID_, TEMPVAR_DOUBLE_ as VAR_DOUBLE_,
TEMPVAR_TEXT_ as VAR_TEXT_, TEMPVAR_TEXT2_ as VAR_TEXT2_, TEMPVAR_LONG_ as VAR_LONG_
${limitOuterJoinBetween}
RES.ID_ as TEMPRES_ID_, RES.REV_ as TEMPRES_REV_, P.KEY_ as TEMPP_KEY_, P.ID_ as TEMPP_ID_, P.NAME_ as TEMPP_NAME_, P.VERSION_ as TEMPP_VERSION_, P.DEPLOYMENT_ID_ as TEMPP_DEPLOYMENT_ID_,
S.PROC_INST_ID_ AS TEMPS_PARENT_PROC_INST_ID_,
RES.ACT_ID_ as TEMPRES_ACT_ID_,
RES.PROC_INST_ID_ as TEMPRES_PROC_INST_ID_,
RES.BUSINESS_KEY_ as TEMPRES_BUSINESS_KEY_,
RES.IS_ACTIVE_ as TEMPRES_IS_ACTIVE_,
RES.IS_CONCURRENT_ as TEMPRES_IS_CONCURRENT_,
RES.IS_SCOPE_ as TEMPRES_IS_SCOPE_,
RES.IS_EVENT_SCOPE_ as TEMPRES_IS_EVENT_SCOPE_,
RES.IS_MI_ROOT_ as TEMPRES_IS_MI_ROOT_,
RES.PARENT_ID_ as TEMPRES_PARENT_ID_,
RES.SUPER_EXEC_ as TEMPRES_SUPER_EXEC_,
RES.SUSPENSION_STATE_ as TEMPRES_SUSPENSION_STATE_,
RES.PROC_DEF_ID_ as TEMPRES_PROC_DEF_ID_,
RES.NAME_ as TEMPRES_NAME_,
RES.TENANT_ID_ as TEMPRES_TENANT_ID_,
RES.START_TIME_ as TEMPRES_START_TIME_,
RES.START_USER_ID_ as TEMPRES_START_USER_ID_,
RES.IS_COUNT_ENABLED_ as TEMPRES_IS_COUNT_ENABLED_,
RES.EVT_SUBSCR_COUNT_ as TEMPRES_EVT_SUBSCR_COUNT_,
RES.TASK_COUNT_ as TEMPRES_TASK_COUNT_,
RES.JOB_COUNT_ as TEMPRES_JOB_COUNT_,
RES.TIMER_JOB_COUNT_ as TEMPRES_TIMER_JOB_,
RES.SUSP_JOB_COUNT_ as TEMPRES_SUSP_JOB_COUNT_,
RES.DEADLETTER_JOB_COUNT_ as TEMPRES_DEADLETTER_JOB_COUNT_,
RES.VAR_COUNT_ as TEMPRES_VAR_COUNT_,
RES.ID_LINK_COUNT_ as TEMPRES_ID_LINK_COUNT_,
VAR.ID_ as TEMPVAR_ID_, VAR.NAME_ as TEMPVAR_NAME_, VAR.TYPE_ as TEMPVAR_TYPE_, VAR.REV_ as TEMPVAR_REV_,
VAR.PROC_INST_ID_ as TEMPVAR_PROC_INST_ID_, VAR.EXECUTION_ID_ as TEMPVAR_EXECUTION_ID_, VAR.TASK_ID_ as TEMPVAR_TASK_ID_,
VAR.BYTEARRAY_ID_ as TEMPVAR_BYTEARRAY_ID_, VAR.DOUBLE_ as TEMPVAR_DOUBLE_,
VAR.TEXT_ as TEMPVAR_TEXT_, VAR.TEXT2_ as TEMPVAR_TEXT2_, VAR.LONG_ as TEMPVAR_LONG_
</if>
</sql>
<sql id="selectProcessInstanceWithVariablesByQueryCriteriaSql">
from ${prefix}ACT_RU_EXECUTION RES
inner join ${prefix}ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_
left outer join ${prefix}ACT_RU_EXECUTION S on RES.SUPER_EXEC_ = S.ID_
<if test="includeProcessVariables">
left outer join ${prefix}ACT_RU_VARIABLE VAR ON RES.PROC_INST_ID_ = VAR.EXECUTION_ID_ and VAR.TASK_ID_ is null
</if>
<include refid="commonSelectExecutionsByQueryCriteriaSql"/>
</sql>
<sql id="commonSelectExecutionsByQueryCriteriaSql">
<foreach collection="queryVariableValues" index="index" item="queryVariableValue">
<choose>
<when test="queryVariableValue.local">
inner join ${prefix}ACT_RU_VARIABLE A${index} on RES.ID_ = A${index}.EXECUTION_ID_
</when>
<otherwise>
inner join ${prefix}ACT_RU_VARIABLE A${index} on RES.PROC_INST_ID_ = A${index}.PROC_INST_ID_
</otherwise>
</choose>
</foreach>
<foreach collection="orQueryObjects" index="orIndex" item="orQueryObject">
<if test="orQueryObject.processDefinitionId != null || orQueryObject.processDefinitionKey != null || orQueryObject.processDefinitionVersion != null || orQueryObject.processDefinitionCategory != null || orQueryObject.processDefinitionName != null || (orQueryObject.processDefinitionIds != null && !orQueryObject.processDefinitionIds.isEmpty()) || (orQueryObject.processDefinitionKeys != null && !orQueryObject.processDefinitionKeys.isEmpty())">
inner join ${prefix}ACT_RE_PROCDEF P_OR${orIndex} on RES.PROC_DEF_ID_ = P_OR${orIndex}.ID_
</if>
<if test="orQueryObject.queryVariableValues != null && orQueryObject.queryVariableValues.size() > 0">
left outer join ${prefix}ACT_RU_VARIABLE A_OR${orIndex} on RES.PROC_INST_ID_ = A_OR${orIndex}.PROC_INST_ID_
</if>
<if test="orQueryObject.deploymentId != null || (orQueryObject.deploymentIds != null && orQueryObject.deploymentIds.size() > 0)">
left outer join ${prefix}ACT_RE_PROCDEF DEPLOY_P_OR${orIndex} ON RES.PROC_DEF_ID_ = DEPLOY_P_OR${orIndex}.ID_
</if>
</foreach>
<if test="eventSubscriptions != null">
<foreach collection="eventSubscriptions" index="index" item="eventSubscriptionValue">
inner join ${prefix}ACT_RU_EVENT_SUBSCR EVT${index} on RES.ID_ = EVT${index}.EXECUTION_ID_
</foreach>
</if>
<if test="businessKey != null and includeChildExecutionsWithBusinessKeyQuery">
inner join ${prefix}ACT_RU_EXECUTION INST on RES.PROC_INST_ID_ = INST.ID_
</if>
<if test="deploymentId != null || (deploymentIds != null && deploymentIds.size() > 0)">
left outer join ${prefix}ACT_RE_PROCDEF DEPLOY_P ON RES.PROC_DEF_ID_ = DEPLOY_P.ID_
</if>
<if test="onlyProcessInstances && withJobException">
left outer join ${prefix}ACT_RU_TIMER_JOB JOB ON RES.PROC_INST_ID_ = JOB.PROCESS_INSTANCE_ID_
</if>
<where>
<if test="onlyProcessInstances">
RES.PARENT_ID_ is null
</if>
<if test="processDefinitionId != null">
and P.ID_ = #{processDefinitionId}
</if>
<if test="processDefinitionIds != null and !processDefinitionIds.isEmpty()">
and P.ID_ in
<foreach item="item" index="index" collection="processDefinitionIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="processDefinitionKey != null">
and P.KEY_ = #{processDefinitionKey}
</if>
<if test="processDefinitionKeys != null and !processDefinitionKeys.isEmpty()">
and P.KEY_ in
<foreach item="item" index="index" collection="processDefinitionKeys" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="processDefinitionCategory != null">
and P.CATEGORY_ = #{processDefinitionCategory}
</if>
<if test="processDefinitionName != null">
and P.NAME_ = #{processDefinitionName}
</if>
<if test="processDefinitionVersion != null">
and P.VERSION_ = #{processDefinitionVersion}
</if>
<if test="executionId != null">
and RES.ID_ = #{executionId}
</if>
<if test="processInstanceId != null">
and RES.PROC_INST_ID_ = #{processInstanceId}
</if>
<if test="rootProcessInstanceId != null">
and RES.ROOT_PROC_INST_ID_ = #{rootProcessInstanceId}
</if>
<if test="processInstanceIds != null and !processInstanceIds.isEmpty()">
and RES.PROC_INST_ID_ in
<foreach item="item" index="index" collection="processInstanceIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="businessKey != null and !includeChildExecutionsWithBusinessKeyQuery">
and RES.BUSINESS_KEY_ = #{businessKey}
</if>
<if test="businessKey != null and includeChildExecutionsWithBusinessKeyQuery">
and INST.BUSINESS_KEY_ = #{businessKey}
</if>
<if test="activityId != null">
and RES.ACT_ID_ = #{activityId} and RES.IS_ACTIVE_ = #{isActive}
</if>
<if test="parentId != null">
and RES.PARENT_ID_ = #{parentId}
</if>
<if test="onlyChildExecutions">
and RES.PARENT_ID_ is not null
</if>
<if test="onlySubProcessExecutions">
and ((RES.PARENT_ID_ is not null or RES.SUPER_EXEC_ is not null) and RES.IS_SCOPE_ = #{onlySubProcessExecutions,typeHandler=org.apache.ibatis.type.BooleanTypeHandler})
</if>
<if test="onlyProcessInstanceExecutions">
and RES.PARENT_ID_ is null
</if>
<if test="deploymentId != null">
and DEPLOY_P.DEPLOYMENT_ID_ = #{deploymentId}
</if>
<if test="deploymentIds != null && deploymentIds.size() > 0">
and DEPLOY_P.DEPLOYMENT_ID_ IN
<foreach item="deployment" index="index" collection="deploymentIds"
open="(" separator="," close=")">
#{deployment}
</foreach>
</if>
<if test="superProcessInstanceId != null">
<!-- A sub process instance is stored under a certain *execution*, potentially nested.
A sub process instance is NOT stored under the process instanc, hence the following: -->
and RES.SUPER_EXEC_ IN (select ID_ from ${prefix}ACT_RU_EXECUTION where PROC_INST_ID_ = #{superProcessInstanceId})
</if>
<if test="subProcessInstanceId != null">
and RES.ID_ = (select PROC_INST_ID_ from ${prefix}ACT_RU_EXECUTION where ID_ = (select SUPER_EXEC_ from ${prefix}ACT_RU_EXECUTION where ID_ = #{subProcessInstanceId}))
</if>
<if test="excludeSubprocesses">
and RES.SUPER_EXEC_ is null
</if>
<if test="suspensionState != null">
<if test="suspensionState.stateCode == 1">
and (RES.SUSPENSION_STATE_ = 1)
</if>
<if test="suspensionState.stateCode == 2">
and (RES.SUSPENSION_STATE_ = 2)
</if>
</if>
<if test="tenantId != null">
and RES.TENANT_ID_ = #{tenantId}
</if>
<if test="tenantIdLike != null">
and RES.TENANT_ID_ like #{tenantIdLike}${wildcardEscapeClause}
</if>
<if test="withoutTenantId">
and (RES.TENANT_ID_ = '' or RES.TENANT_ID_ is null)
</if>
<if test="name != null">
and RES.NAME_ = #{name}
</if>
<if test="nameLike != null">
and RES.NAME_ like #{nameLike}${wildcardEscapeClause}
</if>
<if test="nameLikeIgnoreCase != null">
and lower(RES.NAME_) like #{nameLikeIgnoreCase}${wildcardEscapeClause}
</if>
<if test="involvedUser != null">
and EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.PROC_INST_ID_ = RES.ID_ and I.USER_ID_ = #{involvedUser})
</if>
<!-- PLEASE NOTE: If you change anything have a look into the HistoricVariableInstance & HistoricProcessInstance, the same query object is used there! -->
<foreach collection="queryVariableValues" index="index" item="queryVariableValue">
<if test="!queryVariableValue.local">
<!-- When process instance variable is queried for, only process variables are taken into account -->
and A${index}.EXECUTION_ID_ = A${index}.PROC_INST_ID_
</if>
<if test="queryVariableValue.name != null">
<!-- Match-all variable-names when name is null -->
and A${index}.NAME_= #{queryVariableValue.name}
</if>
<if test="!queryVariableValue.type.equals('null')">
<!-- When operator is not-equals or type of value is null, type doesn't matter! -->
and A${index}.TYPE_ = #{queryVariableValue.type}
</if>
<if test="queryVariableValue.textValue != null && queryVariableValue.longValue == null && queryVariableValue.doubleValue == null">
<choose>
<when test="queryVariableValue.operator.equals('EQUALS_IGNORE_CASE') || queryVariableValue.operator.equals('NOT_EQUALS_IGNORE_CASE') || queryVariableValue.operator.equals('LIKE_IGNORE_CASE')">
and lower(A${index}.TEXT_)
</when>
<otherwise>
and A${index}.TEXT_
</otherwise>
</choose>
<choose>
<when test="queryVariableValue.operator.equals('LIKE') || queryVariableValue.operator.equals('LIKE_IGNORE_CASE')">LIKE</when>
<otherwise><include refid="executionVariableOperator" /></otherwise>
</choose>
#{queryVariableValue.textValue}
<choose>
<when test="queryVariableValue.operator.equals('LIKE') || queryVariableValue.operator.equals('LIKE_IGNORE_CASE')">${wildcardEscapeClause}</when>
</choose>
</if>
<if test="queryVariableValue.textValue2 != null">
and A${index}.TEXT2_
<choose>
<when test="queryVariableValue.operator.equals('LIKE')">LIKE</when>
<otherwise><include refid="executionVariableOperator" /></otherwise>
</choose>
#{queryVariableValue.textValue2}
<choose>
<when test="queryVariableValue.operator.equals('LIKE')">${wildcardEscapeClause}</when>
</choose>
</if>
<if test="queryVariableValue.longValue != null">
and A${index}.LONG_
<include refid="executionVariableOperator" />
#{queryVariableValue.longValue}
</if>
<if test="queryVariableValue.doubleValue != null">
and A${index}.DOUBLE_
<include refid="executionVariableOperator" />
#{queryVariableValue.doubleValue}
</if>
<!-- Null variable type -->
<if test="queryVariableValue.textValue == null && queryVariableValue.textValue2 == null && queryVariableValue.longValue == null && queryVariableValue.doubleValue == null">
<choose>
<when test="queryVariableValue.operator.equals('NOT_EQUALS')">
and (A${index}.TEXT_ is not null or A${index}.TEXT2_ is not null or A${index}.LONG_ is not null or A${index}.DOUBLE_ is not null or A${index}.BYTEARRAY_ID_ is not null)
</when>
<otherwise>
and A${index}.TEXT_ is null and A${index}.TEXT2_ is null and A${index}.LONG_ is null and A${index}.DOUBLE_ is null and A${index}.BYTEARRAY_ID_ is null
</otherwise>
</choose>
</if>
</foreach>
<!-- event subscriptions -->
<if test="eventSubscriptions != null">
<foreach collection="eventSubscriptions" index="index" item="eventSubscriptionValue">
and (EVT${index}.EVENT_TYPE_ = #{eventSubscriptionValue.eventType} and EVT${index}.EVENT_NAME_ = #{eventSubscriptionValue.eventName})
</foreach>
</if>
<foreach item="orQueryObject" index="orIndex" collection="orQueryObjects">
and
<trim prefix="(" prefixOverrides="OR" suffix=")">
<if test="orQueryObject.processDefinitionId != null">
P_OR${orIndex}.ID_ = #{orQueryObject.processDefinitionId}
</if>
<if test="orQueryObject.processDefinitionIds != null and !orQueryObject.processDefinitionIds.isEmpty()">
or P_OR${orIndex}.ID_ in
<foreach item="item" index="index" collection="orQueryObject.processDefinitionIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="orQueryObject.processDefinitionKey != null">
or P_OR${orIndex}.KEY_ = #{orQueryObject.processDefinitionKey}
</if>
<if test="orQueryObject.processDefinitionKeys != null and !orQueryObject.processDefinitionKeys.isEmpty()">
or P_OR${orIndex}.KEY_ in
<foreach item="item" index="index" collection="orQueryObject.processDefinitionKeys" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="orQueryObject.processDefinitionCategory != null">
or P_OR${orIndex}.CATEGORY_ = #{orQueryObject.processDefinitionCategory}
</if>
<if test="orQueryObject.processDefinitionName != null">
or P_OR${orIndex}.NAME_ = #{orQueryObject.processDefinitionName}
</if>
<if test="orQueryObject.processDefinitionVersion != null">
or P_OR${orIndex}.VERSION_ = #{orQueryObject.processDefinitionVersion}
</if>
<if test="orQueryObject.executionId != null">
or RES.ID_ = #{orQueryObject.executionId}
</if>
<if test="orQueryObject.processInstanceId != null">
or RES.PROC_INST_ID_ = #{orQueryObject.processInstanceId}
</if>
<if test="orQueryObject.processInstanceIds != null and !orQueryObject.processInstanceIds.isEmpty()">
or RES.PROC_INST_ID_ in
<foreach item="item" index="index" collection="orQueryObject.processInstanceIds" open="(" separator="," close=")">
#{item}
</foreach>
</if>
<if test="orQueryObject.businessKey != null">
or RES.BUSINESS_KEY_ = #{orQueryObject.businessKey}
</if>
<if test="orQueryObject.activityId != null">
or (RES.ACT_ID_ = #{orQueryObject.activityId} and RES.IS_ACTIVE_ = #{isActive})
</if>
<if test="orQueryObject.parentId != null">
or RES.PARENT_ID_ = #{orQueryObject.parentId}
</if>
<if test="orQueryObject.deploymentId != null">
or DEPLOY_P_OR${orIndex}.DEPLOYMENT_ID_ = #{orQueryObject.deploymentId}
</if>
<if test="orQueryObject.deploymentIds != null && orQueryObject.deploymentIds.size() > 0">
or DEPLOY_P_OR${orIndex}.DEPLOYMENT_ID_ IN
<foreach item="deployment" index="index" collection="orQueryObject.deploymentIds"
open="(" separator="," close=")">
#{deployment}
</foreach>
</if>
<if test="orQueryObject.superProcessInstanceId != null">
<!-- A sub process instance is stored under a certain *execution*, potentially nested.
A sub process instance is NOT stored under the process instanc, hence the following: -->
or RES.SUPER_EXEC_ IN (select ID_ from ${prefix}ACT_RU_EXECUTION where PROC_INST_ID_ = #{orQueryObject.superProcessInstanceId})
</if>
<if test="orQueryObject.subProcessInstanceId != null">
or RES.ID_ = (select PROC_INST_ID_ from ${prefix}ACT_RU_EXECUTION where ID_ = (select SUPER_EXEC_ from ${prefix}ACT_RU_EXECUTION where ID_ = #{orQueryObject.subProcessInstanceId}))
</if>
<if test="orQueryObject.excludeSubprocesses">
or RES.SUPER_EXEC_ is null
</if>
<if test="orQueryObject.suspensionState != null">
<if test="orQueryObject.suspensionState.stateCode == 1">
or (RES.SUSPENSION_STATE_ = 1)
</if>
<if test="orQueryObject.suspensionState.stateCode == 2">
or (RES.SUSPENSION_STATE_ = 2)
</if>
</if>
<if test="orQueryObject.tenantId != null">
or RES.TENANT_ID_ = #{orQueryObject.tenantId}
</if>
<if test="orQueryObject.tenantIdLike != null">
or RES.TENANT_ID_ like #{orQueryObject.tenantIdLike}${wildcardEscapeClause}
</if>
<if test="orQueryObject.withoutTenantId">
or (RES.TENANT_ID_ = '' or RES.TENANT_ID_ is null)
</if>
<if test="orQueryObject.name != null">
or RES.NAME_ = #{orQueryObject.name}
</if>
<if test="orQueryObject.nameLike != null">
or RES.NAME_ like #{orQueryObject.nameLike}${wildcardEscapeClause}
</if>
<if test="orQueryObject.nameLikeIgnoreCase != null">
or lower(RES.NAME_) like #{orQueryObject.nameLikeIgnoreCase}${wildcardEscapeClause}
</if>
<if test="orQueryObject.involvedUser != null">
or EXISTS(select ID_ from ${prefix}ACT_RU_IDENTITYLINK I where I.PROC_INST_ID_ = RES.ID_ and I.USER_ID_ = #{orQueryObject.involvedUser})
</if>
<!-- PLEASE NOTE: If you change anything have a look into the HistoricVariableInstance & HistoricProcessInstance, the same query object is used there! -->
<foreach collection="orQueryObject.queryVariableValues" index="index" item="queryVariableValue">
or
<trim prefix="(" prefixOverrides="AND" suffix=")">
<if test="!queryVariableValue.local">
<!-- When process instance variable is queried for, only process variables are taken into account -->
and A_OR${orIndex}.EXECUTION_ID_ = A_OR${orIndex}.PROC_INST_ID_
</if>
<if test="queryVariableValue.name != null">
<!-- Match-all variable-names when name is null -->
and A_OR${orIndex}.NAME_= #{queryVariableValue.name}
</if>
<if test="!queryVariableValue.type.equals('null')">
<!-- When operator is not-equals or type of value is null, type doesn't matter! -->
and A_OR${orIndex}.TYPE_ = #{queryVariableValue.type}
</if>
<if test="queryVariableValue.textValue != null && queryVariableValue.longValue == null && queryVariableValue.doubleValue == null">
<choose>
<when test="queryVariableValue.operator.equals('EQUALS_IGNORE_CASE') || queryVariableValue.operator.equals('NOT_EQUALS_IGNORE_CASE') || queryVariableValue.operator.equals('LIKE_IGNORE_CASE')">
and lower(A_OR${orIndex}.TEXT_)
</when>
<otherwise>
and A_OR${orIndex}.TEXT_
</otherwise>
</choose>
<choose>
<when test="queryVariableValue.operator.equals('LIKE') || queryVariableValue.operator.equals('LIKE_IGNORE_CASE')">LIKE</when>
<otherwise><include refid="executionVariableOperator" /></otherwise>
</choose>
#{queryVariableValue.textValue}
<choose>
<when test="queryVariableValue.operator.equals('LIKE') || queryVariableValue.operator.equals('LIKE_IGNORE_CASE')">${wildcardEscapeClause}</when>
</choose>
</if>
<if test="queryVariableValue.textValue2 != null">
and A_OR${orIndex}.TEXT2_
<choose>
<when test="queryVariableValue.operator.equals('LIKE')">LIKE</when>
<otherwise><include refid="executionVariableOperator" /></otherwise>
</choose>
#{queryVariableValue.textValue2}
<choose>
<when test="queryVariableValue.operator.equals('LIKE')">${wildcardEscapeClause}</when>
</choose>
</if>
<if test="queryVariableValue.longValue != null">
and A_OR${orIndex}.LONG_
<include refid="executionVariableOperator" />
#{queryVariableValue.longValue}
</if>
<if test="queryVariableValue.doubleValue != null">
and A_OR${orIndex}.DOUBLE_
<include refid="executionVariableOperator" />
#{queryVariableValue.doubleValue}
</if>
<!-- Null variable type -->
<if test="queryVariableValue.textValue == null && queryVariableValue.textValue2 == null && queryVariableValue.longValue == null && queryVariableValue.doubleValue == null">
<choose>
<when test="queryVariableValue.operator.equals('NOT_EQUALS')">
and (A_OR${orIndex}.TEXT_ is not null or A_OR${orIndex}.TEXT2_ is not null or A_OR${orIndex}.LONG_ is not null or A_OR${orIndex}.DOUBLE_ is not null or A_OR${orIndex}.BYTEARRAY_ID_ is not null)
</when>
<otherwise>
and A_OR${orIndex}.TEXT_ is null and A_OR${orIndex}.TEXT2_ is null and A_OR${orIndex}.LONG_ is null and A_OR${orIndex}.DOUBLE_ is null and A_OR${orIndex}.BYTEARRAY_ID_ is null
</otherwise>
</choose>
</if>
</trim>
</foreach>
</trim>
</foreach>
<if test="onlyProcessInstances && withJobException">
and (JOB.EXCEPTION_MSG_ is not null or JOB.EXCEPTION_STACK_ID_ is not null)
</if>
<if test="startedBefore != null">
and RES.START_TIME_ <= #{startedBefore}
</if>
<if test="startedAfter != null">
and RES.START_TIME_ >= #{startedAfter}
</if>
<if test="startedBy != null">
and RES.START_USER_ID_ = #{startedBy}
</if>
</where>
</sql>
<sql id="executionVariableOperator">
<choose>
<when test="queryVariableValue.operator.equals('EQUALS')">=</when>
<when test="queryVariableValue.operator.equals('EQUALS_IGNORE_CASE')">=</when>
<when test="queryVariableValue.operator.equals('NOT_EQUALS')"><></when>
<when test="queryVariableValue.operator.equals('NOT_EQUALS_IGNORE_CASE')"><></when>
<when test="queryVariableValue.operator.equals('GREATER_THAN')">></when>
<when test="queryVariableValue.operator.equals('GREATER_THAN_OR_EQUAL')">>=</when>
<when test="queryVariableValue.operator.equals('LESS_THAN')"><</when>
<when test="queryVariableValue.operator.equals('LESS_THAN_OR_EQUAL')"><=</when>
</choose>
</sql>
<select id="selectSubProcessInstanceBySuperExecutionId" parameterType="string" resultMap="executionResultMap">
select *
from ${prefix}ACT_RU_EXECUTION
where SUPER_EXEC_ = #{parameter}
</select>
<select id="selectExecutionByNativeQuery" parameterType="java.util.Map" resultMap="executionResultMap">
<include refid="org.activiti.engine.db.common.selectByNativeQuery"/>
</select>
<select id="selectExecutionCountByNativeQuery" parameterType="java.util.Map" resultType="long">
${sql}
</select>
</mapper>