The Isomorphic Blog


Connecting the CubeGrid with Pentaho Mondrian, JasperReports and Microsoft Analysis Services

Why use the CubeGrid?

Popular Online Analytical Analytical Processing (OLAP) server technologies such as Pentaho Mondrian Project, JasperReports, and Microsoft SQL Server Analysis Services (SSAS) enable business users to analyze large quantities of data, offering features such as drilling into and cross-tabulating information from complex analytical queries in real-time. However, the default user interfaces (UIs) are limited, and it can be difficult or impossible to add the additional behaviors that are typically needed when integrating with a larger application. Connecting CubeGrid APIs to these multidimensional, or ‘cube’, data sources will allow you to:

  • Create a more powerful and higher performance UI to replace the built-in UIs, and

  • Seamlessly integrate custom OLAP interfaces into your larger applications.

The CubeGrid is a high-end data analysis engine that wraps OLAP functionality into a single Smart GWT or SmartClient interactive grid component for fast access to multidimensional data and calculations. Please see our previous post, Introducing the CubeGrid, for more information about the advanced OLAP features in our Analytics Module.

This article explains how to connect the CubeGrid user interface to several common sources of cube data using MDX, XMLA, and OLAP4J.

  • MDX (MultiDimensional eXpressions) is a query language for multidimensional databases, in the same way SQL is used to query relational databases.
  • OLAP4J is an open Java API for OLAP, similar to JDBC, but specifically created to access multidimensional datasets.

Server Technology Overview

  • Pentaho Mondrian Project (Community Edition) is an open source OLAP server written in Java and available under the Eclipse Public License (EPL). Mondrian enables interactive analysis of very large datasets stored in SQL databases without writing SQL. It supports the MDX (multidimensional expressions) query language, plus the XMLA and OLAP4J interface specifications. It reads from SQL (and other data sources) and aggregates data in a memory cache.
  • JasperReports Server (Community Edition) is an open source, stand-alone and embeddable OLAP reporting server written in Java and available under the GNU General Public License (GPL). JasperReports Server enables delivery of information on a real-time or scheduled basis to the web, printers, or a variety of file formats, including; PDF, HTML, Microsoft Excel, RTF, ODT, XML, or comma-separated values. JasperReports Server uses the same Mondrian OLAP engine as Pentaho Mondrian Project, and can be integrated with the CubeGrid using a similar methodology.
  • Microsoft SQL Server Analysis Services (SSAS) is available as a part of Microsoft SQL Server, a proprietary RDBMS written in C++ and sold in a wide variety of commercial and free editions. SQL Server Analysis Services adds OLAP and data mining capabilities for SQL Server databases. Microsoft’s OLAP engine supports MOLAP, ROLAP and HOLAP storage modes for data, and supports the XMLA standard as the underlying communication protocol. Cube data can be accessed using MDX and LINQ queries, and data mining specific functionality is exposed via the DMX query language.
OLAP Server Company Version Language License
Pentaho Mondrian Server Pentaho 3.4.0 Java EPL
JasperReports Server JasperSoft 4.5.0 Java GPL
Microsoft SQL Server Microsoft 2012 C++ Proprietary

Connecting the CubeGrid

Multidimensional data sets are called Data Cubes, which consist of features or attributes called Dimensions.  Each corresponding Dimension will also have feature values or attribute values called Members. These definitions have analogous nomenclature in the CubeGrid, as shown in the table below:

OLAP CubeGrid Definition
Data Cube Cube Multidimensional dataset
Dimension Facet Dimension, attribute, or feature
Member Facet Value Dimension member, attribute value, or feature value

On the server side, we first need to set up our DataSources to fetch the necessary data. We have four Java Classes for our DataSources:

  • OLAPDataSourceCubes gets all available Data Cubes in the OLAP database.
  • OLAPDataSourceDimensions gets all available Dimensions for the selected Data Cube (for placement on rows or columns in the CubeGrid).
  • OLAPDataSourceMembers gets all available Members for the selected Dimension, with only one call to the server.
  • OLAPDataSource gets all available data with a query based on the MDX Object Model.

The selected Data Cube and Dimensions are sent from client to server as criteria obtained from DSRequest.

