Thursday, January 19, 2017

Datasets

Many forms don’t live in a vacuum: they require communicating with the outside world to help the user enter data. The items of a selection control such as a dropdown list might come from a central database, for instance. Orbeon Forms PE provides a way to do this via HTTP services, database services and actions.

This is all good but Orbeon Forms services and actions so far only allowed you to use the response from a service to set control values and itemsets. This meant that once the action had completed, that was it. You could not, in particular, use the returned values in formulas for form validation or calculations, or refer to a value returned by the service at a later time. One way around that was to store useful values returned from services into hidden controls. While that solution worked well for a few values, it didn’t scale well for larger sets of data.

So we implemented a new feature which we call datasets to help. A dataset is a mutable [1] piece of data stored in the form in XML format. [2] A dataset is identified by a unique name within the form, such as activity-dataset.

You create a dataset using the Actions Editor. There you can chose the “Save to Dataset” response action to save the entire service response to a dataset identified by name.

Actions Editor with the New Save to Dataset Action
Actions Editor with the New Save to Dataset Action

Your form can load one or more datasets via services when the form loads. Then you can use data from these datasets in formulas. The form can also load more datasets or update existing datasets at a later time in response to user actions.

Storing data into a dataset only makes sense if you make use of that data at a later point. Orbeon Forms therefore provides a new function, fr:dataset(), which returns the data of a given dataset by name. You can use that function from any formula appearing in the form. For example:

fr:dataset('activity-dataset')/status = 'pending'

Note that for now, a dataset is transient and “lives” only as long as the user stays on the given form page:

  • It is not saved alongside the form data in the database.
  • It is not passed around when navigating between the “edit” and “view” modes.

Multiple actions calling services can store data into the same dataset, or in separate datasets. The action which last updates a dataset with a given name overwrites the entire content of the dataset.

For more on datasets, see the documentation.

This feature will be available in Orbeon Forms 2017.1. We hope you will like this feature!


  1. That is, it can change over time.  ↩

  2. The internal format is always XML, but it can originate from a call to a JSON service as well.  ↩

Friday, December 30, 2016

Orbeon Forms 2016.3

We just made it: today we released Orbeon Forms 2016.3, the third and last major release of Orbeon Forms for 2016! This release introduces several important features and enhancements.

Major features and enhancement

Support for organizations

This release introduces support for the notion of organizations. An organization can be a company location, a group within a company, or any other group of users. What makes organizations interesting is that they follow a hierarchy: both Acme USA and Acme France could be children organizations of Acme World, Inc., for example.

Organizations in Orbeon Forms are used to define permissions: the organization owner for Acme France might be given the permission to access all the invoice data for that organization. However, other members of the organization would not have that much visibility and might only be able to see invoices which they created. And an organization owner for Acme World, Inc., in turn, would have permission to access all the invoices for the children organizations. This kind of logic is not possible simply with the notion of groups, which Orbeon Forms already supports.

When using Liferay, the Form Runner portlet directly provides to Orbeon Forms with Liferay organizations information. When not using Liferay, it is possible to provide organizations information via an HTTP header. For more details, see the documentation as it pertains to the integration with Liferay.

Wizard enhancements

When using the validated mode, the wizard now adds a strict mode, which always prevents from navigating forward if there is an error in the current or previous section, even if following sections have already been visited. (doc)

Support for embedding Form Builder

The Form Runner Java Embedding API now supports embedding Form Builder. (doc)

Other features and enhancements

Form Builder

  • You can now reorder roles in the permissions dialog.
  • The itemset editor makes it easy to clear all items to start a new itemset.

Form Runner

  • Nested sections produce proper HTML headings: H2, H3, etc. This is useful for accessibility and styling.
  • You can control which controls can receive initial focus when showing a form, a new wizard section or a new repeat iteration with two new properties: oxf.fr.detail.focus.includes and oxf.fr.detail.focus.excludes. (doc)
  • The following new functions are added:
    • xxf:json-to-xml() and xxf:xml-to-json() (doc)
    • xxf:user-organizations() and xxf:user-ancestor-organizations() (doc)
    • fr:is-wizard-first-page() and fr:is-wizard-last-page() (doc)
    • fr:created-dateTime() and fr:modified-dateTime() (doc, doc)
  • The image annotation control now properly scale large images.

XForms engine

  • The following new function is added:
    • xxf:is-control-relevant() (doc)

Other platform enhancements

The process of building a release of Orbeon Forms has been improved, by migrating largely to sbt as a build tool. In addition, there are now more automated integration tests for database operations.

While these enhancements are not directly visible to users, we hope they will help make Orbeon Forms even more robust and reliable.

Other new features and bug-fixes

