Wednesday, May 23, 2018

The 12-column layout

Since the early days of Form Builder, all form controls are placed within grids. The basic idea of a grid, of course, is to have rows and columns. Until Orbeon Forms 2017.1 included, with Form Builder, each grid could have from 1 to 4 columns [1]. Spanning rows in a grid was possible, but spanning columns was not. This system served Orbeon Forms users well for a long time.

Orbeon Forms 2017.2 made an important change and introduced a 12-column layout [2]. What this means is that instead of varying the number of columns of a grid, you vary how many columns a control spans. So if you previously had a text area taking the entire width of a one-column grid, now you have a control taking 12 columns in that 12-column grid; a 4-column grid translates into a grid with controls each taking 3 columns, and so on.

You might wonder why we picked 12 columns. The answer is simple: the number 12 is divisible by 1, 2, 3, 4 and 6, and it is not “too small” or “too large” [3]. This means that it is possible to be backward-compatible with the previous 1–4 column system but also allows for more flexibility in the placement of controls since the granularity is now 1/12th of the width of the grid [4]. In short, using 12 columns is a good compromise.

Grid Columns
Orbeon Forms 2017.1
Column Span
Orbeon Forms 2017.2
1 12
2 6
3 4
4 3
5 2 [5]
6 2

With Orbeon Forms 2017.2, you can expand, shrink, split and merge cells with icons that show within each cell. And now with the upcoming Orbeon Forms 2018.1, we are enhancing the 12-column layout with drag and drop of cell borders. This means that you can resize a cell to take from 1 to 12 columns, depending on the cell’s location, instead of using icons.

Single grid with flexible layout
Single grid with flexible layout

And, in case you had missed, it, you can also drag and drop controls between cells now since Orbeon Forms 2017.2!

We hope that you will like these changes and the increased flexibility that comes with them!


  1. With the option to extend that number at the risk of having funny-looking layouts.  ↩

  2. The 12-column layout applies to wider displays. For narrow displays like phones in portrait mode, each field shows on a single row. In the future, we can imagine separate configurations for other displays widths.  ↩

  3. Bootstrap grids use a 12-column system as well.  ↩

  4. Form Builder and Form Runner required major changes for this to happen.  ↩

  5. 5 is not a divisor of 12, and so such rarely-used grid widths convert to 10-out-of–12 columns with changes we just introduced in Orbeon Forms 2017.2.2.  ↩

Friday, May 18, 2018

Orbeon Forms 2017.2.2 PE

Today we released Orbeon Forms 2017.2.2 PE. This update to Orbeon Forms 2017.2 PE contains bug-fixes and is recommended for all Orbeon Forms 2017.2 PE and Orbeon Forms 2017.2.1 PE users.

