Class CaseQuery

java.lang.Object
ch.ivyteam.ivy.persistence.query.Query<ICase>
ch.ivyteam.ivy.workflow.query.CaseQuery
Direct Known Subclasses:
CaseQuery.AggregationQuery, CaseQuery.FilterLink, CaseQuery.GroupByQuery, CaseQuery.OrderByQuery

public class CaseQuery extends Query<ICase>

Provides a query builder to query case data of the current workflow context.

To execute the query use ICaseQueryExecutor. See ivy.wf.getCaseQueryExecutor()

Example how to filter and order data:

import ch.ivyteam.ivy.workflow.query.CaseQuery;

 CaseQuery caseQuery = CaseQuery.businessCases();
 List<ICase> cases = caseQuery.where().customVarCharField1().isEqual("Hello")
  .and().customVarCharField2().isEqual("World")
  .orderBy().name().ascending()
  .executor().results();
 
Example how to aggregate and group data:
import ch.ivyteam.ivy.workflow.query.CaseQuery;

 CaseQuery caseQuery = CaseQuery.businessCases();
 Recordset recordset = caseQuery.aggregate().sumCustomDecimalField1()
  .groupBy().customVarCharField1()
  .executor().recordset();

 recordset.getField(0, 0); // Sum of the group
 recordset.getField(0, 1); // Name of the group

Note, that a CaseQuery by default returns only cases of the current workflow context. It is not necessary to explicit filter the cases with CaseQuery.IFilterableColumns.applicationId() as this is already implicitly done by the CaseQuery itself.

API:
This is a public API.
  • Method Details

    • create

      public static CaseQuery create()
      Creates a new query

      For performance reasons you should always prefer businessCases() or subCases() if you only need one of those.
      Returns:
      A new instance of CaseQuery
      See Also:
      API:
      This public API is available in Java.
    • businessCases

      public static CaseQuery businessCases()
      Creates a new query that only returns business cases.
      Returns:
      A new instance of CaseQuery
      See Also:
      API:
      This public API is available in Java.
    • subCases

      public static CaseQuery subCases()
      Creates a new query that only returns sub cases (technical cases).
      Returns:
      A new instance of CaseQuery
      See Also:
      API:
      This public API is available in Java.
    • fromJson

      @Deprecated public static CaseQuery fromJson(String json)
      Deprecated.
      Do not serialize and deserialize CaseQuery. There is no guarantee that the serialized form is compatible with each version of ivy.
      Creates a new query based on the given JSON. See CaseQuery for an example.
      Parameters:
      json - the serialized CaseQuery, generated by asJson()
      Returns:
      A new instance of CaseQuery
      API:
      This public API is available in Java.
    • executor

      public IFluentQueryExecutor<ICase> executor()

      Provides a fluent API to execute this query and fetch its results.

      Returns:
      fluent API to execute this query.
      API:
      This public API is available in Java.
    • aggregate

      public CaseQuery.IAggregationQuery aggregate()

      Returns an object which contains the aggregation part for this query.
      It provides methods to perform aggregations on the query. For each aggregation a column is added to the result set.

      Example:

      CaseQuery.businessCases().aggregate().sumWorkingTime().avgWorkingTime();
      Corresponds to SQL:
      SELECT SUM(WorkingTime) AS SumWorkingTime, AVG(WorkingTime) AS AvgWorkingTime FROM IWA_Case

      Returns:
      aggregate query
      API:
      This public API is available in Java.
    • groupBy

      Returns an object which contains the group by part for this query.
      It provides methods to group the result by certain fields.

      Example:

      CaseQuery.businessCases().groupBy().ownerRoleId().ownerName().aggregate().countRows();
      Corresponds to SQL:
      SELECT OwnerRoleId, OwnerUserId, Count(*) AS Count FROM IWA_Case GROUP BY OwnerRoleId, OwnerUserId

      Returns:
      A query group by builder to add group by statements
      See Also:
      API:
      This public API is available in Java.
    • orderBy

      Returns an object which contains the order by part for this query.
      It provides methods to order the result by certain columns.

      Returns:
      An order by query builder to add order by statements
      API:
      This public API is available in Java.
    • where

      public CaseQuery.IFilterQuery where()

      Returns an object which contains the where part for this query.
      It provides methods to filter the result by certain columns.

      Returns:
      An filter query builder to add where statements
      API:
      This public API is available in Java.
    • asJson

      @Deprecated public String asJson()
      Deprecated.
      Do not serialize and deserialize Query. There is no guarantee that the serialized form is compatible with each version of ivy.
      This method allows to serialize a query as json and to deserialize the query by calling the corresponding fromJson(String) on the specific query.

      This allows to store the query in a database or send it over the wire to execute it at a later time or on a remote engine.

      Note, that NOT all methods supports de-/serialization proper. When using database related parameters like a User or Role the method with the username or the rolename has to be used, in order to evaluate the correct user or role on execution.

      Returns:
      the query as json
      API:
      This public API is available in Java.
    • toType

      @Deprecated public <T> T toType(Class<T> clazz)
      Deprecated.
      API:
      This public API is available in Java.