/* 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.
*/
package org.activiti.engine.history;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Set;
import org.activiti.engine.ProcessEngineConfiguration;
import org.activiti.engine.query.Query;
import org.activiti.engine.runtime.ProcessInstanceQuery;
/**
* Allows programmatic querying of {@link HistoricProcessInstance}s.
*
* @author Tom Baeyens
* @author Joram Barrez
* @author Tijs Rademakers
* @author Falko Menge
*/
public interface HistoricProcessInstanceQuery extends Query<HistoricProcessInstanceQuery, HistoricProcessInstance> {
/** Only select historic process instances with the given process instance.
* {@link ProcessInstance) ids and {@link HistoricProcessInstance} ids match. */
HistoricProcessInstanceQuery processInstanceId(String processInstanceId);
/** Only select historic process instances whose id is in the given set of ids.
* {@link ProcessInstance) ids and {@link HistoricProcessInstance} ids match. */
HistoricProcessInstanceQuery processInstanceIds(Set<String> processInstanceIds);
/** Only select historic process instances for the given process definition */
HistoricProcessInstanceQuery processDefinitionId(String processDefinitionId);
/** Only select historic process instances that are defined by a process
* definition with the given key. */
HistoricProcessInstanceQuery processDefinitionKey(String processDefinitionKey);
/** Only select historic process instances that are defined by a process
* definition with one of the given process definition keys. */
HistoricProcessInstanceQuery processDefinitionKeyIn(List<String> processDefinitionKeys);
/** Only select historic process instances that don't have a process-definition of which the key is present in the given list */
HistoricProcessInstanceQuery processDefinitionKeyNotIn(List<String> processDefinitionKeys);
/** Only select historic process instances whose process definition category is processDefinitionCategory. */
HistoricProcessInstanceQuery processDefinitionCategory(String processDefinitionCategory);
/** Select process historic instances whose process definition name is processDefinitionName*/
HistoricProcessInstanceQuery processDefinitionName(String processDefinitionName);
/**
* Only select historic process instances with a certain process definition version.
* Particulary useful when used in combination with {@link #processDefinitionKey(String)}
*/
HistoricProcessInstanceQuery processDefinitionVersion(Integer processDefinitionVersion);
/** Only select historic process instances with the given business key */
HistoricProcessInstanceQuery processInstanceBusinessKey(String processInstanceBusinessKey);
/** Only select historic process instances that are defined by a process
* definition with the given deployment identifier. */
HistoricProcessInstanceQuery deploymentId(String deploymentId);
/**
* Only select historic process instances that are defined by a process
* definition with one of the given deployment identifiers. */
HistoricProcessInstanceQuery deploymentIdIn(List<String> deploymentIds);
/** Only select historic process instances that are completely finished. */
HistoricProcessInstanceQuery finished();
/** Only select historic process instance that are not yet finished. */
HistoricProcessInstanceQuery unfinished();
/** Only select historic process instances that are deleted. */
HistoricProcessInstanceQuery deleted();
/** Only select historic process instance that are not deleted. */
HistoricProcessInstanceQuery notDeleted();
/** Only select the historic process instances with which the user with the given id is involved. */
HistoricProcessInstanceQuery involvedUser(String userId);
/** Only select process instances which had a global variable with the given value
* when they ended. The type only applies to already ended
* process instances, otherwise use a {@link ProcessInstanceQuery} instead! of
* variable is determined based on the value, using types configured in
* {@link ProcessEngineConfiguration#getVariableTypes()}. Byte-arrays and
* {@link Serializable} objects (which are not primitive type wrappers) are
* not supported.
* @param name of the variable, cannot be null. */
HistoricProcessInstanceQuery variableValueEquals(String name, Object value);
/** Only select process instances which had at least one global variable with the given value
* when they ended. The type only applies to already ended
* process instances, otherwise use a {@link ProcessInstanceQuery} instead! of
* variable is determined based on the value, using types configured in
* {@link ProcessEngineConfiguration#getVariableTypes()}. Byte-arrays and
* {@link Serializable} objects (which are not primitive type wrappers) are
* not supported.
*/
HistoricProcessInstanceQuery variableValueEquals(Object value);
/**
* Only select historic process instances which have a local string variable with the
* given value, case insensitive.
* @param name name of the variable, cannot be null.
* @param value value of the variable, cannot be null.
*/
HistoricProcessInstanceQuery variableValueEqualsIgnoreCase(String name, String value);
/** Only select process instances which had a global variable with the given name, but
* with a different value than the passed value when they ended. Only select
* process instances which have a variable value greater than the passed
* value. Byte-arrays and {@link Serializable} objects (which are not
* primitive type wrappers) are not supported.
* @param name of the variable, cannot be null. */
HistoricProcessInstanceQuery variableValueNotEquals(String name, Object value);
/** Only select process instances which had a global variable value greater than the
* passed value when they ended. Booleans, Byte-arrays and
* {@link Serializable} objects (which are not primitive type wrappers) are
* not supported. Only select process instances which have a variable value
* greater than the passed value.
* @param name cannot be null.
* @param value cannot be null. */
HistoricProcessInstanceQuery variableValueGreaterThan(String name, Object value);
/** Only select process instances which had a global variable value greater than or
* equal to the passed value when they ended. Booleans, Byte-arrays and
* {@link Serializable} objects (which are not primitive type wrappers) are
* not supported. Only applies to already ended process instances, otherwise
* use a {@link ProcessInstanceQuery} instead!
* @param name cannot be null.
* @param value cannot be null. */
HistoricProcessInstanceQuery variableValueGreaterThanOrEqual(String name, Object value);
/** Only select process instances which had a global variable value less than the
* passed value when the ended. Only applies to already ended process
* instances, otherwise use a {@link ProcessInstanceQuery} instead! Booleans,
* Byte-arrays and {@link Serializable} objects (which are not primitive type
* wrappers) are not supported.
* @param name cannot be null.
* @param value cannot be null. */
HistoricProcessInstanceQuery variableValueLessThan(String name, Object value);
/** Only select process instances which has a global variable value less than or equal
* to the passed value when they ended. Only applies to already ended process
* instances, otherwise use a {@link ProcessInstanceQuery} instead! Booleans,
* Byte-arrays and {@link Serializable} objects (which are not primitive type
* wrappers) are not supported.
* @param name cannot be null.
* @param value cannot be null. */
HistoricProcessInstanceQuery variableValueLessThanOrEqual(String name, Object value);
/** Only select process instances which had global variable value like the given value
* when they ended. Only applies to already ended process instances, otherwise
* use a {@link ProcessInstanceQuery} instead! This can be used on string
* variables only.
* @param name cannot be null.
* @param value cannot be null. The string can include the
* wildcard character '%' to express like-strategy: starts with
* (string%), ends with (%string) or contains (%string%). */
HistoricProcessInstanceQuery variableValueLike(String name, String value);
/** Only select process instances which had global variable value like (case insensitive)
* the given value when they ended. Only applies to already ended process instances,
* otherwise use a {@link ProcessInstanceQuery} instead! This can be used on string
* variables only.
* @param name cannot be null.
* @param value cannot be null. The string can include the
* wildcard character '%' to express like-strategy: starts with
* (string%), ends with (%string) or contains (%string%). */
HistoricProcessInstanceQuery variableValueLikeIgnoreCase(String name, String value);
/** Only select historic process instances that were started before the given date. */
HistoricProcessInstanceQuery startedBefore(Date date);
/** Only select historic process instances that were started after the given date. */
HistoricProcessInstanceQuery startedAfter(Date date);
/** Only select historic process instances that were started before the given date. */
HistoricProcessInstanceQuery finishedBefore(Date date);
/** Only select historic process instances that were started after the given date. */
HistoricProcessInstanceQuery finishedAfter(Date date);
/** Only select historic process instance that are started by the given user. */
HistoricProcessInstanceQuery startedBy(String userId);
/** Only select process instances that have the given tenant id. */
HistoricProcessInstanceQuery processInstanceTenantId(String tenantId);
/** Only select process instances with a tenant id like the given one. */
HistoricProcessInstanceQuery processInstanceTenantIdLike(String tenantIdLike);
/** Only select process instances that do not have a tenant id. */
HistoricProcessInstanceQuery processInstanceWithoutTenantId();
/**
* Begin an OR statement. Make sure you invoke the endOr method at the end of your OR statement.
* Only one OR statement is allowed, for the second call to this method an exception will be thrown.
*/
HistoricProcessInstanceQuery or();
/**
* End an OR statement. Only one OR statement is allowed, for the second call to this method an exception will be thrown.
*/
HistoricProcessInstanceQuery endOr();
/** Order by the process instance id (needs to be followed by {@link #asc()} or {@link #desc()}). */
HistoricProcessInstanceQuery orderByProcessInstanceId();
/** Order by the process definition id (needs to be followed by {@link #asc()} or {@link #desc()}). */
HistoricProcessInstanceQuery orderByProcessDefinitionId();
/** Order by the business key (needs to be followed by {@link #asc()} or {@link #desc()}). */
HistoricProcessInstanceQuery orderByProcessInstanceBusinessKey();
/** Order by the start time (needs to be followed by {@link #asc()} or {@link #desc()}). */
HistoricProcessInstanceQuery orderByProcessInstanceStartTime();
/** Order by the end time (needs to be followed by {@link #asc()} or {@link #desc()}). */
HistoricProcessInstanceQuery orderByProcessInstanceEndTime();
/** Order by the duration of the process instance (needs to be followed by {@link #asc()} or {@link #desc()}). */
HistoricProcessInstanceQuery orderByProcessInstanceDuration();
/** Order by tenant id (needs to be followed by {@link #asc()} or {@link #desc()}). */
HistoricProcessInstanceQuery orderByTenantId();
/** Only select historic process instances started by the given process
* instance. {@link ProcessInstance) ids and {@link HistoricProcessInstance}
* ids match. */
HistoricProcessInstanceQuery superProcessInstanceId(String superProcessInstanceId);
/**
* Exclude sub processes from the query result;
*/
HistoricProcessInstanceQuery excludeSubprocesses(boolean excludeSubprocesses);
/**
* Include process variables in the process query result
*/
HistoricProcessInstanceQuery includeProcessVariables();
/**
* Limit process instance variables
*/
HistoricProcessInstanceQuery limitProcessInstanceVariables(Integer processInstanceVariablesLimit);
/**
* Only select process instances that failed due to an exception happening during a job execution.
*/
HistoricProcessInstanceQuery withJobException();
/**
* Only select process instances with the given name.
*/
HistoricProcessInstanceQuery processInstanceName(String name);
/**
* Only select process instances with a name like the given value.
*/
HistoricProcessInstanceQuery processInstanceNameLike(String nameLike);
/**
* Only select process instances with a name like the given value, ignoring upper/lower case.
*/
HistoricProcessInstanceQuery processInstanceNameLikeIgnoreCase(String nameLikeIgnoreCase);
/**
* Localize historic process name and description to specified locale.
*/
HistoricProcessInstanceQuery locale(String locale);
/**
* Instruct localization to fallback to more general locales including the default locale of the JVM if the specified locale is not found.
*/
HistoricProcessInstanceQuery withLocalizationFallback();
}