User:Frank Arp/sandbox

Ozone Widget Framework
The Ozone Widget Framework (OWF) is a customized open-source web application that allows users to easily access all their online tools from one location. Not only can users access websites and applications with widgets, they can group them and configure some applications to interact with each other via widget intents. OWF was released to the public as Open Source Software as required by Section 924 of the 2012 National Defense Authorization Act.

Contents
Description

Creating Widgets

Widget APIs

Supported Platforms, Servers and Databases

Description
OWF is built on top of Apache can be installed on any servlet container (e.g. Apache Tomcat). Its framework is idea for visually organizing and laying out lightweight web applications commonly referred to as “widgets” within a user’s browsers (e.g. Internet Explorer, Firefox). The goal of OWF is to provide a common thin-client environment for dynamic analytic workflows using lightweight web applications distributed across an enterprise. OWF is built on Grails, which itself is built on top of Spring and Hibernate Frameworks. On the client side OWF is written in JavaScript using EXT-JS. This side is divided into the User Interface (UI) components, data layer and widget APIs. Apache’s Shindig, an OpenSocial container, enables quick hosting of social applications by providing the code to render gadgets, proxy requests, and handle Representation State Transfer (REST) and Remote Procedure Call (RPC) requests.

Creating Widgets
-	Descriptor URL: File that contains all required information for OWF to create the widget. This prevents typos and enables quick widget creation. If a Descriptor URL is not available the administrator clicks on the “Don’t have a descriptor URL” link. This brings up the manual entry from the widget editor

-	Manual Input: Widget information is entered field by field. The widget application itself is not actually on the OWF server but rather at the location specified in the Descriptor URL or manual entry form.

-	Once a widget is created and any applicable intents assigned it needs to be assigned to either a User(s) or Group(s) in order to be usable

-	Every new user logging into OWF for the first time is to become part of the OWF User’s Group and will receive access to all widgets assigned to this group

o	Allows users to group, categorize and separate widgets that populate their Launch Menu

o	Added/edited via Settings menus

o	Viewable via Launch Menu

-	OWF Framework helps connects widgets that are capable of handling the same types of data and allows users to be involved in choosing which available widgets will handle requested actions

-	Applicable widgets do not need to know specifically about one another

Widget Intents

-	Implemented on top of Eventing and Widget Launching APIs

Dashboards

-	User defined layout of widgets with stateful attributes

-	Enables organization and the display of widgets in a browser window within one or more panes

-	Retains same appearance as the last time same user accessed it

-	User can have any number of dashboards, all of which are independent of each other

-	Stateful widget parameters (title, height, width, x/y/z coordinates, minimized, maximized, etc. Dashboard Designer

-	Can be used to create a new dashboard or edit an existing dashboard

Rule Boxes

-	Horizontal Rule Boxes can be used to cut the dashboard or subsections of the dashboard into upper and lower panes

-	Vertical Rule Boxes can be used to cut the dashboard or its subsections into left and right side panes Dashboard Types

-	During the design process any of the dashboard types can be placed into sections of the dashboard. There can be a single dashboard containing any panes (e.g. Accordion, Desktop, Portal, Tabbed, Fit)

Reset

-	Clears modifications to dashboard

Lock/Unlock icon

-	Dashboard creator can lock the dashboard ensuring to prevent modifications made to it. Widgets cannot be added/removed and panes cannot be edited

Saves

-	Saves dashboard, closes it and launches it

Cancel

-	Cancels changes made since the last save or since entering the Dashboard Designer

Share Dashboard

-	Creates an export file (JSON) for use by others to use as an input when creating a dashboard

Restore Dashboard

-	Restores to originally state created by the administrator. However, users can customized their own dashboard but it only affects their version Edit Dashboard

-	Edit user specific instance of dashboard or enables Admins to edit a group or shared dashboard Delete Dashboard

-	Deletes dashboard from user’s instance

Desktop Dashboard

-	Similar to the desktop on most person computers. It enables the user to open widgets from a taskbar and place widgets freely in the dashboard

-	Click share from the Layout menu. This creates a .json file, or custom file extension which can be saved/forwarded to other users. A user can then import the file when creating a Dashboard

-	Allow members of a group to have identical dashboard copies

-	Dashboards are assigned to a group by an administrator

-	Users can customized their instance of the group dashboard. Those changes will only affect that user’s dashboard instance

-	Each user can reset back to the original group Dashboard

Note: For IE users the dashboard file is open to custom naming conventions. Firefox users the OWF will default to saving all dashboards with a .json extension Group Dashboards

Widget APIs
Eventing API

-	Eventing is the ability for a widget to send messages to another to affect it

-	Show Channel Shouter

o	Publish subscribe paradigm provokes a simple JavaScript to libraries

o	Widgets must be within one dashboard to communicate

o	JavaScript-based eventing using Shindig is browser contained enabling a message from one widget to another while never leaving the browser

o	For large payloads recommend a URL pointing to the data instead of sending it over the message

-	RPC/Point-Point Eventing API

o	Enables directed (point-to-point) eventing and messaging

o	Widgets expose functions while other widgets call those functions

Widget Launching API (OWF 3.3 and later)

-	Required Dojo and all Eventing including statements

-	Widget sends a message to the OWF server listening for such messages to launch a specific widget and then pass it a payload of data. The OWF server then executes the payload of data according to its programmed function

Drag and Drop API

-	Similar to eventing where data is passed from one widget to another except it is user controlled. Trigger for the data pass is the drag and drop event. Sender is the widget you drag from and the recipient is the widget to drag to

Widget Intents API (OWF 6 and later)

-	Based on web intents. Allows widgets to tell OWF container information about data they send/receive

-	OWF uses this info to allow users to select widgets they want to use together

-	OWF follows MIMI naming conventions when storing data type strings in databases

Preferences API

-	Under the cover the preferences are persisted to a database

-	Can use Oracle, MySql, PostGreSQL, or any other similar relational database supported by Hibernate

-	OWF preferences use Hibernate under the covers. Limitations are those of the implementation you choose

Widget State API

-	Provides the ability to have widgets listen for or override specific state changes or change attempts

-	Includes widget movement, resizing, closing, disabling, enabling and changing the widget title

Theming API

-	Sample widgets that ship with OWF respond to the user’s current OWF theme

-	A widget’s implementation determines how its user interface must change to match the OWF themes. Developers using standard HTML/JavaScript widgets should create CSS stylesheets that match OWF themes and use logic to decide which CSS stylesheet to include

Supported Platforms, Servers and Databases
Supported Platforms: I.E 7, 9 & Firefox 3.6, 15

Supported Servers: Windows, CentOS

Supported Application Servers: Apache Tomcat 7 (JDK 6 required)