Lastly, the DBConnection Java Class is required for connection to the chosen OLAP server. There are three variations of the getConnection() method:

  • getConnection() creates an OLAP connection to Mondrian server by default. For this example, we used the “FoodMart” sample dataset included with Mondrian.
  • getConnectionJasper() creates an OLAP connection to JasperReports Server. To use this method, first rename getConnectionJasper() to getConnection(). For this example, we used the sample dataset included with JasperReports Server.
  • getConnectionAServices() creates an OLAP connection to Microsoft Analysis Services. To use this method, first rename getConnectionAServices to getConnection(). For this example, we used the Adventure Works samples referenced below.

On the client side, we already have the code required to interface with the CubeGrid. This is very similar to the Advanced Cube sample in the Showcase, except that Data Cubes, Dimensions and associated Members are fetched dynamically.

The software versions used in this sample are:

Download the project source code used in the examples here.

Examples

Lastly, we’ll show a few images of the Project in action.

Figure 1: Creating the CubeGrid from a connected OLAP server (from left to right)

  • Opening screen for Data Cube selection
  • Select Data Cube from the OLAP Server
  • Select Dimensions (Facets) of the Data Cube for placement on rows and columns
  • Select ‘Create CubeGrid’
Creating the CubeGrid

Figure 1: Creating the CubeGrid

Figure 2: The newly created CubeGrid with Control Panel for Dimension (Facet) manipulation

Opening Screen for the CubeGrid

Figure 2: Opening Screen for the CubeGrid

Figure 3: View Members (Facet Values) of selected Dimensions (Facets) using the Control Panel

View Members of selected Dimensions in the CubeGrid

Figure 3: View Members of selected Dimensions in the CubeGrid

Figure 4: Reposition Dimensions (Facets) on the fly for alternate views

Alternate View of the CubeGrid

Figure 4: Alternate View of the CubeGrid

Note that the UI shown above is built out of ordinary SmartGWT components such as ListGrids and Menus (and of course the CubeGrid). This means that, unlike the pre-built UIs bundled with OLAP products, the UI shown above can be easily rearranged and extended. For example, you could add context menus that launch application-specific actions when the user right-clicks on data or dimension values.

Please Note: Some Dimensions in the test cubes are very large and not collapsible due to their non-hierarchical nature. For example, the ‘Customers’ dimension in the ‘Sales’ cube sample for Mondrian shows all values. As a result, the cube may become difficult to navigate or show a slow scripts browser warning. The recommended way to avoid this is to require that the end user choose specific members from large dimensions before adding them to the cube.

Pre-requisites

  • The sample application shown above is open source and free to use. You can download the project source code from the wiki page describing this integration.

Download the Smart GWT or SmartClient Evaluation to get started using our advanced analytics today!

Enjoy,

The Isomorphic Team

Advanced HTML5 interfaces for .NET

If you’re a .NET developer or you know a .NET developer, you may have heard about the confusing situation facing enterprise web developers on the .NET platform:

SmartClient and Smart GWT provide the powerful HTML5 components needed to build modern business web applications, and now we have provided a free sample server implementation for ASP.NET MVC, with an extensive, multi-part tutorial showing how it works!

The server implementation & tutorial cover:

  1. Using NHibernate to implement all CRUD operations (create, retrieve, update and delete) with a REST interface
  2. Implementing data paging / load-on-demand
  3. Supporting search and sort: both simple criteria and AdvancedCriteria
  4. Using transactions for interactions like multi-row editing in a grid
  5. A data-driven approach that can access new NHibernate entities without writing any code

This server implementation works with the free, open source, LGPL Edition of SmartClient or Smart GWT, so the entire client and server solution is free and open source.

Further, commercial support is also available – there is no need to buy a license, and we can help you with the sample server code as well.

To view the tutorial and download the server code as a Visual Studio project, start here:

http://wiki.smartclient.com/display/Main/Integrating+with+ASP.Net+MVC

To find out more about our Support offerings and sign up, start here:

http://www.smartclient.com/services/index.jsp#support

Enjoy!

The Isomorphic Team

CSS3 Mode

What is it?

Our three most commonly used skins (Enterprise, Enterprise Blue and Graphite) now have a “CSS3 mode” that replaces almost all images required for the skin with CSS3 settings that look nearly identical to the image-based appearance. This results in a performance boost both through a simplified Document Object Model (DOM) and by loading far fewer images than before.

