Coder Social home page Coder Social logo

ozoneplatform / owf-framework Goto Github PK

View Code? Open in Web Editor NEW
330.0 96.0 144.0 401.7 MB

OZONE Widget Framework

Home Page: http://ozoneplatform.org

License: Apache License 2.0

Ruby 0.02% ActionScript 0.14% Groovy 2.68% JavaScript 76.02% CSS 3.84% Java 0.49% ASP 0.01% C# 0.02% Shell 0.03% PHP 0.66% Perl 0.01% XSLT 0.18% Python 0.01% HTML 15.06% SQLPL 0.13% PLSQL 0.47% PLpgSQL 0.22% Groff 0.01% ApacheConf 0.01% Batchfile 0.01%

owf-framework's Introduction

Interested in becoming a contributor?

Fork the code for this repository. Make your changes and submit a pull request. The Ozone team will review your pull request and evaluate if it should be part of the project. For more information on the patch process please review the Patch Process at https://ozone.nextcentury.com/patch_process.

OZONE Widget Framework

Description

The OZONE Widget Framework (OWF) is a framework that allows data from different servers to communicate inside a browser window without sending information back to the respective servers. This unique capability allows the OWF web portal to offer decentralized data manipulation. It includes a secure, in-browser, pub-sub eventing system which allows widgets from different domains to share information. The combination of decentralized content and in-browser messaging makes OWF particularly suited for large distributed enterprises with legacy stovepipes that need to combine capability. Use it to quickly link applications and make composite tools.

Screenshots

My Apps Menu

My Apps Menu

All of a user's applications appear on this menu.

Desktop Layout

Desktop Layout

This is a desktop layout. Users can move widgets to useful locations on the screen.

Tabbed Layout

Tabbed Layout

Tabbed layouts allow widgets to open on separate tabs.

Using the App Builder, users can design dashboards that incorporate multiple layouts. You see desktop and tabbed layout examples above. You can also incorporate accordion, portal and fit-pane layouts into each dashboard.

Technology components

For OWF Version 7.16.0, the front-end user interface uses JavaScript, and the back-end uses Grails. User preferences are stored in a relational database - anything supported by Hibernate. Authentication of users is a modular function provided by Spring Security.

Browser Support

Numbered releases are tested on IE7, IE9, Firefox 17 and Chrome 33.

Copyrights

Software (c) 2015 Next Century Corporation

Portions (c) 2009 TexelTek Inc.

The United States Government has unlimited rights in this software, pursuant to the contracts under which it was developed.

The OZONE Widget Framework is released to the public as Open Source Software, because it's the Right Thing To Do. Also, it was required by Section 924 of the 2012 National Defense Authorization Act.

Released under the Apache License, Version 2.

Community

