Skip to content

Commit 8b7e48b

Browse files
committed
#3659: Return definition category
1 parent 5dd3aff commit 8b7e48b

File tree

13 files changed

+206
-109
lines changed

13 files changed

+206
-109
lines changed

modules/flowable-engine/src/main/java/org/flowable/engine/history/HistoricProcessInstance.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@ public interface HistoricProcessInstance {
5050
/** The version of the process definition of the process instance. */
5151
Integer getProcessDefinitionVersion();
5252

53+
/**
54+
* The category of the process definition of the process instance.
55+
*/
56+
String getProcessDefinitionCategory();
57+
5358
/**
5459
* The deployment id of the process definition of the process instance.
5560
*/

modules/flowable-engine/src/main/java/org/flowable/engine/impl/cmd/AbstractDynamicInjectionCmd.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ protected void updateExecutions(CommandContext commandContext, ProcessDefinition
131131
String previousProcessDefinitionId = processInstance.getProcessDefinitionId();
132132
processInstance.setProcessDefinitionId(processDefinitionEntity.getId());
133133
processInstance.setProcessDefinitionVersion(processDefinitionEntity.getVersion());
134+
processInstance.setProcessDefinitionCategory(processDefinitionEntity.getCategory());
134135

135136
ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext);
136137
List<TaskEntity> currentTasks = processEngineConfiguration.getTaskServiceConfiguration().getTaskService()
@@ -175,6 +176,7 @@ protected void updateExecutions(CommandContext commandContext, ProcessDefinition
175176
for (ExecutionEntity childExecution : childExecutions) {
176177
childExecution.setProcessDefinitionId(processDefinitionEntity.getId());
177178
childExecution.setProcessDefinitionVersion(processDefinitionEntity.getVersion());
179+
childExecution.setProcessDefinitionCategory(processDefinitionEntity.getCategory());
178180
}
179181

180182
updateExecutions(commandContext, processDefinitionEntity, processInstance, childExecutions);

modules/flowable-engine/src/main/java/org/flowable/engine/impl/persistence/entity/ExecutionEntity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public interface ExecutionEntity extends DelegateExecution, Execution, ProcessIn
4343
Comparator<ExecutionEntity> EXECUTION_ENTITY_START_TIME_ASC_COMPARATOR = comparing(ProcessInstance::getStartTime);
4444

4545
void setBusinessKey(String businessKey);
46-
46+
4747
void setBusinessStatus(String businessStatus);
4848

4949
void setProcessDefinitionId(String processDefinitionId);
@@ -54,6 +54,8 @@ public interface ExecutionEntity extends DelegateExecution, Execution, ProcessIn
5454

5555
void setProcessDefinitionVersion(Integer processDefinitionVersion);
5656

57+
void setProcessDefinitionCategory(String processDefinitionCategory);
58+
5759
void setDeploymentId(String deploymentId);
5860

5961
ExecutionEntity getProcessInstance();

modules/flowable-engine/src/main/java/org/flowable/engine/impl/persistence/entity/ExecutionEntityImpl.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,18 +164,23 @@ public class ExecutionEntityImpl extends AbstractBpmnEngineVariableScopeEntity i
164164
protected String processDefinitionName;
165165

166166
/**
167-
* persisted reference to the process definition version.
167+
* Persisted reference to the process definition version.
168168
*/
169169
protected Integer processDefinitionVersion;
170170

171+
/**
172+
* Persisted reference to the process definition category.
173+
*/
174+
protected String processDefinitionCategory;
175+
171176
/**
172177
* Persisted reference to the deployment id.
173178
*/
174179
protected String deploymentId;
175180

176181
/**
177182
* Persisted reference to the current position in the diagram within the {@link #processDefinitionId}.
178-
*
183+
*
179184
* @see #activityId
180185
* @see #setActivityId(String)
181186
* @see #getActivityId()
@@ -463,6 +468,19 @@ public void setProcessDefinitionVersion(Integer processDefinitionVersion) {
463468
this.processDefinitionVersion = processDefinitionVersion;
464469
}
465470

471+
@Override
472+
public String getProcessDefinitionCategory() {
473+
if (StringUtils.isEmpty(processDefinitionCategory) && StringUtils.isNotEmpty(processDefinitionId)) {
474+
resolveProcessDefinitionInfo();
475+
}
476+
return processDefinitionCategory;
477+
}
478+
479+
@Override
480+
public void setProcessDefinitionCategory(String processDefinitionCategory) {
481+
this.processDefinitionCategory = processDefinitionCategory;
482+
}
483+
466484
@Override
467485
public String getDeploymentId() {
468486
if (StringUtils.isEmpty(deploymentId) && StringUtils.isNotEmpty(processDefinitionId)) {
@@ -1472,6 +1490,7 @@ protected void resolveProcessDefinitionInfo() {
14721490
this.processDefinitionKey = processDefinition.getKey();
14731491
this.processDefinitionName = processDefinition.getName();
14741492
this.processDefinitionVersion = processDefinition.getVersion();
1493+
this.processDefinitionCategory = processDefinition.getCategory();
14751494
this.deploymentId = processDefinition.getDeploymentId();
14761495
}
14771496

modules/flowable-engine/src/main/java/org/flowable/engine/impl/persistence/entity/ExecutionEntityManagerImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ public ExecutionEntity createProcessInstanceExecution(ProcessDefinition processD
256256
processInstanceExecution.setProcessDefinitionKey(processDefinition.getKey());
257257
processInstanceExecution.setProcessDefinitionName(processDefinition.getName());
258258
processInstanceExecution.setProcessDefinitionVersion(processDefinition.getVersion());
259+
processInstanceExecution.setProcessDefinitionCategory(processDefinition.getCategory());
259260
processInstanceExecution.setDeploymentId(processDefinition.getDeploymentId());
260261
processInstanceExecution.setBusinessKey(businessKey);
261262
processInstanceExecution.setBusinessStatus(businessStatus);

modules/flowable-engine/src/main/java/org/flowable/engine/impl/persistence/entity/HistoricProcessInstanceEntity.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public interface HistoricProcessInstanceEntity extends HistoricScopeInstanceEnti
2828
void setEndActivityId(String endActivityId);
2929

3030
void setBusinessKey(String businessKey);
31-
31+
3232
void setBusinessStatus(String businessStatus);
3333

3434
void setStartUserId(String startUserId);
@@ -53,18 +53,20 @@ public interface HistoricProcessInstanceEntity extends HistoricScopeInstanceEnti
5353

5454
void setProcessDefinitionVersion(Integer processDefinitionVersion);
5555

56+
void setProcessDefinitionCategory(String processDefinitionCategory);
57+
5658
void setDeploymentId(String deploymentId);
57-
59+
5860
void setCallbackId(String callbackId);
59-
61+
6062
void setCallbackType(String callbackType);
6163

6264
void setReferenceId(String referenceId);
6365

6466
void setReferenceType(String referenceType);
6567

6668
void setPropagatedStageInstanceId(String propagatedStageInstanceId);
67-
69+
6870
List<HistoricVariableInstanceEntity> getQueryVariables();
6971

7072
void setQueryVariables(List<HistoricVariableInstanceEntity> queryVariables);

modules/flowable-engine/src/main/java/org/flowable/engine/impl/persistence/entity/HistoricProcessInstanceEntityImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public class HistoricProcessInstanceEntityImpl extends HistoricScopeInstanceEnti
4646
protected String processDefinitionKey;
4747
protected String processDefinitionName;
4848
protected Integer processDefinitionVersion;
49+
protected String processDefinitionCategory;
4950
protected String deploymentId;
5051
protected String callbackId;
5152
protected String callbackType;
@@ -68,6 +69,7 @@ public HistoricProcessInstanceEntityImpl(ExecutionEntity processInstance) {
6869
this.processDefinitionKey = processInstance.getProcessDefinitionKey();
6970
this.processDefinitionName = processInstance.getProcessDefinitionName();
7071
this.processDefinitionVersion = processInstance.getProcessDefinitionVersion();
72+
this.processDefinitionCategory = processInstance.getProcessDefinitionCategory();
7173
this.deploymentId = processInstance.getDeploymentId();
7274
this.startActivityId = processInstance.getStartActivityId();
7375
this.startTime = processInstance.getStartTime();
@@ -101,6 +103,7 @@ public Object getPersistentState() {
101103
persistentState.put("processDefinitionKey", processDefinitionKey);
102104
persistentState.put("processDefinitionName", processDefinitionName);
103105
persistentState.put("processDefinitionVersion", processDefinitionVersion);
106+
persistentState.put("processDefinitionCategory", processDefinitionCategory);
104107
persistentState.put("deploymentId", deploymentId);
105108
persistentState.put("callbackId", callbackId);
106109
persistentState.put("callbackType", callbackType);
@@ -258,6 +261,16 @@ public void setProcessDefinitionVersion(Integer processDefinitionVersion) {
258261
this.processDefinitionVersion = processDefinitionVersion;
259262
}
260263

264+
@Override
265+
public String getProcessDefinitionCategory() {
266+
return processDefinitionCategory;
267+
}
268+
269+
@Override
270+
public void setProcessDefinitionCategory(String processDefinitionCategory) {
271+
this.processDefinitionCategory = processDefinitionCategory;
272+
}
273+
261274
@Override
262275
public String getDeploymentId() {
263276
return deploymentId;

modules/flowable-engine/src/main/java/org/flowable/engine/runtime/ProcessInstance.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ public interface ProcessInstance extends Execution {
4747
*/
4848
Integer getProcessDefinitionVersion();
4949

50+
/**
51+
* The category of the process definition of the process instance.
52+
*/
53+
String getProcessDefinitionCategory();
54+
5055
/**
5156
* The deployment id of the process definition of the process instance.
5257
*/

modules/flowable-engine/src/main/resources/org/flowable/db/mapping/entity/Execution.xml

Lines changed: 62 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@
374374
<result property="processDefinitionName" column="ProcessDefinitionName" jdbcType="VARCHAR" />
375375
<result property="processDefinitionKey" column="ProcessDefinitionKey" jdbcType="VARCHAR" />
376376
<result property="processDefinitionVersion" column="ProcessDefinitionVersion" jdbcType="INTEGER" />
377+
<result property="processDefinitionCategory" column="ProcessDefinitionCategory" jdbcType="VARCHAR"/>
377378
<result property="deploymentId" column="DeploymentId" jdbcType="VARCHAR" />
378379

379380
<result property="activityId" column="ACT_ID_" jdbcType="VARCHAR" />
@@ -474,6 +475,7 @@
474475
<result property="processDefinitionName" column="ProcessDefinitionName" jdbcType="VARCHAR" />
475476
<result property="processDefinitionKey" column="ProcessDefinitionKey" jdbcType="VARCHAR" />
476477
<result property="processDefinitionVersion" column="ProcessDefinitionVersion" jdbcType="INTEGER" />
478+
<result property="processDefinitionCategory" column="ProcessDefinitionCategory" jdbcType="VARCHAR"/>
477479
<result property="deploymentId" column="DeploymentId" jdbcType="VARCHAR" />
478480
<result property="activityId" column="ACT_ID_" jdbcType="VARCHAR" />
479481
<result property="isActive" column="IS_ACTIVE_" jdbcType="BOOLEAN" />
@@ -581,71 +583,77 @@
581583
and IS_ACTIVE_ = #{parameter.isActive}
582584
</select>
583585

584-
<select id="selectExecutionsByParentExecutionAndActivityIds" parameterType="org.flowable.common.engine.impl.db.ListQueryParameterObject" resultMap="executionResultMap">
585-
select *
586-
from ${prefix}ACT_RU_EXECUTION
587-
where PARENT_ID_ = #{parameter.parentExecutionId}
588-
and ACT_ID_ in
589-
<foreach item="activityId" collection="parameter.activityIds" open="(" separator="," close=")">
590-
#{activityId}
591-
</foreach>
592-
</select>
586+
<select id="selectExecutionsByParentExecutionAndActivityIds" parameterType="org.flowable.common.engine.impl.db.ListQueryParameterObject"
587+
resultMap="executionResultMap">
588+
select *
589+
from ${prefix}ACT_RU_EXECUTION
590+
where PARENT_ID_ = #{parameter.parentExecutionId}
591+
and ACT_ID_ in
592+
<foreach item="activityId" collection="parameter.activityIds" open="(" separator="," close=")">
593+
#{activityId}
594+
</foreach>
595+
</select>
593596

594-
<select id="selectExecutionsByQueryCriteria" parameterType="org.flowable.engine.impl.ExecutionQueryImpl" resultMap="executionResultMap">
595-
<if test="needsPaging">${limitBefore}</if>
596-
SELECT RES.* <if test="needsPaging">${limitBetween}</if>, P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.DEPLOYMENT_ID_ as DeploymentId
597-
<include refid="selectExecutionsByQueryCriteriaSql"/>
598-
${orderBy}
599-
<if test="needsPaging">${limitAfter}</if>
600-
</select>
597+
<select id="selectExecutionsByQueryCriteria" parameterType="org.flowable.engine.impl.ExecutionQueryImpl" resultMap="executionResultMap">
598+
<if test="needsPaging">${limitBefore}</if>
599+
SELECT RES.* <if test="needsPaging">${limitBetween}</if>, P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as
600+
ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.CATEGORY_ as ProcessDefinitionCategory, P.DEPLOYMENT_ID_ as DeploymentId
601+
<include refid="selectExecutionsByQueryCriteriaSql"/>
602+
${orderBy}
603+
<if test="needsPaging">${limitAfter}</if>
604+
</select>
601605

602-
<select id="selectExecutionCountByQueryCriteria" parameterType="org.flowable.engine.impl.ExecutionQueryImpl" resultType="long">
603-
select count(distinct RES.ID_)
604-
<include refid="selectExecutionsByQueryCriteriaSql"/>
605-
</select>
606+
<select id="selectExecutionCountByQueryCriteria" parameterType="org.flowable.engine.impl.ExecutionQueryImpl" resultType="long">
607+
select count(distinct RES.ID_)
608+
<include refid="selectExecutionsByQueryCriteriaSql"/>
609+
</select>
606610

607-
<!-- same as selectExecutionsByQueryCriteria, but with different parameterType -->
608-
<select id="selectProcessInstanceByQueryCriteria" parameterType="org.flowable.engine.impl.ProcessInstanceQueryImpl" resultMap="processInstanceResultMap">
609-
<if test="needsPaging">${limitBefore}</if>
610-
SELECT RES.* <if test="needsPaging">${limitBetween}</if>, P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.DEPLOYMENT_ID_ as DeploymentId
611-
<include refid="selectExecutionsByQueryCriteriaSql"/>
612-
${orderBy}
613-
<if test="needsPaging">${limitAfter}</if>
614-
</select>
611+
<!-- same as selectExecutionsByQueryCriteria, but with different parameterType -->
612+
<select id="selectProcessInstanceByQueryCriteria" parameterType="org.flowable.engine.impl.ProcessInstanceQueryImpl" resultMap="processInstanceResultMap">
613+
<if test="needsPaging">${limitBefore}</if>
614+
SELECT RES.* <if test="needsPaging">${limitBetween}</if>, P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as
615+
ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.CATEGORY_ as ProcessDefinitionCategory, P.DEPLOYMENT_ID_ as DeploymentId
616+
<include refid="selectExecutionsByQueryCriteriaSql"/>
617+
${orderBy}
618+
<if test="needsPaging">${limitAfter}</if>
619+
</select>
615620

616-
<select id="selectProcessInstanceCountByQueryCriteria" parameterType="org.flowable.engine.impl.ProcessInstanceQueryImpl" resultType="long">
617-
select count(distinct RES.ID_)
618-
<include refid="selectExecutionsByQueryCriteriaSql"/>
619-
</select>
621+
<select id="selectProcessInstanceCountByQueryCriteria" parameterType="org.flowable.engine.impl.ProcessInstanceQueryImpl" resultType="long">
622+
select count(distinct RES.ID_)
623+
<include refid="selectExecutionsByQueryCriteriaSql"/>
624+
</select>
620625

621-
<sql id="selectExecutionsByQueryCriteriaSql">
622-
from ${prefix}ACT_RU_EXECUTION RES
623-
<!-- Doing an inner join on the definition table is OK, since it is a 1:1 relationship -->
624-
inner join ${prefix}ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_
625-
<include refid="commonSelectExecutionsByQueryCriteriaSql"/>
626-
</sql>
626+
<sql id="selectExecutionsByQueryCriteriaSql">
627+
from ${prefix}ACT_RU_EXECUTION RES
628+
<!-- Doing an inner join on the definition table is OK, since it is a 1:1 relationship -->
629+
inner join ${prefix}ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_
630+
<include refid="commonSelectExecutionsByQueryCriteriaSql"/>
631+
</sql>
627632

628-
<select id="selectProcessInstanceWithVariablesByQueryCriteria" parameterType="org.flowable.engine.impl.ProcessInstanceQueryImpl" resultMap="processInstanceAndVariablesResultMap">
629-
SELECT RES.*,
630-
VAR.ID_ as VAR_ID_, VAR.NAME_ as VAR_NAME_, VAR.TYPE_ as VAR_TYPE_, VAR.REV_ as VAR_REV_,
631-
VAR.PROC_INST_ID_ as VAR_PROC_INST_ID_, VAR.EXECUTION_ID_ as VAR_EXECUTION_ID_, VAR.TASK_ID_ as VAR_TASK_ID_,
632-
VAR.META_INFO_ as VAR_META_INFO_,
633-
VAR.BYTEARRAY_ID_ as VAR_BYTEARRAY_ID_, VAR.DOUBLE_ as VAR_DOUBLE_,
634-
VAR.TEXT_ as VAR_TEXT_, VAR.TEXT2_ as VAR_TEXT2_, VAR.LONG_ as VAR_LONG_
635-
FROM (
633+
<select id="selectProcessInstanceWithVariablesByQueryCriteria" parameterType="org.flowable.engine.impl.ProcessInstanceQueryImpl"
634+
resultMap="processInstanceAndVariablesResultMap">
635+
SELECT RES.*,
636+
VAR.ID_ as VAR_ID_, VAR.NAME_ as VAR_NAME_, VAR.TYPE_ as VAR_TYPE_, VAR.REV_ as VAR_REV_,
637+
VAR.PROC_INST_ID_ as VAR_PROC_INST_ID_, VAR.EXECUTION_ID_ as VAR_EXECUTION_ID_, VAR.TASK_ID_ as VAR_TASK_ID_,
638+
VAR.META_INFO_ as VAR_META_INFO_,
639+
VAR.BYTEARRAY_ID_ as VAR_BYTEARRAY_ID_, VAR.DOUBLE_ as VAR_DOUBLE_,
640+
VAR.TEXT_ as VAR_TEXT_, VAR.TEXT2_ as VAR_TEXT2_, VAR.LONG_ as VAR_LONG_
641+
FROM (
636642
<!-- top 100 percent is only needed when doing order by in a subselect -->
637643
<if test="needsPaging">${limitBefore}</if>
638-
SELECT <if test="_databaseId == 'mssql'">top 100 percent</if> RES.* <if test="needsPaging">${limitBetween}</if>, P.KEY_ as ProcessDefinitionKey, P.ID_ as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.DEPLOYMENT_ID_ as DeploymentId
644+
SELECT <if test="_databaseId == 'mssql'">top 100 percent</if> RES.* <if test="needsPaging">${limitBetween}</if>, P.KEY_ as ProcessDefinitionKey, P.ID_
645+
as ProcessDefinitionId, P.NAME_ as ProcessDefinitionName, P.VERSION_ as ProcessDefinitionVersion, P.CATEGORY_ as ProcessDefinitionCategory,
646+
P.DEPLOYMENT_ID_ as DeploymentId
639647
<include refid="selectProcessInstanceWithVariablesByQueryCriteriaSql"/>
640648
${orderBy}
641649
<if test="needsPaging">${limitAfter}</if>
642-
) RES
643-
left outer join ${prefix}ACT_RU_VARIABLE VAR ON RES.PROC_INST_ID_ = VAR.EXECUTION_ID_
644-
<if test="needsProcessDefinitionOuterJoin">
645-
inner join ${prefix}ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_
646-
</if>
647-
${outerJoinOrderBy}
648-
</select>
650+
) RES
651+
left outer join ${prefix}ACT_RU_VARIABLE VAR ON RES.PROC_INST_ID_ = VAR.EXECUTION_ID_
652+
<if test="needsProcessDefinitionOuterJoin">
653+
inner join ${prefix}ACT_RE_PROCDEF P on RES.PROC_DEF_ID_ = P.ID_
654+
</if>
655+
${outerJoinOrderBy}
656+
</select>
649657

650658
<sql id="selectProcessInstanceWithVariablesByQueryCriteriaSql">
651659
from ${prefix}ACT_RU_EXECUTION RES

0 commit comments

Comments
 (0)