FlexibleDashboard+Liferay: Collaborative BI dashboards managed in Liferay

FlexibleDashboard+Liferay

FlexibleDashboard+Liferay is an open source BI dashboard app / framework which supports dashboards layouts (user/group) managed in Liferay that can mix pure Flex FlexibleDashboard pods and regular Liferay portlets. This used to be called FlexibleLiferay when it was only a Flex portal container / Liferay front end app for portals with only regular Liferay portlets.

Placeholder “flexpod” portlets from the “FlexibleDashboard+Liferay” category can be added to a page/tab in the regular Liferay web UI, to configure BI dashboards. Then in the FlexibleDashboard+Liferay Flex/AIR app the appropriate FlexibleDashboard Flex pod will be displayed instead of a portlet. A Flex pod means its a pure Flex module being displayed without being wrapped in a portlet / HTML.

All these FlexibleDashboard Flex pods are supported: bar/line chart, pie chart, grid and grid/chart with Spring ActionScript config of BlazeDS data sources, BIRT report, JasperReports report, OLAP pivot grid / XMLA query tool, Pentaho charts, calendar, local files, and HTML.

Current limitations: pod.xml file configures on a portlet basis, would be better to have configurable properties on a portlet instance basis. Also module SWF files load from the Flex/AIR app dir, not from portlet web app dirs.

FlexibleShare updated

FlexibleShare extends FlexibleDashboard (dashboard framework, BI charting, reporting pods) with FlexSpaces doc management pods (Alfresco backend) and adds additional Flex pods for Share collaboration (Alfresco Share backend). All three of these projects are open source. FlexibleShare has been updated to use code from the latest versions of FlexSpaces and FlexibleDashboard, and the Share pods have added site selection drop downs.  Also added an  Alfresco Add-Ons page for FlexibleShare.

The doc management portion now has support for Alfresco 4.0, and a new preferences dialog for easier setup of server domain/port and API key setup of optional semantic auto-tagging with the OpenCalais Integration for Alfresco. The default config in the flexibleShareAirPods.xml just has the combined multi-view FlexSpaces pod shown in the top left. This screenshot also shows the available search, tasks, and local files pods (the all repository doc lib pod is not shown). In the AIR version, files from the local files pod can be copied into a doc lib view via drag/drop. Also in the AIR version, multi-select files can be copied via drag / drop from the desktop into a doc lib view,  copied out via drag/drop, or the native desktop clipboard can be used to copy/paste of files between the desktop and a doc lib   (AIR can do more than the HTML5 drag in available in some browers).

flexibleshareairbld4-33percent.png

The Share collaboration wiki, blog, discussions, doclib Flex pods are now more usable out of the box with added drop-downs to select Share site to work with (instead of setting the share site shortName in the pods xml file). More work is needed to hook up the calendar pod to load Share site calendar info (and an add event dialog is not available yet). Although the calendar pod is able to load iCalendar files, more work is needed to get it to work with the iCalendar data available from the Alfresco “slingshot” /calendar/eventList?site={shortName}&format=calendar webscript.

flexiblesharesharepods2.png

Planned for FlexibleShare:  calendar pod hookup with Share sites,   multiple repository support,  support for CMIS repositories, drag/drop copy between repositories, support for Alfresco Cloud repositories, multi-repository search,  Solr facets search navigation,  support for Apache Stanbol semantic auto-tagging / semantic search,  mobile/touch?, and a port/translation to HTML5 / CSS / JavaScript (FlexSpaces, CMIS Spaces, FlexibleDashboard, FlexibleShare).

Steve Reiner
Integrated Semantics
@stevereiner on twitter

FlexibleDashboard now has Mobile AIR support for iOS/iPads and Android Tablets

FlexibleDashboard, an open source dashboard project for BI dashboards/mashups, etc., now has a Flex Mobile AIR version in addition to Desktop (Desktop AIR and Flex in browser) versions. An Android build is available for download, and the iOS version can be built from the common source.

FlexibleDashboard used the esria dashboard as a starting point and evolved it with added flexmdi cascade/tile (esria pod drag/drop in tile mode), more pods, both Flex in Browser and Flex+AIR versions, port from Flex 3 to Flex 4,  and pods in separate Flex modules. Example pods using Spring ActionScript to have different configs for individual pods and config of a simple IDataService with either SOAP, XML, or RemoteObject BlazeDS datasources (see GridPod and ChartGridPod) were also added.

FlexibleDashboard has the following pods: esria charting pods with quietly scheming animation (line, bar, pie charts),  JasperReports viewer, BIRT Report viewer, OLAP pivotable grid with XMLA datasource support and MDX query editor (from Grebulon sourceforge project), Pentaho Charts sample, a simple BlazeDS data pod, Flex SWF pod, Calendar, HTML viewing (IFrame, AIR HTML, mobile StageWebView versions),  and some AIR only (Desktop and Mobile) pods (HTML browser, Google gadgets, Liferay portlet widget, and Local Files browser).

For mobile, only the bare minimum was done: pod min/max/close button hit areas was increased and mobile versions of pods displaying HTML were created (the snapshot feature of the flexcapacitor WebView Flex UIComponent StageWebView wrapper helped to support cascading mode html pods with only the topmost being in StageWebVeiw mode and the other being in bitmap snapshot mode.) Other pods were unchanged and don’t have mobile specific UI (but stuff still works, even  mx chart drill down with touch).  Also, the original app projects were split into separate app / library / modules projects to facilitate sharing with the new mobile app / library projects.