[Support Guidance] (https://github.com/ozoneplatform/owf-framework/wiki/Support-Guidance): Provides information about resources including related projects.

Google Groups

ozoneplatform-users : This list is for users, for questions about the platform, for feature requests, for discussions about the platform and its roadmap, etc.

ozoneplatform-dev : This deprecated list provides historical information relating to extending the platform. It is no longer maintained but old posts often serve as resources for developers new to the platform.

OWF GOSS Board

OWF started as a project at a single US Government agency, but developed into a collaborative project spanning multiple federal agencies. Overall project direction is managed by "The OWF Government Open Source Software Board"; i.e. what features should the core team work on next, what patches should get accepted, etc. Gov't agencies wishing to be represented on the board should check http://owfgoss.org for more details. Membership on the board is currently limited to Government agencies that are using OWF and have demonstrated willingness to invest their own energy and resources into developing it as a shared resource of the community. At this time, the board is not considering membership for entities that are not US Government Agencies, but we would be willing to discuss proposals.

Contributions

Non-Government

Contributions to the baseline project from outside the US Federal Government should be submitted as a pull request to the core project on GitHub. Before patches will be accepted by the core project, contributions are reviewed by the core team, see Contributor Guidelines. If you or your company wish your copyright in your contribution to be annotated in the project documentation (such as this README), then your pull request should include that annotation.

Government

Contributions from government agencies do not need to have a CLA on file, but do require verification that the government has unlimited rights to the contribution. An email to [email protected] is sufficient, stating that the contribution was developed by an employee of the United States Government in the course of his or her duties. Alternatively, if the contribution was developed by a contractor, the email should provide the name of the Contractor, Contract number, and an assertion that the contract included the standard "Unlimited rights" clause specified by DFARS 252.227.7014 "Rights in noncommercial computer software and noncommercial computer software documentation".

Government agencies are encouraged to submit contributions as pull requests on GitHub. If your agency cannot use GitHub, contributions can be emailed as patches to [email protected].

Related projects

OZONE Marketplace

A sister project of OWF, Marketplace is a search engine for "widgets", effectively the "apps store" for OWF.

owf-framework's People

Contributors

drewwarren avatar emosher avatar iannelsondev avatar jspautsch avatar kageryu7 avatar kmcbeth avatar lheffner avatar mparizernc avatar ncastine avatar nishp1 avatar ntabernero avatar rantonucci avatar risacher avatar rpokorny avatar stephanieerin avatar tdehart avatar tinacolemannextcentury avatar tpanningnextcen avatar wmohler avatar xandris avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

owf-framework's Issues

OWF 7 NoSuchFieldException

When starting OWF 7 with JDK 1.7 using the start.bat command, after logging into the application, one can see many error messages related to NoSuchFieldException are generated.
A workaround solution is to use JDK 1.6.

Ozone behind a reverse proxy/SSO

I'm trying to get a development version of ozone working behind our reverse proxy.
Basically, the externally facing Apache instance handles PKI authentication and then passes an HTTP header back such as REMOTE_USER.

[User] ---------HTTPS--------->[Proxy]---------------HTTP--------------->[Ozone]
             โ””--PKI-CERT--โ”˜                  โ””--REMOTE_USER--โ”˜

For this to work, ozone should not be running with SSL, since the traffic is running with SSL from the externally facing machine to the user. It looks as though running Ozone with HTTP (non-SSL) is unsupported, although I think this would be the preferred method when running with any single sign on scenario.

How can I run ozone without SSL and are there any default security profiles for getting the authentication info from a header?

OWF throws unhelpful exception when theme directory not found

When OWF attempts to open a theme that does not exist an exception similar to the following is logged:

ERROR [org.codehaus.groovy.grails.web.servlet.view.GroovyPageView] Error processing GroovyPageView: Cannot invoke method exists() on null object
java.lang.NullPointerException: Cannot invoke method exists() on null object
    at ozone.owf.grails.services.ThemeService.getTheme(ThemeService.groovy:67)
    at ozone.owf.grails.services.ThemeService$getTheme.callCurrent(Unknown Source)
    at ozone.owf.grails.services.ThemeService.getCurrentTheme(ThemeService.groovy:85)
    at ozone.owf.grails.services.ThemeService$$FastClassByCGLIB$$2e630feb.invoke(<generated>)
    at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
...

As the stack trace notes the origin of the problem is the following section in ThemeService.groovy:

if (!(themeName && resource.exists()))
    throw new OwfException(message: "Cannot find the requested CSS theme: ${themeName}", exceptionType: OwfExceptionTypes.GeneralServerError)

Adding the ? operator before the call to the exists() method will allow the check to throw the cleaner Cannot find the requested CSS theme as intended.

OWF.RPC API fails when RPC server is a background widget

RPC client widget will encounter an exception when attempting to call a function that was registered by a background widget. Making the background widget a normal widget and refreshing the browser allows the call to succeed.

Potentially related issue: OWF.getOpenedWidgets() does not return background widgets.

To reproduce:

  1. Create 2 normal widgets, one as a RPC server and the other as a client. Ensure OWF.RPC.registerFunctions() is called before OWF.notifyWidgetReady(); and both are preformed within OWF.ready() on the server widget. The client widget can use OWF.Launcher.launch() to ensure the first widget is launched and also get the instance id via the result.uniqueId in the callback. Said ID can then be used to get the widget proxy. (Using the launcher to get the instance ID avoids a related issue with background widget missing from getOpenWidgets.)
  2. Confirm the client can successfully call a function on the server widget via RPC.
  3. Switch the server widget to a background widget.
  4. Error will occur when client attempts to call RPC function.

7.16 Production Installation Database Issues

When following the 7.16 help bundle installation, the documentation states:

  1. Create the schema by running the \dbscript\PostgreSQLPrefsInitialCreate.sql script before starting OWF.
  2. If OWF is being installed as a production environment, this can serve as the final step. However, if sample data is required (e.g., creating a testing environment), the remaining steps can be followed.

Then, when attempting to add an App Component to the "OWF Administrators" group, we end up with this stacktrace:

2015-07-13 18:15:20,277 ERROR [grails.app.controllers.ozone.owf.grails.controllers.BaseOwfRestController] (http-ozone7/10.0.1.66:8443-2) java.lang.NullPointerException: Cannot get property 'people' on null object: java.lang.NullPointerException: Cannot get property 'people' on null object
        at org.codehaus.groovy.runtime.NullObject.getProperty(NullObject.java:56) [groovy-all-2.1.9.jar:2.1.9]
        at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:169) [groovy-all-2.1.9.jar:2.1.9]
        at org.codehaus.groovy.runtime.callsite.NullCallSite.getProperty(NullCallSite.java:44) [groovy-all-2.1.9.jar:2.1.9]
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:227) [groovy-all-2.1.9.jar:2.1.9]
        at ozone.owf.grails.domain.Group.syncPeople(Group.groovy:94) [owf-all.jar:]
        at ozone.owf.grails.domain.Group$syncPeople$8.call(Unknown Source)
        at ozone.owf.grails.services.WidgetDefinitionService$_updateWidget_closure17.doCall(WidgetDefinitionService.groovy:569) [owf-all.jar:]

