问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用了activiti数据表还需要+状态字段吗

发布网友 发布时间:2022-04-08 18:38

我来回答

3个回答

懂视网 时间:2022-04-08 22:59

)activiti的历史任务是单独的表来储存,表之间没有任何外间关联,从以上模型就可以看出 1、ACT_HI_ACTINST 流程活动历史记录信息 2、ACT_HI_ATTACHMENT 3、ACT_HI_COMMENT 流程评论信息 4、ACT_HI_DETAIL 流程明细信息 5、ACT_HI_IDENTITYLINK 流程身份关系信息 6、ACT_HI_PROCINST 流程历史信息 7、ACT_HI_TASKINST 任务历史信息 8、ACT_HI_VARINST 历史流程中的参数 2)historyService可查询历史数据表(可查询以上这些表,与流程历史相关数据的查询都可以通过<span style="font-family: Arial, Helvetica, sans-serif;">historyService来查询</span>) 1、historyService.createHistoricActivityInstanceQuery(); //查询ACT_HI_ACTINST表 2、historyService.createHistoricDetailQuery(); //查询ACT_HI_DETAIL表 3、historyService.createHistoricProcessInstanceQuery(); //查询ACT_HI_PROCINST表 4、historyService.createHistoricTaskInstanceQuery(); //查询ACT_HI_TASKINST表 5、historyService.createHistoricVariableInstanceQuery(); //查询ACT_HI_VARINST表

activiti其中数据的查询和判断都是类似的!在这里就不过多介绍了。

下面是actviti中mybatis的映射配置:

<?xml version="1.0" encoding="UTF-8"?> 
 
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
 
<configuration> 
 <settings> 
 <setting name="lazyLoadingEnabled" value="false" /> 
 </settings> 
 <typeAliases> 
 <typeAlias type="org.activiti.engine.impl.persistence.ByteArrayRefTypeHandler" alias="ByteArrayRefTypeHandler"/> 
 </typeAliases> 
 <typeHandlers> 
 <typeHandler handler="ByteArrayRefTypeHandler" 
   javaType="org.activiti.engine.impl.persistence.entity.ByteArrayRef" 
   jdbcType="VARCHAR"/> 
 </typeHandlers> 
 <mappers> 
 <mapper resource="org/activiti/db/mapping/entity/Attachment.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/ByteArray.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Comment.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Deployment.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Execution.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Group.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/HistoricActivityInstance.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/HistoricDetail.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/HistoricProcessInstance.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/HistoricVariableInstance.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/HistoricTaskInstance.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/HistoricIdentityLink.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/IdentityInfo.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/IdentityLink.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Job.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Membership.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Model.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/ProcessDefinition.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Property.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Resource.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/TableData.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/Task.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/User.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/VariableInstance.xml" /> 
 <mapper resource="org/activiti/db/mapping/entity/EventSubscription.xml" /> 
 </mappers> 
</configuration> 

下面是就那其中一个映射配置来说明,如HistoricProcessInstance.xml:

