
package com.smartgwt.client.docs;

/**
 * <h3>Operations Overview</h3>
 * Smart GWT Operations are dynamic, transparent communications made from the client-side Smart
 * GWT system running in the browser, to the server-side Smart GWT system running in a servlet
 * engine, or to other non-Smart GWT servers available via HTTP. Operations are used to load new
 * data or new behavior into a running Smart GWT application. Operations are also used to save
 * data entered by users, and in general, to get the result of any process which must be run on
 * the server for security reasons. <br><br> <b>RPC Operations</b> <br><br> RPC Operations are
 * low-level communications that send and retrieve arbitrary data.  RPC Operations are supported
 * by the {@link com.smartgwt.client.rpc.RPCManager} class, which when used with the Smart GWT
 * server, provides Java to JavaScript {@link com.smartgwt.client.rpc.RPCRequest#getData 2-way
 * translation} of basic data structures.  The RPCManager also provides a mechanism for
 * client-side code to be invoked when an operation completes (called a "callback").  RPC
 * Operations are intended for unstructured data; data that is ultimately destined for display in
 * Smart GWT components will generally come from DataSource operations. <br><br> <b>DataSource
 * Operations and DataBound Components</b> <br><br> A {@link
 * com.smartgwt.client.docs.DataSourceOperations DataSource Operation} is an operation that acts
 * on a DataSource, performing one of the basic actions that makes sense on a set of similar
 * records: "fetch", "add", "update" or "remove".  Unlike RPC operations, DataSource operations
 * have specific request data and response data, for example, in the "fetch" DataSource operation,
 * the request data is expected to be search criteria, and the response data is expected to be a
 * list of matching DataSource records.  Although DataSource operations can be invoked manually
 * from the client, they are generally automatically invoked by DataBound components. <br><br>
 * DataBound Components are components that understand DataSources.  Databound components
 * configured with a DataSource are able to offer complete user interactions without further
 * configuration (extensive customization is also supported). <br><br> For example, given a
 * DataSource, the ListGrid component supports a sophisticated inline editing interaction,
 * complete with automatically chosen editors like date pickers for dates, type-aware validation,
 * saving, and error reporting.  <br><br> A DataBound component supporting an interaction such as
 * inline editing will automatically submit DataSource operations to the server at appropriate
 * times. <br><br> <b>DataSource Operation Integration</b> <br><br> Integrating DataSource
 * operations with an existing system is best approached by implementing the the 4 basic
 * DataSource operations in terms of your existing object model or data store. With these 4
 * operations implemented, the entire range of user interactions supported by Smart GWT {@link
 * com.smartgwt.client.widgets.DataBoundComponent databinding-capable components} becomes
 * applicable to your server.  At that point authentication, authorization and other business
 * rules can be layered on top. <br><br> <b>Built-in SQL Connectivity</b> <br><br> The Smart GWT
 * Server comes with a built-in {@link com.smartgwt.client.docs.SqlDataSource SQLDataSource} which
 * can be used without any server-side code needing to be written.  In contrast, any operation
 * which uses custom server-side code is called a "Custom Operation". <br><br> Generally it makes
 * sense to prototype an application using Built-in DataSource Operations, then on the backend,
 * create Custom DataSource Operations to retrieve data from the data store you will use in
 * production (though don't rule out using the SQL DataSource in  production - see {@link
 * com.smartgwt.client.docs.SqlVsJPA this discussion} of the advantages of doing so}.   As you
 * switch from using Built-in DataSources to Custom Operations, no client-side code  changes will
 * be required, because the client cares only about the DataSource definition,  not the data store
 * which the data is ultimately retrieved from. <br><br> <b>Data Managers: ResultSet and
 * ResultTree</b> <br><br> Data Managers manage datasets retrieved from DataSources.  Data
 * Managers are automatically created by DataBound components, but can be created directly when
 * more control is needed. <br><br> Data Managers provide load-on-demand for datasets too large to
 * be loaded on the client, automatically invoking DataSource operations as necessary to retrieve
 * data as it is requested, and optionally fetching ahead to anticipate further requests.   Data
 * Managers will automatically perform actions locally when it is possible, for example, a sort
 * action can be performed locally with a complete cache.  Data Managers also automatically manage
 * the consistency of the client-side cache, observing update operations performed against
 * DataSources and integrating updated rows automatically. <br><br>
     * @see com.smartgwt.client.rpc.RPCManager
     * @see com.smartgwt.client.widgets.DataBoundComponent
     * @see com.smartgwt.client.docs.DataSourceOperations
     * @see com.smartgwt.client.docs.ClientServerIntegration
     * @see com.smartgwt.client.data.DataSource#fetchData
     * @see com.smartgwt.client.data.ResultSet
     * @see com.smartgwt.client.widgets.tree.ResultTree
 * @see com.smartgwt.client.rpc.HandleErrorCallback#handleError
 * @see com.smartgwt.client.rpc.RPCManager#runDefaultErrorHandling
 * @see com.smartgwt.client.data.DataSource#fetchData
 * @see com.smartgwt.client.data.DataSource#filterData
 * @see com.smartgwt.client.data.DataSource#exportData
 * @see com.smartgwt.client.data.DataSource#addData
 * @see com.smartgwt.client.data.DataSource#updateData
 * @see com.smartgwt.client.data.DataSource#removeData
 * @see com.smartgwt.client.data.DataSource#validateData
 * @see com.smartgwt.client.data.DataSource#performCustomOperation
 * @see com.smartgwt.client.data.DSRequest#getOperationId
 * @see com.smartgwt.client.data.AdvancedCriterionSubquery#getOperationId
 * @see com.smartgwt.client.widgets.form.ValuesManager#getAddOperation
 * @see com.smartgwt.client.widgets.form.ValuesManager#getUpdateOperation
 * @see com.smartgwt.client.widgets.form.ValuesManager#getRemoveOperation
 * @see com.smartgwt.client.widgets.form.ValuesManager#getFetchOperation
 */
public interface Operations {
}