After looking at the source domain/.../Group.groovy:94 I come to the conclusion that the ADMINS role was not created.

Looking in the PostgreSQLPrefsUpdate_v7.16.0.sql it creates the roles:

INSERT INTO role (authority, description, id, version) VALUES ('ROLE_USER', 'User Role', 26, 2);
INSERT INTO role (authority, description, id, version) VALUES ('ROLE_ADMIN', 'Admin Role', 27, 1);

After manually creating the roles, in psql, I no longer get the NullPointerException, but when you add an App Component to a group, it doesn't show up consistently to all members of the group.

So, what is the relationship between roles and groups? Is there anything else in the PrefsUpdate that is necessary?

Verify that OWF does not use the dojo content handler for javascript

The following is included in OWF as part of dojo. The code should never be used/called by OWF this ticket is to validate that is accurate.

Dynamic Code Evaluation: Code Injection within the dojo content handler for javascript, on the same line number (9899) in all three files (owf-server.js, owf-widget.js, and owf-admin-widget.js)

   9895        javascript: function(xhr){ 
   9896            // summary: A contentHandler which evaluates the response data, expecting it to be valid JavaScript
   9897
   9898            // FIXME: try Moz and IE specific eval variants?
   9899            return _d.eval(xhr.responseText);
   9900        },     

The file owf-widget.js interprets unvalidated user input as source code on line 9899. Interpreting user-controlled instructions at run-time can allow attackers to execute malicious code.

Errors when building due to OWFAntTasks

When trying to build, lib/compressjs I get a taskdef class owf.ant.YUICompressTask cannot be found error. After investigation...

  1. OWFAntTasks-1.0.0.zip never gets added to the classpath as it isn't a .jar.

  2. OWFAntTasks-1.0.0.zip isn't a jar, it contains an extra top-level folder OWFAntTasks-1.0.0.

  3. After making a proper jar by hand with it, i end up with this build failure:

    BUILD FAILED
    /Users/ruckc/Documents/workspace/owf-framework/build.xml:61: taskdef A class needed by class owf.ant.YUICompressTask cannot be found: org/mozilla/javascript/ErrorReporter
     using the classloader AntClassLoader[/Users/ruckc/Documents/workspace/owf-framework/lib/compressjs/OWFAntTasks-1.0.0.jar:/Users/ruckc/Documents/workspace/owf-framework/lib/compressjs/yuicompressor-2.4.2.jar]
    
  4. After adding another fileset, with ${work.dir}/jsdoc/js-1.7R1.jar to the compressor.classpath I'm able to get past -init.

PostgreSQLPrefsInitialCreate.sql primary key collisions

When using PostgreSQLPrefsInitialCreate.sql, the hibernate_sequence starts at 1. When it loads the default app components for the administration app, they have hardcoded 186-195 identifiers. Whenever hibernate_sequence overlaps those, the objects will fail to create with hibernate primary key collision errors.

I locally fixed my postgresql script by changing the hardcoded id's to nextval('hiberate_sequence')

Immediate Build Failure on master after cloning repo

After cloning the repo I cd'ed into the owf directory and ran "ant". Immediately the build failed.

$ git clone https://github.com/ozoneplatform/owf
$ cd owf
$ ant -version
Apache Ant(TM) version 1.8.4 compiled on September 18 2012
$ ant
Buildfile: /data/src/opensource/owf/build.xml
  [taskdef] Could not load definitions from resource net/sf/antcontrib/antlib.xml. It could not be found.

_init-ivy:
  [taskdef] Could not load definitions from resource net/sf/antcontrib/antlib.xml. It could not be found.

BUILD FAILED
/data/src/opensource/owf/build.xml:29: The following error occurred while executing this line:
Target "init-ivy" does not exist in the project "owf-server". 

Total time: 0 seconds
$

Option to lock dashboard LAYOUT

OWF already has the option to lock a dashboard to a limited set of widgets. We need the opposite: an option to allow any widgets to be opened, but lock the LAYOUT of a dashboard.

Cross Domain Eventing broken in Google Chrome 30

Reported in this Google Group thread.

When using version 30 of the Chrome browser widgets running on a different server (or port) than OWF trigger the following error on initialization:

Uncaught Widget relay init failed. Relaying will not work. Inner Exception: WidgetInitException: The call to container_init failed. Inner Exception: SecurityError: Blocked a frame with origin "https://some_servername_and_port" from accessing a frame with origin "https://some_other_servername_or_port". Protocols, domains, and ports must match.    owf-widget-debug.js:17264
Ozone.eventing.Widget   owf-widget-debug.js:17264
Ozone.eventing.Widget.getInstance   owf-widget-debug.js:17620
OWF._init   owf-widget-debug.js:20945
(anonymous function)    owf-widget-debug.js:23202
dojo.loaded     owf-widget-debug.js:712
dojo._callLoaded    owf-widget-debug.js:818
dojo._modulesLoaded     owf-widget-debug.js:801
dojo._loadInit  owf-widget-debug.js:1720

Contributor Guidelines for OWF

Need a contributing document for people submitting pull requests to the project. Should be in CONTRIBUTING.md form for Github.

JBoss 5.1 deployment

Has any seen this issue deploying the WAR to a JBoss 5.1 server?

2013-01-17 08:31:13,396 ERROR org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/owf-server-7.0.0-GA] Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.web.access.intercept.FilterSecurityInterceptor#0': Cannot resolve reference to bean 'org.springframework.security.authentication.ProviderManager#0' while setting bean property 'authenticationManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authentication.ProviderManager#0': Cannot create inner bean '(inner bean)' of type [org.springframework.security.config.authentication.AuthenticationManagerFactoryBean] while setting bean property 'parent'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#11': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.authenticationManager': Cannot resolve reference to bean 'preauthAuthProvider' while setting bean property 'providers' with key [0]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'preauthAuthProvider' is defined

Images in externally hosted themes revert to default when requested under /images

Images served from
/owf/images
are mapped by /images in UrlMappings and get routed to getImageURL(). This method cannot seem to locate the image file from a theme located in the external classpath location. This is likely happening because the resource lookup used in ThemeService.getImageURL() is failing in some cases.

Quick test: move a bundled theme out to the external classpath location, default is tomcat/lib/themes, replace the images/brand-logo.png with some other image, and test by loading the About popup in OWF. The about.jsp page loads the image using a straight IMG request rooted at /owf/images and should fail to load the image. Move theme back under internal webapps/owf/themes are to see it succeed.

Known workarounds:

  • move the entire theme down under the internal webapps/owf/themes area
  • copy the theme/images images down under internal common location webapps/owf/themes/common/images

Errors when deploying to JBoss

Are there updated deployment instructions for deploying OWF 7.16 to JBoss 7.1.1? I tried deploying it the way we have deployed 7.14.2 in the past, but I am getting the error "NoClassDefFoundError: org/apache/tomcat/jdbc/pool/DataSource", despite configuring OWF with a Postgres datasource in OwfConfig.groovy. I tried adding the tomcat-jdbc.jar, but it moves on to complain about other Tomcat dependencies like "org/apache/juli/logging/LogFactory". Is Tomcat required for this version?

Proposed clarification of widget intents data payload to support ability to send optional data

We have a use case in which we'd like to send over optional information in an intent. If the user selects a widget that can make use of the additional information, it will, but otherwise the intent specifies a basic behavior. This is modeled today in Android intents - see their description of extras.

More specific use case for widgets: assume that we'd like to plot KML. Type would be "application/kml" and action requested ACTION_VIEW. Optimally, any widget that can support KML viewing would be able to handle. That said, I'd like to consider use cases where I specify a layer in which to put the KML, for maps that can handle. (This is a supported capability in CMWAPI-compliant maps...). I'd like to pass along a layer id as an optional bit of metadata to be used by maps which can support it...

Proposed patch file included below, underneath the dashed line. (Note: although it is possible to set up pull requests for wikis, the owf.wiki project has some issues with duplicate files in its trees, so I was unable to push to a new repo for use with a pull request.)

Understood impact: none. The wiki updates suggest an approach, but do not require it. The updated text is intended to just more strongly state what the examples provided by the team already imply.


From 2835c25dfcba0674a2387b6b2170d81414d545a7 Mon Sep 17 00:00:00 2001
From: Tina Coleman [email protected]
Date: Fri, 27 Dec 2013 16:04:24 -0500
Subject: [PATCH] Proposed update to clarify means for extension for widget
intents


OWF7/OWF-7-Developer-Widget-Intents-API.md | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/OWF7/OWF-7-Developer-Widget-Intents-API.md b/OWF7/OWF-7-Developer-W
index 9174b3b..b2467ec 100644
--- a/OWF7/OWF-7-Developer-Widget-Intents-API.md
+++ b/OWF7/OWF-7-Developer-Widget-Intents-API.md
@@ -1,3 +1,4 @@
+