CSS3 mode is used by default in modern browsers such as Firefox, ChromeSafari and Internet Explorer 9+. However, Internet Explorer 8 and earlier do not have sufficient CSS support to closely match the existing image-based skin, so CSS3 mode is not enabled by default. If CSS3 mode is manually enabled for earlier IE, this will result in a degraded appearance that is similar across IE6, 7, and 8. For example, rounded elements such as tabs will become square, and gradient backgrounds will have subtly lower quality due to IE’s lack of CSS color stop support.

How does it work?

To override the default decision on whether to use CSS3 support, set the JavaScript global variable <code>isc_css3Mode</code> before any of the SmartClient libraries are loaded. For example:

<script>isc_css3Mode = "on";</script>

There are three CSS3 mode settings:

  • “supported”

    (default setting) CSS3 mode will only be used for fully supported browsers (including rounded edges and full gradient support)

  • “on”

    CSS3 mode will always be used for all browsers

  • “off”

    CSS3 mode will never be used for all browsers

If you want more control than these settings provide, you can create a custom skin based on one of the above three skins and modify load_skin.js. The JavaScript variable useCSS3 defined in load_skin.js controls whether CSS3 mode is used.

A Note for Internet Explorer 9:  We are working on improving IE9 support with the limited CSS3 features provided by this browser. However, the well-published workarounds for IE9’s CSS3 bugs create other bugs of their own that are, as yet, unresolved.

Examples

In the examples below, images rendered with CSS3 mode “on” or “off” are basically identical without a magnifying glass.

SmartClient "Hello World" buttons with CSS3 mode turned on or off.

Hello World

Editing HTML example with CSS3 mode "on" (Enterprise skin)

Editing HTML with CSS3 mode “on” (Enterprise skin)

Editing HTML example with CSS3 mode "off" (Enterprise skin)

Editing HTML with CSS3 mode “off” (Enterprise skin)

For more information, please download the latest Smart GWT 3.1d or SmartClient 8.3d nightly builds. SmartClient Documentation can be found in the SmartClient Reference under Concepts >> Skinning / Theming.

Licensing

  • CSS3 mode will be available for Smart GWT 3.1 and SmartClient 8.3 (coming soon).
  • A Note for Smart GWT customers with 2.x Licenses: Smart GWT 3.x is a paid upgrade for Smart GWT 2.x license holders, and upgrade prices are based upon the date of your previous purchase. If you bought recently you may be eligible for a discount. Get access to the entire 3.x series by upgrading now! For a quote, please contact sales.

As always, please send us any bug reports or feedback in the Forums. Please be clear about what product and version you’re using when reporting issues.

This feature is nearly complete and can be evaluated now in our Smart GWT 3.x and SmartClient 8.3x nightly builds, complete with samples and documentation. Download Smart GWT 3.x or SmartClient 8.x to get started using this new feature today!

Enjoy!

The Isomorphic Team

Server Scripting

What is it?

Server Scripting allows you to embed code snippets directly in DataSource XML (.ds.xml) files for implementation of simple server-side business logic. These code snippets, or “scriptlets”, enable you to insert code right next to the affected definition without having to create a separate file or class to hold the logic. This simplifies development and speeds up testing by eliminating the need to compile and restart. You can write scriplets in any JSR 223 compatible language, including Java itself, as well as other languages such as Groovy, JavaScript, Velocity, Python, Ruby, Scala or Clojure.

Why use it?

Scriplets have several major advantages over using <serverObject> to call a normal Java method.

  • Simplicity and Clarity

    Scriptlets put business logic right next to the relevant persistence operation instead of in a separate .java file.

  • Faster Development Cycle

    Scriptlets are compiled and executed dynamically, so you don’t need to recompile or redeploy server code to try out changes. Just edit your DataSource, then reload the page or retry the operation. Our framework will automatically detect the modified DataSource and uses the updated scriptlet. Note that scriplets are only recompiled when you change them, so they’ll only be compiled once in the final deployment of your application.

Java as a “scripting language”

