Return to blog posts

What's new on the #4 platform

What's new on the #4 platform

Good morning,

New release, new newsletter for Simplicité developers!

For your information, the Simplicité platform Release 4.0 P24 Release Candidate was made available on the Git pre-release branch of the template and as a Docker beta image.

If no questions and/or blockages are raised by End of November 2019, this version will be considered as the version P24 release.

Thank you in advance for your help in the final validation process for this release.

If you wish, you can simply read this email and click directly on the button below to (re) watch the webinar which presents all the news.

Happy reading!

What are the highlights of this new version?

(Open) JDK

Starting at this patch level (24), the platform is compiled with the current OpenJDK 12 forced into JDK 1.8 compatibility mode. This is necessary because some dependencies are no longer compiled with a JDK 1.8 (for example Docx4J).

This means that the recommended (Open) JDK to run the platform is now an (Open) JDK 12 or newer.

However, being compiled in JDK 1.8 compatibility mode, the ready-to-use platform will still run on a JDK 1.8 (Open).

But if, in your custom code, you use one of the optional third-party libraries that require a newer (open) JDK, using a 1.8 (open) JDK will no longer be appropriate.

A “lightweight” variant of the platform is also provided, excluding some third-party libraries:

— Docx4J
— Tika
— jClouds
— Google API libraries

This “light” variant is fully JDK 8 compatible.

Note: All of our Docker images are now shipped with OpenJDK 12


The jQuery® version is now a 3.4.1 version (it was a 2.2.4 version until P23).

Depending on how you wrote your custom code on the client side, changes may be required due to some deprecation removals in jQuery 3, see the jQuery 3 upgrade guide for more details.

Compatibility Breaking Changes

The following changes require your attention and may require reworking your custom code.

  • Deleting old JSPs pages. Be sure to refactor any hard-coded URLs involving these old JSP pages in your code and/or configuration. (note that you should avoid hard-coded URLs anyway).
  • Revision of rejection clauses. For code quality reasons, the overly generic exception clauses in some public Simplicité APIs have been replaced by launch clauses using exception subclasses (for example, PlatformException or IOException). In some special cases, the Java compiler may complain about the inconsistency of the launch clauses of your override methods.

