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.HistoricProcessInstance.xml Maven / Gradle / Ivy
<?xml version="1.0" encoding="UTF-8" ?>
<!--
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<!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.HistoricProcessInstanceEntityImpl">
<!-- HISTORIC PROCESS INSTANCE INSERT -->
<insert id="insertHistoricProcessInstance" parameterType="org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntityImpl">
insert into ${prefix}ACT_HI_PROCINST (
ID_,
PROC_INST_ID_,
BUSINESS_KEY_,
PROC_DEF_ID_,
START_TIME_,
END_TIME_,
DURATION_,
START_USER_ID_,
START_ACT_ID_,
END_ACT_ID_,
SUPER_PROCESS_INSTANCE_ID_,
DELETE_REASON_,
TENANT_ID_,
NAME_
) values (
#{id ,jdbcType=VARCHAR},
#{processInstanceId, jdbcType=VARCHAR},
#{businessKey, jdbcType=VARCHAR},
#{processDefinitionId, jdbcType=VARCHAR},
#{startTime, jdbcType=TIMESTAMP},
#{endTime, jdbcType=TIMESTAMP},
#{durationInMillis ,jdbcType=BIGINT},
#{startUserId, jdbcType=VARCHAR},
#{startActivityId, jdbcType=VARCHAR},
#{endActivityId, jdbcType=VARCHAR},
#{superProcessInstanceId, jdbcType=VARCHAR},
#{deleteReason, jdbcType=VARCHAR},
#{tenantId, jdbcType=VARCHAR},
#{name, jdbcType=VARCHAR}
)
</insert>
<insert id="bulkInsertHistoricProcessInstance" parameterType="java.util.List">
insert into ${prefix}ACT_HI_PROCINST (
ID_,
PROC_INST_ID_,
BUSINESS_KEY_,
PROC_DEF_ID_,
START_TIME_,
END_TIME_,
DURATION_,
START_USER_ID_,
START_ACT_ID_,
END_ACT_ID_,
SUPER_PROCESS_INSTANCE_ID_,
DELETE_REASON_,
TENANT_ID_,
NAME_
) values
<foreach collection="list" item="historicProcessInstance" index="index" separator=",">
(#{historicProcessInstance.id ,jdbcType=VARCHAR},
#{historicProcessInstance.processInstanceId, jdbcType=VARCHAR},
#{historicProcessInstance.businessKey, jdbcType=VARCHAR},
#{historicProcessInstance.processDefinitionId, jdbcType=VARCHAR},
#{historicProcessInstance.startTime, jdbcType=TIMESTAMP},
#{historicProcessInstance.endTime, jdbcType=TIMESTAMP},
#{historicProcessInstance.durationInMillis ,jdbcType=BIGINT},
#{historicProcessInstance.startUserId, jdbcType=VARCHAR},
#{historicProcessInstance.startActivityId, jdbcType=VARCHAR},
#{historicProcessInstance.endActivityId, jdbcType=VARCHAR},
#{historicProcessInstance.superProcessInstanceId, jdbcType=VARCHAR},
#{historicProcessInstance.deleteReason, jdbcType=VARCHAR},
#{historicProcessInstance.tenantId, jdbcType=VARCHAR},
#{historicProcessInstance.name, jdbcType=VARCHAR})
</foreach>
</insert>
<insert id="bulkInsertHistoricProcessInstance" databaseId="oracle" parameterType="java.util.List">
INSERT ALL
<foreach collection="list" item="historicProcessInstance" index="index">
INTO ${prefix}ACT_HI_PROCINST (
ID_,
PROC_INST_ID_,
BUSINESS_KEY_,
PROC_DEF_ID_,
START_TIME_,
END_TIME_,
DURATION_,
START_USER_ID_,
START_ACT_ID_,
END_ACT_ID_,
SUPER_PROCESS_INSTANCE_ID_,
DELETE_REASON_,
TENANT_ID_,
NAME_
) VALUES
(#{historicProcessInstance.id ,jdbcType=VARCHAR},
#{historicProcessInstance.processInstanceId, jdbcType=VARCHAR},
#{historicProcessInstance.businessKey, jdbcType=VARCHAR},
#{historicProcessInstance.processDefinitionId, jdbcType=VARCHAR},
#{historicProcessInstance.startTime, jdbcType=TIMESTAMP},
#{historicProcessInstance.endTime, jdbcType=TIMESTAMP},
#{historicProcessInstance.durationInMillis ,jdbcType=BIGINT},
#{historicProcessInstance.startUserId, jdbcType=VARCHAR},
#{historicProcessInstance.startActivityId, jdbcType=VARCHAR},
#{historicProcessInstance.endActivityId, jdbcType=VARCHAR},
#{historicProcessInstance.superProcessInstanceId, jdbcType=VARCHAR},
#{historicProcessInstance.deleteReason, jdbcType=VARCHAR},
#{historicProcessInstance.tenantId, jdbcType=VARCHAR},
#{historicProcessInstance.name, jdbcType=VARCHAR})
</foreach>
SELECT * FROM dual
</insert>
<!-- HISTORIC PROCESS INSTANCE UPDATE -->
<update id="updateHistoricProcessInstance" parameterType="org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntityImpl">
update ${prefix}ACT_HI_PROCINST set
PROC_DEF_ID_ = #{processDefinitionId, jdbcType=VARCHAR},
BUSINESS_KEY_ = #{businessKey, jdbcType=VARCHAR},
START_TIME_ = #{startTime, jdbcType=TIMESTAMP},
END_TIME_ = #{endTime, jdbcType=TIMESTAMP},
DURATION_ = #{durationInMillis ,jdbcType=BIGINT},
END_ACT_ID_ = #{endActivityId, jdbcType=VARCHAR},
DELETE_REASON_ = #{deleteReason, jdbcType=VARCHAR},
NAME_ = #{name, jdbcType=VARCHAR}
where ID_ = #{id}
</update>
<!-- HISTORIC PROCESS INSTANCE DELETE -->
<delete id="deleteHistoricProcessInstance">
delete from ${prefix}ACT_HI_PROCINST where PROC_INST_ID_ = #{processInstanceId}
</delete>
<delete id="bulkDeleteHistoricProcessInstance" parameterType="java.util.Collection">
delete from ${prefix}ACT_HI_PROCINST where
<foreach item="procInst" collection="list" index="index" separator=" or ">
ID_ = #{procInst.id, jdbcType=VARCHAR}
</foreach>
</delete>
<!-- HISTORIC PROCESS INSTANCE RESULT MAP -->
<resultMap id="historicProcessInstanceResultMap" type="org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntityImpl">
<id property="id" column="ID_" jdbcType="VARCHAR" />
<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="PROC_DEF_NAME_" jdbcType="VARCHAR" />
<result property="processDefinitionKey" column="PROC_DEF_KEY_" jdbcType="VARCHAR" />
<result property="processDefinitionVersion" column="PROC_DEF_VERSION_" jdbcType="INTEGER" />
<result property="deploymentId" column="DEPLOYMENT_ID_" jdbcType="VARCHAR" />
<result property="startTime" column="START_TIME_" jdbcType="TIMESTAMP" />
<result property="endTime" column="END_TIME_" jdbcType="TIMESTAMP" />
<result property="durationInMillis" column="DURATION_" jdbcType="BIGINT" />
<result property="startUserId" column="START_USER_ID_" jdbcType="VARCHAR" />
<result property="startActivityId" column="START_ACT_ID_" jdbcType="VARCHAR" />
<result property="endActivityId" column="END_ACT_ID_" jdbcType="VARCHAR" />
<result property="superProcessInstanceId" column="SUPER_PROCESS_INSTANCE_ID_" jdbcType="VARCHAR" />
<result property="deleteReason" column="DELETE_REASON_" jdbcType="VARCHAR" />
<result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR" />
<result property="name" column="NAME_" jdbcType="VARCHAR" />
</resultMap>
<resultMap id="historicProcessInstanceAndVariablesResultMap" type="org.activiti.engine.impl.persistence.entity.HistoricProcessInstanceEntityImpl">
<id property="id" column="ID_" jdbcType="VARCHAR" />
<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="PROC_DEF_NAME_" jdbcType="VARCHAR" />
<result property="processDefinitionKey" column="PROC_DEF_KEY_" jdbcType="VARCHAR" />
<result property="processDefinitionVersion" column="PROC_DEF_VERSION_" jdbcType="INTEGER" />
<result property="deploymentId" column="DEPLOYMENT_ID_" jdbcType="VARCHAR" />
<result property="startTime" column="START_TIME_" jdbcType="TIMESTAMP" />
<result property="endTime" column="END_TIME_" jdbcType="TIMESTAMP" />
<result property="durationInMillis" column="DURATION_" jdbcType="BIGINT" />
<result property="startUserId" column="START_USER_ID_" jdbcType="VARCHAR" />
<result property="startActivityId" column="START_ACT_ID_" jdbcType="VARCHAR" />
<result property="endActivityId" column="END_ACT_ID_" jdbcType="VARCHAR" />
<result property="superProcessInstanceId" column="SUPER_PROCESS_INSTANCE_ID_" jdbcType="VARCHAR" />
<result property="deleteReason" column="DELETE_REASON_" jdbcType="VARCHAR" />
<result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR" />
<result property="name" column="NAME_" jdbcType="VARCHAR" />
<collection property="queryVariables" column="EXECUTION_ID_" javaType="ArrayList" ofType="org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntityImpl">
<id property="id" column="VAR_ID_"/>
<result property="name" column="VAR_NAME_" javaType="String" jdbcType="VARCHAR" />
<result property="variableType" 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>
<!-- HISTORIC PROCESS INSTANCE SELECT -->
<select id="selectHistoricProcessInstance" resultMap="historicProcessInstanceResultMap">
select * from ${prefix}ACT_HI_PROCINST where PROC_INST_ID_ = #{processInstanceId, jdbcType=VARCHAR}
</select>
<select id="selectHistoricProcessInstanceIdsByProcessDefinitionId" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultType="string">
select ID_
from ${prefix}ACT_HI_PROCINST
where PROC_DEF_ID_ = #{parameter}
</select>
<select id="selectHistoricProcessInstanceIdsBySuperProcessInstanceId" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" resultMap="historicProcessInstanceResultMap">
select *
from ${prefix}ACT_HI_PROCINST
where SUPER_PROCESS_INSTANCE_ID_ = #{parameter}
</select>
<select id="selectHistoricProcessInstancesByQueryCriteria" parameterType="org.activiti.engine.impl.HistoricProcessInstanceQueryImpl" resultMap="historicProcessInstanceResultMap">
${limitBefore}
select distinct RES.* ${limitBetween}, DEF.KEY_ as PROC_DEF_KEY_, DEF.NAME_ as PROC_DEF_NAME_, DEF.VERSION_ as PROC_DEF_VERSION_, DEF.DEPLOYMENT_ID_ as DEPLOYMENT_ID_
<include refid="selectHistoricProcessInstancesByQueryCriteriaSql"/>
${orderBy}
${limitAfter}
</select>
<select id="selectHistoricProcessInstanceCountByQueryCriteria" parameterType="org.activiti.engine.impl.HistoricProcessInstanceQueryImpl" resultType="long">
select count(distinct RES.ID_)
<include refid="selectHistoricProcessInstancesByQueryCriteriaSql"/>
</select>
<sql id="selectHistoricProcessInstancesByQueryCriteriaSql">
from ${prefix}ACT_HI_PROCINST RES
left outer join ${prefix}ACT_RE_PROCDEF DEF on RES.PROC_DEF_ID_ = DEF.ID_
<include refid="commonSelectHistoricProcessInstancesByQueryCriteriaSql"/>
</sql>
<select id="selectHistoricProcessInstancesWithVariablesByQueryCriteria" parameterType="org.activiti.engine.impl.HistoricProcessInstanceQueryImpl" resultMap="historicProcessInstanceAndVariablesResultMap">
<include refid="selectHistoricProcessInstancesWithVariablesByQueryCriteriaColumns"/>
<include refid="selectHistoricProcessInstancesWithVariablesByQueryCriteriaSql"/>
${orderBy}
${limitAfter}
</select>
<sql id="selectHistoricProcessInstancesWithVariablesByQueryCriteriaColumns">
${limitBefore}
<if test="_databaseId != 'db2' and _databaseId != 'mssql'">
select distinct RES.*, DEF.KEY_ as PROC_DEF_KEY_, DEF.NAME_ as PROC_DEF_NAME_, DEF.VERSION_ as PROC_DEF_VERSION_, DEF.DEPLOYMENT_ID_ as DEPLOYMENT_ID_,
VAR.ID_ as VAR_ID_,
VAR.NAME_ as VAR_NAME_,
VAR.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.LAST_UPDATED_TIME_ as VAR_LAST_UPDATED_TIME_,
VAR.LONG_ as VAR_LONG_
${limitBetween}
</if>
<if test="_databaseId == 'db2' || _databaseId == 'mssql'">
select distinct TEMPRES_ID_ as ID_,
TEMPRES_BUSINESS_KEY_ as BUSINESS_KEY_,
TEMPRES_PROC_DEF_ID_ as PROC_DEF_ID_,
TEMPRES_START_TIME_ as START_TIME_,
TEMPRES_END_TIME_ as END_TIME_,
TEMPRES_DURATION_ as DURATION_,
TEMPRES_START_USER_ID_ as START_USER_ID_,
TEMPRES_START_ACT_ID_ as START_ACT_ID_,
TEMPRES_END_ACT_ID_ as END_ACT_ID_,
TEMPRES_SUPER_PROCESS_INSTANCE_ID_ as SUPER_PROCESS_INSTANCE_ID_,
TEMPRES_DELETE_REASON_ as DELETE_REASON_,
TEMPRES_NAME_ as NAME_,
TEMPRES_TENANT_ID_ as TENANT_ID_,
TEMPRES_PROC_DEF_KEY_ as PROC_DEF_KEY_,
TEMPRES_PROC_DEF_NAME_ as PROC_DEF_NAME_,
TEMPRES_PROC_DEF_VERSION_ as PROC_DEF_VERSION_,
TEMPRES_DEPLOYMENT_ID_ as DEPLOYMENT_ID_,
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_LAST_UPDATED_TIME_ as VAR_LAST_UPDATED_TIME_,
TEMPVAR_LONG_ as VAR_LONG_
${limitOuterJoinBetween}
RES.ID_ as TEMPRES_ID_,
RES.BUSINESS_KEY_ as TEMPRES_BUSINESS_KEY_,
RES.PROC_DEF_ID_ as TEMPRES_PROC_DEF_ID_,
RES.PROC_INST_ID_ as TEMPRES_PROC_INST_ID_,
RES.START_TIME_ as TEMPRES_START_TIME_,
RES.END_TIME_ as TEMPRES_END_TIME_,
RES.DURATION_ as TEMPRES_DURATION_,
RES.START_USER_ID_ as TEMPRES_START_USER_ID_,
RES.START_ACT_ID_ as TEMPRES_START_ACT_ID_,
RES.END_ACT_ID_ as TEMPRES_END_ACT_ID_,
RES.SUPER_PROCESS_INSTANCE_ID_ as TEMPRES_SUPER_PROCESS_INSTANCE_ID_,
RES.DELETE_REASON_ as TEMPRES_DELETE_REASON_,
RES.NAME_ as TEMPRES_NAME_,
RES.TENANT_ID_ as TEMPRES_TENANT_ID_,
DEF.KEY_ as TEMPRES_PROC_DEF_KEY_,
DEF.NAME_ as TEMPRES_PROC_DEF_NAME_,
DEF.VERSION_ as TEMPRES_PROC_DEF_VERSION_,
DEF.DEPLOYMENT_ID_ as TEMPRES_DEPLOYMENT_ID_,
VAR.ID_ as TEMPVAR_ID_,
VAR.NAME_ as TEMPVAR_NAME_,
VAR.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.LAST_UPDATED_TIME_ as TEMPVAR_LAST_UPDATED_TIME_,
VAR.LONG_ as TEMPVAR_LONG_
</if>
</sql>
<sql id="selectHistoricProcessInstancesWithVariablesByQueryCriteriaSql">
from ${prefix}ACT_HI_PROCINST RES
left outer join ${prefix}ACT_RE_PROCDEF DEF on RES.PROC_DEF_ID_ = DEF.ID_
<if test="includeProcessVariables">
left outer join ${prefix}ACT_HI_VARINST VAR ON RES.PROC_INST_ID_ = VAR.EXECUTION_ID_ and VAR.TASK_ID_ is null
</if>
<include refid="commonSelectHistoricProcessInstancesByQueryCriteriaSql"/>
</sql>
<sql id="commonSelectHistoricProcessInstancesByQueryCriteriaSql">
<foreach collection="queryVariableValues" index="index" item="queryVariableValue">
inner join ${prefix}ACT_HI_VARINST A${index} on RES.PROC_INST_ID_ = A${index}.PROC_INST_ID_
</foreach>
<foreach collection="orQueryObjects" index="orIndex" item="orQueryObject">
<if test="orQueryObject.processKeyNotIn != null || orQueryObject.processDefinitionKey != null || orQueryObject.processDefinitionCategory != null || orQueryObject.processDefinitionName != null || orQueryObject.processDefinitionVersion != null || (orQueryObject.processDefinitionKeyIn != null && orQueryObject.processDefinitionKeyIn.size() > 0)">
inner join ${prefix}ACT_RE_PROCDEF DEF_OR${orIndex} on RES.PROC_DEF_ID_ = DEF_OR${orIndex}.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>
<if test="orQueryObject.queryVariableValues != null && orQueryObject.queryVariableValues.size() > 0">
left outer join ${prefix}ACT_HI_VARINST A_OR${orIndex} on RES.PROC_INST_ID_ = A_OR${orIndex}.PROC_INST_ID_
</if>
</foreach>
<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="withJobException">
left outer join ${prefix}ACT_RU_TIMER_JOB JOB ON RES.PROC_INST_ID_ = JOB.PROCESS_INSTANCE_ID_
</if>
<where>
<if test="processInstanceId != null">
RES.PROC_INST_ID_ = #{processInstanceId}
</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="processDefinitionId != null">
and RES.PROC_DEF_ID_ = #{processDefinitionId}
</if>
<if test="processDefinitionKey != null">
and DEF.KEY_ = #{processDefinitionKey}
</if>
<if test="processDefinitionKeyIn != null && processDefinitionKeyIn.size() > 0">
and DEF.KEY_ IN
<foreach item="definition" index="index" collection="processDefinitionKeyIn"
open="(" separator="," close=")">
#{definition}
</foreach>
</if>
<if test="processDefinitionVersion != null">
and DEF.VERSION_ = #{processDefinitionVersion}
</if>
<if test="processDefinitionCategory != null">
and DEF.CATEGORY_ = #{processDefinitionCategory}
</if>
<if test="processDefinitionName != null">
and DEF.NAME_ = #{processDefinitionName}
</if>
<if test="businessKey != null">
and RES.BUSINESS_KEY_ = #{businessKey}
</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="startedBefore != null">
and RES.START_TIME_ <= #{startedBefore}
</if>
<if test="startedAfter != null">
and RES.START_TIME_ >= #{startedAfter}
</if>
<if test="finishedBefore != null">
and RES.END_TIME_ <= #{finishedBefore}
</if>
<if test="finishedAfter != null">
and RES.END_TIME_ >= #{finishedAfter}
</if>
<if test="processKeyNotIn != null">
<foreach collection="processKeyNotIn" index="index" item="procDefKey">
and DEF.KEY_ not like #{procDefKey}${wildcardEscapeClause}
</foreach>
</if>
<if test="unfinished">
and RES.END_TIME_ IS NULL
</if>
<if test="finished">
and RES.END_TIME_ is not NULL
</if>
<if test="notDeleted">
and RES.DELETE_REASON_ IS NULL
</if>
<if test="deleted">
and RES.DELETE_REASON_ IS NOT NULL
</if>
<if test="involvedUser != null">
and (
exists(select LINK.USER_ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where USER_ID_ = #{involvedUser} and LINK.PROC_INST_ID_ = RES.ID_)
)
</if>
<if test="startedBy != null">
and RES.START_USER_ID_ = #{startedBy}
</if>
<if test="superProcessInstanceId != null">
and RES.SUPER_PROCESS_INSTANCE_ID_ = #{superProcessInstanceId}
</if>
<if test="excludeSubprocesses">
and RES.SUPER_PROCESS_INSTANCE_ID_ is null
</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>
<foreach collection="queryVariableValues" index="index" item="queryVariableValue">
<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}.VAR_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>
<foreach item="orQueryObject" index="orIndex" collection="orQueryObjects">
and
<trim prefix="(" prefixOverrides="OR" suffix=")">
<if test="orQueryObject.processInstanceId != null">
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.processDefinitionId != null">
or RES.PROC_DEF_ID_ = #{orQueryObject.processDefinitionId}
</if>
<if test="orQueryObject.processDefinitionKey != null">
or DEF_OR${orIndex}.KEY_ = #{orQueryObject.processDefinitionKey}
</if>
<if test="orQueryObject.processDefinitionKeyIn != null && orQueryObject.processDefinitionKeyIn.size() > 0">
or DEF_OR${orIndex}.KEY_ IN
<foreach item="definition" index="index" collection="orQueryObject.processDefinitionKeyIn"
open="(" separator="," close=")">
#{definition}
</foreach>
</if>
<if test="orQueryObject.processDefinitionVersion != null">
or DEF_OR${orIndex}.VERSION_ = #{orQueryObject.processDefinitionVersion}
</if>
<if test="orQueryObject.processDefinitionCategory != null">
or DEF_OR${orIndex}.CATEGORY_ = #{orQueryObject.processDefinitionCategory}
</if>
<if test="orQueryObject.processDefinitionName != null">
or DEF_OR${orIndex}.NAME_ = #{orQueryObject.processDefinitionName}
</if>
<if test="orQueryObject.businessKey != null">
or RES.BUSINESS_KEY_ = #{orQueryObject.businessKey}
</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.startedBefore != null">
or RES.START_TIME_ <= #{orQueryObject.startedBefore}
</if>
<if test="orQueryObject.startedAfter != null">
or RES.START_TIME_ >= #{orQueryObject.startedAfter}
</if>
<if test="orQueryObject.finishedBefore != null">
or (RES.END_TIME_ is not NULL and RES.END_TIME_ <= #{orQueryObject.finishedBefore})
</if>
<if test="orQueryObject.finishedAfter != null">
or (RES.END_TIME_ is not NULL and RES.END_TIME_ >= #{orQueryObject.finishedAfter})
</if>
<if test="orQueryObject.processKeyNotIn != null">
or
<trim prefix="(" prefixOverrides="AND" suffix=")">
<foreach collection="orQueryObject.processKeyNotIn" index="index" item="procDefKey">
and DEF_OR${orIndex}.KEY_ not like #{procDefKey}${wildcardEscapeClause}
</foreach>
</trim>
</if>
<if test="orQueryObject.unfinished">
or RES.END_TIME_ IS NULL
</if>
<if test="orQueryObject.finished">
or RES.END_TIME_ is not NULL
</if>
<if test="orQueryObject.notDeleted">
or RES.DELETE_REASON_ IS NULL
</if>
<if test="orQueryObject.deleted">
or RES.DELETE_REASON_ IS NOT NULL
</if>
<if test="orQueryObject.involvedUser != null">
or (
exists(select LINK.USER_ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where USER_ID_ = #{orQueryObject.involvedUser} and LINK.PROC_INST_ID_ = RES.ID_)
)
</if>
<if test="orQueryObject.startedBy != null">
or RES.START_USER_ID_ = #{orQueryObject.startedBy}
</if>
<if test="orQueryObject.superProcessInstanceId != null">
or RES.SUPER_PROCESS_INSTANCE_ID_ = #{orQueryObject.superProcessInstanceId}
</if>
<if test="orQueryObject.excludeSubprocesses">
or RES.SUPER_PROCESS_INSTANCE_ID_ is null
</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>
<foreach collection="orQueryObject.queryVariableValues" index="index" item="queryVariableValue">
or
<trim prefix="(" prefixOverrides="AND" suffix=")">
<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}.VAR_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="withJobException">
and (JOB.EXCEPTION_MSG_ is not null or JOB.EXCEPTION_STACK_ID_ is not null)
</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="selectHistoricProcessInstanceByNativeQuery" parameterType="java.util.Map" resultMap="historicProcessInstanceResultMap">
<include refid="org.activiti.engine.db.common.selectByNativeQuery"/>
</select>
<select id="selectHistoricProcessInstanceCountByNativeQuery" parameterType="java.util.Map" resultType="long">
${sql}
</select>
</mapper>