The ability to use Java as a “scripting language” is particularly powerful:

  • Developers do not have to know more than one language to work with the code for your application.
  • Scriptlets can easily be moved into normal .java files if they are identified as reusable, become too large to manage in a .ds.xml file, or if the (small) performance boost of compiling them to .class files is desired.  There is no need to translate from some other language into Java.

For these reasons we recommend using Server Scripting with Java – even for teams that would not normally consider adopting a “scripting language”.

Examples

The two primary use cases for server scripting are:

  • DMI Scriptlets

    Direct Method Invocation (DMI) scriptlets are declared by adding a <script> tag to an <operationBinding> or <DataSource> tag.  Like DMI logic declared via <serverObject>, DMI scriptlets can be used to add business logic by modifying the DSRequest before it is executed, modifying the default DSResponse, or taking other, unrelated actions.

  • Scriptlet Validators

    Scriplet Validators are declared by adding a <serverCondition> tag to a <validator> definition.  Like a validator declared via <serverObject>, a scriptlet validator defines whether data is valid by running arbitrary logic, then returning true or false.

For example, the following DMI scriptlet enforces a security constraint where all operations on the DataSource will involve the sessionId so a user can only view and modify their own records.

Example of Direct Method Invocation (DMI) scriplet code

DMI Scriplet example

There is no need for a formal class or method definition even though Java is used – the context of a DMI Script is always the same, and the Server Scripting system avoids the need to add this “boilerplate code”.

For more information and examples, please download the latest Smart GWT 3.1d or SmartClient 8.3d nightly builds.

  • Detailed examples for both Smart GWT and SmartClient can be found in the Examples folder under Server Examples >> Server Scripting.
  • SmartClient Documentation can be found in the SmartClient Reference under Concepts >> Server Scripting.
  • Smart GWT Documentation can be found in the JavaDoc under com.smartgwt.client.docs.ServerScript.

Pre-requisites

  • Server Scripting will be available in Pro Edition and above for Smart GWT 3.1 and SmartClient 8.3 (coming soon).
  • A Note for Smart GWT customers with 2.x Licenses: Smart GWT 3.x is a paid upgrade for Smart GWT 2.x license holders, and upgrade prices are based upon the date of your previous purchase. If you bought recently you may be eligible for a discount. Get access to the entire 3.x series by upgrading now! For a quote, please contact sales.

As always, please send us any bug reports or feedback in the Forums. Please be clear about what product and version you’re using when reporting issues.

This feature is nearly complete and can be evaluated now in our Smart GWT 3.x and SmartClient 8.x nightly builds, complete with samples and documentation. Download Smart GWT 3.x or SmartClient 8.x to get started using this new feature today!

Enjoy!

The Isomorphic Team

Announcing SmartGWT.mobile beta

What is SmartGWT.mobile?

We’re very pleased to announce the release of SmartGWT.mobilebeta, our long-awaited mobile framework based on the Google Web Toolkit (GWT). It contains a complete set of visual widgets and data binding services created for building mobile applications.

SmartGWT.mobile is designed primarily for building extremely lightweight applications for smartphones.  Through advanced use of HTML5 and CSS3, SmartGWT.mobile applications look and feel exactly like native mobile applications, but use almost no images, resulting in a minimal download size. SmartGWT.mobile also makes use of GWT’s ability to trim the delivered size of an application to just the components the application actually uses, resulting in smaller downloads and minimum resource requirements.

SmartGWT.mobile and Smart GWT use the same server technology.  DataSources and server business logic defined in either technology can be immediately reused with the other, with no new coding required.  Like Smart GWT, SmartGWT.mobile can also be integrated with third-party server technologies via REST services.

The UI components of SmartGWT.mobile have the same Java API as Smart GWT’s UI components, resulting in quicker learning as well as both conceptual and code re-use between your desktop, tablet and mobile applications.