<?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.HistoricTaskInstanceEntity"> 
 
 <!-- HISTORIC TASK INSTANCE INSERT --> 
 
 <insert id="insertHistoricTaskInstance" parameterType="org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity"> 
 insert into ${prefix}ACT_HI_TASKINST ( 
 ID_, 
 PROC_DEF_ID_, 
 PROC_INST_ID_, 
 EXECUTION_ID_, 
 NAME_, 
 PARENT_TASK_ID_, 
 DESCRIPTION_, 
 OWNER_, 
 ASSIGNEE_, 
 START_TIME_, 
 CLAIM_TIME_, 
 END_TIME_, 
 DURATION_, 
 DELETE_REASON_, 
 TASK_DEF_KEY_, 
 FORM_KEY_, 
 PRIORITY_, 
 DUE_DATE_, 
 CATEGORY_, 
 TENANT_ID_ 
 ) values ( 
 #{id ,jdbcType=VARCHAR}, 
 #{processDefinitionId, jdbcType=VARCHAR}, 
 #{processInstanceId, jdbcType=VARCHAR}, 
 #{executionId, jdbcType=VARCHAR}, 
 #{name ,jdbcType=VARCHAR}, 
 #{parentTaskId ,jdbcType=VARCHAR}, 
 #{description ,jdbcType=VARCHAR}, 
 #{owner ,jdbcType=VARCHAR}, 
 #{assignee ,jdbcType=VARCHAR}, 
 #{startTime, jdbcType=TIMESTAMP}, 
 #{claimTime, jdbcType=TIMESTAMP}, 
 #{endTime, jdbcType=TIMESTAMP}, 
 #{durationInMillis ,jdbcType=BIGINT}, 
 #{deleteReason ,jdbcType=VARCHAR}, 
 #{taskDefinitionKey ,jdbcType=VARCHAR}, 
 #{formKey ,jdbcType=VARCHAR}, 
 #{priority, jdbcType=INTEGER}, 
 #{dueDate, jdbcType=TIMESTAMP}, 
 #{category, jdbcType=VARCHAR}, 
 #{tenantId, jdbcType=VARCHAR} 
 ) 
 </insert> 
 
 <!-- HISTORIC TASK INSTANCE UPDATE --> 
 
 <update id="updateHistoricTaskInstance" parameterType="org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity"> 
 update ${prefix}ACT_HI_TASKINST set 
 EXECUTION_ID_ = #{executionId, jdbcType=VARCHAR}, 
 NAME_ = #{name, jdbcType=VARCHAR}, 
 PARENT_TASK_ID_ = #{parentTaskId, jdbcType=VARCHAR}, 
 DESCRIPTION_ = #{description, jdbcType=VARCHAR}, 
 OWNER_ = #{owner, jdbcType=VARCHAR}, 
 ASSIGNEE_ = #{assignee, jdbcType=VARCHAR}, 
 CLAIM_TIME_ = #{claimTime, jdbcType=TIMESTAMP}, 
 END_TIME_ = #{endTime, jdbcType=TIMESTAMP}, 
 DURATION_ = #{durationInMillis ,jdbcType=BIGINT}, 
 DELETE_REASON_ = #{deleteReason ,jdbcType=VARCHAR}, 
 TASK_DEF_KEY_ = #{taskDefinitionKey ,jdbcType=VARCHAR}, 
 FORM_KEY_ = #{formKey ,jdbcType=VARCHAR}, 
 PRIORITY_ = #{priority, jdbcType=INTEGER}, 
 DUE_DATE_ = #{dueDate, jdbcType=TIMESTAMP}, 
 CATEGORY_ = #{category, jdbcType=VARCHAR} 
 where ID_ = #{id} 
 </update> 
 
 <!-- HISTORIC TASK INSTANCE DELETE --> 
 
 <delete id="deleteHistoricTaskInstance" parameterType="org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity"> 
 delete from ${prefix}ACT_HI_TASKINST where ID_ = #{id} 
 </delete> 
 
 <!-- HISTORIC TASK INSTANCE RESULT MAP --> 
 
 <resultMap id="historicTaskInstanceResultMap" type="org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity"> 
 <id property="id" column="ID_" jdbcType="VARCHAR" /> 
 <result property="processDefinitionId" column="PROC_DEF_ID_" jdbcType="VARCHAR" /> 
 <result property="processInstanceId" column="PROC_INST_ID_" jdbcType="VARCHAR" /> 
 <result property="executionId" column="EXECUTION_ID_" jdbcType="VARCHAR" /> 
 <result property="name" column="NAME_" jdbcType="VARCHAR" /> 
 <result property="parentTaskId" column="PARENT_TASK_ID_" jdbcType="VARCHAR" /> 
 <result property="description" column="DESCRIPTION_" jdbcType="VARCHAR" /> 
 <result property="owner" column="OWNER_" jdbcType="VARCHAR" /> 
 <result property="assignee" column="ASSIGNEE_" jdbcType="VARCHAR" /> 
 <result property="startTime" column="START_TIME_" jdbcType="TIMESTAMP" /> 
 <result property="claimTime" column="CLAIM_TIME_" jdbcType="TIMESTAMP" /> 
 <result property="endTime" column="END_TIME_" jdbcType="TIMESTAMP" /> 
 <result property="durationInMillis" column="DURATION_" jdbcType="BIGINT" /> 
 <result property="deleteReason" column="DELETE_REASON_" jdbcType="VARCHAR" /> 
 <result property="taskDefinitionKey" column="TASK_DEF_KEY_" jdbcType="VARCHAR" /> 
 <result property="formKey" column="FORM_KEY_" jdbcType="VARCHAR" /> 
 <result property="priority" column="PRIORITY_" jdbcType="INTEGER" /> 
 <result property="dueDate" column="DUE_DATE_" jdbcType="TIMESTAMP" /> 
 <result property="category" column="CATEGORY_" jdbcType="VARCHAR" /> 
 <result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR" /> 
 </resultMap> 
 
 <resultMap id="historicTaskInstanceAndVariablesResultMap" type="org.activiti.engine.impl.persistence.entity.HistoricTaskInstanceEntity"> 
 <id property="id" column="ID_" jdbcType="VARCHAR" /> 
 <result property="processDefinitionId" column="PROC_DEF_ID_" jdbcType="VARCHAR" /> 
 <result property="processInstanceId" column="PROC_INST_ID_" jdbcType="VARCHAR" /> 
 <result property="executionId" column="EXECUTION_ID_" jdbcType="VARCHAR" /> 
 <result property="name" column="NAME_" jdbcType="VARCHAR" /> 
 <result property="parentTaskId" column="PARENT_TASK_ID_" jdbcType="VARCHAR" /> 
 <result property="description" column="DESCRIPTION_" jdbcType="VARCHAR" /> 
 <result property="owner" column="OWNER_" jdbcType="VARCHAR" /> 
 <result property="assignee" column="ASSIGNEE_" jdbcType="VARCHAR" /> 
 <result property="startTime" column="START_TIME_" jdbcType="TIMESTAMP" /> 
 <result property="claimTime" column="CLAIM_TIME_" jdbcType="TIMESTAMP" /> 
 <result property="endTime" column="END_TIME_" jdbcType="TIMESTAMP" /> 
 <result property="durationInMillis" column="DURATION_" jdbcType="BIGINT" /> 
 <result property="deleteReason" column="DELETE_REASON_" jdbcType="VARCHAR" /> 
 <result property="taskDefinitionKey" column="TASK_DEF_KEY_" jdbcType="VARCHAR" /> 
 <result property="formKey" column="FORM_KEY_" jdbcType="VARCHAR" /> 
 <result property="priority" column="PRIORITY_" jdbcType="INTEGER" /> 
 <result property="dueDate" column="DUE_DATE_" jdbcType="TIMESTAMP" /> 
 <result property="category" column="CATEGORY_" jdbcType="VARCHAR" /> 
 <result property="tenantId" column="TENANT_ID_" jdbcType="VARCHAR" /> 
 <collection property="queryVariables" column="TASK_ID_" javaType="ArrayList" ofType="org.activiti.engine.impl.persistence.entity.HistoricVariableInstanceEntity"> 
 <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 TASK INSTANCE SELECT --> 
 
 <select id="selectHistoricTaskInstance" resultMap="historicTaskInstanceResultMap"> 
 select * from ${prefix}ACT_HI_TASKINST where ID_ = #{historicTaskInstanceId} 
 </select> 
 
 <select id="selectHistoricTaskInstanceIdsByProcessInstanceId" resultType="string" parameterType="org.activiti.engine.impl.db.ListQueryParameterObject" > 
 select ID_ 
 from ${prefix}ACT_HI_TASKINST 
 where PROC_INST_ID_ = #{parameter} 
 </select> 
 
 <select id="selectHistoricTaskInstancesByQueryCriteria" parameterType="org.activiti.engine.impl.HistoricTaskInstanceQueryImpl" resultMap="historicTaskInstanceResultMap"> 
 ${limitBefore} 
 select distinct RES.* ${limitBetween} 
 <include refid="selectHistoricTaskInstancesByQueryCriteriaSql"/> 
 ${orderBy} 
 ${limitAfter} 
 </select> 
 
 <select id="selectHistoricTaskInstanceCountByQueryCriteria" parameterType="org.activiti.engine.impl.HistoricTaskInstanceQueryImpl" resultType="long"> 
 select count(RES.ID_) 
 <include refid="selectHistoricTaskInstancesByQueryCriteriaSql"/> 
 </select> 
 
 <sql id="selectHistoricTaskInstancesByQueryCriteriaSql"> 
 from ${prefix}ACT_HI_TASKINST RES 
 <include refid="commonSelectHistoricTaskInstancesByQueryCriteriaSql"/> 
 </sql> 
 
 <select id="selectHistoricTaskInstancesWithVariablesByQueryCriteria" parameterType="org.activiti.engine.impl.HistoricTaskInstanceQueryImpl" resultMap="historicTaskInstanceAndVariablesResultMap"> 
 ${limitBefore} 
 select distinct RES.*, 
 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} 
 <include refid="selectHistoricTaskInstancesWithVariablesByQueryCriteriaSql"/> 
 ${orderBy} 
 ${limitAfter} 
 </select> 
 
 <select id="selectHistoricTaskInstancesWithVariablesByQueryCriteria_mssql_or_db2" parameterType="org.activiti.engine.impl.HistoricTaskInstanceQueryImpl" resultMap="historicTaskInstanceAndVariablesResultMap"> 
 ${limitBefore} 
 select distinct TEMPRES_ID_ as ID_, 
 TEMPRES_PROC_DEF_ID_ as PROC_DEF_ID_, TEMPRES_PROC_INST_ID_ as PROC_INST_ID_, TEMPRES_EXECUTION_ID_ as EXECUTION_ID_, 
 TEMPRES_NAME_ as NAME_, TEMPRES_PARENT_TASK_ID_ as PARENT_TASK_ID_, 
 TEMPRES_DESCRIPTION_ as DESCRIPTION_, TEMPRES_OWNER_ as OWNER_, TEMPRES_ASSIGNEE_ as ASSIGNEE_, 
 TEMPRES_START_TIME_ as START_TIME_, TEMPRES_CLAIM_TIME_ as CLAIM_TIME_, TEMPRES_END_TIME_ as END_TIME_, 
 TEMPRES_DURATION_ as DURATION_, TEMPRES_TASK_DEF_KEY_ as TASK_DEF_KEY_, TEMPRES_FORM_KEY_ as FORM_KEY_, 
 TEMPRES_PRIORITY_ as PRIORITY_, TEMPRES_DUE_DATE_ as DUE_DATE_, 
 TEMPRES_DELETE_REASON_ as DELETE_REASON_, 
 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_LAST_UPDATED_TIME_ as VAR_LAST_UPDATED_TIME_, TEMPVAR_TEXT2_ as VAR_TEXT2_, TEMPVAR_LONG_ as VAR_LONG_ 
 ${limitOuterJoinBetween} 
 RES.ID_ as TEMPRES_ID_, RES.PROC_DEF_ID_ as TEMPRES_PROC_DEF_ID_, RES.PROC_INST_ID_ as TEMPRES_PROC_INST_ID_, 
 RES.EXECUTION_ID_ as TEMPRES_EXECUTION_ID_, RES.NAME_ as TEMPRES_NAME_ , RES.PARENT_TASK_ID_ as TEMPRES_PARENT_TASK_ID_, 
 RES.DESCRIPTION_ as TEMPRES_DESCRIPTION_, RES.OWNER_ as TEMPRES_OWNER_, RES.ASSIGNEE_ as TEMPRES_ASSIGNEE_, 
 RES.START_TIME_ as TEMPRES_START_TIME_, RES.END_TIME_ as TEMPRES_END_TIME_, RES.CLAIM_TIME_ as TEMPRES_CLAIM_TIME_, 
 RES.DURATION_ as TEMPRES_DURATION_, RES.TASK_DEF_KEY_ as TEMPRES_TASK_DEF_KEY_, 
 RES.FORM_KEY_ as TEMPRES_FORM_KEY_, RES.PRIORITY_ as TEMPRES_PRIORITY_, 
 RES.DUE_DATE_ as TEMPRES_DUE_DATE_, RES.DELETE_REASON_ as TEMPRES_DELETE_REASON_, 
 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_ 
 <include refid="selectHistoricTaskInstancesWithVariablesByQueryCriteriaSql"/> 
 ${orderBy} 
 ${limitAfter} 
 </select> 
 
 <sql id="selectHistoricTaskInstancesWithVariablesByQueryCriteriaSql"> 
 from ${prefix}ACT_HI_TASKINST RES 
 <choose> 
 <when test="includeTaskLocalVariables && includeProcessVariables"> 
 left outer join ${prefix}ACT_HI_VARINST VAR ON RES.ID_ = VAR.TASK_ID_ or RES.PROC_INST_ID_ = VAR.EXECUTION_ID_ 
 </when> 
 <otherwise> 
 <if test="includeTaskLocalVariables"> 
  left outer join ${prefix}ACT_HI_VARINST VAR ON RES.ID_ = VAR.TASK_ID_ 
 </if> 
 <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> 
 </otherwise> 
 </choose> 
 <include refid="commonSelectHistoricTaskInstancesByQueryCriteriaSql"/> 
 </sql> 
 
 <sql id="commonSelectHistoricTaskInstancesByQueryCriteriaSql"> 
 <if test="candidateUser != null || candidateGroups != null"> 
 inner join ${prefix}ACT_HI_IDENTITYLINK HI on HI.TASK_ID_ = RES.ID_ 
 </if> 
 <if test="processFinished || processUnfinished || processInstanceBusinessKey != null || processInstanceBusinessKeyLike != null"> 
 inner join ${prefix}ACT_HI_PROCINST HPI ON RES.PROC_INST_ID_ = HPI.ID_ 
 </if> 
 <if test="processDefinitionKey != null || processDefinitionKeyLike != null || processDefinitionName != null || processDefinitionNameLike != null"> 
 inner join ${prefix}ACT_RE_PROCDEF D on RES.PROC_DEF_ID_ = D.ID_ 
 </if> 
 <foreach collection="queryVariableValues" index="index" item="var"> 
 <choose> 
 <when test="var.local"> 
  inner join ${prefix}ACT_HI_VARINST A${index} on RES.ID_ = A${index}.TASK_ID_ 
 </when> 
 <otherwise> 
  inner join ${prefix}ACT_HI_VARINST A${index} on RES.PROC_INST_ID_ = A${index}.PROC_INST_ID_ 
 </otherwise> 
 </choose>  
 </foreach> 
 <where> 
 <if test="taskId != null"> 
 RES.ID_ = #{taskId} 
 </if> 
 <if test="processDefinitionId != null"> 
 and RES.PROC_DEF_ID_ = #{processDefinitionId} 
 </if> 
 <if test="processDefinitionKey != null"> 
 and D.KEY_ = #{processDefinitionKey} 
 </if> 
 <if test="processDefinitionKeyLike != null"> 
 and D.KEY_ like #{processDefinitionKeyLike} 
 </if> 
 <if test="processDefinitionName != null"> 
 and D.NAME_ = #{processDefinitionName} 
 </if> 
 <if test="processDefinitionNameLike != null"> 
 and D.NAME_ like #{processDefinitionNameLike} 
 </if> 
 <if test="processInstanceId != null"> 
 and RES.PROC_INST_ID_ = #{processInstanceId} 
 </if> 
 <if test="processInstanceBusinessKey != null"> 
 and HPI.BUSINESS_KEY_ = #{processInstanceBusinessKey} 
 </if> 
 <if test="processInstanceBusinessKeyLike != null"> 
 and HPI.BUSINESS_KEY_ like #{processInstanceBusinessKeyLike} 
 </if> 
 <if test="taskDefinitionKey != null"> 
 and RES.TASK_DEF_KEY_ = #{taskDefinitionKey} 
 </if> 
 <if test="taskDefinitionKeyLike != null"> 
 and RES.TASK_DEF_KEY_ like #{taskDefinitionKeyLike} 
 </if> 
 <if test="executionId != null"> 
 and RES.EXECUTION_ID_ = #{executionId} 
 </if> 
 <if test="taskName != null"> 
 and RES.NAME_ = #{taskName} 
 </if> 
 <if test="taskNameLike != null"> 
 and RES.NAME_ like #{taskNameLike} 
 </if> 
 <if test="taskParentTaskId != null"> 
 and RES.PARENT_TASK_ID_ = #{taskParentTaskId} 
 </if> 
 <if test="taskDescription != null"> 
 and RES.DESCRIPTION_ = #{taskDescription} 
 </if> 
 <if test="taskDescriptionLike != null"> 
 and RES.DESCRIPTION_ like #{taskDescriptionLike} 
 </if> 
 <if test="taskDeleteReason != null"> 
 and RES.DELETE_REASON_ = #{taskDeleteReason} 
 </if> 
 <if test="taskDeleteReasonLike != null"> 
 and RES.DELETE_REASON_ like #{taskDeleteReasonLike} 
 </if> 
 <if test="taskOwner != null"> 
 and RES.OWNER_ = #{taskOwner} 
 </if> 
 <if test="taskOwnerLike != null"> 
 and RES.OWNER_ like #{taskOwnerLike} 
 </if> 
 <if test="taskAssignee != null"> 
 and RES.ASSIGNEE_ = #{taskAssignee} 
 </if> 
 <if test="taskAssigneeLike != null"> 
 and RES.ASSIGNEE_ like #{taskAssigneeLike} 
 </if> 
 <if test="taskPriority != null"> 
 and RES.PRIORITY_ = #{taskPriority} 
 </if> 
 <if test="taskMinPriority != null"> 
 and RES.PRIORITY_ >= #{taskMinPriority} 
 </if> 
 <if test="taskMaxPriority != null"> 
 and RES.PRIORITY_ <= #{taskMaxPriority} 
 </if> 
 <if test="unfinished"> 
 and RES.END_TIME_ is null 
 </if> 
 <if test="finished"> 
 and RES.END_TIME_ is not null 
 </if> 
 <if test="processFinished"> 
 and HPI.END_TIME_ is not null 
 </if> 
 <if test="processUnfinished"> 
 and HPI.END_TIME_ is null 
 </if> 
 <if test="dueDate != null"> 
 and RES.DUE_DATE_ = #{dueDate} 
 </if> 
 <if test="dueBefore != null"> 
 and RES.DUE_DATE_ < #{dueBefore} 
 </if> 
 <if test="dueAfter != null"> 
 and RES.DUE_DATE_ > #{dueAfter} 
 </if> 
 <if test="withoutDueDate"> 
 and RES.DUE_DATE_ is null 
 </if> 
 <if test="creationDate != null"> 
 and RES.START_TIME_ = #{creationDate} 
 </if> 
 <if test="creationBeforeDate != null"> 
 and RES.START_TIME_ < #{creationBeforeDate} 
 </if> 
 <if test="creationAfterDate != null"> 
 and RES.START_TIME_ > #{creationAfterDate} 
 </if> 
 <if test="completedDate != null"> 
 and RES.END_TIME_ = #{completedDate} 
 </if> 
 <if test="completedBeforeDate != null"> 
 and RES.END_TIME_ < #{completedBeforeDate} 
 </if> 
 <if test="completedAfterDate != null"> 
 and RES.END_TIME_ > #{completedAfterDate} 
 </if> 
 <if test="category != null"> 
 and RES.CATEGORY_ = #{category} 
 </if> 
 <if test="tenantId != null"> 
 and RES.TENANT_ID_ = #{tenantId} 
 </if> 
 <if test="tenantIdLike != null"> 
 and RES.TENANT_ID_ like #{tenantIdLike} 
 </if> 
 <if test="withoutTenantId"> 
 and (RES.TENANT_ID_ = ‘‘ or RES.TENANT_ID_ is null) 
 </if> 
 <if test="candidateUser != null || candidateGroups != null"> 
 and RES.ASSIGNEE_ is null 
 and HI.TYPE_ = ‘candidate‘ 
 and 
 ( 
  <if test="candidateUser != null"> 
  HI.USER_ID_ = #{candidateUser} 
  </if> 
  <if test="candidateUser != null && candidateGroups != null && candidateGroups.size() > 0"> 
  or 
  </if> 
  <if test="candidateGroups != null && candidateGroups.size() > 0"> 
  HI.GROUP_ID_ IN 
  <foreach item="group" index="index" collection="candidateGroups" 
   open="(" separator="," close=")"> 
  #{group} 
  </foreach> 
  </if> 
 ) 
 </if> 
 <if test="involvedUser != null"> 
 and ( 
  exists(select LINK.USER_ID_ from ${prefix}ACT_HI_IDENTITYLINK LINK where USER_ID_ = #{involvedUser} and LINK.TASK_ID_ = RES.ID_) 
  or RES.ASSIGNEE_ = #{involvedUser} 
  or RES.OWNER_ = #{involvedUser} 
  ) 
 </if> 
 <foreach item="queryVar" collection="queryVariableValues" index="index"> 
 <if test="!queryVar.local"> 
  <!-- When process instance variable is queried for, taskId should be null --> 
  and A${index}.TASK_ID_ is null 
 </if> 
 <if test="queryVar.name != null"> 
  <!-- Match-all variable-names when name is null --> 
  and A${index}.NAME_= #{queryVar.name} 
 </if> 
 <if test="!queryVar.type.equals(‘null‘)"> 
  and A${index}.VAR_TYPE_ = #{queryVar.type} 
 </if> 
 <!-- Variable value --> 
 <if test="queryVar.textValue != null && queryVar.longValue == null && queryVar.doubleValue == null"> 
  <choose> 
  <when test="queryVar.operator.equals(‘EQUALS_IGNORE_CASE‘) || queryVar.operator.equals(‘NOT_EQUALS_IGNORE_CASE‘)"> 
  and lower(A${index}.TEXT_) 
  </when> 
  <otherwise> 
  and A${index}.TEXT_ 
  </otherwise> 
  </choose> 
  <choose> 
  <when test="queryVar.operator.equals(‘LIKE‘)">LIKE</when> 
  <otherwise><include refid="executionVariableOperator" /></otherwise> 
  </choose>  
  #{queryVar.textValue} 
 </if> 
 <if test="queryVar.textValue2 != null"> 
  and A${index}.TEXT2_ 
  <choose> 
  <when test="queryVar.operator.equals(‘LIKE‘)">LIKE</when> 
  <otherwise><include refid="executionVariableOperator" /></otherwise> 
  </choose>  
  #{queryVar.textValue2} 
 </if> 
 <if test="queryVar.longValue != null"> 
  and A${index}.LONG_ 
  <include refid="executionVariableOperator" /> 
  #{queryVar.longValue} 
 </if> 
 <if test="queryVar.doubleValue != null"> 
  and A${index}.DOUBLE_ 
  <include refid="executionVariableOperator" /> 
  #{queryVar.doubleValue} 
 </if> 
 <!-- Null variable type --> 
 <if test="queryVar.textValue == null && queryVar.textValue2 == null && queryVar.longValue == null && queryVar.doubleValue == null"> 
  <choose> 
  <when test="queryVar.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> 
 </where> 
 </sql> 
 
 <sql id="executionVariableOperator"> 
 <choose> 
 <when test="queryVar.operator.equals(‘EQUALS‘)">=</when> 
 <when test="queryVar.operator.equals(‘EQUALS_IGNORE_CASE‘)">=</when> 
 <when test="queryVar.operator.equals(‘NOT_EQUALS‘)"><></when> 
 <when test="queryVar.operator.equals(‘NOT_EQUALS_IGNORE_CASE‘)"><></when> 
 <when test="queryVar.operator.equals(‘GREATER_THAN‘)">></when> 
 <when test="queryVar.operator.equals(‘GREATER_THAN_OR_EQUAL‘)">>=</when> 
 <when test="queryVar.operator.equals(‘LESS_THAN‘)"><</when> 
 <when test="queryVar.operator.equals(‘LESS_THAN_OR_EQUAL‘)"><=</when> 
 </choose> 
 </sql> 
 
 <select id="selectHistoricTaskInstanceByNativeQuery" parameterType="java.util.Map" resultMap="historicTaskInstanceResultMap"> 
 <if test="resultType == ‘LIST_PAGE‘"> 
 ${limitBefore} 
 </if> 
 ${sql} 
 <if test="resultType == ‘LIST_PAGE‘"> 
 ${limitAfter} 
 </if> 
 </select> 
 
 <select id="selectHistoricTaskInstanceByNativeQuery_mssql_or_db2" parameterType="java.util.Map" resultMap="historicTaskInstanceResultMap"> 
 <if test="resultType == ‘LIST_PAGE‘"> 
 ${limitBeforeNativeQuery} 
 </if> 
 ${sql} 
 <if test="resultType == ‘LIST_PAGE‘"> 
 ${limitAfter} 
 </if> 
 </select> 
 
 <select id="selectHistoricTaskInstanceCountByNativeQuery" parameterType="java.util.Map" resultType="long"> 
 ${sql} 
 </select> 
</mapper> 

看了这些,如果你觉得你对activiti的底层有足够的了解,你可以完全重写或者扩展actviti中的service API。activiti就是通过这些sql映射配置来完成数据查询,当然如果你在使用过程中如果发现其中一些sql查询效率很低的话,大伙可以由针对的进行修改达到自己的要求。   现在网络上一些关于activiti也有类似的问题出现。大伙使用过程相信也会遇到。在这里就这样抛砖引玉,希望对初学的你有所帮助.......

 

http://blog.csdn.net/romantichjwhjwhjw/article/details/40650671

 

activiti数据库表结构全貌解析

标签:

热心网友 时间:2022-04-08 20:07

Activiti 5.16.4 总共有24张表,增加act_evt_log(事件日志),以及增加了对SasS的支持。 在流程定义、运行实例和历史的多张表增加 TENANT_ID_ (租户ID)字段。

热心网友 时间:2022-04-08 21:25

1、结构设计 1.1、 逻辑结构设计 Activiti使用到的表都是ACT_开头的。 ACT_RE_*: ’RE’表示repository(存储),RepositoryService接口所操作的表
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
kmose正确使用方法? 单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 红色是什么颜色? 桑葚红色上衣配什么颜色短裤好看 红是什么是什么颜色 商标驳回复审该如何答辩? 为什么乌黑的桑葚用水煮全变成了大红色? 桑葚泡水是什么颜色? 桑椹是什么颜色? 桑葚干放了一个在水杯里,特别的红,是不是放添加剂了? 桑葚花的颜色是什么 桑葚什么颜色啊? 皮肤起了好多红点,而且一天都感觉紧绷绷的,脸颊很红还会疼,是怎么回事啊?有没有调节的办法? 中国公路铁路物流企业排名前十名的上市企业是哪十家? 脸颊通红,并且疼...随后开始极度的干燥!为什么? 热气球属于航空运输吗? 最近脸颊老爱泛红,有时还会有刺痛的感觉,怎么办哦~!有什么东东可以改善吗?跪谢啦 脸部两颊皮肤刺痛发红,怎么回事 脸颊痛是怎么回事 脸上泛红,有刺痛的感觉是怎么回事? 脸颊泛红刺痛灼热怎么办 脸颊泛红刺痛是什么原因 电气系统图s261na-c40+ts代表什么意思 空开型号S261-C16 GS262-C20/00.3是什么意思? S261NA-C32+AVM中AVM什么意思 N1 S261-C16 a ZRBV-3X2.5 CT&#47;PC20 CC 照明 是什么意思,电气图纸上的,求老师解答 s261-c20/30ma 有无2极的漏电保护开关&lt;施耐德&gt; S261-C25+S2-A1在电气图纸中表示什么 sot23-5 丝印是KB2J、S26JL、S261D具体是什么型号元件? S261NA-C20/0.03是什么 S261-C20是什么意思 配电系统图识S261-C25L1是什么意思 ABB的S261-C25,S262-C25,S263-C25,S264-C25的区别S264-C25好像是三相的,另外三个? 在电气系统图纸中S261-C10.TICI-12是什么意思 两根绳子,怎样在不把绳子剪断的情况下将这两根绳子系在一起? 手机进水了,但是可以开机,开机之后就变成了五颜六色怎么办? 成都金沙遗址哪一天是免费开放的啊? 如何使两根绳子在一起 方差与平均数的关系 两根很滑的绳子,怎样能让它们永远系在一起 知道方差怎么求均值 gamma分布的均值和方差计算公式是怎样的?