It took an error message on iOS about not being able to load module SWF (Duh!) to get me to change the mobile project to link pod code instead of loading modules. Android Mobile AIR was able to load modules, but mobile Flex app projects in Flash Builder doesn’t have module setup and won’t build the app using framework RSL even though its in the UI. So I ended up just having a single mobile app project for both iOS and Android that doesn’t use modules (desktop AIR and in-browser Flex app projects still use modules).

Plan in the future to have some sort of HTML5/JS Dashboard project like FlexibleDashboard   (with web app and PhoneGap mobile app variations).  Also plan to add support for semantic data sources / semantic data integration, and more visualization support.

Steve Reiner

Integrated Semantics

@stevereiner on Twitter

Flexible Dashboard, FlexibleShare, and Flexible Liferay updates

  FlexibleDashboard

FlexibleDashboard

FlexibleDashboard is a dashboard application / framework focused on the uses of dashboards for BI / Reporting / Charting. It started with esria dashboard code and evolved from there, adding flexmdi cascading / tiling (esria pod drag/drop in tile mode), more pods, pods in Flex modules, Spring ActionScript configurable pods, and both Flex+Browser and Flex+Air versions. 

Additional pods beyond the esria charting pods include: JasperReports viewer, BIRT Report viewer, OLAP pivotable grid with XMLA datasource support and MDX query editor (from Grebulon sourceforge project), Pentaho Charts, GridPod, ChartGridPod, calendar, and iframe html. The AIR version has additional Flex+AIR pods: webkit HTML, web browser, Google gadgets, Liferay portlet gadget, and a local files browser.

In February, FlexibleDashboard was ported from Flex 3 to Flex 4 in build3, including a first pass of using spark controls instead of halo controls. I got mostly through porting the esria dashboard part, then discovered code by Greg Lafrance (who later wrote a 4 part Adobe devnet series of articles part1, part2, part3, part4)  that helped me port the remaining parts of the esria code in FlexibleDashboard. I also used a skin from flexdevtips for pod windows.  Instead of porting the full flexmdi code to Flex 4 / spark, all the style setting code was removed, and just the basic parts were ported.

In April, build 4 of FlexibleDashboard added having pods built in separate flex modules and instead of having the esria style hardcoded switch on pod type to pod class, the module path is listed in the pods xml files on each pod. 

Build 4 also introduced having each use of a pod/module configurable separately with Spring ActionScript in a separate context xml file (in src/spring-actionscript/ dir). This is currently used in 3 differently configured GridPods and in one ChartGridPod.  A similar approach could be used with other Flex frameworks that support modules (Parsley, etc.).  The GridPods and ChartGridPod  just reference a data service interface IDataService, and the particular data service implementation is configured and injected / autowired with Spring ActionScript. 

Build 4 also has 3 simple data service class implementations (SoapDataService, XmlDataService, RemoteObjectDataService) which get data via BlazeDS (or from LCDS).  The shared ChannelSet for the grid pods is configured in src /spring-actionscript/ application-config.xml   The esria dashboard like config is still in data/ FlexibleDashboardPods.xml (or in data/ FlexibleDashboardAirPods.xml for the AIR version).

 FlexibleShare

FlexibleShare

FlexibleShare adds the following to FlexibleDashboard: FlexSpaces pods for Alfresco document management along with Flex based collaboration pod front ends (wiki, blog, calendar, doc lib, discussions) to an Alfresco Share backend.  FlexibleShare was ported from Flex 3 to Flex 4 in May.  The additional pods are now in Flex modules too.

FlexibleLiferay

FlexibleLiferay extends FlexibleDashboard to provide a Flex portal container for Liferay.  The Flex+AIR client is able to get all of the places/layouts, tabs, and portlets you would normally see as a Liferay portal user and display them using a Flex based container with an HTML control for each portlet (doesn’t support pure Flex/Flash portlets yet).

The basic idea was for a Flex Portal, instead of starting from scratch, leverage the server side and services of an existing portal. Another use case is for views from an existing portal can be included in a larger enterprise Flex application.  Note that FlexibleDashboard and FlexibleShare can also display individual Liferay portlets in a configurable pod using the Liferay widget, just not whole existing portal layouts.

Recently FlexibleLiferay was ported from Flex 3 to Flex 4. The server side code was changed from Liferay 5.x ext environment code to a simpler web plugin for Liferay 6.x. The FlexibleLiferay client uses BlazeDS/AMF to remote to Java APIs provided in the web plugin. Built versions of the AIR client and the server piece (web plugin) are now available (previously there was only code available in the svn).

FlexSpaces, CMIS Spaces, and FlexibleDashboard updates

FlexSpaces 0.95  (for Alfresco and for Adobe LiveCycle Content Services ES2)

CMIS Spaces (based on FlexSpaces, for content servers supporting the CMIS standard)

  • Build 17 Added multi-file drag out to desktop in AIR version (in addition to existing multi-file drag in)
  • Build 16 Added fixes to get navigation/browsing and upload to work on Day Software CRX 2.1 + CMIS package (issues remaining with Day CRX: upload doesn’t show up, 0 search results).
  • Tested with Alfresco 3.3g and Day CRX 2.1. Previously have tested with Alfresco 3.2/3.3, EMC Documentum, IBM FileNet, Nuxeo. Haven’t tried with new CMIS support for SharePoint Microsoft has.
  • CMIS Spaces on Google Code
  • CMIS Spaces on Alfresco Forge

FlexibleDashboard

  • Build 2:  Added BIRT report viewer pod
  • Build 2: Added pivotable OLAP grid with XMLA datasource support (Mondrian, Pentaho, etc.)
  • FlexibleDashboard on Google Code