User interface what's new?

  • Possibility to use a light version (without Docx4j clients, Tika, Google APIs, jCoulds,...)
  • Update of third-party libraries (including on major components: Rhino, HSQLDB, Apache POI, Docx4J,...)
  • Added visibility of the authentication provider on the provider choice page (using “visible”: <true|false> in AUTH_PROVIDERS entries)
  • Improvement of the Maven repository to add the Javadoc Simplicité dependency to validated Java modules
  • Inheriting linked lists
  • New session history in the operation menu
  • persist per user the dates/duration of sessions and user rights
  • to replace the previous SESSION logs and the AppLoggerLogon object
  • the last session date is now stored in m_user (to search for a user who has been inactive for a long time)
  • see LOG_SESSION system parameter
  • The History property has been changed to track updates:
  • In the mirror table of the object
  • through the object's social posts
  • in the new redolog storage (m_redolog and/or log4j)
  • New RedoLog storage:
  • trace the actions of objects in sessions
  • limited to objects with historical ownership
  • see LOG_ACTIVITY system parameter
  • Addition of unit properties on the cross table axis:
  • Scale factor: to multiply/divide the values of the axes (ex: convert seconds to hours, ko to MB...)
  • Unit function: round, scale, divide, divide, divide, divide, sqrt, log10... to change the main scale of the axis.
  • The unit label should be shown on the chart when the scale has changed.
  • Allows you to search for a document by file name and display the document name in the list.
  • Added lots of system object icons
  • Add autofill attribute names in the template editor
  • Added [OBJECTICON:] expression for field area icon fields
  • Add the action Reorder fields to trigger the automatic reordering of fields.
  • Add indexing of inherited fields belonging to the indexable object
  • GetParentObjectReffield is now evaluated in CONTEXT_REFSELECT, CONTEXT_DATAMAP, and CONTEXT_ASSOCIATE
  • Addition of datamap inheritance
  • User preferences:
  • Date format was added to replace the default format determined by the user's language.
  • Added time zone to translate all dates on the user interface
  • Added the DD.MM.YYYY date format for our Swiss friends
  • URI syntax support for accessing scopes. Ex: /ui/scope/MyHome is the same as /ui? scope=myhome
  • Generates a skeleton when creating the SCRIPT resource of the management object
  • Area with sorting specification:
  • None: no command access on the user interface (new!)
  • Code: sorting based on the value of the DB (default)
  • Value: sort enum codes by label (in the user's language)
  • Order: sort by order of enumeration codes
  • Added support for Gradle® with Apache Maven® modules for Java (until now only Apache Maven® was supported).
  • Addition of subdomains with order in the menu.
  • New currency: Delivered in Swiss francs CHF and exported to Excel.
  • The composite function key for the internal object with a “nullable” field is now supported.
  • Short texts have been increased to support 4000 characters (previously 255 due to limitations of the old MySQL engine).
  • Google Drive permissions with configurable email notifications
  • The action of the data export module now exports a data set.
  • Module exports now include data sets.
  • Exports and imports using standard JSON and YAML formats (as well as standard XML).
  • The action with the URL like javascript allows access to the app, obj and grant in scope. Example:

javascript:debugger; alert (“param=” + app.sysparams.my_param +” value=” + obj.getFieldValue (“myObjectField”) +” login=” + grant.login) `

Changes in the “core” of the platform

  • userFilters allows global filtering by user to work with limited data on the user interface:
  • Available filters:
  • fixed value when searching and creating fields
  • fixed object reference in research and creation
  • work dates: filtering by period for objects with a date range (an end date linked to a start date field)
  • Active/visible filters depend on the user's current reach.
  • Filters can be updated or not: forced by the administrator or the public to users
  • Filters may be required
  • userFilters is a business object to be completed by the designer:
  • to add fields and object references with object field rules (editable, visible...)
  • customize the user interface template
  • add specific actions to apply predefined filters (e.g. “next week”)
  • granted to groups as usual
  • getGrant () accessors.getUserFilters ()

New grouping of dates on the cross table:

  • Group values by date range: year, semester, 4 months, 4 months, quarter, month, week, day, day, hour
  • Only applies to date and time fields
  • New session metrics:
  • Working time per user and per scope
  • Working hours by date and scope
  • The object list can show document names instead of simple doc icons (see the new rendering field on the document).
  • initRefSelect is now called when rendering the pillbox
  • New modal dialog in case of loss of service (i.e. no internet, server down...) instead of the old HTTP 0 alert:

User menu preferences have been implemented on the responsive user interface (see the User Form Interface panel):

  • Visible menu (usr_menu): false to remove the left menu
  • Default minimized menu (usr_menu_deflelapsed): true to minimize the menu on the left
  • Open domain by default (usr_menu_defdomain_id): to define the accordion menu that is open by default at startup
  • The default hidden menu (usr_menu_defhidden) is obsolete and removed from the user interface.
  • New Docked TreeView features:

Actions: close, reload, collapse, and expand the tree

  • Show/hide list levels with counters
  • Rendering objects with new getStyleTree and getImageTree hooks
  • and the getUserKeyLabel hook can return rich HTML content
  • Persistent history for accessing previously opened trees, stored in the TREEVIEW_PREFS user setting

Virtual links are supported in trees:

  • used as a reflective object displayed in a table
  • used in a tree hierarchy
  • Action with confirmation field: the default value is now supported
  • Optimizing the browser cache:
  • approximately 100KB transferred when the user interface is loaded (excluding the home page, mainly to obtain user rights and preferences)
  • compared to the previous 1.6MB which will be cached once (after each platform or module revision or CACHE_MAXAGE value)
  • CACHE_MAXAGE changed to 15 days by default for static resources
  • Direct access to list has been refactored in Search mode to define the default search positioning:
  • Hidden: the search form is hidden by default (use the search button)
  • Column: filters are displayed on each searchable column.
  • Docked: the search form is anchored to the left side of the list.
  • Dialog: the search opens in a popup window on the right side of the screen.
  • Redesign of the registration page
  • Redesign of the Git module repository management page
  • Addition of a date and time rendering to work with a simplified date on the user interface (ex: month or year) or a time (ex: without seconds)
  • use_doc_preview=no is now available to hide the preview of the document (direct download to the list)
  • Add the counter badge when a child list is moved to a form tab
  • New functions to customize the rendering of user filters:
  • $ui.view.prefs.userFiltersTitle: to replace the full header bar
  • $ui.view.prefs.userFiltersBadge: to replace each badge renderer
  • New $ui.detachUrl function (ctn, url, options)
  • to open a new window with the user interface engine
  • with or without main parts (menu, header...)
  • to detach the URL (external object...) from the main page
  • useful on a multi-screen desktop
  • New miniaturized menu functions:
  • toggle button in header and object icons
  • preserve open submenus and vertical scrolling
  • the old toggle button (at the bottom) has been removed to support hover resizing

Confirm the dialogue on Action

  • initAction hook to prepare fields of action before rendering
  • Width of the dialog according to the size of the template of the upper div

Research dialogue:

  • Group fields by zones
  • New search help for text/numeric fields:
  • simple rules: starts with, contains, lower or equals than...
  • Join rules with and or

Search for object references:

  • by values: allows you to search on all the referenced fields (user-key, wildcard, partial key...)
  • by Id (new): search for a single reference with the target icon (join by row_id)

New global list rendering model:

  • To show the number of records and the current page number in the title and footer
  • To allow new placement of the default footer buttons, the navigation bar...
  • See the simplicite.ui.globals.list.template list template

Inherited object model editor:

  • Preserve parental areas (beige border): no changes are allowed in inherited models.
  • Inherited fields (dashed border) can be moved into child areas.
  • The model editor allows you to hide areas (adds the hidden class to div)
  • New GRID rendering for long text fields: displays a 2D json array in an editable table.
  • Colors and icons on the value list:
  • to replace the field style for each enumeration code
  • use of colored labels and/or icons, lists, forms, trays
  • are rendered with control select2 (see
  • Coming soon: cross table, transition buttons...

• Preview the hierarchy of the tree on the main form:

  • Notification with hidden target object (Desktop/Android/iOS)
  • Sending through the personalized data of the FCM message (ex: You need to sign a new order!)
  • Open the desired object on ok/tap (e.g. the order form)
  • $ui.onMessageReceived (msg) can be overridden for specific behaviors
  • The submission form has been freed to select any object accessible by the Social user

Bug fixes

See end of Release note