This package contains the main public API classes and interfaces of the BIRT Data Engine (DtE).

The Data Engine provides data access and transform services for the BIRT reporting platform. It handles connection to data sources, executes data set queries, provides metadata for data sets, retrieves data set query results, and performs additional data transforms such as grouping, filtering, sorting and aggregation.

A Data Engine client typically requests Data Engine services in these steps:

1. Obtains an instance of {@link org.eclipse.birt.data.engine.api.DataEngine} class by calling `DataEngine.newDataEngine()`. A single instances of `DataEngine` is typically used throughout an application.
2. Defines data sources and data sets available to the data engine by calling `DataEngine.defineDataSet()` and `DataEngine.defineDataSource()`. A data set or data source need only be defined once. This is typically done before any data engine query is executed.
3. Defines a data engine query by creating and populating an instance of {@link org.eclipse.birt.data.engine.api.IQueryDefinition}. Calls `DataEngine.prepare()` to prepare the query and obtain an instance of {@link org.eclipse.birt.data.engine.api.IPreparedQuery}
4. Calls `IPreparedQuery.execute()` to execute the query and obtain an {@link org.eclipse.birt.data.engine.api.IQueryResults} instance, from which an {@link org.eclipse.birt.data.engine.api.IResultIterator} can be obtained. Calls methods on `IResultIterator` to iterate through data rows in the query result set and to evaluate expressions.

All request classes that define data set, data source, query and related objects are defined as interfaces in this package. A Data Engine client may choose to implement these interfaces, or it can use the default implementation of these interfaces in the {@link org.eclipse.birt.data.engine.api.querydefn} package. @see org.eclipse.birt.data.engine.api.querydefn