Why use SmartGWT.mobile?

  • Ease of Development

    Use Java and Eclipse to write mobile applications

    SmartGWT.mobile is based on GWT, which means you can write your application in Java using Eclipse, even using step-through debugging to troubleshoot.  You never have to learn the idiosyncrasies of HTML and JavaScript behavior on different devices because that’s handled by the framework – just write Java.

  • Single Codebase

    Works across multiple devices, web or installed

    SmartGWT.mobile lets you deliver to a variety of smartphones devices from a single codebase, instead of using 4-5 different sets of tools and technologies to build mobile apps for each major platform.

    SmartGWT.mobile applications can also be packaged with technologies such as PhoneGap or Titanium to create installable native applications that have access to on-device resources such as a user’s address book or photos.

  • Native Look and Feel

    Through advanced use of CSS3 and HTML5 techniques, SmartGWT.mobile applications look and feel exactly like native mobile applications, even replicating smooth 3D animations and screen transitions.

    SmartGWT.mobile comes with multiple skins that replicate the native look and feel of different devices, and also allow you to “tint” the skins to achieve a unique look that still feels like a native app.

  • Minimum Application Size

    Mobile applications need to be as lightweight as possible in order to download quickly and run smoothly on smartphone devices.

    Advanced use of CSS3 techniques means your application has an extremely rich look and feel, yet uses almost no images, making it download much faster and feel more responsive.

    Using GWT means that your application only downloads the specific widgets and features you actually use, automatically handling an important optimization process you would otherwise have to perform by hand.

  • Deep server framework

    Shared for desktop and mobile

    SmartGWT.mobile provides instant integration with the Smart GWT Server Framework, a powerful and mature framework for simplifying the development of the server side of Java web applications.

    By leveraging a common server framework and client data services architecture, data services you create for the desktop version of your application are immediately accessible in the mobile version, and vice versa.

Screenshots

SmartGWT.mobile screenshots

SmartGWT.mobile Screenshots

Getting Started

The Showcase included in the SmartGWT.mobile SDK is available at the URL below.  Please note that SmartGWT.mobile supports mobile browsers only – certain non-mobile browsers are intended to be used for testing purposes (see details in user_guide.txt) but it is expected, for example, that IE8 will not work at all.

http://smartgwt-mobile.smartclient.com/

During the beta period, you can download the SmartGWT.mobile SDK here:

http://smartgwt-mobile.smartclient.com/downloads/smartgwt-mobile-1.0.zip

Please start by reading user_guide.txt, which covers installation & usage as well as explaining when to use Smart GWT vs. SmartGWT.mobile.

Both the public showcase and downloadable SDK will be periodically refreshed during the beta period.  See the release_notes.html file in the .zip for changes.

Licensing

SmartGWT.mobile is being released under the GNU Lesser General Public License (LGPL), the same license as Smart GWT LGPL.

Source code will be available in this SmartGWT.mobile Google Code project:

http://code.google.com/p/smartgwt-mobile/

But we’re not done yet.  There is also no Maven support, and there are many improvements we plan to add over the coming months. As always, please send us any bug reports or feedback in the Forums.

Download SmartGWT.mobile to get started using our new features today!

Enjoy!

The Isomorphic Team

Smart GWT 3.1 / SmartClient 8.3 Feature Roadmap

While it’s only been a short while since our last product announcement, we certainly haven’t been sitting idle. We’re very excited to share a few of the great things we’ve been working on for the next release of Smart GWT and SmartClient. If there’s a feature you’ve been wishing for and it’s not on this list, please keep in mind that it’s always possible to influence our roadmap through Feature Sponsorship.

So, without further ado, here are the new features committed for Smart GWT 3.1 / SmartClient 8.3 that are coming soon.

New features

    • Printing with PDF export for all desktop browsers (except IE8 and earlier).
    • Automatic handling of negative and discontinuous values (gaps in lines).
    • New ‘skinning’ APIs to enhance control over fonts, colors, shadows and more.
Improved HTML5 Charts

