XForms Everywhere

8/27/2008

A round of XForms engine performance improvements

Filed under: General — Erik Bruchez @ 8:31 am

Rotor

Now that Orbeon Forms 3.7 beta 1 is out, we have committed a series of changes that intend to improve the performance of the XForms engine. These particular changes initially focused on <xforms:insert> and <xforms:delete>, but they ended up requesting a fairly major refactoring of the XForms controls code on the server. Some (probably obscure) developer information is available on our wiki.

In short, we used to duplicate the tree of controls on the server at every possible turn. Now we:

  • never do it during page initialization

  • do it at most once per Ajax request

Instead we update the tree of controls incrementally upon insert/delete and upon refresh.

The result is that the performance has in fact improved quite a bit for large forms, especially those that use <xforms:insert> and <xforms:delete> heavily. In particular, one of the main goals of this work was to make Form Builder faster. There is still work to do there, but performance has already improved quite a bit!

This is a good step forward: both the code and the processing model for the controls are now much clearer. We are also more XForms 1.1 compliant (in particular regarding repeat index updates). This also fixed along the way a few bugs related to insert/delete/repeat and UI events dispatching.

What’s even better, this lays down a healthy foundation for further improvements, including at some point implementing a dependency mechanism for the controls which should yield even better performance, especially for large forms.

8/26/2008

Orbeon Forms 3.7 beta 1 is available

Filed under: News — Erik Bruchez @ 5:07 am

Orbeon Forms Logo

We have just made Orbeon Forms 3.7 beta 1 available for download. This release contains about 200 issues addressed since Orbeon Forms 3.6.

There are still a few blockers to address before we can release 3.7 final. Here are useful links to see what’s left to do:

Enjoy!

8/18/2008

What we have been up to

Filed under: General — Erik Bruchez @ 5:26 am

In the last few months, we have been regularly posting updates to Twitter so we have had less of a need to write full blog entries. But now we feel that owe the followers of this blog a higher-level update:

  • Form Builder and Form Runner. A big priority is our continued work on Form Builder and Form Runner. We are getting closer from a 1.0 version, and we have a great incentive as we have customers sponsoring features and planning to deploy very soon.

  • Oracle XML support in Form Runner. Initially, Form Runner only supported the built-in eXist database. However, we designed from the get-go a REST-based API for handling persistence. We have now implemented a connector for storing form types and form data into Oracle.

  • Noscript mode. The “noscript mode” in Orbeon Forms allows you to use a single XHTML+XForms description of a page and to target browser that have JavaScript disabled. This is now integrated into Form Runner, which means you don’t need JavaScript on the client to fill-out forms created by Form Builder. This is also the basis for the accessibility features we are working on (including WCAG AA compliance).

  • Offline mode. We have worked quite a bit on an offline mode for Orbeon Forms, based on Google Gears. This is very exciting, but it is still a bit too early for us to integrate that into Form Runner.

  • Components. An important aspect of any UI platform is the ability to reuse code. XForms should not be different. So we have started implementing a component system in the XForms engine, based on XBL 2. Simple components already work, and we are adding locally-scoped XForms models.

  • Date and time controls. We have completely overhauled the date picker. You can now type in values and the date picker is by default the YUI date picker. We have also added controls for xs:time and xs:dateTime types, which was long overdue.

  • Access request and session directly from XForms. In the past, accessing request and session information from XForms required using the page flow controller or possibly a page model written in XPL. Now, you can use XPath functions to do so.

  • New YUI. We have upgraded to YUI 2.5.2. It’s good to be up to date and to benefit from the latest features and bug-fixes.

  • Control the HTML title from XForms. Orbeon Forms now supports xforms:output within xhtml:title. This is very convenient to change the HTML page’s title directly from XForms.

  • More flexible placement of AVTs and XForms models. AVTs are supported outside the HTML body. This allows for example controlling the lang attribute on the root HTML element. XForms models can alse now be placed outside the HTML head (e.g. within dialogs).

  • Refactoring. A lot of refactoring of the Java code (and some of the JavaScript code) has taken place.

  • Loads of bug-fixes. See the list of changes since Orbeon Forms 3.6. We hope that version 3.7 is not too far.

  • New wiki. We now use Google Sites to host our development documentation.

This does sound like a lot, doesn’t it? And while all this is a lot of fun to work on, we need to mention that these new features and developments are driven by projects for our great customers.

Now, on to polishing Form Builder and getting 3.7 out!

Powered by WordPress