Sunday, December 31, 2017

Orbeon Forms 2017.2

Today we released Orbeon Forms 2017.2, the second and last major release of Orbeon Forms in 2017! This release introduces several major features and enhancements which should help form authors and form users be more productive!

Major features and enhancement

    More flexible form layout

    With Form Builder, all form controls in Form Builder are placed within grids. Until now, each grid could only have from 1 to 4 columns (with the option, by configuration, to extend that number at the risk of having funny-looking layouts). Spanning rows in a grid was possible, but spanning columns was not.

    With Orbeon Forms 2017.2, we are introducing a fixed 12-column layout for wider displays. This is backward-compatible with the previous 1-4 column system, but also allows cells that span columns. (doc)

    Grid layout with cells spanning rows and columns

    Drag and drop of controls

    You can now drag and drop controls between grid cells to easily move or copy controls. (doc)

    Undo and redo

    Instead of asking for confirmations, Form Builder now has undo and redo functions. The top of the toolbox now shows familiar undo and redo icons. (docblog)

    Updated toolbox layout

    The Form Builder toolbox now includes at the top, in a non-scrollable area, the Form Settings icon, clipboard icons, and undo/redo icons. The rest of the toolbox got split into 2 tabs: Controls, and Advanced. The latter includes Actions and Services, but also access to the Edit Source and Permissions functions.

    Top of the improved toolbox

    Cut/copy/paste of grids and sections

    Grids or sections can be copied or cut to the clipboard and pasted once or multiple times. (doc)

    Merge of section templates

    Section templates included in the form can now be individually merged into the form. This allows you to modify the resulting section and its content. (doc)

    Updating of control names when merging a section template


    The purpose of replication is to provide high-availability of Orbeon Forms with as little disruption as possible to users currently filling out forms. This is achieved by replicating state between servers. So if a server goes down, the load balancer can redirect users with active sessions to other servers, and because the state was replicated there, users can continue their work. This is an Orbeon Forms PE feature. (doc)

    Document leases

    Document leases allow a user to update a document exclusively, with the assurance that another user will not overwrite it inadvertently. This is an Orbeon Forms PE feature. (doc, blog)

    Message shown when another user owns a lease

    Virus scanner API

    When a user uploads files via one of the Form Runner attachment controls, a virus scanner can verify the file before it gets attached to the current form. Orbeon Forms now provides a simple Java API which allows implementors to integrate with virus scanning solutions. This is an Orbeon Forms PE feature.  (doc)

    Form publish API

    With Form Runner, you cannot simply take a form definition and store it in the database via the persistence REST API, because publishing requires adding some information to the form definition. This new API allows you to take a raw form definition, such as one you would see via the Form Builder's "Edit  Source" function, and publish it properly. This is an Orbeon Forms PE feature. (doc)

    Run form in background API

    The purpose of this API is to run a form definition in the background, that is without a user interface, and to allow optionally running one or more processes in addition to the regular execution of the form. This allows scenarios such as:
    • creating new form data in the database
    • reading, modifying and updating existing form data
    For more details, see the documentation.

    Other features and enhancements

      Form Builder

      • Ability to edit control label and hint in the Control Settings dialog. (doc)

      Form Runner

      • Improved accessibility of controls within repeated grids
      • Ability to include custom dialogs in forms (doc)
      • Support custom captcha XBL components (doc)
      • Wizard status is persisted (doc)
      • JavaScript API to find controls by name (doc)

      XForms engine

      • Label, hint an help can refer to controls within repeated content (doc)
      • Subset of XPath 3.1 Map functions (doc)
      • Subset of XPath 3.1 Array functions (doc)

        Other new features and bug-fixes

        Including the features and enhancements above, we closed over 60 issues since Orbeon Forms 2017.1.


        See Localizing Orbeon Forms for the latest localization support. Localization depends on volunteers, so please let us know if you want to help!

        Browser support

        • Form Builder (creating forms)
          • Chrome 63 (latest stable version)
          • Firefox 57 (latest stable version) and the current Firefox ESR
          • Microsoft Edge 16 (latest stable release)
          • Safari 11 (latest stable version)
        • Form Runner (accessing form)
          • All browsers supported by Form Builder (see above)
          • IE9 (deprecated), IE10, IE11, Edge 15
          • Safari Mobile on iOS 10 and iOS 11
          • Chrome for Android (stable channel)

        Compatibility notes

        Internet Explorer support in Form Builder

        This version of Orbeon Forms drops Internet Explorer support in Form Builder. If you require a Microsoft browser, you can, however, use Microsoft Edge 16 or newer. Internet Explorer is still supported by Form Runner, as listed above.

        Orbeon still recommends using Chrome, Firefox or Safari for Form Builder for the best Form Builder experience.

        Processors removal

        The following XML processors are removed as they depended on outdated versions of libraries with security vulnerabilities and had very little use:
        • oxf:svg-converter and oxf:svg-serializer
        • oxf:xslfo-converter, oxf:xslfo-serializer, and oxf:pdf-serializer

        Download and feedback

        You can download the latest version of Orbeon Forms from the downloads page.

        Don't forget to grab a trial license for the PE version.

        Please send feedback:
        We hope you enjoy this release!

        Thursday, December 14, 2017

        New Orbeon Forms 2017.2 feature: undo and redo

        Some Form Builder actions can have important consequences. For example, you can delete an entire section, or delete a control with carefully crafted validations.

        Up until Orbeon Forms 2017.1, Form Builder asks you to confirm certain big operations, but not all. Further, even once you have accepted the operation, the changes are committed to the form. If you made a mistake, then your only option, if you haven't saved your form yet, is to give up all your changes since the last save and to reload the form.

        The obvious solution to this problem is a classic undo/redo function, and this is exactly what we implemented in Orbeon Forms 2017.2. The toolbox now shows familiar undo and redo icons.

        When hovering over the icons, a tooltip tells you which operation is undone or redone. You can undo most operations which change important aspects of the form:
        • control, grid, grid row, section and section template insertion and deletion
        • section template merging (new in 2017.2)
        • control renaming
        • control move via drag and drop (new in 2017.2)
        • section move up/down/right/left
        • control settings, including itemsets, labels, hint, and validations
        See also the documentation.

        We hope you will enjoy this new feature!

        NOTE: In this initial version, it is not yet possible to undo changes to the form definition's source code with Edit Source, or changes to actions, services, and other global form settings. We hope to support undoing these operations in the future.

        Thursday, December 7, 2017

        Lease on documents

        When two users have permission to edit the same instance of form data (also known as a document), there is a chance that they might inadvertently overwrite and lose changes done by another user.

        This situation is illustrated by the diagram on the right. Say a first user, Homer, loads a document that contains "1" as the value of a field. Then say a second user, Marge, loads the same document. At that point, both Homer and Marge have the same document with the value "1" loaded in their browser. Now Homer can change the value from "1" to "2" and save. On her side, Marge can change the value from "1" to "3" and save. As result, Marge will overwrite the change done by Homer, and this without Homer or Marge knowing about it.

        Orbeon Forms, starting with version 2017.2, provides a solution to this problem:
        • lease on a document is assigned to the first user, say Homer, who loads that document. The lease is given to Homer for 10 minutes, so if he lets it sit in his browser, after 10 minutes another user will, in turn, be able to edit the document. The lease is automatically extended when Homer makes changes to the document. Should he want to, he can also extend the lease explicitly by clicking on a "Renew lease" button. 2 minutes before the expiration of the lease, a dialog asks Homer if he wants to extend the lease so he can continue to edit the document. Finally, Homer can also explicitly relinquish the lease so to give other users a chance to immediately edit that document.
        • On the other hand, if a second user, say Marge, tries to edit the document while a lease was granted to Homer, then Marge is told Homer currently has the lease on the document, and is prevented from editing the document - this until the lease expires, or Homer explicitly relinquishes the lease.
        Of course, the lease system is optionally enabled, and all the durations mentioned earlier are defaults, and you can change them if needed. With the new lease mechanism in place, you can easily avoid situations when multiple users edit the same document, making your form solution using Orbeon Forms safer and more reliable. For more on this, see the documentation on the lease feature.