Release of REI3.11
Another release, finally ready for prime-time. REI3.11 brings in new features but also improvements addressing some long-standing issues. Let´s take a look.
Global search
With a growing number of REI3 applications, finding stuff is getting harder. Some apps added search interfaces to cover important data. But this needed to be done in every app and users would need to go into these apps to reach the search.
That worked, but was a lot of effort - and cumbersome for users. So we thought: Wouldn´t it be awesome if there were a global search where a user can query the system and find data from all apps? Even if we do that, how could that work if each application has a different data structure?
Our solution: In REI3.11, every app can now define one or many search bars, which are presented to the user in a global search interface. Every search bar has its own data definition & filters - and can access anything that the application can.
For users it´s as simple as typing in a search query in the always visible search input and pressing enter. Depending on user permissions, search bars activate and start delivering results. App authors can control what these display and what forms are opened from the global search.
When an app is already active, the search is restricted to search bars from inside the app - as this is often what the user is currently interested in; this also avoids taxing the system by immediately querying all data from everywhere. Should the search results not be satisfactory, users can then extend the search with a click to every other available app.
The global search is a powerful new feature, especially when working in many REI3 applications simultanously. Type in a name and find all tasks, tickets, offers, assets and more - whatever is somehow connected with it. It is still up to the app authors to define what is searched. But because search bars use the same display and filter options as regular list fields, it´s simple to click to together one or more search bars for your own app.
OpenID Connect authentication
With this release, we introduce a new authentication option: OAuth2 OpenID Connect.
Once configured, users can choose to login via specified identity providers, moving the authentication outside of REI3. This makes seamless access possible, including single-sign-on. We´ve tested this feature with KeyCloak and Microsoft Entra, though it should work with a wide range of providers.
In contrast to the existing LDAP connector, new OpenID users are created during authentication instead of being regularly imported. User data can be updated via claims in the ID Token; role assignment is also possible by mapping the values of a claim to REI3 roles.
Central authentication via OpenID is a secure and user friendly way of handling application access and we are happy to now support it as well.
A new display option for relationship inputs
While relationships can be used in REI3 to allow for all kinds of use cases, our inputs can still be improved. Such as offering an input that displays the current state of something relating to a fixed progression. This is especially relevant when going through workflows. In REI3.11 we now offer a new 'flow' display option for relationship inputs.
As with all relationship inputs, it can be filtered to show different 'points' in a flow, depending on the state of the current record. It also makes it much clearer, that there is an order and what the next steps are.
Server file handling
This feature was requested multiple times by our community and we finally have it included. There are now 6 new file handling function calls, available in backend functions.
These new calls can import files to REI3, read text directly from files (such as CSV, JSON or XML), export existing files or create new text files from a function. We tried to make them as generic as possible, to support a wide variety of use cases.
Due to security concerns, file handling calls are limited to pre-defined paths; these are set in the config.json file via two new parameters: paths->fileImport & paths->fileExport.
New dropdowns
A moderate annoyance, but something that kept popping up: Our dropdowns are cut off by their parent elements in tab fields, sub forms and widgets.
This was a technical limitations due to the fact that these parent elements needed to be able to scroll. Over the years we´ve looked at different solutions but they always came with new problems. But we also did not want a JavaScript solution as this would be complex and would need to work perfectly or it be completely useless.
But alas, since we failed to solve this issue multiple times, we´ve bit the bullet and implemented a complex, global dropdown system with JavaScript. The good news is that it works and we can reuse it for all dropdowns in REI3. The bad news is that it´s even more complex than we feared and we had to find solutions for a lot of edge cases.
We´re happy enough with how it turned out - it works in all known cases, allowing for dropdowns in nested tab fields and on edges of sub forms. Please let us know if you stumble on cases that we´ve overlooked.
Faster data retrieval
While working on REI3.11, we´ve stumbled over a couple of optimizations. List retrievals, if they span to more than one page, can now be executed almost twice as fast as getting the total result count was optimized quite heavily.
In addition, with the new COST parameter for backend functions, app authors can heavily optimize query speeds by setting a high value for complex (ie. expensive) function calls. This is especially relevant for relation policy functions and can speed up data retrieval by orders of magnitude. This can be the difference of waiting 3 seconds and getting 'instant' results.
More smaller features and improvements
- The relationship input was redesigned to be scrollable, with paging only appearing when there is a large result set.
- Form states can now use 'is record editable' as condition. This enables forms to react to relation policies, significantly simplifying complex form states.
- Users can now reset their field settings, should they encounter a breaking bug.
- Gantt fields can now show empty group results, useful for showing an overview over all available groups (such as assets or vehicles) whether or not they have values in the current date range.
- The relationship graph in the Builder can now be clicked through to go through the various relationship targets.
- More field options are now available to variable input fields, including the category and new flow display options for relationship inputs.
- Reworked the header lines for many input fields to be more visually consistent. This includes the iframe, drawing, richtext & file input fields.
- Columns can now be set to 'not shrink'. This is useful for size-constraint views, where some columns´ visibility should take precedence.
- Columns now also can decide to forego the thousands separator for integer values.
Upgrade notes
As always, these are the general upgrade steps:
- On Windows: Run the installer.
- On Linux systems: Stop the service, extract the latest release, replace the
r3binary, start the service.
Thank you all for your continued support and feedback. For the full list of changes, take a look at the technical change log.