Widget Intents API

#1 Overview

@@ -54,7 +55,7 @@ The Widget Intents API requires the use of Eventing. For an ex
Use the Widget Editor in the user interface to add, edit or remove widget inten

  1. The first argument is an Intent. An Intent is simply an object describin
    -2. The second argument is an object containing the data that the intent is
    +2. The second argument is an object containing the data that the intent is

  2. The third argument is a callback function that is executed once the rece

    The example below displays an intent that graphs a stock price. Once a receivin
    @@ -91,7 +92,7 @@ Use the Widget Editor in the user interface to add, edit or re

  3. The first argument is an Intent. An Intent is simply an object describin

-2. The second argument, a function that is executed once an Intent is recei
+2. The second argument, a function that is executed once an Intent is recei

The example below uses Intents to plot a stock price on the graph:

1.7.11.msysgit.1

Set OWF Banner to classified

I'm looking to set the banner to "CLASSIFIED" as opposed to "UNCLASSIFIED". I'm setting the value within the JBlocksConfig.xml and it looks like this:

property name="configMessage" value="UNCLASSIFIED//FOUO">

This produces a green banner. I would like to produce a red classified banner.

Can you please tell me what are the different accepted values in the property tag above?

Thanks,

Adam

OWF ToolBar is not showing up

Hello Experts,
I am so new to OWF. I installed OWF with localhost option and connect to database, it worked fine. But after changing the localhost to servername (generated server certs and user cert by following the instruction). I was able to login to servername:8443/owf/ by testAdmin1/password but OWF ToolBar wont show up any more! Please Help
Thanks so much

OWF.Chrome.setTitle fails for a widget in a Tab pane

Steps to replicate:

  1. Login to OWF as an admin.
  2. Create the Widget Chrome widget in your OWF instance using the descriptor URL from https://owfservername:port/owf/examples/walkthrough/descriptors/WidgetChrome_descriptor.html
  3. Assign the widget to your user account.
  4. Launch the Widget Chrome widget into a tabbed pane.
  5. Click on the Set Title button to update the title.
    Expected Result: Widget header should reflect new title.
    Actual Result: Widget header doesn't reflect new title.

Checks needed when updating a widget to be a singleton

When editing a widget, it is possible to cause an error in OWF if you edit it to be a singleton while there are multiple instances of a widget open in a dashboard. There should probably be some logic to verify that the widget in question is not already present multiple times in a dashboard

To recreate (steps courtesy of Neil Castine):

  1. Create a dashboard with a vertical divider.
  2. Set a portal pane on the left and a desktop pane on the right.
  3. Launch two instances of the same normal widget and place one in each pane.
  4. Edit the properties of said widget changing it to be both singleton and background.
  5. Refresh the browser and error occurs.

OWF 7 classification banners

Can someone provide any information for showing classificaiton banners within OWF 7? The banner needs to resemble the banner in the image. Any help would be greatly appreciated.

Untitled

New dashboard region type: Navigation (or Toolbar)