Including the major features and enhancements above, we closed over 80 issues since Orbeon Forms 2016.2.

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 55 (latest stable version)
    • Firefox 50 (latest stable version) and the current Firefox ESR
    • IE 11 or Edge
    • Safari 8, 9 or 10
  • Form Runner (accessing form)
    • All browsers supported by Form Builder (see above)
    • IE8, IE9 and IE10
    • Safari Mobile on iOS 7, iOS 8, iOS 9 and iOS 10
    • Chrome for Android (stable channel)

Compatibility notes

Deprecations

  • The "noscript" mode is now officially deprecated.

Deprecations and removals

The following components are deprecated and will be removed in a subsequent release:
  • fr:fusion-charts component
  • oxf:chart processor

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, November 17, 2016

Orbeon Forms 2016.2.2 PE

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

Specifically, this release addresses the following issues:
    • Form Builder
      • Section/Grid Settings for repeated grid: can uncheck readonly checkbox (#2890)
    • Form Runner
      • HTML label in repeated grid resets to non-HTML (#2943)
      • Send with redirect from proxy portlet doesn't redirect in portal (#2967)
      • orbeon_form_data.id not primary key on SQL Server (#2973)
      • 404 after deleting a draft (#2963)
      • Autosaved image attachment not working (#2980)
      • Home Page: reindex doesn't work if remote servers are configured (#2983)
      • Excel import doesn't show Import button if database is empty (#2987)
      • ORA-00904 when attaching a file (#2997)
      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!

        Friday, October 14, 2016

        Orbeon Forms 2016.1.1 PE

        Today we released Orbeon Forms 2016.1.1 PE. This is an update to Orbeon Forms 2016.1 PE which contains bug-fixes and important security fixes and is recommended for all Orbeon Forms 2016.1 PE users.

        Please note that this release is separate from the recently-released Orbeon Forms 2016.2.1 PE, which contains all these fixes and more for Orbeon Forms 2016.2 users.

        Specifically, this release addresses the following issues:
          • Form Runner
            • Form Metadata API returns latest updated version instead of latest version (#2780)
            • Refresh button is no longer narrow (#2739)
            • Error producing PDF when input field contains `]]>` (#2847)
            • `digits-after-decimal` must not apply to integer values (#2856)
            • fr:number: incorrect behavior with "." as grouping separator (#2857)
            • fr:number: blur from field doesn't reformat value if no change (#2858)
            • FB: Cannot read property 'setAttribute' of undefined when pasting form (#2860)
            • IE 9 crash when adding a row in a repeated grid (#2842)
            • Home page admin view thinks one form is selected (#2810)
            • Date picker buttons don't work with IE9 (#2893)
            • fr:datetime doesn't show as readonly (#2925)
          • XForms
            • Dialog on JavaScript error not shown anymore (#2774)
            • Separate deployment: content "cut" with .html (#2775)
            • XForms Server must not accept unencrypted payload (#2926)
            • Upgrade Apache Commons Collections (#2929)
            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!

              Tuesday, September 27, 2016

              Orbeon Forms 2016.2.1 PE

              Today we released Orbeon Forms 2016.2.1 PE. This update to Orbeon Forms 2016.2 PE contains bug-fixes and important security fixes and is recommended for all Orbeon Forms 2016.2 PE users.

              Specifically, this release addresses the following issues:
                • Form Builder
                  • FB: Cut & Paste client side errors related to 'fb-static-upload-empty' control ID (#2935)
                • Form Runner
                  • Database reindexing doesn't have any effect (#2921)
                  • Relational: making form unavailable doesn't work (#2923)
                  • ORA-01000 during reindexing (#2928)
                  • form-runner-min.js not found (#2902)
                  • Date picker buttons don't work with IE9 (#2893)
                  • SQL Server: error with spaces doing full-text search (#2913)
                  • 2016.2 "/> in process button rows (#2916)
                  • Relational search: ignore `[1]` predicates (#2922)
                  • When reindexing happens very quickly, the home page shows no progress indication (#2924)
                  • Improve reindexing logging (#2927)
                  • fr:datetime doesn't show as readonly (#2925)
                • XForms
                  • XForms Server must not accept unencrypted payload (#2926)
                  • Upgrade Apache Commons Collections (#2929)
                  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, September 14, 2016

                    Versioning comments

                    When using a relational database, Orbeon Forms supports versioning of form definitions.

                    This means that you can publish multiple versions of a form known by its name (like the “ACME Order Form”). Data captured by, say, version 1 of the form can be viewed and edited with that version of the form, and data captured by version 2 of the form can be viewed and edited with that other version of the form, even if version 2 of the forms contains, for example, some additional fields. [1]

                    With Orbeon Forms 2016.2, we added the ability for the form author to add a comment associated with a given version of the form definition.

                    Why add a comment? A good reason is to include information about why that specific version of the form was created. The comment for the first version might just say “Original version of the form”, or remain empty. But the second version could include a descriptive comments of the changes introduced, such as “Added purchase order field”.

                    You optionally set your comment when publishing from Form Builder: [2]

                    If you choose to overwrite an existing version of a form definition upon publishing, the comment associated with that published version is loaded and you can decide to keep it as is or update it with new information:

                    We hope you will find this feature useful! It is available in Orbeon Forms 2016.2.


                    1. For more on form definition versioning, see:  ↩

                    2. The comment is stored alongside the published form definition, not the form definition as you see it in Form Builder.  ↩

                    Tuesday, August 23, 2016

                    Orbeon Forms 2016.2

                    Today we released Orbeon Forms 2016.2! This release features several important features and enhancements.

                    Major features and enhancements

                    New indexes for relational database performance

                    If you're using a relational database and rely on summary pages or the search API, this change will drastically improve the performance of those operations. If you're using a relational database and are upgrading to Orbeon Forms 2016.2, you should pay particular attention to this change, as it requires that you run a new reindexing operation as part of the upgrade procedure, and thus we recommend you proceed with the upgrade with special care, and make sure to read:

                    Form Options in Form Builder

                    Form Builder's Form Settings dialog now features a new Form Options tab, with the following options:
                    • Whether the form is a singleton form. This option existed in previous versions under General Settings. (doc)
                    • Whether the form uses the Wizard View. By default, the published form uses the configuration set via properties. (doc)
                    • Appearance of control labels and control hints. The main use is to specify that text input fields hints appear as inline placeholders. By default, the published form uses the configuration set via properties. (doc)
                    Form Options

                    We expect that further form options will be added in the future.

                    Ability to send binary PDF to services

                    This feature has been requested often, and we are happy to include it in Orbeon Forms 2016.2! You can now specify that your submit or send action (or in fact any process) sends the form in PDF format to an HTTP endpoint. The same goes for sending a TIFF binary. For details, see the blog post and documentation.

                    Versioning comments

                    When using versioning, you can now add or update a textual comment associated with the given For details, see the documentation.

                    Versioning Comments

                    Form Runner function library

                    Form Runner now exposes a documented function library with easy to use functions. As of Orbeon Forms 2016.2, the library contains 28 functions, and we plan to add more in the future. For more details, see the blog post and documentation.

                    Accessibility / HTML layout

                    We have changed the layout of grids to no longer use HTML tables when possible. In addition, we have also removed the use of HTML tables in the error summary component. For more details, see the blog post and  documentation on the new HTML layout of grids.

                    Wizard enhancements

                    The wizard view features several enhancements:
                    • We introduce a new option to show a separate table of contents instead of always showing it to the left of the content.
                    • You can enable subsection navigation, which shows one nested subsection at a time instead of showing all subsections together.
                    • The wizard now shows improved status options for each section.
                    Wizard Status

                    Buttons visibility

                    You can now control the visibility of buttons, and whether they appear disabled or not, using XPath expressions. For more details, see the documentation.

                    Other features and enhancements

                    Form Runner

                    • Repeated grid/section: option to always insert at end (#2747)
                    • Form Metadata API returns latest updated version instead of latest version (#2780)
                    • Form Metadata API: option to return all non-deleted form versions (#2781)
                    • Flat view support for SQL Server (#2790)
                    • Proxy portlet: property to disable namespace mapping (#2764)

                    XForms engine

                    • Ability to configure a custom function library (#2812)
                    • XPath: support let expressions (#2816)
                    • Internal changes to remove an old Java dependency on DOM4J. This will also be useful for our progress towards native/offline clients.

                    Other platform enhancements

                    • XML processor to convert XML to JSON (#2796)
                    • Ability for services to receive JSON (#2793)

                    Other new features and bug-fixes

                    Including the major features and enhancements above, we closed over 70 issues since Orbeon Forms 2016.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 52 (latest stable version)
                      • Firefox 48 (latest stable version) and the current Firefox ESR
                      • IE 11 or Edge
                      • Safari 8 or 9
                    • Form Runner (accessing form)
                      • All browsers supported by Form Builder (see above)
                      • IE8, IE9 and IE10
                      • Safari Mobile on iOS 7, iOS 8 and iOS 9
                      • Chrome for Android (stable channel)

                    Compatibility notes

                    Persistence layer

                    The relational database schema contains changes in this version. Please refer to the notes at the beginning of this post on "New indexes for relational database performance".

                    Deprecations and removals

                    • The oxf:from-xls-converter processor is deprecated and will be removed in a subsequent release.
                    • The deprecated XMLDB processors are removed.
                    • The oxf.fr.detail.hints.inline property is deprecated. Use oxf.fr.detail.hint.appearance instead. (doc)
                    • xforms-disable-hint-as-tooltip is deprecated. Use oxf.fr.detail.hint.appearance instead. (doc)

                    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!