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.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.rpc.RPCManager#handleError * @see com.smartgwt.client.data.DSRequest#getOperationId */ public interface Operations { }