Some of the other issues I just created (#41 and #42) would become partly unnecessary if OWF supported a way to define a dashboard region to act as a pre-defined navigation area.

Similar to the way Ext JS Toolbars work, a Navigation region could be docked to the left or top of a dashboard. Menu options would allow launching new widgets into the other dashboard area(s).

This may require some thought. Ideally, it would work exactly like an Ext JS Toolbar, to not only limit the space it uses on the dashboard, but also to remove any frame overflow issues. (Currently, a widget providing navigation control would require enough space to show any drop down menus, otherwise they're cut off at the edge of the frame).

I'm not sure if the best way to configure this navigation toolbar would be though a JSON object, or if a URL could be given to OWF to define the items and behavior of the toolbar, or if some other approach would be better. But given how complex OWF dashboards can become, especially when many widgets are available, it really needs an option for more focused navigation and control over the widgets and the inter-widget workflows they enable.

Update 7.0 documentation

The current quick start guide no longer matches the content of the distribution zip. It basically says to unzip OWF-bundle-7-GA.zip, cd to apache tomcat and run.

There's no bundle zip and the distribution no longer has apache tomcat on it. Where's the server? If it's not supposed to be in the bundle, can you at least some add some basic build/deploy instructions?

Also v6 is also missing the tomcat bundle

Default Group Dashboard with specific URL

OWF 7 and future:

We would like to have a default group dashboards for specific URLs, such that
https://first.url.com points to Group Dashboard #1
https://second.url.com points to Group Dashboard #2

We have multiple different groups of users and each of them have their own default group dashboards. We would like to provide them each with a their own URL so that they can get to their default dashboard and not to the last saved dashboard. Also, due to large number of users involved, we would like to have this feature available so that launching the dashboard is simple and doesn't involve switching dashboards.

Thanks,

OWF7 dashboard corrupted layout_config column, presents Black screen to user

I don't have the exact root cause on this, but here's as much info as I can provide:

  1. At some point while using OWF the user's custom Dashboard config settings are saved (JSON string containing widget size/position etc).
  2. This Dashboard save sometimes triggers a StaleObjectStateException (see Java stack trace below)
  3. When this exception is thrown, garbage data [1] gets written into the layout_config column for that user in the Dashboard SQL table
  4. Once the user tries to login again, that garbage data obviously isn't parseable JSON, so the user is permanently stuck and unable to login. If just one of the user's dashboards have this garbage layout_config data, OWF will fail to load.
  5. End result is that OWF7 presents a "black screen" and nothing else to the end user. See more info in note [2]

Extra Notes:
[1] This garbage data tends to look similar to this: [Ljava.lang.String;@6661b6c
[2] To an informed dev, this will show a "Trying to decode an invalid JSON string" error in Console

Java Stack trace:

2013-07-29 16:45:58,182 ERROR [org.codehaus.groovy.grails.orm.hibernate.events.PatchedDefaultFlushEventListener] Could not synchronize database state with session org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [ozone.owf.grails.person.Person#8]
  at org.hibernate.persister.entity.AbstractEntityPersister.check(AbstractEntityPersister.java:1792)
  at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2435)
  at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:115)
  at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
2013-07-29 16:45:58,346 ERROR [grails.app.filters.ozone.owf.grails.filters.SecurityFilters] Object of class [ozone.owf.grails.domain.Person] with identifier [8]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [ozone.owf.grails.domain.Person#8

System tray misbehaving

For every widget window, there's a duplicate minimize/maximize/close entry at the bottom, mimicking traditional desktop trays. However, it doesn't behave like them, and it doesn't appear to serve any additional purpose. It just kind of looks vaguely like a desktop tray. The vaguely desktopish look and feel ends about here, as double clicking on a titlebar does not maximize/restore a widget, but attemps to rename it.

Clicking on a tray bar's minimize button has no effect on a currently minimized widget (the expected behavior is for the minimize button to toggle this state). Neither do the tray maximize buttons toggle. They mostly just take up space better filled with widget content. If nothing else, they should be disabled and visibly grayed while they have no effect.

Error when running create-web-bundles.bat

I'm getting the following error when I run create-web-bundles.bat in 7.16. Based on the ozone-developers Google group, it looks like it is an existing problem that hasn't been fixed.

Ref: ozone-developers Google group discussion
https://groups.google.com/d/msg/ozone-developers/Aoo5hEwNBBw/-aCMy_GA26QJ

   [exec] applying version 7.16.0-309137346
     [exec] Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/ant/BuildLogger
     [exec]     at java.lang.Class.getDeclaredConstructors0(Native Method)
     [exec]     at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
     [exec]     at java.lang.Class.getDeclaredConstructors(Unknown Source)
     [exec]     at org.codehaus.groovy.reflection.CachedClass$2$1.run(CachedClass.java:69)
     [exec]     at java.security.AccessController.doPrivileged(Native Method)
     [exec]     at org.codehaus.groovy.reflection.CachedClass$2.initValue(CachedClass.java:66)
     [exec]     at org.codehaus.groovy.reflection.CachedClass$2.initValue(CachedClass.java:64)
     [exec]     at org.codehaus.groovy.util.LazyReference.getLocked(LazyReference.java:46)
     [exec]     at org.codehaus.groovy.util.LazyReference.get(LazyReference.java:33)
     [exec]     at org.codehaus.groovy.reflection.CachedClass.getConstructors(CachedClass.java:258)
     [exec]     at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:190)
     [exec]     at groovy.lang.MetaClassImpl.<init>(MetaClassImpl.java:194)
     [exec]     at groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createNormalMetaClass(MetaClassRegistry.java:158)
     [exec]     at groovy.lang.MetaClassRegistry$MetaClassCreationHandle.createWithCustomLookup(MetaClassRegistry.java:148)
     [exec]     at groovy.lang.MetaClassRegistry$MetaClassCreationHandle.create(MetaClassRegistry.java:131)
     [exec]     at org.codehaus.groovy.reflection.ClassInfo.getMetaClassUnderLock(ClassInfo.java:175)
     [exec]     at org.codehaus.groovy.reflection.ClassInfo.getMetaClass(ClassInfo.java:192)
     [exec]     at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.getMetaClass(MetaClassRegistryImpl.java:255)
     [exec]     at org.codehaus.groovy.runtime.InvokerHelper.getMetaClass(InvokerHelper.java:806)
     [exec]     at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallConstructorSite(CallSiteArray.java:84)
     [exec]     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
     [exec]     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
     [exec]     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:186)
     [exec]     at com.studentsonly.grails.plugins.uiperformance.util.CreateWebBundles$__clinit__closure3.doCall(CreateWebBundles.
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [exec]     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     [exec]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     [exec]     at java.lang.reflect.Method.invoke(Unknown Source)
     [exec]     at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
     [exec]     at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
     [exec]     at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
     [exec]     at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:910)
     [exec]     at org.codehaus.groovy.runtime.InvokerHelper.invokePogoMethod(InvokerHelper.java:848)
     [exec]     at org.codehaus.groovy.runtime.InvokerHelper.invokeMethod(InvokerHelper.java:831)
     [exec]     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:164)
     [exec]     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeClosure(ScriptBytecodeAdapter.java:570)
     [exec]     at com.studentsonly.grails.plugins.uiperformance.util.CreateWebBundles.main(CreateWebBundles.groovy:105)
     [exec] Caused by: java.lang.ClassNotFoundException: org.apache.tools.ant.BuildLogger
     [exec]     at java.net.URLClassLoader.findClass(Unknown Source)
     [exec]     at java.lang.ClassLoader.loadClass(Unknown Source)
     [exec]     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
     [exec]     at java.lang.ClassLoader.loadClass(Unknown Source)
     [exec]     ... 37 more
     [exec]         1 dir(s) moved.