Improved HTML5 Charts

  • Cell-Level Selection

    the ListGrid now supports cell-level selection by setting canSelectCells:true. Click and drag to highlight blocks of cells, and select or deselect individual cells in the grid.

    Cell-Level Selection in Listgrid

    Cell-Level Selection in Listgrid

  • Gauge Widget

    Speedometer-like display with configurable sectors, tick marks, labels, needle position and colors based on the Drawing module.

    Gauge Widget

    Gauge Widget

  • Excel Copy and Paste

    Copy and paste tabular data between Grids and Excel (or similar spreadsheet applications). Grid to Excel, Grid to Grid, and Excel to Grid copy and paste are all supported.

    Excel Copy and Paste

    Excel Copy and Paste

  • Timeline

    a Calendar widget for visualizing schedules, assigning tasks, or other horizontal displays of time-based information. Timeline supports drag to move or re-size events, hover for more detail, and editing by clicking events in the timeline.

    Timeline Calendar Widget

    Timeline

  • Component XML improvements & Documentation

    Component XML allows you to define screens or parts of screens in XML, including on-the-fly loading from dynamic storage such as a database.  Smart GWT 3.1 / SmartClient 8.3 also offers simplified APIs and more comprehensive documentation.

    Component XML Improvements

    Component XML Improvements

  • More Powerful SimpleTypes

    SimpleTypes previously allowed you to define a reusable atomic field type such as a zipCode or emailAddress.  New in 3.1/8.3, the SimpleType API can now define custom sorting and filtering behaviors, and the underlying stored value can be a custom object rather than just an atomic type such as String.

  • Simplified Localization for Server-Based DataSources (.ds.xml files)

    Directly configure localized field titles and error messages in your .ds.xml file. This is an improvement over the previous process that involved treating .ds.xml files as .jsps.

Coming soon

In addition, here is another new feature just on the horizon that is committed for a future release of Smart GWT 3.x/SmartClient 8.x:

  • RTL Support

    RTL stands for “right-to-left” and is a key component when delivering an application in a language such as Hebrew or Arabic. RTL mode will horizontally flip the content layouts and ordering so that layouts reverse stacking order and show scrollbars to the left of every window. Astute users may have noticed that nightly development builds already have greatly improved RTL support. Official RTL support will be announced later this year.

Previously announced

  • CSS3 skins

    Existing skins have been upgraded with a ‘CSS3 mode’. CSS3 skins have the same look and feel as current skins on modern browsers, but use radically less media, have a simpler Document Object Model (DOM) for faster rendering, and are easier to modify.

  • Server Script Blocks

    Embed code snippets directly in .ds.xml files for server-side business logic. Use Java or any other language that can run in a Java Virtual Machine (JVM); including Groovy, server-side JavaScript, Python, Ruby, Scala and Clojure.

  • *Workflow System

    Loadable XML workflow definitions that can handle multiple steps of user interaction and server contact, making multi-step wizards entirely declarative (*This feature is committed for inclusion in SmartClient only).

Although many of these features are functional now, if you’d like to begin working with them we recommend signing up for a Jump Start program. As always, please send us any bug reports or feedback in the Forums. Please be clear about what product and version you’re using when reporting issues.

These features are nearly complete and can be evaluated now in our Smart GWT 3.x and SmartClient 8.x nightly builds complete with samples and documentation. Download Smart GWT 3.x or SmartClient 8.x to get started using our new features today!

A Note for Smart GWT customers with 2.x Licenses

Smart GWT 3.x is a paid upgrade for Smart GWT 2.x license holders, and upgrade prices are based upon the date of your previous purchase. If you bought recently you may be eligible for a discount. Get access to the entire 3.x series by upgrading now! For a quote, please contact sales.

Enjoy!

The Isomorphic Team

30% off Release Sale Extended to Friday, January 20th, 2012

Release Sale Extended

Due to popular demand, we’ve extended the Smart GWT 3.0 / SmartClient 8.2 release sale until Friday, January 20th, 2012. This is the last chance to get all the new features of Smart GWT 3.0 and SmartClient 8.2 at the discounted price. Buy now at 30% off to lock in your savings today!

If you are upgrading from a previous version, we’ll stack the 30% discount on top of the discount you receive for owning a qualifying older license. Contact sales for an upgrade quote.

More Reasons to Buy

  • Get Upgrades or New Licenses for both your existing team and future hires. Licenses are perpetual, so why wait?  Buy now.
  • Get Optional Modules for Analytics or Real-time Messaging at the 30% off sale price until January 20th. Analytics provides specialized components for viewing, navigating and editing very large, multi-dimensional data sets. Messaging provides real-time data delivery via HTTP streaming (aka “Comet”) for monitoring, command & control, trading desk and real-time collaboration applications involving time-sensitive, continuously updated data. Request a quote.
  • Get Support for next year.  You’ll get unlimited access to our expertise to help solve problems, and there’s no commitment to renew the following year for any of our Support Plans.
  • Setup Training for recent team members or for new teams that may use Isomorphic products in 2012. Rather than give you a cookie cutter program, we work with you to build a Training curriculum that’s customized to your needs.
  • Sponsor a Feature you’ve always wished for with Feature Sponsorship. Isomorphic can deliver enhancements that meet your specific requirements and deadlines.
  • Fast track a new project by having an Isomorphic consultant build the first few screens of your application with our Jump Start program.
  • Get Consulting Help.  Take advantage of our turnkey application delivery services for projects that have to be done right and done right now.  Or, add an Isomorphic engineer to your team, full time or part time, via our Embedded Developer Program.

