How to access Geppeto

To try Geppeto, click on the icon below

Geppeto Logo

Prerequisites

Please note that Geppeto requires Mozilla Firefox 3.0+. To download Firefox, click here.

Geppeto Usage Guidelines

Geppeto is a consumer programming environment and gadget container. Geppeto uses three basic types of gadgets: TouchMe, TickMe and TriggerMe. These three types of gadgets differ in the source of workflow execution. TouchMe gadget empowers consumers to create workflows. Therefore, the created workflow is consumer-initiated. TickMe gadget provides an environment for designing time-initiated workflows. External events, derived from SOA environments or other Web-related systems, can be used to trigger the workflow execution by utilizing the TriggerMe gadget. The basic instructions on how to use Geppeto gadgets are given below.

TouchMe Gadget

The main menu is shown by moving the mouse pointer over "Geppeto" text inside the blue bar on the gadget surface. The menu contains Save, Recovery, Edit, Move and Show/Hide features.

Composite gadgets are created by performing the following two steps:

The first step is to define a GUI for the composite gadget. This is done by using the right click context menu. When used on elementary gadgets, the context menu has the following three options: Add, Add as Input and Add as Output. The Add option is used to add control elements to the composite gadget's GUI (i.e. to add a button that will be used to initiate the workflow execution). By using the Add as Input option, a GUI element is added to the composite gadget. In addition, a COPY/PASTE action that transfers data from the element on the composite gadget to the original element on the elementary gadget is automatically defined. The Add as Output option does the exact opposite. Apart from adding an element to the composite gadget's GUI, it also defines a COPY/PASTE action that transfers data from the elementary to the composite gadget. Add as Input and Add as Output actions are performed on GUI elements that can be used to transfer useful data (for example, text boxes etc.). It is important to notice that actions used to map inputs are performed at the beginning of the workflow execution, while the actions used to map outputs are performed at the end of the workflow execution.

The second step is to define the application logic (i.e. the actions to be executed in between input and output mappings). This is done by setting the TouchMe gadget into programming by demonstration mode. Programming by demonstration mode is initiated by right-clicking on a control element in composite gadget's GUI and selecting the Start option. Now all the GUI level actions conducted by the consumer are stored. For example, click actions on buttons or copy/paste actions used to transfer data between elementary gadgets. To conclude the workflow definition, consumer right-clicks on the above mentioned control button and selects the End option. This action terminates programming by demonstration mode. By clicking on the control element, the workflow is executed in the order previously demonstrated by the consumer. Stored actions can be viewed and edited by selecting the Edit option from the main menu.

TickMe Gadget

The TickMe gadget is used to define time-driven actions. It is designed as a calendar-organizer. The consumer can scroll between months and select a date on the calendar surface. By selecting a date, a window with details for actions that are to be executed on that date is opened. More actions can be added by clicking on the Add Row button. Each action is defined by the time of execution, the length of repetition interval and action logic. Time of execution and repetition interval details are entered into the appropriate cells. The action logic is defined by left-clicking on the Click button. When selected, the button changes its name into Set Action. The action is set by demonstrating a click action on the GUI of elementary or TouchMe gadgets. The "Set action" button now changes name into "Click [button name] at [gagdet name]". This means that at the given time a click action will be performed on [button name] element in [gadget name] gadget and the action will be repeated periodically as defined in interval cell. The defined action is initialized and stored by clicking on the Set button. Actions can be temporary suspended by selecting the Pause option in the main menu.

TriggerMe Gadget

The TriggerMe gadget is used to define actions triggered by external events. On gadget initialization, a list of currently available event groups is presented. Each group contains a set of predefined events (for example, weather-related events etc.). By selecting an event group, the gadget generates its interface. Each row contains an event name and an action definition button. By clicking on the event name, details for the selected event are displayed. Actions are defined in the same way as in TickMe gadgets. The only difference is that actions are executed on event occurrences, rather than at the consumer specified time. The event group can be changed by selecting the Change Event Group option in the main menu.

Using TriggerMe APIs (for applicaton developers)

As stated above, Geppeto TriggerMe is used to create consumer-defined workflows triggered by external events. In order to define and signal such external events, application developers use functionalities of the TriggerMe repository. The repository is located at: http://161.53.65.222/trigger_me/event_repo/. Functionalities of the repository are accessed by sending HTTP GET messages using URLs defined in the table below.

Action URL Parameters Description
/api_add_group name Defines a new event group in the event repository. Group's name is defined by parameter name. If successful returns group ID.
/api_remove_group id Removes the selected event group from event repository.
/api_add_event name, description, group_id Adds an event to group defined by group_id. Event name and description are defined by name and description parameters respectively. If succesfull returns event ID.
/api_remove_event id Removes the selected event from event repository.
/api_signal_event id Signals the event defined by parameter id.
/api_group_list - Returns a list of available groups in the event repository. (JSON)
/api_event_list group_name Returns details for all events in group defined by parameter group_name. (JSON)

Example: The following HTTP request is used to create a new group with name "Group1": http://161.53.65.222/trigger_me/event_repo/api_add_group?name=group1

Geppeto Demonstration

This section contains a series of slide shows that explain in a visual way how Geppeto works and how it can be used. The slide shows demonstrate the principles of consumer programming with Geppeto on the example of personalizing a bestsellers gadget. To advance the slide show, left click on it with your mouse.

User interaction with a Geppeto gadget

This slide show describes the example use case used throughout the series and explains user interaction with the finished Geppeto gadget and the interaction of the finished Geppeto gadget with other gadgets on the iGoogle page. You can add the finished Geppeto gadget used in the slide shows by clicking here (you'll need to have Geppeto installed for the gadget to work properly). The Geppeto gadget will automatically add the other gadgets required for its operation to your iGoogle page.

The slide show is also available in Microsoft PowerPoint format here (if you want to download the uncrompressed version, click here).

Creating a personalized gadget with Geppeto

In this slide show you'll see how the personalized bestsellers gadget shown in the first slide show can be created with Geppeto, step-by-step.

The slide show is also available in Microsoft PowerPoint format here (if you want to download the uncompressed version, click here).