Test Automation Tool(s) for OWF

I am very interrested to hear what Test Automation Tool(s) are being used with OzoneWF?

I have tried a couple and the dynamic allocation of objects has caused an issue for some tools ability to rerun after browser/session restart.

User's don't get widgets with external group changes.

If I alter a user's group membership outside of OWF (like LDAP), the membership change is detected and made by SecurityFilters. Meaning, if I go into the "Users" widget and look at the user's groups, they are correct, but the user does not get the widgets associated with a newly added group or lose them when a group is removed from the user.

This is because there are no person_widget_definition records created for the user. If I manually remove any group through the OWF admin UI, and re-add it, the widgets show up. I compared the person_widget_definition table before and after doing this, and the person_widget_definition records aren't there before, and they get added after I remove and re-add the group. Records seem to be added for all widgets, not just those associated with the group I modified.

Adding a widget to the Administrators group does not add the widget to the user

Steps:

  1. Add a widget to the Admins group
  2. As an OWF Admin verify that it does not show in the App Components
  3. Add the OWF Admin directly to the OWF Admins group
  4. The widget appears
  5. If you remove the widget from the group it does not get removed from the Admin user

You should able to add and remove widgets to an admin user through the Admin group directly without having to add the user to the group.

Ant Bundle Task Fails

It looks like there are still dependencies on a SVN repository in the ivy build script build-base.xml

I am seeing references to: https://www.owfgoss.org/svn/repos/ozone/baseline visiting that url requires a username and password. I have neither.

The build fails with the following message:

[exec] ::::::::::::::::::::::::::::::::::::::::::::::
[exec] :: UNRESOLVED DEPENDENCIES ::
[exec] ::::::::::::::::::::::::::::::::::::::::::::::
[exec] :: com.oracle#ojdbc14;10.2.0.1.0: not found
[exec] :: org.grails.plugins#tomcat;1.3.7: not found
[exec] :: org.grails.plugins#hibernate;1.3.7: not found
[exec] :: org.grails.plugins#ozone-deploy;0.1: not found
[exec] ::::::::::::::::::::::::::::::::::::::::::::::

Any suggestions?

No way to be notified upon creation of a new widget instance with specified widgetGuid

The class Ozone.state.WidgetState allows you to add state event listeners for a plethora of state events - but everything is tied to a widget's instanceId. There needs to be an API where you can provide a widgetGuid and receive callback when an instance of a widget with that widgetGuid is created. The callback should pass a state object with the same properties that Ozone.state.WidgetState.getWidgetState.cfg.callback provides. The callback should be called anytime a widget with that widgetGuid is created - regardless of whether it's caused by the user using the Launcher to create a new instance of that widget or whether the user just logged in and OWF is restoring his dashboard to how it was when he last logged out.

ant Bundle task fails - unresolved dependency - access 1.0

I've followed the instructions from the wiki, and double checked older threads. Haven't found a solution yet to this unresolved dependency.

 [exec]         ::::::::::::::::::::::::::::::::::::::::::::::
 [exec] 
 [exec]         ::          UNRESOLVED DEPENDENCIES         ::
 [exec] 
 [exec]         ::::::::::::::::::::::::::::::::::::::::::::::
 [exec] 
 [exec]         :: access#access;1.0: not found
 [exec] 
 [exec]         ::::::::::::::::::::::::::::::::::::::::::::::

