Hello,

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

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

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

If you wish, you can oblige yourself to read this post and watch directly the webinar (in 🇫🇷) which presents all the new features.

Have a good reading/watching!

Points of attention of this new version

(Open)JDK

As of this patchlevel 24 the platform is compiled with the current OpenJDK 12 forced in JDK 1.8 compatibility mode. This is required because some of the dependencies are no longer compiled with a JDK 1.8 (e.g. Docx4J).

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

However, being compiled in JDK 1.8 compatibility mode, the out of the box platform will still run on an (Open)JDK 1.8. But if, in your custom code, you are using one of the optional third party libraries that requires a more recent (Open)JDK, using an (Open)JDK 1.8 will not be suitable anymore.

A “light” 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 our Docker images are now shipped with an OpenJDK 12

jQuery

La version de jQuery® est maintenant une version 3.4.1 (c’était une version 2.2.4 jusqu’en P23).

Selon la façon dont vous avez écrit votre code custom côté client, il se peut que des changements soient nécessaires en raison de certains suppressions d’obsolescence dans jQuery 3, consultez le Guide de mise à niveau de jQuery 3 pour plus de détails.

Compatibility breaking changes

The following changes need your attention, and may require some refactoring of your custom code.

  • Removed old legacy JSPs pages. Make sure to refactor all hard-coded URL involving these old JSP pages in your code and/or your configuration. (note that you should avoid any hard-coded URLs anyway).
  • Refactored throws clauses. For code quality reasons the too generic throws Exception clauses of some Simplicité public APIs have been replaced by throws clauses using sub classes of Exception (e.g.PlatformException or IOException). In some particular cases Java compiler may complain about unconsistent throws clauses on your overriden methods.

Core platform

  • Modular packaging, the templates are now available as “light” (without Docx4j, Tika, Google APIs clients, JCoulds, …)
  • Upgraded thrid party libs (including on major components: Rhino, HSQLDB, Apache POI, Docx4J, …)
  • Added authentication provider visibility on provider choice page (using "visible": <true|false> in AUTH_PROVIDERS entries)
  • Improved Maven repository to add Simplicité Javadoc dependency to commited Java modules
  • Linked lists inheritance
  • New sessions history in operation menu
    • to persist per user the dates/duration of sessions and the user’s rights
    • to replace the previous logs SESSION and the object AppLoggerLogon
    • the last session date is now stored in m_user (to search for inactive user for a long time)
    • see system parameter LOG_SESSION

  • History property has been changed to trace updates:
    • in object mirror table
    • thru object’s social posts
    • in the new redolog storage (m_redolog and/or log4j)
  • New RedoLog storage:
    • trace object actions within the sessions
    • limited to objects having the history property
    • see system parameter LOG_ACTIVITY

  • Added unit properties on the crosstab axis:

    • Scale factor: to multiply/divide the axis values (ex: convert seconds to hours, ko to Mo…)
    • Unit function: round, scale, divide, sqrt, log10… to change the axis main scale
    • Unit label to be display on chart when scale has changed
  • Allows to search document by file name and to display document name on list

  • Added many system object icons

  • Added attribute names autofill on template editor

  • Added [OBJECTICON:] expression for field areas icon fields

  • Added Reorder fields action on objects to trigger automatic reordering

  • Added indexation of inherited fields belonging to indexable object

  • getParentObjectRefField is now valued in CONTEXT_REFSELECTCONTEXT_DATAMAP and CONTEXT_ASSOCIATE

  • Added inheritance of datamaps

  • User’s preferences:

    • Added the date format to override the default format determined by the user’s language
    • Added the timezone to translate all the datetimes on UI
    • Added the date format DD.MM.YYYY for our Swiss friends
  • Support URI syntax for scope access. Ex: /ui/scope/MyHome is the same as /ui?scope=MyHome

  • Generate a front hook skeleton where creating the SCRIPT resource of business object

  • Field with sort specification:

    • None: no ordering access on UI (new!)
    • Code: sort based on the DB value (default)
    • Value: sort by label of enum codes (in user language)
    • Order: sort by order of enum codes

  • Added support for Gradle® along with Apache Maven® for Java modules (so far only Apache Maven® was supported)
  • Added sub-domains with order into menu

  • New currency: Swiss franc CHF rendering and export to Excel

  • Composite functional key of Internal Object with nullable field is now supported

  • Short text have been increased to support 4000 characters (previously 255 due to limitation on old MySQL engine)

  • Google Drive permissions with configurable notifications by email

  • Export module’s data action now exports a data set

  • Module exports now include datasets

  • Standard JSON and YAML formats exports and imports (along with standard XML format)

  • Action with URL as javascript allows to access contextual appobj and grant in scope. Example :

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

User interface

  • UserFilters allows global filtering per user to work with limited data on UI:
  • Available filters:
    • fixed value in search and creation for fields
    • fixed object reference in search and creation
    • working dates: period filtering for objects having a date range (one end-date linked to a start-date field)
  • Active/Visible filters depends on user’s current scope
  • Filters are updatable or not: forced by administrator or public to users
  • Filters can be required
  • UserFilters is a business object to be completed by designer:
    • to add fields and object references with object field rules (updatable, visible…)
    • customize the UI template
    • add specific actions to apply predefined filters (e.g. “next week”)
    • granted to groups as usual
  • Accessors getGrant().getUserFilters()

