You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by rg...@apache.org on 2011/05/12 16:10:37 UTC

svn commit: r1102318 - /incubator/wookie/site/trunk/content/wookie/docs/embedding.mdtext

Author: rgardler
Date: Thu May 12 14:10:37 2011
New Revision: 1102318

URL: http://svn.apache.org/viewvc?rev=1102318&view=rev
Log:
Documentation for the connector framework

Added:
    incubator/wookie/site/trunk/content/wookie/docs/embedding.mdtext   (with props)

Added: incubator/wookie/site/trunk/content/wookie/docs/embedding.mdtext
URL: http://svn.apache.org/viewvc/incubator/wookie/site/trunk/content/wookie/docs/embedding.mdtext?rev=1102318&view=auto
==============================================================================
--- incubator/wookie/site/trunk/content/wookie/docs/embedding.mdtext (added)
+++ incubator/wookie/site/trunk/content/wookie/docs/embedding.mdtext Thu May 12 14:10:37 2011
@@ -0,0 +1,144 @@
+Title:
+Notice:    Licensed to the Apache Software Foundation (ASF) under one
+           or more contributor license agreements.  See the NOTICE file
+           distributed with this work for additional information
+           regarding copyright ownership.  The ASF licenses this file
+           to you under the Apache License, Version 2.0 (the
+           "License"); you may not use this file except in compliance
+           with the License.  You may obtain a copy of the License at
+           .
+             http://www.apache.org/licenses/LICENSE-2.0
+           .
+           Unless required by applicable law or agreed to in writing,
+           software distributed under the License is distributed on an
+           "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+           KIND, either express or implied.  See the License for the
+           specific language governing permissions and limitations
+           under the License.
+
+This document describes how to embed Wookie Widgets in third party applications.
+
+## Overview and core concepts
+
+To embed a Wookie widget in a host application you need to install (or create) 
+an appropriate plugin for your host environment. This will provide the bridge
+between your host platform and the Wookie server. Currently available plugins 
+include:
+
+<ul>
+	<li><a href="http://community.elgg.org/pg/plugins/hoisl/read/385029/wookie-widgets" class="external-link" rel="nofollow">Elgg</a></li>
+	<li><a href="http://code.google.com/p/foogen/source/browse/#svn/trunk/drupal/module/didget" class="external-link" rel="nofollow">Drupal</a></li>
+	<li><a href="http://wiki.lamsfoundation.org/display/lamsdocs/Wookie+Widgets" class="external-link" rel="nofollow">LAMS</a></li>
+	<li><a href="http://moodle.org/mod/data/view.php?rid=3319" class="external-link" rel="nofollow">Moodle</a></li>
+	<li><a href="http://code.google.com/p/wookiewordpressplugin/" class="external-link" rel="nofollow">Wordpress</a></li>
+
+</ul>
+
+If your environment is not listed above then you may need to implement a plugin - 
+don't worry, it's pretty easy, especially if we have a connector framework 
+available for you (see below) and we're here to help. Before embarking on this though
+be sure to do a thorough search for a pre-existing plugin we are not aware of. Please 
+let us know if you find one.
+
+Before we get into the details lets looks at some key terminology.
+
+### Plugin
+
+A plugin is an extension to an existing web application that enables it to show 
+widgets that are being served by Wookie. A plugin implements the Wookie REST API 
+to discover which widgets are available, to request instances for particular 
+users, and to set participant information.
+
+Plugins are usually written in the programming language of the host web 
+application and may make use of an existing "widget" or "plugin" system, 
+extending it to support additional widgets made available by Wookie.
+
+### Connector Framework
+
+Wookie provides connector framework code in many languages. These frameworks 
+provides most of the code you need to build a plugin for your platform.
+
+If you intend to write a plugin for your favourite host application please check 
+the latest version of our [connector frameworks in Subversion](http://svn.apache.org/repos/asf/incubator/wookie/trunk/connector/) 
+for the latest available connector code.
+
+Naturally, we would prefer to work together in order to build as large a set of 
+connector frameworks and plugins as possible, so please help us improve and expand 
+this set of connector frameworks.
+
+### Viewer
+The viewer is the current user who is viewing a widget in the browser. 
+Typically an application uses session information to know who the current user is, 
+and this is used to request a particular widget instance. It is up to the plugin 
+to determine how to identify the viewer; for example the user's real id is one 
+possibility; another is an opaque hashcode using the id.
+
+### Widget Instance
+A widget instance is a persistent instance of a particular widget created for a user. Each widget instance has its own storage area in Wookie. Widget Instances are created by invoking the Wookie REST API using an API Key and supplying values for the viewer and the shared data key.
+
+### API Key
+An API Key is used to access many of the features of the Wookie REST API. Each individual web application needs its own API key. API Keys are generated from Wookie's administration interface.
+
+### Shared Data Key
+The shared data key is an arbitrary identifier that marks widget instances as being sibling instances that can share state information. It is up to the plugin to determine this value; typically there is a persistent identifier available for whichever view is being used as the container for a widget.
+
+## Building Plugins with the Connector Framework
+
+The Java connector framework is used within Wookie itself and is therefore 
+considered the reference implementation. Other connector frameworks include PHP, 
+C#, Ruby and Python. However, even the Java framwork is incomplete and some 
+activities are accessed directly through the REST API (see next section). We welcome your help in expanding the framework code (in any language) so that all features can be accessed through it.
+
+See [Subversion](http://svn.apache.org/repos/asf/incubator/wookie/trunk/connector/) for 
+the latest available code.
+
+All code examples in this page are in Java, but other languages will use the same method names and parameters.
+
+### Basic usage of the framework
+
+In this section we document the most basic use of the connector framework. All example code is written in Java, but it should be the same in other languages (if not, help us bring them all up to date).
+
+In general to use the framework you will need to:
+
+<ul>
+	<li>get a WookieConnectorService</li>
+	<li>set the current user</li>
+	<li>get or create a widget instance</li>
+	<li>provide the instance URL to the hosting environment and display it</li>
+</ul>
+
+### Getting a connection to a Wookie server
+
+    /*
+     * Get the wookie service connector
+     */
+    public WookieConnectorService getWookieConnectorService(String serverURL, String apiKey, String sharedDataKey ) {
+      if (connectorService == null) {
+        connectorService = new WookieConnectorService(serverURL, apiKey, sharedDataKey);
+      }
+      return connectorService;
+    }
+
+### Working with users
+
+Set the current user:
+
+    WookieConnectorService conn = getWookieConnectorService(url, apiKey, datakey);
+    conn.setCurrentUser("testuser");
+
+### Working with widgets
+
+#### Get a widget instance.
+
+    String guid = ".....";
+    WidgetInstance instance = conn.getOrCreateInstance(guid);
+
+#### Displaying widgets
+
+Displaying the widgets is the job of the platform in which you wish to embed 
+widgets. The easiest way to embed a widget is simply to place it in an iframe. 
+To do this you will need an URL for retrieving the widget instance, for example:
+
+    String url = instance.getUrl(); // get the URL from the WidgetInstance
+    displayWidget(url); // a method you implement that displays the data at the URL
+

Propchange: incubator/wookie/site/trunk/content/wookie/docs/embedding.mdtext
------------------------------------------------------------------------------
    svn:eol-style = native