Trouble migrating 7.0 dashboards into 7.16

We're having trouble running: https://host:port/owf/administration/migrateToApps We've upgraded our 7.0.0 OWF to 7.16. The 7.16 "OWF Configuration Guide.pdf" secA.2.2.1 Migrate Legacy Dashboard Data directs us to run: https://host:port/owf/administration/migrateToApps to convert our old Dashboards and Stacks into 7.16 Apps and Pages. When I go to that URL in the stock owf.war running in tomcat, it returns an HTTP 200 with body: No dashboards to process This makes sense. But when I go to the same url in the owf.war we've deployed into JBoss, I get an HTTP 404 with title: JBoss Web/7.4.9.Final-redhat-1 - JBWEB000064: Error report
The page body is:
JBWEB000065: HTTP Status 404 - /owf/WEB-INF/grails-app/views/administration/migrateToApps.jsp
JBWEB000309: type JBWEB000067: Status report
JBWEB000068: message /owf/WEB-INF/grails-app/views/administration/migrateToApps.jsp
JBWEB000069: description JBWEB000124: The requested resource is not available.
JBoss Web/7.4.9.Final-redhat-1

Everything else we try to do in our JBoss OWF seems to work fine, so there doesn't seem to be any major problem. What actual underlying resource fulfills the request: /owf/administration/migrateToApps I'm guessing that we've mis-configured something in our OWFConfig.groovy and it's failing back to migrateToApps.jsp (which doesn't seem to exist in owf.war or its jars).
Thanks,
Dave

JS API docs need to consistently name widgetGuid and instanceId

OWF.getWidgetGuid() returns a string that will be the same for all instances of that widget. OWF.getInstanceId() returns a string that is unique for every new widget instantiated (though shared between OWF browser sessions if user leaves widgets open on his dashboard).

There are several places in the API where they reference a widgetGuid but are really talking about an instanceId. e.g. OWF-help-7-GA.zip /help/jsdoc/symbols/Ozone.state.WidgetState.html#addStateEventListeners describes a cfg object with property: guid. The description uses Id as well as widget guid. Confusing - the property name and description should clearly indicate that it's a widget's instanceId (not the widgetGuid) that's being referred to. The same problem exists on: Ozone.state.WidgetState.html#getWidgetState his cfg object has a property: guid with a description that refers to both Id and widget guid - the description and property should clearly reference instanceId. cfg.callback passes a state object with property: uniqueId (should be instanceId).

Unable to use direct char[] access of java.lang.String

With OWF 7.0 I've been seeing the following error in the log. It seems to come up when the lorem ipsum banner loads.

I've seen it on RHEL and Ubuntu--

I haven't noticed any loss of functionality.

2013-10-28 16:23:14,592 [main] INFO  org.apache.catalina.startup.Catalina- Server startup in 23691 ms
Unable to use direct char[] access of java.lang.String
java.lang.NoSuchFieldException: count
    at java.lang.Class.getDeclaredField(Class.java:1948)
    at org.codehaus.groovy.grails.web.util.StringCharArrayAccessor.<clinit>(StringCharArrayAccessor.java:53)
    at org.codehaus.groovy.grails.web.util.StreamCharBuffer.readAsString(StreamCharBuffer.java:531)
    at org.codehaus.groovy.grails.web.util.StreamCharBuffer.toString(StreamCharBuffer.java:552)
    at org.codehaus.groovy.grails.web.pages.FastStringWriter.getValue(FastStringWriter.java:59)
    at org.codehaus.groovy.grails.web.pages.FastStringWriter.toString(FastStringWriter.java:55)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesUriSupport.getViewURIInternal(GroovyPagesUriSupport.java:192)
    at org.codehaus.groovy.grails.web.pages.GroovyPagesUriSupport.getNoSuffixViewURI(GroovyPagesUriSupport.java:153)
    at org.codehaus.groovy.grails.web.pages.DefaultGroovyPagesUriService.getNoSuffixViewURI(DefaultGroovyPagesUriService.java:159)
    at org.codehaus.groovy.grails.web.pages.DefaultGroovyPagesUriService.getNoSuffixViewURI(DefaultGroovyPagesUriService.java:148)
    at org.codehaus.groovy.grails.web.servlet.DefaultGrailsApplicationAttributes.getNoSuffixViewURI(DefaultGrailsApplicationAttributes.java:239)
    at org.codehaus.groovy.grails.web.metaclass.RenderDynamicMethod.renderView(RenderDynamicMethod.java:365)
    at org.codehaus.groovy.grails.web.metaclass.RenderDynamicMethod.invoke(RenderDynamicMethod.java:185)
    at sun.reflect.GeneratedMethodAccessor233.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.