About Orbeon Forms 3.9
Orbeon Forms 3.9 features over 300 improvements since Orbeon Forms 3.8.
This document describes changes made between Orbeon Forms 3.8 and Orbeon Forms 3.9.
Downloading Orbeon Forms 3.9.1 PE
Orbeon Forms 3.9.1 PE is a stable update to Orbeon Forms 3.9.0. It is available for the Professional Edition only.
Orbeon Forms 3.9.1 PE was released on February 8, 2012.
Downloading Orbeon Forms 3.9.0 CE
Orbeon Forms 3.9.0 was released on May 15, 2011.
You can download the build using this link:
Community Edition and Professional Edition
Orbeon Forms 3.9 is the second release of Orbeon Forms with two separate editions:
For more information on these two editions, please visit the FAQ
This release of Orbeon Forms has been tested with the following browsers:
- Firefox 3.6 and 4 beta
- Safari 4 and 5
- Google Chrome 10 and 11 dev
- Opera 11
- Internet Explorer 8 and 9
- Internet Explorer 6 and 7 (not recommended)
NOTE: Form Builder requires a recent web browser, including:
- Firefox 3.6 or greater
- Safari 4 or greater
- Google Chrome
- Opera 11 or greater
- Internet Explorer 8 or greater
- Internet Explorer 7 (not recommended)
New features in this version
Orbeon Forms PE XPath dependency analysis engine
XPath analysis allows the XForms engine to be smarter (and faster!) about which XPath expressions to evaluate.
Whenever a user makes a change to a form, for example by entering a new value in a form field, the XForms engine must process that change, including:
- storing the user data into an XML document (XForms instance)
- re-evaluate validity constraints and other properties on the data
- run recalculations
- update the controls that bind to the data so that they reflect the latest data
Often, this results in a very large number of XPath evaluations, which can be costly.
The XPath analysis feature of Orbeon Forms PE allows the XForms engine, when loading a page, to go through XPath expressions to analyze them and understand dependencies between XML data, constraints, and controls.
This enables the XForms engine to process user interactions faster.
This feature was kindly sponsored in part by Teleflex and Lockheed.
Improved XForms upload control
Orbeon Forms features an improved upload control with the following features:
- Background uploads that don't block or pause user interaction with a form.
- A progress indicator which tells you where you are in large uploads.
- A cancel button if you changed your mind.
- And it is Flash free, which doesn't hurt!
This feature was kindly sponsored by Teleflex.
Improved portal (Liferay) support
NOTE: portal support has been tested with Liferay only. Support may work with other JSR-286 portlet containers, but has not been tested.
- Form Runner Liferay proxy portlet.
- The Form Runner Liferay proxy portlet is a lightweight option to deploy Form Runner into Liferay.
- This is an Orbeon Forms PE feature.
- This feature was kindly sponsored by IHS.
- Form Runner Liferay deployment .
- Separate portlet deployment.
- Similar to separate deployment with servlet, separate portlet deployment allows you to generate and render XForms from your own portlet while deploying Orbeon Forms as a separate web application.
- This feature is available in both Orbeon Forms CE and PE.
- This feature was kindly sponsored by Abacus
Bookshelf form deployed in Liferay
- New Form-Runner-enabled DMV-14 form.
- The DMV-14 form used to be written without the support of Form Runner. In this version, this form is fully Form Runner enabled.
- The repeater's look is improved and includes usability improvements.
- Norwegian and Russian have been contributed by kind users.
- Sample data.
- Sample data for the demo forms is loaded into the embedded eXist database out of the box.
- Other improvements.
- Sections expand upon saving to show current errors.
- Support for sending user to an error page if workflow send navigation fails.
- Confirmation prompt before deleting form data.
- Lots of bug-fixes!
The new Orbeon Form Runner repeater
Sample data for the Bookshelf form
New landing page
Form Builder and Form Runner are now more prominent on the landing page. We don't want you to miss them! The XForms demos remain just one click away.
New and improved XBL components
- Dialog editor.
- The Dialog Editor is an alternative to an inline
<textarea> that uses a dialog at edition time.
- New US State control.
- New data-bound select.
- Improvements to Tab View.
- Supports dynamically hiding and disabling tabs.
- Supports the fr-toggle event so you can programmatically switch to another tab.
- See: Tab View
- Add to that lots of bug fixes, including to the Datatable component.
XML comments in XPL and XForms
This feature was kindly sponsored by The Stationery Office.
Other new XForms features
- XHTML in checkboxes and radio buttons labels.
<select appearance="full"> and
<select1 appearance="full"> itemset labels can now contain HTML, either directly inline or through the use of
<output mediatype="text/html">, as is the case for control labels.
- This feature was kindly contributed initially by Nick Van den Bleeken from Inventive Designers, and sponsored in part by Teleflex.
- New XPath functions.
<recalculate> action now supports forcing the re-evaluation of initial values.
Other noteworthy changes in version 3.9
- YUI vulnerability.
- YUI, a library we use, announced a security vulnerability. This version of Orbeon Forms is patched appropriately. If you have a deployed app using Orbeon Forms, we recommend you install the YUI Flash security patch.
- XML injection.
- We have fixed a possible injection through Ajax requests.
NOTE: For these reasons alone, we recommend upgrading from Orbeon Forms 3.8 to version 3.9.
Performance and reliability
Orbeon Forms 3.9 features a number of XForms-related performance improvements:
- Orbeon Forms PE features a new XPath dependency analysis engine.
- Faster XForms page state handling.
- The state is now stored using EHcache. This is faster and consumes less memory than the Orbeon Forms 3.8 cache.
- The state is serialized less often than before, which can lead to faster Ajax requests, especially when using large instances (or a large number of instances).
- The state is compressed faster.
- Better caching of XForms pages.
- Caching is improved so that when pages are requested, more information can be retrieved from cache instead of being recomputed.
- XBL resources and user resources are also aggregated.
- Resources are split and combined into to groups
- baseline resources, loaded by every page and cacheable aggressively
- other resources, loaded specifically for a given page
- See Combined resources for more information.
- New Ajax retry mechanism.
- If an Ajax request from the browser takes too long or is lost because of a network problem, it will be retried. The server ensures that if the response has already been generated, then it is simply replayed back.
- Faster XPath cache
- The XPath expressions cache uses smaller keys, which yields to faster retrieval of precompiled XPath expressions.
- Other performance changes.
- The XForms processing model related to refresh and submissions has been tuned.
- More unit tests.
- Orbeon Forms has now over 480 automatic server-side unit tests and a growing number of client-side unit tests as well.
We keep updating the Orbeon Forms wiki
with the latest documentation as we implement features. Let us know
if you wish to contribute and we'll give you access!
Cool stuff for developers
In this version, part of the source code is now written in the following languages:
Also, don't forget to follow us:
New upload control
This version features a new and improved upload synchronization mechanism. In some cases, upload-related XForms code written for Orbeon Forms 3.8 and earlier will not work properly with Orbeon Forms 3.9. For more information, see Controlling upload between the client and the server
Change to seconds-from-dateTime() function
In previous versions, the XForms seconds-from-dateTime() was provided. However, it shadowed the standard XPath 2.0 seconds-from-dateTime() function of the same name, which has different parameter types and semantic.
Because of this, the XForms working group at W3C has decided to remove the XForms version of seconds-from-dateTime().
If your application uses seconds-from-dateTime() with Orbeon Forms 3.8 or earlier, you can rename its uses to xxforms:seconds-from-dateTime(), or use standard XPath 2.0 functions for date and time arithmetic.
XForms state store configuration
The oxf.xforms.store.application.* properties are no longer used.
In this version:
- Versioned resources are now enabled by default in Orbeon Forms PE. This means that CSS and JS resources will have a version number in the path by default, so that better browser caching is possible.
- Combined resources URLs no longer use the
xforms-[features].jspattern. Instead, they use an opaque hash, for example:
- Combined/minimal resources properties
oxf.xforms.combine-resources now always apply globally and can no longer be overridden on a form by form basis on the
Default app path prepended for resources
oxf.url-rewriting.app-prefix property is now set to
/apps instead of being blank.
With Orbeon Forms if you write
/foo/bar as a path to a page, this is meant to reach an application called
foo under the
/apps resources folder. In particular, the page flow
/apps/foo/page-flow.xml is retrieved.
On the other hand, before Orbeon Forms 3.9, if you wrote
/foo/bar.gif, the resource was searched under
/foo/bar.gif instead of /apps/foo/bar.gif.
This forced you, if you wanted to store resources together with pages, to prepend
/apps to all your resources paths, but not to your page paths.
The change to the
oxf.url-rewriting.app-prefix property fixes that, by adding the
You can turn off this feature by setting the property to an empty string in your
<property as="xs:string" name="oxf.url-rewriting.app-prefix" value="/apps"/>
FCK editor and JSCalendar support removed
Legacy FCK editor and JSCalendar implementations are removed. The following properties no longer apply:
Instead, the YUI Rich Text Editor (RTE) and calendar are automatically used.
Built-in open selection autocomplete mode support removed
XML parsing: handling of external entities is disabled by default
For security reasons, external entities are now disabled and are ignored whenever an XML file is parsed.
The exception is that Page Flow page models and page view documents automatically process external entities.
You can specifically enable external entities support on the URL generator
with the new
Migration to eXist 1.4
This version of Orbeon Forms comes with eXist 1.4. If you have an existing eXist database built with the previous version of eXist shipped with Orbeon (version 1.2), you will have to migrate the data.
Location of Form Runner data in sample eXist database
In the sample Orbeon Forms database, Form Runner used to store data directly under the collection:
In this release, the collection is changed to:
If you have data in the sample database and if you upgraded that database to eXist 1.4, you can either:
In Orbeon Forms 3.8, binding the
to a node didn't change the context for the XForms inside the
. It does change the context in Orbeon Forms 3.9, to be more consistent with XForms constructs such as
. If you need the old behavior, you can set the following property to
<property as="xs:boolean" name="oxf.xforms.xbl.fr.tabview.tab-changes-context" value="false"/>
- YUI 2.8.1. We have completed the upgrade to YUI 2.8.1.
- HttpClient 4. We upgraded HttpClient from version 3.1 to version 4.
- Other support libraries. A number of support libraries (such as Apache Commons) have been upgraded.
Deprecated custom-processors.xml file
This naming brings consistency with
Deprecated XForms samples
Some older examples have been moved to
Deprecation and removal of Java classes
The following classes, referenced from
portlet.xml, are still available but deprecated:
The following classes have been deprecated for a long time and are now removed:
Multiple binds on a given node
With Orbeon Forms 3.8, combination of model item properties on a given node was based on bind order. With Orbeon Forms 3.9, it is based on a boolean combination. See Multiple binds on a given node
Complete list of issues addressed in this release