Here’s what’s new and improved in Smart GWT 3.0 and SmartClient 8.2.

New Features

  • Drawing:  Create cross-browser, mobile-enabled graphics in your applications with our general-purpose vector graphics library. Works everywhere with no plug-ins required.
  • Automatic Joins:  Include fields with a single property from another SQL, JPA or Hibernate DataSource using an efficient SQL join, just by setting a single property.
  • Field-Level Declarative Security: Restrict access privileges by role to ensure granular security at a per-field level. A single declaration drives both server enforcement and client-side UI behavior.
  • Client-side Tree Filtering:  Tree components have been upgraded to minimize expensive server round trips for more responsive searches.

Here’s what’s coming in future 3.x and 8.x releases. Buy now and these features are yours as soon as they’re released!

Coming Soon

  • CSS3 skins:  Upgraded CSS3 skins are easier to modify, use radically less media, and render faster in modern browsers.
  • Server Script Blocks: Embed code snippets directly in .ds.xml files for server-side business logic.
  • *Workflow System: Loadable XML workflow definitions that can handle multiple steps of user interaction and server contact to make multi-step wizards entirely declarative (*SmartClient only).

You can learn more about what’s new in Smart GWT 3.0 and SmartClient 8.2 in the Feature Roadmap. Download the new releases today!

Happy New Year!

The Isomorphic Team

Smart GWT 3.0 / SmartClient 8.2 Released

Smart GWT 3.0 and SmartClient 8.2 have been released!  Starting today, you can purchase new licenses or upgrade existing licenses at 30% off until the end of the year Friday, January 20th, 2012. You can learn more about what’s new in Smart GWT 3.0 and SmartClient 8.2 in the Feature Roadmap.

Feature List

Coming Soon

  • CSS3 skins
  • Server Script Blocks
  • Workflow System (*SmartClient only)

Download the new releases today!

Enjoy,

The Isomorphic Team

Field-Level Declarative Security

What is it?

The Declarative Security system allows you to declare security rules directly in your DataSources using XML attributes. While previous releases allowed for control of individual DataSource operations, Field-Level Declarative Security (coming soon in Smart GWT 3.0 and SmartClient 8.2) will enable role-based access control to specific operations on fields. This allows restriction of access privileges by role to ensure granular security at a per-field level. View, search, initialize or update DataSource fields requiring specific roles with automatic consequences in the UI.

How does it work?

To attach role requirements to a DataSource, DataSourceField, or individual OperationBinding, just add a requiresRole attribute as a comma-separated list. If the current user is assigned one of the authorized roles, they are permitted to invoke the operation. These rules are evaluated as the DataSource is loaded, so that at the field-level:

  • If a user is not allowed to see a field, that field is omitted entirely from the DataSource definition, and automatically omitted from data delivered to that client
  • If a user is not allowed to edit a field, that field is shown as read-only by all DataBoundComponents that support editing, and any attempt to modify the field will be rejected automatically by the server

This will allow you to quickly and declaratively address use cases such as fields that can only be set when a record is created and can only be changed by an administrator going forward.

The current user’s roles are determined by calling the standard Java servlets method httpServletRequest.isUserInRole(). As a result, this API works automatically with both J2EE and JAAS security systems with no setup – just start adding requiresRole attributes. This API can also be easily adapted to work with any security framework by calling RPCManager.setUserRoles() before requests are processed which is typically done as a subclass of the built-in IDACall servlet.

For more information, please see our Quick Start Guides (Smart GWT, SmartClient) or the reference docs.