This release addresses the following issues:
    • Form Builder
      • Collapsible section breaks editor icons (#3530)
      • 5-column grid should be migrated to a better layout (#3594)
    • Form Runner
      • `NoSuchElementException` on second `fr-send-submission` (#3568)
      • Upgrade to reCAPTCHA v2 (#3551)
      • XPath error when relinquishing lease with form using a wizard (#3566)
      • 5-column grid doesn't render well in automatic PDF (#3423)
      • Help popover for radio button shown over the field (#3567)
      • Help showing off-screen on mobile (#3557)
      • Combined .js should not respond to other extensions (#3545)
      • Error in log: "Invalid reference to captcha component" (#3544)
      • XPath error when adding `<fr:buttons>` with `<fr:pdf-button/>` (#3543)
      • Missing `role="presentation"` in grid (#3536)
      • Multi-row minimal repeated grid looks garbled in Form Runner (#3527)
      • Exclusive radio in PDF template not set based on dropdown (#3461)
      • Change in title on minimal trigger has no effect on client (#3561)
      • Can't see file attached by user with "more permissions" (#3541)
      • Improve visibility of wizard TOC (#3222)
    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!

      Wednesday, March 21, 2018

      High-Availability Thanks to State Replication

      Orbeon Forms has supported load balanced and failover configurations for a long time. This allows you to ensure that if a server fails, a user can still access her forms. But until now, users with active sessions could lose work [1] as form state was stored in memory on the failed server. Enabling the servlet container’s session replication wasn’t enough, as Orbeon Forms stores some information outside of the servlet session.

      With Orbeon Forms 2017.2, we introduced replication. Replication provide high-availability of Orbeon Forms with as little disruption as possible to users currently filling out forms.

      This works by replicating the in-memory state from one server to one or more other servers. If one server with an active form session fails, the load balancer can simply redirect the user to another server. Since the state has been replicated there, the session can continue operating.

      This is transparent to the user, except that the first request just after the failure of a server might take a little bit more time to complete due to the load balancer redirection and the need to rebuild some data structures in memory on the new server. This is also the reason the load balancer still keeps a user assigned to a given server when possible.

      Orbeon Forms achieves this replication by enabling the replication of servlet sessions and caches. All current state in memory, whether in the session or relevant caches, is replicated so that work can be resumed on other servers when needed.

      The replication configuration includes:
      • a load balancer, such as HAProxy
      • two (or more) Orbeon Forms servers


      The Orbeon Forms servers must be able to communicate with each other via IP multicast, which means that they must be on the same network, physical or virtual.

      This does not include database replication, which must be configured, if necessary, at the database level. In a basic configuration, all the Orbeon Forms instances would talk to a central database.

      For more information, see the documentation on replication.

      We hope you will enjoy this new feature!

      1. Unless you use the autosave feature. But this feature only works for logged-in users.  ↩

      Friday, March 16, 2018

      Orbeon Forms 2017.2.1 PE

      Today we released Orbeon Forms 2017.2.1 PE. This update to Orbeon Forms 2017.2 PE contains bug-fixes and is recommended for all Orbeon Forms 2017.2 PE users.

      This release addresses the following issues:
        • Form Builder
          • Toolbar doesn't scroll properly with Firefox (#3438)
          • Label disappears when clicking quickly (#3449)
          • Large form no longer closes sections (#3478)
          • Review use of HTML elements in ControlLabelHintTextEditor (#3409)
          • Can't find `bowser.min.js` when disabling combined resources (#3445)
          • Disabling the wizard view from form settings doesn't work (#3490)
          • Minimal repeated section looks garbled in Form Builder (#3501)
          • Minimal repeated grid looks garbled in Form Builder (#3519)
          • Form with xf:label for fr:view fails to paste in Form Builder (#3450)
          • No browser warning for IE 11 or Edge < 16 (#3437)
        • Form Runner
          • Fixes to the lease system
            • New `relinquish-lease` action, called by default before navigation (#3467)
            • Don't require a lease to generate a PDF (#3466)
            • Never acquire a lease when running a process in background (#3489)
            • Fix databases other than SQL Server (#3471)
          • Wizard
            • XPath error when the wizard has only one page (#3492)
            • Page number doesn't show if first page is subsection (#3433)
            • Cannot activate TOC subsection links (#3513)
            • Next in last section doesn't navigate to next subsection (#3516)
            • Section template doesn't update section status (#3483)
            • Subsection navigation: highlight current subsection (#3518)
          • Other
            • 12-column grids don't layout correctly in PDF (#3469)
            • YUI dialogs initialize even if initially hidden and cause Recalculate Style (#3452)
            • Property to setup whether a provider supports reindexing (#3486)
            • JavaScript error when using `xf:dialog` inside `xf:repeat` (#3491)
            • File upload unreliably marked as invalid (#3508)
            • Errors in logs about failed processes (#3517)
        • Platform
          • Do not include xml-apis JAR (#3444)
          • saxon:parse() must disable external entities (#3468)
        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!

          Monday, February 5, 2018

          New PE Gold Benefits and Perpetual Licenses Grandfathered

          Today, we are announcing two changes to our PE subscriptions.

          New PE Gold benefits

          Customers with PE Gold subscriptions will have new benefits:
          • 4 hour response time – In our support queue we will prioritize messages from PE Gold customers. As a result, as a PE Gold customer, you'll typically get a response from us in the next 4 hours, during our business hours. This won't impact our response time for PE Silver or PE Basic customers, who can still expect an answer during our next business day.
          • Chat interface – As a PE Gold customer, you'll find a new chat tool called Campfire in your private Basecamp, along with your existing Message Board. It will be up to you to decide whether you post new questions on the Message Board, or as a quick message in Campfire. We expect that this will allow us, during our business hours, to answer short questions even faster, and thus even better serve our PE Gold customers.
          Pricing for PE Gold subscriptions is unchanged, and those new benefits apply to all new and existing PE Gold subscriptions.

          Perpetual licenses are discontinued but grandfathered

          Every PE subscription includes two parts: support from Orbeon, as well as a license for using Orbeon Forms PE on a server. 

          The way this worked until now was that support would end if the subscription was left to expire. This applied to all PE Basic, PE Silver and PE Gold subscriptions. But licenses for PE Silver and PE Gold subscriptions would remain active (and were described as perpetual).

          This situation was confusing and unusual for software licensed on a subscription basis. As a result, most customers assumed that licensing ended with the expiration of their PE Silver or PE Gold subscription, and just renewed their subscription as long as they were using Orbeon Forms PE. A minority of customers was left wondering under what condition it could be beneficial to them to delay renewing their subscription, which created a fair amount of friction.

          To make things simpler and avoid friction, starting today, licensing and support will both end if a subscription is left to expire. This will apply to all new subscriptions. Existing subscriptions are grandfathered and still come with perpetual licenses.

          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

            Replication

            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.

                Internationalization

                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.