New date grouping on crosstab

  • Group values per date range: year, semester, 4-months, quarter, month, week, day, hour
  • Applied only to date and datetime fields

  • New sessions metrics:
    • Working duration per user and scope
    • Working duration per date and scope

  • Object list can display the document names instead of simple doc icons (see the new rendering on document field)
  • initRefSelect is now called on the pillbox rendering
  • New modal dialog when the service is lost (i.e. no internet, server is down…) instead of old strange alert HTTP 0:

  • User’s menu preferences have been implemented on responsive UI (see the Interface panel on the User form):

    • Menu visible (usr_menu): false to remove the left menu
    • Menu collapsed by default (usr_menu_defcollapsed): true to minimize the menu on left side
    • Default opened domain (usr_menu_defdomain_id): to define the default opened accordion menu on startup
    • Menu hidden by default (usr_menu_defhidden) is deprecated and removed from UI
  • Docked TreeView new features:

    • Actions: close, reload, collapse and expand tree
    • Show/hide the list levels with counters
    • Item rendering with new object hooks getStyleTree and getImageTree
    • and the hook getUserKeyLabel can return rich HTML content
    • Persistent history to access to previous opened trees, stored in user’s parameter TREEVIEW_PREFS
  • Virtual links are supported in trees:

    • used as reflexive object displayed in a table
    • used in a treeview hierarchy

  • Action with confirmation field: default value is now supported

  • Optimization of navigator cache:

    • about 100ko transferred when loading the UI (excluding the home page, mainly to get the user’s rights and preferences)
    • against the previous 1.6Mo which will be cached once (after each platform or module revision or CACHE_MAXAGE value)
    • CACHE_MAXAGE has been changed to 15 days by default for static resources
  • Direct access to list has been refactored to Search mode to set the default search positioning:

    • Hidden: search form is hidden by default (use the search button)
    • Column: filters are displayed on each searchable columns
    • Docked: search form is docked on the left-side of list
    • Dialog: search is opened in a popup on the right-side of screen

  • Refactored register page

  • Refactored modules’s Git repository management page

  • Added a date/time rendering to work with simplified date on UI (ex: month or year) or time (ex: without seconds)

  • USE_DOC_PREVIEW=no is now available to hide the document preview (direct download on list)

  • Add the counter badge when a child list is moved into a form tab

  • New functions to customize the user filters rendering:

    • $ui.view.prefs.userFiltersTitle: to override the full header bar
    • $ui.view.prefs.userFiltersBadge: to override each badge rendering
  • New function $ui.detachURL(ctn,url,options)

    • to open a new window with the UI engine
    • with or without main parts (menu, header…)
    • to detach URL (external object…) of the main page
    • useful on multi-screens desktop
  • New minified menu features:

    • toggle button in header and object icons
    • preserve opened sub-menus and vertical scroll
    • old toggle button (at bottom) has been removed to support hover resizing
  •  

Confirm dialog on Action

  • new hook initAction to prepare action fields before rendering
  • dialog width based on template size of top div

Search dialog:

  • Group fields by areas
  • New search helper on text/numeric fields:
    • simple rules: starts withcontainslower or equals than
    • join rules with and or

Search object references:

  • by values: allows to search on any referenced fields (user-key, wildcard, partial key…)
  • by Id (new): search only one reference with the target icon (join by row_id)

New global template of list rendering:

  • To show the count of records and the current page number in both title and footer
  • To allow new placement of default footer buttons, navbar…
  • See Simplicite.UI.Globals.list.template here.

Template editor of inherited object:

  • Preserve parent areas (border beige): no change allowed in inherited templates
  • Inherited fields (dashed border) can be moved into child areas

  • Template editor allows to hide areas (add hidden class to div)
  • New GRID rendering for long-text field: displays a json 2D array into editable table
  • Colors and icons on list of values:
    • to replace the field style on each enum code
    • colored labels and/or icons are used , list, form, trays
    • <select> are rendered with select2 control (see https://select2.org)
    • Coming soon: pivot table chart, transition buttons…

  • Preview the treeview hierarchy on main form:

  • Notification with hidden target object (Desktop/Androïd/iOS)
    • Send thru custom data of FCM message (ex: You have to sign a new order!)
    • Open the desired object on ok/tap (ex: the order form)
    • $ui.onMessageReceived(msg) can be overrided for specific behaviors
    • Send form has been released to select any accessible object by the Social user

Fixes

  • Fixed modeler with module filtering
  • Passed actual grant to validatePassword grant hook (when possible)
  • Adapted module creation process and link creation to module visibility and syntax validation
  • Fixed patch XML on UI during a module diff
  • Fixed error 500 when rejecting externally authenticated user (OAuth2/SAML/…) if sync is not set
  • Fixed reset parent context in some particular cases
  • Fixed some XSS vulnerabilities on responsive UI
  • Fixed datamap name passed to initDataMapSelect
  • Fixed issue with dynamic JAR folder in case of shared JAR
  • Fixed chartJS ticks labels on ENUM x-axis
  • Fixed populate references in the search form
  • Fixed front constraint when a field is required
  • Fixed populate reference in the search form on read-only field
  • Fixed test data on enum multiple with less than 3 values
  • Fixed issue on POI Excel publications
  • Fixed javadoc page
  • Fixed big decimal rounding on UI
  • Fixed scope and deeplink preservation with SAML authentication
  • Forced webapp deployment failure in case of any fatal initialisation error. This means that, for instance, if the database is not accessible at startup, the webapp will not be deployed anymore.
  • Fixed plus icon on closed sub-tree of treeview
  • Fixed parent object context during a populate on UI
  • Fixed CSS/JS resources after extra CSS/JS in external object metadata
  • Optimized icon selector
  • Fixed legacy UI regression on Cancel buttons
  • Fixed issue on one of ZIPTool.build method
  • Backported debug setting for Simplicité service objects
  • Fixed exception when no attributes are provided by SAML IdP
  • Improved robustness on code editor in some unusual cases
  • Backported new postAuth grant hook