Thursday, June 22, 2017

Orbeon Forms 2017.1

Today we released Orbeon Forms 2017.1, the first major release of Orbeon Forms in 2017! This release introduces several important features and enhancements.

Major features and enhancement

    Liferay 7/DXP support

    This version introduces initial Liferay 7/DXP support for the Form Runner proxy portlet. See the documentation for details.

    Orbeon Forms Running in Liferay 7/DXP

    Datasets

    Datasets are a flexible way to retrieve data from services and to use it in your form. For more information, see the blog post and documentation.

    New Save to Dataset Action Response

    Improved actions editor

    The actions editor is reorganized in 3 tabs:
    • General Settings
    • Service Request Actions
    • Service Response Actions
    In addition, request and response actions can be easily reordered. The new layout makes it clearer when actions run and under what conditions. It also allows for handling datasets (see above).

    Improved Actions Editor

    Upload improvements

    You can now control much better the maximum size and file types of attachments globally, per application, or per form. In the latter case, the configuration can be done directly in Form Builder's Form Options tab. For more information, see the blog post.

    New Form Options

    Other features and enhancements

      Form Builder

      • You can now use the value of fields to set email senders and "carbon copy" recipients. See the blog post for more.
        New Email Options

      Form Runner

      • Grids and grid rows which are empty due to hidden fields no longer take vertical space. (#2414)
      • Field sizes in automatic PDF mode are now correct. (#3105)
      • Incorrect page breaks before sections no longer appear. (#3111)
      • Non-relevant data is now annotated as such in the database when saving. (#3065)
      • It is possible to store form data in the database using the latest Form Runner data format. (#3110)
      • There is a new option to empty non-relevant data with the send action. (#1179)
      • Accessibility: HTML labels are no longer present in view mode (#3089)

      XForms engine

      • Submissions have a new option to empty non-relevant data. (#1179)
      • The xf:textarea control supports the minimal (placeholder) appearance for label and hint. (#2836)

      Other platform enhancements

      We continually maintain the Orbeon Forms source code base. This release includes a lot of refactoring as well as better tools for client-side (web browser) programming (#1600). We hope that these changes will allow us to move faster in the future.

        Other new features and bug-fixes

        Including the features and enhancements above, we closed over 130 issues since Orbeon Forms 2016.3.

        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 59 (latest stable version)
          • Firefox 54 (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)
          • IE9 and IE10
          • Safari Mobile on iOS 8, iOS 9 and iOS 10
          • Chrome for Android (stable channel)

        Compatibility notes

        Callback for PDF

        • PDFs generated from the Form Runner detail page are no longer available via an HTTP GET call. External applications which rely on this as part of a form submission must use instead the pdf or pdf-url content methods.

        Removals

        • As of Orbeon Forms 2017.1, Internet Explorer 8 (IE8) is no longer supported.
        • The following components are removed:
          • 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, May 18, 2017

        Orbeon Forms 2016.3.1 PE

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

        This release addresses the following issues:
          • Form Builder
            • Image Annotation listed twice in the Form Builder sidebar (#3181)
            • Explanatory text overwrites rich text (#3161)
          • Form Runner
            • Fixes to controls
              • Date and Time control set to current-dateTime() shows unformatted time when time is changed (#3066)
              • Output control does not escape script element (#3115)
              • Date-time control with gibberish not considered invalid (#3123)
              • "Apply Initial Value Formulas when Adding Iterations" only works if you use the (+)Insert Below link (#3134)
              • Date initially non-relevant not properly initialized on iOS (#3155)
              • Explicit validation: issue with incremental character counter (#3164)
            • Fixes to PDF output
              • Incorrect input fields size width in automatic PDF (#3105)
              • Incorrect page breaks before sections (#3111)
              • PDF: fr:fields-date not readonly when service is called upon xforms-enabled (#3113)
            • Other fixes
              • No credentials used when no container role is listed (#3099)
              • Embedding and Liferay: org.slf4j.helpers.MessageFormatter cannot be cast to org.orbeon.private.apache.http.HttpRequestInterceptor (#3154)
              • Values in repeated grid are not shown on the summary page (#3174)
              • JNDI lookup error on WildFly (7433a79953)
              • Add debug logging for authentication (1c43ab56ef)
            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, May 4, 2017

              More flexible email senders and recipients

              Orbeon Forms allows you to send email, typically as part of a simple form data submission process: the user activates a "Submit" button, the data is saved or delivered to a service, and a confirmation email is sent to the user, a third-party, or both.

              Email recipients are determined either by a configuration property, or by the content of form fields. Using form fields makes recipients dynamic: for example email addresses can be typed by the user directly, or selected via a dropdown, radio buttons or checkboxes. You can even use hidden form fields to load email addresses from services or internal HTTP headers.

              Until now you could only control the actual email recipient (the "To:" email header). With Orbeon Forms 2017.1, you can in addition control the  Carbon Copy ("Cc:"), Blind Carbon Copy ("Bcc:"), and even the sender ("From:") email fields. For the latter, only one sender is used, since that's that most email software expects.

              Like with "To:", you use properties or form fields selected directly in Form Builder:


              We hope you'll like this enhancement, which will be available in Orbeon Forms 2017.1

              Monday, April 24, 2017

              Improved constraints on attachments uploads

              Until Orbeon Forms 2016.3, there was only one way of controlling attachment constraints: via a single, global property. So you could say that that the maximum file attachment upload size was 100 MB, and that would apply to all attachments in all forms.

              The upcoming Orbeon Forms 2017.1 provides a lot more flexibility, allowing you to set:
              • The maximum file size for a given attachment field
              • The maximum aggregate size for all the attachment fields on a given form
              • The supported file types for either a given attachment field or all the attachment fields in a form
              For each one of those, you can:
              • Define a default, through properties. You can set that default to apply to all the forms in a Form Runner application, or to a specific form.
              • Override the default through the Form Builder UI.
              Per-control settings allow you to specify for example that a given attachment must be a text file, and that another attachment on the same form has a maximum attachment size of 2 MB (less than the default). Such settings are specified in the "Control Settings" dialog:



              Per-application and per-form settings can be specified as usual via properties or, in the case of per-form settings, directly in Form Builder's "Form Settings" dialog:


              Finally, the maximum aggregate attachment size allows you to specify, for example, that for a given form being filled by a user at most 50 MB of attachments can be provided, no matter how many attachment controls are in the form. This upper limit on the attachments provided helps prevent an undesired explosion of uploaded data, especially if you use repeated grids or sections that contain attachments.

              We hope you will like these new features, which will be available in the upcoming Orbeon Forms 2017.1!

              Tuesday, February 14, 2017

              Introducing organization-based permissions

              With Form Builder, form authors can define permissions for the form they are creating. Permissions can depend on:
              • The user's role, for instance: "any user with the role admin can delete data".
              • The user being the one who initially created the data, also known as owner, for instance: "owners can view and update their own data".
              • The user being in the same group as the owner, e.g. users in the same group as the owner can read the data.
              In addition to roles and groups, most companies have a hierarchical organizational structure, say:


              Within such a structure:
              • An individual user can be a member of zero, one, or more organizations. For instance Mary could be a member of the "iOS" and "Support" organizations.
              • An individual user can have zero, one, or more organization roles. For instance, if Mary is also the manager of the "iOS" organization, in the system, she will have the role "manager" tied to organization "iOS". Informally, we could write this role as manager(organization = "iOS").
              How does Orbeon Forms know about your organizations, what organizations each individual user is a member of, and what are their organization roles? In one of two ways, depending on where your users and organizations are defined:
              With Orbeon Forms knowing about your hierarchy of organizations, users in those organizations, and roles like "manager" assigned to those users as necessary, form authors can define organization-based permissions. For instance, a form author can say that for their "expense report" form, managers can access data created by the people they manage. And this applies to people they manage directly, as well as people in sub-organizations. With that permission defined:
              1. Assuming Tom in the iOS organization creates an expense report,
              2. his manager, Mary will be able to access it,
              3. and so will John, the VP of engineering, defined in the system as manager of the "Engineering" organization,
              4. and so will Carla, the CEO, defined in the system as manager of Acme, which sits at the root of the organizational structure.


              As illustrated by the case of the expense report, this feature allows forms to be used in a number of new scenarios. Organization-based permissions are also an important building block to the more comprehensive support for workflows that we are currently working on.

              Support for organization-based permissions is available in Orbeon Forms 2016.3, and works on all supported databases, namely eXist, MySQL, PostgreSQL, Oracle, SQL Server, and DB2. Support on Oracle, SQL Server, and DB2 is available only on Orbeon Forms PE. And for more information, see the documentation on organization-based permissions.

              Monday, February 6, 2017

              Form Builder embedding

              Orbeon Forms has had a Java embedding API since version 4.7. This allows you to embed a form within a Java web application, including from a JSP page.

              Starting Orbeon Forms 2016.3,  in addition to published forms, you can also embed Form Builder in the same way: just use orbeon and builder as Form Runner application and form names.


              The following features are supported:

              • Creating a new form definition.
              • Editing an existing form definition.
              • Testing the form definition.
              • Saving and publishing the form definition.

              The embedding application can set the size the embedded Form Builder <div> element via CSS or JavaScript, and Form Builder will adjust its size accordingly. It is better to pick a fairly large minimal width and height as Form Builder just takes some space!

              Note that the Form Builder "New" and "Summary" buttons are hidden when Form Builder is embedded, as navigating between pages is not yet supported when embedding.

              For more, see the documentation. We hope you will like this new feature!

              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.  ↩