Featured Use Cases

  • Switch fields to read-only, or disable search based upon a user’s role.
  • Create a “super user” role with access to all operations regardless of the requiresRole settings. This can be set with authentication.superuserRole in the server.properties file (see reference docs).
  • Create an “admin” role that can see deleted records by combining Declarative Security with variations on core operations via Operation Bindings (see Quick Start Guides for example code).
  • Restrict public access using the requiresAuthentication attribute to determine if a user must be authenticated in order to access a DataSource or Operation Binding.
  • Configure a capability security system by using capability names (i.e. “canEditAccounts”) instead role names (i.e. “manager”) in the requiresRole attribute, and use RPCManager.setUserRoles() to provide the current user’s list of capabilities.

To get started even faster, we’ve also created a pre-built administration console and login process available as a preview in the Enterprise edition. Take advantage of our Jump Start program for training and starter code to begin using this functionality today!

Pre-requisites

  • Field-level Declarative Security will be available in the Pro and above editions of Smart GWT 3.0 and SmartClient 8.2 (coming soon).

  • Note to existing Smart GWT 2.x Users: 3.x will be a paid upgrade for 2.x license holders. If you just bought a 2.x Smart GWT license, don’t worry, upgrade costs are based on how recently you bought. If you bought very recently, you’ll get access to the entire 3.x series for a fraction of the license price. In addition, our upcoming release sale will stack a 30% discount is on top of the discount you receive for owning a 2.x license. For a quote please contact sales.

Smart GWT 3.0 and SmartClient 8.2 Release Sale / Charts move to Pro

Release Sale (coming soon)

We’re pleased to announce that Smart GWT 3.0 and SmartClient 8.2 will be available for download in just a few weeks. In celebration of the 3.0/8.2 release, you will be able to purchase new licenses or upgrade existing licenses at 30% off until the end of the year Friday, January 20th, 2012. Learn more about what’s new in the Feature Roadmap.

Charts move to Pro

We’re changing the licensing requirements in 3.0/8.2 to make HTML5 Charts available to more of our users. The FacetChart component used to require the Power Edition + Analytics module, but will now only require the Pro Edition starting with Smart GWT 3.0 and SmartClient 8.2. Get high-quality charts pre-integrated with Smart GWT components that don’t require plug-ins while supporting both older and mobile browsers. You’ll be paying an amount comparable to purchasing third-party charting packages plus you get all the other advantages of Pro. You can learn more about the FacetChart in our article HTML Charts with mobile support.

If you’re a long-time user of the LGPL Edition, please note that as soon as you install Pro you immediately gain the ability to export any grid as an Excel spreadsheet and export any printable screen as a PDF document without revisiting your data binding layer.

  • Export any grid to an Excel spreadsheet with exportClientData()
  • Export to a PDF document with RPCManager.exportContent()

So if you’ve been debating the purchase of Pro or a higher license, this is the time to jump in and help support the awesome open source framework you’ve been using. Please visit our Product Overview page for more information about our editions.

A Note for Smart GWT customers with 2.x Licenses

3.x will be a paid upgrade for 2.x license holders. If you just bought a 2.x Smart GWT license, don’t worry, upgrade costs are based on how recently you bought. If you bought very recently, you’ll get access to the entire 3.x series for a fraction of the license price. In addition, this 30% discount is on top of the discount you receive for owning a 2.x license. For a quote please contact sales.

30% Sale Pricing

*Starting on release day, ending on 12/31/2011.

LGPL PRO POWER ENTERPRISE
Free $522 $745 per developer
(30% off)
$1365 $1950 per developer
(30% off)
Choose: Per Developer
or Per CPU
or Flat Rate
Download Now
Free
Download Now
Free, Full-Featured 60-day trial
Download Now
Free, Full-Featured 60-day trial
Download Now
Free, Full-Featured 60-day trial
Buy Now
1 Pro License
$522
$745
(30% off)
Buy Now
1 Power License
$1365
$1950
(30% off)
Get Quote
Ready to buy?
Buy Now
4 Pro Licenses
$2086
$2980
(30% off)
Buy Now
4 Power Licenses
$5460
$7800
(30% off)
Buy Now
10 Pro Licenses
$5215
$7450
(30% off)
Buy Now
10 Power Licenses
$13650
$19500
(30% off)

For more information on licensing options, please see the Product & Licensing FAQ.

Page 3 of 7«12345»...Last »