@Override protected void applyFilters(HistoricProcessInstanceQuery query) { if (processInstanceId != null) { query.processInstanceId(processInstanceId); } if (processInstanceIds != null) { query.processInstanceIds(processInstanceIds); } if (processDefinitionId != null) { query.processDefinitionId(processDefinitionId); } if (processDefinitionKey != null) { query.processDefinitionKey(processDefinitionKey); } if (processDefinitionName != null) { query.processDefinitionName(processDefinitionName); } if (processDefinitionNameLike != null) { query.processDefinitionNameLike(processDefinitionNameLike); } if (processDefinitionKeyNotIn != null) { query.processDefinitionKeyNotIn(processDefinitionKeyNotIn); } if (processInstanceBusinessKey != null) { query.processInstanceBusinessKey(processInstanceBusinessKey); } if (processInstanceBusinessKeyLike != null) { query.processInstanceBusinessKeyLike(processInstanceBusinessKeyLike); } if (finished != null && finished) { query.finished(); } if (unfinished != null && unfinished) { query.unfinished(); } if (withIncidents != null && withIncidents) { query.withIncidents(); } if (incidentMessage != null) { query.incidentMessage(incidentMessage); } if (incidentMessageLike != null) { query.incidentMessageLike(incidentMessageLike); } if (startedBefore != null) { query.startedBefore(startedBefore); } if (startedAfter != null) { query.startedAfter(startedAfter); } if (finishedBefore != null) { query.finishedBefore(finishedBefore); } if (finishedAfter != null) { query.finishedAfter(finishedAfter); } if (startedBy != null) { query.startedBy(startedBy); } if (superProcessInstanceId != null) { query.superProcessInstanceId(superProcessInstanceId); } if (subProcessInstanceId != null) { query.subProcessInstanceId(subProcessInstanceId); } if (superCaseInstanceId != null) { query.superCaseInstanceId(superCaseInstanceId); } if (subCaseInstanceId != null) { query.subCaseInstanceId(subCaseInstanceId); } if (caseInstanceId != null) { query.caseInstanceId(caseInstanceId); } if (tenantIds != null && !tenantIds.isEmpty()) { query.tenantIdIn(tenantIds.toArray(new String[tenantIds.size()])); } if (variables != null) { for (VariableQueryParameterDto variableQueryParam : variables) { String variableName = variableQueryParam.getName(); String op = variableQueryParam.getOperator(); Object variableValue = variableQueryParam.resolveValue(objectMapper); if (op.equals(VariableQueryParameterDto.EQUALS_OPERATOR_NAME)) { query.variableValueEquals(variableName, variableValue); } else if (op.equals(VariableQueryParameterDto.GREATER_THAN_OPERATOR_NAME)) { query.variableValueGreaterThan(variableName, variableValue); } else if (op.equals(VariableQueryParameterDto.GREATER_THAN_OR_EQUALS_OPERATOR_NAME)) { query.variableValueGreaterThanOrEqual(variableName, variableValue); } else if (op.equals(VariableQueryParameterDto.LESS_THAN_OPERATOR_NAME)) { query.variableValueLessThan(variableName, variableValue); } else if (op.equals(VariableQueryParameterDto.LESS_THAN_OR_EQUALS_OPERATOR_NAME)) { query.variableValueLessThanOrEqual(variableName, variableValue); } else if (op.equals(VariableQueryParameterDto.NOT_EQUALS_OPERATOR_NAME)) { query.variableValueNotEquals(variableName, variableValue); } else if (op.equals(VariableQueryParameterDto.LIKE_OPERATOR_NAME)) { query.variableValueLike(variableName, String.valueOf(variableValue)); } else { throw new InvalidRequestException( Status.BAD_REQUEST, "Invalid variable comparator specified: " + op); } } } }