Class CaseQuery

  • Direct Known Subclasses:
    CaseQuery.AggregationQuery, CaseQuery.FilterLink, CaseQuery.GroupByQuery, CaseQuery.OrderByQuery

    @Generated(value="ch.ivyteam.db.meta.generator.internal.query.JavaQueryClassGenerator",
               date="Jul 29, 2022, 2:24:11 PM")
    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 Detail

      • 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:
        businessCases(), subCases()
        API:
        This public API is available in IvyScript and Java. It has the visibility EXPERT.
      • businessCases

        public static CaseQuery businessCases()
        Creates a new query that only returns business cases.
        Returns:
        A new instance of CaseQuery
        See Also:
        subCases(), create()
        API:
        This public API is available in IvyScript and Java. It has the visibility EXPERT.
      • subCases

        public static CaseQuery subCases()
        Creates a new query that only returns sub cases (technical cases).
        Returns:
        A new instance of CaseQuery
        See Also:
        businessCases(), create()
        API:
        This public API is available in IvyScript and Java. It has the visibility EXPERT.
      • 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 IvyScript and Java. It has the visibility NOVICE.
      • 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 IvyScript and Java. It has the visibility EXPERT.
      • groupBy

        public CaseQuery.IGroupByQueryColumns 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:
        CaseQuery.AggregationQuery.countRows()
        API:
        This public API is available in IvyScript and Java. It has the visibility EXPERT.
      • orderBy

        public CaseQuery.IOrderByQueryColumns 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 IvyScript and Java. It has the visibility EXPERT.
      • 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 IvyScript and Java. It has the visibility EXPERT.