Interface Operations

public interface Operations

Operations Overview

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.

RPC Operations

RPC Operations are
low-level communications that send and retrieve arbitrary data. RPC Operations are supported
by the RPCManager class, which when used with the Smart GWT
server, provides Java to JavaScript 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.

DataSource
Operations and DataBound Components

A 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.

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).

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.

A DataBound component supporting an interaction such as
inline editing will automatically submit DataSource operations to the server at appropriate
times.

DataSource Operation Integration

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 databinding-capable components becomes
applicable to your server. At that point authentication, authorization and other business
rules can be layered on top.

Built-in SQL Connectivity

The Smart GWT
Server comes with a built-in 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".

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 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.

Data Managers: ResultSet and
ResultTree

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.

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.