LSPS documentation logo
LSPS Documentation
Release Notes

New Features

  • It is now possible to track user activity in the Process Application in the LSPS_USER_ACTIVITY_TRACK table and access the data via the UserTrack shared record provided by the Standard Library. Note that the feature is disabled by default: set USER_ACTIVITY_TRACKING in the LSPS_SETTINGS table to true to enable the feature. LSPS-7051
  • Change Proxy objects of shared Records, that substitute the concept of evaluation levels and represent a more generic solution for data separation, have been implemented. For details, refer to the official documentation. LSPS-7613
  • You can now generate Records based on JSON input. LSPS-7735
  • It is now possible to define functions in text editor: such functions are created in a dedicated textual function definition file, which cannot be edited in the visual function editor. LSPS-7832
  • The Expression Language has been extended to support object oriented programming. Such features as interfaces, methods, and related mechanisms have been added. For details, refer to Expression Language documentation. LSPS-7865
  • You can now migrate ui resources to forms resources automatically: right-click the module in the GO-BPMN Explorer and click Convert to FormComponent. Note that conversion is best-efforts based and the output form might not be valid. LSPS-8064
  • Avro data schema can now be used to generate Records. LSPS-8319
  • LSPS now contains a new experimental implementation of form resources that serves to define the web content displayed in the front-end application. For further information, refer to the new forms documentation. LSPS-8671
  • The functions addPersonToRole() and removePersonFromRole() have been added to the Standard Library. LSPS-8684
  • Multi-Select Combo Box has been added to forms components. LSPS-8779
  • The Slider component has been added. LSPS-8854
  • You can now define the custom error message on the Tab component with the getCustomErrorMessage() and setCustomErrorMessage() methods. Note that the validation decoration, the red exclamation point icon, of the error is displayed even if the Tab is closed. LSPS-9031
  • Previously, when the user defined either the range (> and <) or the exact (=) value on the number filter of a Table and Grid column, the other filter setting became disabled. Now the non-applicable filter settings are erased. LSPS-9104
  • The isProxy() function, which checks whether a record is a proxy object, has been added to the Standard Library. LSPS-9153
  • The callHttp() function that performs a synchronous HTTP call has been added to the Standard Library. LSPS-9280

3.2.1036

PDS

Fixed Issues
  • If a process that starts with a task is used as a reusable subprocess, validation no longer detects an error. LSPS-9355

Server

Improvements
  • Additional HealthCheck MBeans have been added to the LSPS Server to provide further monitoring details. LSPS-7969
  • You can now create a proxy over a record on a particular proxy level with the proxy(<SharedRecord>, <ProxyLevel>) function. LSPS-9345
Fixed Issues
  • Model update failed on forms types update. Now, forms are excluded from model update as expected. LSPS-8948
  • The related XSD and WSDL resources for the Soap server were generated with incorrect namespace values for the involved records; in addition, when generating resources for a Soap client, some attributes were populated with incorrect default values. LSPS-8992
  • The TypeValue.getType(), TypeValue.getCompiledType() methods returned incorrect types. The method implementation has been fixed. LSPS-9344
  • If the version field of a shared record was of the type Date, the server returned an org.hibernate.engine.jdbc.spi.SqlExceptionHelper error. LSPS-9347
  • The server returned an LspsRuntimeException when a RecordProxySet merge call with optimistic lock check attempted to merge a proxy to its versioned record instance that was deleted. With this update, the server correctly detects a conflict. LSPS-9350
  • The count query for queries with the distinct option ignored the distinct option when used by the table and grid components to facilitate paging. LSPS-9353

Web Application

Fixed Issues
  • When adding a custom widget set to your LSPS Application, compilation failed with the error `Unable to find <CustomWidgetSet.xml>' on your classpath' since it was performed in an incorrect build phase. On LSPS 3.3, this issue also increases maximum JVM heap and adds legacy Vaadin resources to the build dependencies.

    These changes require modifications to <YOUR_APP>-vaadin-war/pom.xml in previously generated LSPS Applications:

    • Remove <phase>generate-sources</phase> from update-widgetset
    • If you are migrating your application from 3.2 to 3.3, additionally, add the vaadin-compatibility-server and vaadin-compatibility-client dependencies to the pom.xml and set the -Xmx to 1024M in <extraJvmArgs>.

      LSPS-9326

3.2.1035

PDS

Fixed Issues
  • When you renamed a module and changed its path in the data types information in a REST webservice definition, the Generate action ignored the new module name. LSPS-8866
  • In some cases, the right-hand side of an expression with a compound-assignment operator (+=, -=, etc.) was not validated. LSPS-9328

Server

Improvements
  • Validation failed to detect a problem when the condition of a conditional start event used a local variable of the process, although the variable cannot be used since it is not initialized at the moment the condition is checked. LSPS-9257
  • Functions that check for conflicts when merging proxies of versioned records have been added. LSPS-9332
Fixed Issues
  • A proxy merge could have overwritten a record that was changed by another proxy on a versioned record. LSPS-9315
  • For a shared record with optimistic locking, if a proxy and the proxied instance were changed in the same transaction, no conflict was detected. LSPS-9334

3.2.1034

Command-Line Console

Improvements
  • The updatePerson command that allows you to change your password has been added. LSPS-9316

Documentation

Improvements
  • The Process Application, front-end web application for end users, has been renamed to Application User Interface to reflect the actual purpose of the application. LSPS-9319

Forms

Fixed Issues
  • A read-only calendar component no longer allows visual rescheduling (dragging/dropping) of calendar items. LSPS-9296

Navigation Engine

Fixed Issues
  • An instance of an inline event subprocess appeared twice in the management views. This was caused by a duplicate log entry for the subprocess. With this update, only one entry is logged as expected. LSPS-8890

PDS

Improvements
  • When creating a form definition, the default setting of the Use FormComponent-based UI option now depends on the imported modules. LSPS-9311
Fixed Issues
  • When displaying a detail of a model instance whose model was unloaded, the operation could have failed with an exception due to missing data on data types. With this update, only the type and primary key are displayed in such cases. LSPS-9306

Server

Fixed Issues
  • The merge of proxies caused a NullPointerException if the proxy was created for a Record and the record instance was to be created on merge. LSPS-9324

Standard Library

Improvements
  • The functions date() and formatDate() that take the locale argument have been added. LSPS-9323

3.2.1033

Expression Language

Improvements
  • The compound-assignment operators +=, -=, *=, /=, %= have been added. LSPS-9243

Forms

Improvements
  • The select components Combo Box, Single Select List, Multi Select List, Check Box List and Radio Button List can now define their options as a collection: the label for the options is calculated as the value returned by the toString() call on the collection item. LSPS-6170
  • An HQL query can now be used as the Query data source of a Grid. LSPS-9273

PDS

Improvements
  • The select components Combo Box, Single Select List, Multi Select List, Check Box List and Radio Button List can now define their options as a collection: the label for the options is calculated as the value returned by the toString() call on the collection item. LSPS-6170
  • The Outline view of the text function definition has been improved and supports now renaming of functions. LSPS-9089
  • You can now enter the @Disabled annotation into a method definition file before the record name to exclude all the methods from validation. LSPS-9182
  • It is now possible to copy and paste the properties in the Custom Form Component editor. LSPS-9183
  • The Expand All and Collapse All buttons have been added to the model instance tree in the Model Instance view. LSPS-9244
  • LSPS supports WildFly 11, which is now also used as the PDS Embedded Server. LSPS-9261
Fixed Issues
  • Function definitions that were edited in an external editor no longer cause the function editor to return an error message. LSPS-8729
  • Previously, the PDS Embedded Server returned the following bogus error, when initializing its H2 database:

    Exception to find schema version.: org.h2.jdbc.JdbcSQLException: Table "LSPS_SCHEMA_VERSION" not found;

    This occurs due to a missing table with the data on the database schema, which is not required by the PDS Embedded Server. With this update, the PDS Embedded Server returns a warning. LSPS-8946

  • When debugging a model, a breakpoint add to an assignment expression of a Flow element could have disappeared under certain circumstances. LSPS-9178
  • If an HQL query used the keyword distinct in its select, the query failed with a com.whitestein.lsps.lang.exception.ValidationException error. LSPS-9271
  • In an HQL query, select can now use property path as well as an alias. LSPS-9272
  • In an HQL query, a property of a record was resolved incorrectly when used in the with clause and the query failed with an org.hibernate.hql.internal.ast.ErrorCounter error. LSPS-9274
  • When multiple data types defined methods with the same name, PDS failed to rename the method usages accordingly. LSPS-9286
  • Under certain circumstances, saving a modified data-type definition file after undoing changes could have failed with an exception. LSPS-9287
  • In the Expression Evaluator, pressing CTRL+Enter inserted a new line character \n into the evaluated expression. The key combination now send the expression for evaluation as is as expected. LSPS-9302

Server

Improvements
  • The server now logs information on incorrect LSPS database schema version. LSPS-8187
  • The HealthCheck MXBean with attributes related to monitoring of the LSPS Application has been added and is accessible from JMX monitoring tools such as JConsole. The MXBean can be used for integration with Nagios. LSPS-9242
Fixed Issues
  • Native queries previously failed to map Boolean database type to a record property when running on a MySQL database. LSPS-9221
  • An attempt to merge a proxy into a versioned record fails if the record was changed since the proxy was created. LSPS-9267

Standard Library

Improvements
  • The SOAP webservice implementation now supports HTTPS. LSPS-9157
  • The function toInteger(String string, Integer radix) that allows the user to parse numbers with different bases has been added. LSPS-9255

UI

Improvements
  • The Navigation Link component is now considered an action component. LSPS-9304

3.2.1032

Forms

Fixed Issues
  • If the UploadResultListener expression of a File Upload component failed with an exception, it was incorrectly called with the file and error parameters set to null again. Such a call is no longer performed and the call fails with an exception as expected. LSPS-9239

Server

Fixed Issues
  • If, during model update, a transformation of a global variable that was added in the new model used the old() call, the update could have failed with a NullPointerException on the call. LSPS-9191

3.2.1031

Installer

Fixed Issues
  • If the user did not select the Create desktop shortcut option, the process resulted in a corrupt installation. LSPS-8934

PDS

Improvements
  • The method visibility is now visually indicated on individual items of the Outline view. LSPS-9230
  • The PDS content assist now correctly offers public and protected methods of the supertypes for super. LSPS-9234
Fixed Issues
  • The GO-BPMN Search allows you to define whether to search for functions, methods, or constructors. LSPS-9222

Server

Fixed Issues
  • A to-do submit could have failed with a ConcurrentModificationException due to a bug in context handling. LSPS-9237

Standard Library

Improvements
  • The groupBy() function, which aggregates a collection of items into groups with particular classifiers, has been added. LSPS-9224

Web Application

Improvements
  • When you generated the LSPS Application, PDS previously created the maven build configuration and application launch configuration as local files in the current workspace. These launcher configurations are now created in the <YOUR_APP>-embedded project so they can be easily shared and version-controlled as part of the application. LSPS-9223
Fixed Issues
  • The technical user processAgent can no longer log in to the Process Application via the login page. LSPS-9200

3.2.1030

Business Activity Monitoring

Fixed Issues
  • Accessing BAM example jasper reports, resulted in a 403 error or its variation on supported non-embedded servers since the Jasper servlet was using a removed security role. LSPS-9173

Platform

Fixed Issues
  • Previously, it was necessary to replace the javassist of the WildFly and JBoss server with a custom LSPS javassist and modify the jboss-deployment-structure.xml accordingly. With this update, these changes are incorporated in the jboss-deployment-structure.xml, which renders these steps unnecessary. LSPS-9097

Server

Fixed Issues
  • If a related shared record had a relationship to its record with a collection multiplicity and was set as a composition, any changes on the objects in the related record were merged instantly without merge requests. With this update, values of such objects remain unmerged in the proxy as expected. LSPS-9203

Standard Library

Improvements
  • The notifyModelInstance() function that allows you to invoke a model instance has been added to the Standard Library. LSPS-9095
  • The callWebservice() function that allows you to perform a call to a SOAP webservice has been added. LSPS-9125
  • The function and extension method getProperty() has been added: it takes a Record and a String name parameters and returns the property of the Record with the name or null if such a property does not exist. LSPS-9211
  • The function sortByKey() has been added: it takes a collection of objects to be sorted, the keyExtractor closure that retrieves the keys to use for sorting and returns a list of elements sorted by the keys produced by the given keyExtractor. LSPS-9214
Fixed Issues
  • Previously, a record could have had two fields with the same name

    where one was inherited from its supertype and the other field was defined on the record. Such a situation now renders the model invalid. LSPS-9180

UI

Fixed Issues
  • In tables and tree tables, the vertical scrollbar covered the last row rendering it illegible.

    This occured because the Valo theme turned off the vertical scroll bar and the bar

    was added by the browser.

    The table now explicitly adds a vertical scrollbar so you can scroll until under the last row.

    To update the Valo theme of your custom Process Application, do the following:

    1. Add the following style:
    .v-table.v-table-v-has-height
    .v-table-body.v-scrollable.v-table-body-wrapper {
    overflow-y: auto;
    }
    1. Add the v-has-height to the html-class presentation hint

    in your tables and tree tables.

    LSPS-8862

  • A Checkbox component in a From Layout component with the flag required was not rendered with the asterisk. This has been fixed. LSPS-9187

3.2.1029

Forms

Fixed Issues
  • Multiple fixes have been introduced on refresh of charts and their items:

    • The redraw() method of charts have been renamed to refresh() for consistency reasons.
    • All items are now rendered with no transparency and a non-zero size by default.
    • It is no longer necessary to explicitly redraw a chart axis when the axis changes. LSPS-9093

Web Application

Fixed Issues
  • If a person had a picture saved in their profile, the server returned an exception after login due to incorrect load of the picture from the database. LSPS-9190

3.2.1028

Forms

Improvements
  • The file ds.funcs in the forms module has been renamed to datasource.funcs. LSPS-9085
  • The Repeater component was incorrectly marked as deprecated: the deprecated flag has been removed. LSPS-9181
Fixed Issues
  • After a repeated 'Forms.save()' call, the form failed to display button captions.

    LSPS-9070

  • Multiple fixes have been introduced to the Tree component:

    • The selected value is now visualized: You can configure its properties in the l-tree-has-value CSS class.
    • The component now automatically checks for a selected item to the maximum depth of 8 and the maximum of 20.000 rows.

    If the component is loaded with a selected value within these bounds, the node with the value is automatically expanded.

    A node with the selected value out of these bounds is not expanded.

    • Refresh after a value change no longer causes an error. LSPS-9090
  • Previously, when called on a Table, the getCount() method included table filters in the component count. Now, the method returns returns all loaded rows as defined by its size and displayed pages excluding filters. LSPS-9092
  • The single-select options filter in the grid component had a different style compared to other filters. The filter styles have been unified. LSPS-9101
  • Previously, document saving could have failed with a NullPointerException due to garbage collector call on the model instance data. With this update, this no longer occurs. LSPS-9158

Server

Fixed Issues
  • The exposed soap services of the LSPS Server failed to process client requests due to incorrect initialization of the involved entities. LSPS-8921

Standard Library

Fixed Issues
  • An exception could occur when the user attempted to open or submit a saved to-do. This happened due to inconsistencies in the context of objects returned by the makeCopy() method of model instances and the

    synchronize(ModelInstance original, ModelInstance toBeSynchronized)

    of EvaluationLevelUtils. The calls now return objects with correct context. LSPS-9174

UI

Fixed Issues
  • Under certain circumstances, Vaadin failed to set a popup height and its scrollbar was removed.

    The problem has been fixed in the lsps-valo theme by adding the following style:

    .v-window.v-widget:not(.v-has-height) {
    /* Must be at least one pixel and must be solid, dotted or other visible style. Color does not matter. */
    border: 1px solid transparent;
    }

    Make sure to adapt the theme in your application accordingly. LSPS-8839

Web Application

Improvements
  • You can now modify the logout page in the logout.jsp in the <app>-vaadin-war project of your application. LSPS-9116
  • The checkActivePersonWithLoginExists() method has been added to PersonService: The method can be executed by any user and allows to check whether the person for the user exists in LSPS. This call is intended for SSO integration when the user only exists in the SSO server. LSPS-9175

3.2.1027

Server

Fixed Issues
  • Previously, the LSPS Process Application used programmatic security to log in to the LSPS Server. To allow better integration with an SSO environment, the form-based authentication is now used instead. LSPS-9126

3.2.1026

Application-Theme

Improvements
  • The style of the spinner has been improved. LSPS-9168

Forms

Fixed Issues
  • A NullPointerException that occurred when saving documents with ui forms has been fixed. LSPS-9154

PDS

Improvements
  • You can now create queries in HQL. LSPS-9000
  • The Module Management view of the Management perspective now displays the module hash code and the number of unfinished model instances if applicable. LSPS-9030
  • TODO markers in task parameters are now detected and displayed in the Task view. LSPS-9142

Server

Improvements
  • The setting "SSO_ENABLED" has been added to the LSPS Application settings: when set to true, the application checks when creating a new Vaadin UI if the current user exists in the application and is enabled. LSPS-9150
  • LSPS required that all users have the security role user so the login module assigned the role to each authenticated user.

    Consequently, in SSO environments, the SSO server was obliged to assign this role to users as well, which hampered the SSO integration.

    To simplify the integration, the role is no longer required.

    To apply the change on an existing server, modify your web.xml as follows:

    <security-constraint>
    <web-resource-collection>
    <web-resource-name>The Living Systems Process Suite Application</web-resource-name>
    <url-pattern>/ui.jsp</url-pattern>
    </web-resource-collection>
    <auth-constraint>
    <role-name>*</role-name>
    </auth-constraint>
    </security-constraint>
    <security-role>
    <role-name>*</role-name>
    </security-role>
    • On WebSphere, also modify the file <LSPS_APP>\lsps-app-ear\src\main\application\META-INF\ibm-application-bnd.xml so that * resolves to any role:
    <security-role name="*">
    <special-subject type="ALL_AUTHENTICATED_USERS"/>
    </security-role>
    • On Weblogic, also change the role-name value to * in the <LSPS_APP>\lsps-app-ear\src\main\application\META-INF\weblogic-application.xml file:
    <security>
    <security-role-assignment>
    <role-name>*</role-name>
    <principal-name>users</principal-name>
    </security-role-assignment>
    </security>

    Make sure to test the new setup.

    LSPS-9167

UI

Fixed Issues
  • When the user was scrolling through a large table quickly, the table was not populated. LSPS-8846

Web Application

Improvements
  • The setting "SSO_ENABLED" has been added to the LSPS Application settings: when set to true, the application checks when creating a new Vaadin UI if the current user exists in the application and is enabled. LSPS-9150

3.2.1025

Command-Line Console

Fixed Issues
  • Due to incorrect parsing of the muc file, model update performed with the command-line tool failed with an exception unless it explicitly specified the model instances to be updated. Now such a command is applied to all model instances of the original model. LSPS-9108

Expression Language

Improvements
  • Closures which reference only their arguments and global variables are executed more efficiently. LSPS-8878
  • The memory footprint of contexts related to closure and function invocations has been significantly diminished. LSPS-9082

Forms

Improvements
  • The refresh() call did not behave consistently on all components. Now on refresh, all child components are refreshed. As part of the refresh process, their binding is reloaded, the data source reset, and component validation triggered.

    Note that FormComponent now realizes the Refreshable interface with the abstract refresh() method: This change might require that you add the implementation of the refresh method to your custom form components that extend the FormComponent or its children in your LSPS Application. LSPS-9058

  • When the user drops a file into a Drop Zone, the Process Application now becomes read-only and the spinner icon is displayed until the file is uploaded. LSPS-9111
Fixed Issues
  • If the user double-clicked the Download component in the Process Application, an exception occurred since the browser attempted to close the connection. LSPS-9118

PDS

Improvements
  • If you declare a function with no parameters as an extension method, the validation now detects the missing required parameter as an error. LSPS-9131
Fixed Issues
  • When the user defined a UI listener in the Listener dialog and then selected Listener is defined by expression, the generated expression did not contain the executionContext field and the listener was executed in the top level context. LSPS-9136

Server

Fixed Issues
  • After database migration with the delivered scripts, Websphere servers failed on some operations with the message Authentication failed for processAgent. This occurred because the password for the user processAgent in the system database did not match the password in the configuration of the Websphere. The database initialization now updates the password to match the Websphere password as expected. LSPS-9114

Standard Library

Improvements
  • The getAllSubGoals(Goal goal) and getSubGoals(Goal goal) functions and their extension methods that return the immediate and all sub-goals of a goal have been added. LSPS-9103

UI

Fixed Issues
  • When the user defined a UI listener in the Listener dialog and then selected Listener is defined by expression, the generated expression did not contain the executionContext field and the listener was executed in the top level context. LSPS-9136

Web Application

Fixed Issues
  • The Process Application failed to time out since Vaadin heartbeats were preventing the closing of the session. We have added the closeIdleSessions init parameter to the lspsVaadinApp servlet in the application web.xml:

    <servlet>
    <servlet-name>LspsVaadinApp</servlet-name>
    ....
    <init-param>
    <param-name>closeIdleSessions</param-name>
    <param-value>true</param-value>
    </init-param>
    </servlet>

    Consider adding the init parameter to your application as well. LSPS-9129

3.2.1024

Forms

Improvements
  • The popup with the error message displayed in the Process Application on runtime has been improved to display the relevant message: the stacktrace is now hidden by default. LSPS-9062

3.2.1023

Forms

Improvements
  • If a filter on a Grid or Table column has value provider that returns Booleans values, the column will use a three-state checkbox filter automatically. You can set the filter explicitly if required and set its properties with the filter configuration on a column of the Grid, Table, and Tree Table. LSPS-9061
  • The styles of Grid and Table filters have been improved as follows:

    • Square brackets from options in the filter drop-down have been removed.
    • Long captions in multi-select filters are now wrapped in their cell.
    • Redundant scroll bars are no longer displayed in filter drop-downs.
    • For the Options Filter, you can now set the height of the drop-down menu in the popupRows property.
    • The dynamic drop-down adapts its width to the content.

    In addition, the setColumnResizeListener() method of Tables and Grids now takes a closure input argument so you can set such listeners dynamically. LSPS-9068

Fixed Issues
  • Filters on Grid and Table columns can now define an ID which can be passed to a custom data source and processed as required. Refer to documentation for an example. LSPS-8940
  • If you defined filtering for your custom data source, the user input from a column filter was send all in lower case, which prevented implementing case-sensitive filter. The input is now sent with the same case as entered by the user. LSPS-9067

PDS

Improvements
  • The Expression Evaluator REPL View has been added so you can test expressions on design time. LSPS-8920
Fixed Issues
  • When you changed the name of an element in the Properties view and a diagram with the element was displayed, the name in the diagram was not refreshed immediately. LSPS-9069

Server

Fixed Issues
  • If a Record Relationship with one-to-list multiplicity was audited, the running of the model failed with an exception. With this update, such models run correctly. Note that such one-to-list relationship must be bi-directional (must have both ends named). LSPS-8727
  • If a native query used the joined to-do list and the record of the query was in a module beginning in a number, the query failed with an error. Such query calls are now performed successfully. LSPS-8907
  • If a model upload failed, for example, due to database schema incompatibility, and the system tried to remove the model, the removal failed with the exception org.hibernate.PropertyValueException: not-null property references a null or transient value: com.whitestein.lsps.modulemanager.entity.ProcessRelationship.source. The removal is now performed correctly and the upload fails gracefully. LSPS-8984

Standard Library

Improvements
  • The performance of functions thisModelInstanceProperties() : Map<String, String> and thisModelInstanceProperty(String propertyName) : String has been improved. LSPS-9064

3.2.1022

Expression Language

Improvements
  • Validation now detects call with no side effects and ignores return values. Hence validation detects a problem in the following block: def List<String> strings := []; strings.add("new item"); // creates a new list with the added item which is not used LSPS-8986

Forms

Improvements
  • It is now possible to enable filtering on editable tables. LSPS-8670
  • The binding type of the Token Field component has been changed from Reference<Set<Object>> to Reference<Collection<Object>>. LSPS-8697
  • You can now set the message that is displayed in the Table when it is empty, with the setNoDataMessage(<String>) method. LSPS-8730
  • The Horizontal Split Panel and Vertical Split Panel can now define an action when their position changes with the setSplitPositionChangedListener() method. LSPS-8918
  • The PDF View component has been improved so that PDF files are now loaded more quickly. LSPS-8922
  • On the Panel component, you can now set the position of the scrollbar with the scrollToTop() and scrollToBottom() methods. LSPS-9015
Fixed Issues
  • NullPointerException after clicking the pointer in a Gauge chart has been fixed. LSPS-8746
  • If a Table or Grid component used a query data source and the underlying query used the join to the todo list, the condition of the query was ignored. LSPS-9002
  • When navigating away from a document, the action could fail with an exception due to possible race conditions of navigation and transaction commit.

    Now the transaction is committed, then the navigation expression, and then navigation takes place.

    The fix requires changes of the Custom Process Application:

    1. In the AppFormConnector.java class, make sure the following is removed: ui.getAppConnector().getTransactionAccessor().closeTransaction();
    2. Change the LspsUI.java class as follows:
      • Make the class extend LspsUIBase.
      • Remove the connector field of type LspsAppConnectorImpl.
      • In the constructor, replace connector = new LspsAppConnectorImpl(this); with setAppConnector(new LspsAppConnectorImpl(this));.
      • Remove the getAppConnector() and navigateTo() methods. LSPS-9005
  • The server returned the exception A connector should not be marked as dirty while a response is being written. due to premature handling of notify() calls from data sources of the combo-box components. LSPS-9007
  • Multiple improvements related to exception handling have been implemented:

    • When an exception occurs, any underlying errors that were caught but later hidden due to another exception are now included.
    • When a data source of a grid and combo-box fails, the exceptions are thrown once.
    • The combo box attempts to reload data when the options are displayed if this previously failed.
    • On refresh, the data source of a combo box is refreshed as well.

    Make sure to adapt your Custom Process Application accordingly: add the following override to the LspsUI class of your Application User Interface:

    ~~~~~

    @Override

    public void error(Throwable error) {
    
        hub.handleError(error);
    

    }

    ~~~~~ LSPS-9010

PDS

Improvements
  • When the user presses Ctrl+click over the data types of properties in the Properties view, the definition of the data types opens. LSPS-8979
  • Validation now detects call with no side effects and ignores return values. Hence validation detects a problem in the following block: def List<String> strings := []; strings.add("new item"); // creates a new list with the added item which is not used LSPS-8986
  • The migrating feature for LSPS resources for migration from LSPS 3.1 to LSPS 3.2 (Project > Migrate LSPS 3.1 Project) now allows you to transform the cast() function calls to the as statements. LSPS-9014
  • You can now resume all the Updated instances displayed in the Model Instances view by click the Resume All Updated in the context menu of the view. LSPS-9021
Fixed Issues
  • When the user navigated to a function definition by clicking Ctrl+click on the function call and multiple libraries contained a function definition file with the same name, the system could have failed to resolve the request correctly and navigate to a wrong function definition file under certain circumstances. LSPS-9003
  • Renaming a function failed with an exception if the function was used in a try-catch with multiple error codes in the catch block. LSPS-9006

Server

Fixed Issues
  • If you change model instance context from the Expression Evaluator

    in persistent mode, the model instance is invoked so that if the conditions for running changed, execution is adapted (previously, the user had to manually invoke the instance). LSPS-8848

Standard Library

Improvements
  • The core::error(String code, String message) has been added so you can now define an error message for the errors. LSPS-9001
  • You can now get the first or last collection item that meets a particular criterion with the getFirst() and getLast() functions by defining a condition as their input argument. LSPS-9039
  • You can now define the type of List items returned by the select() function by defining the type argument, for example, select([1.1 , 2, 3, 3.1, null], Integer). Note that null items are excluded from the returned List. LSPS-9040
  • The Standard Library now contains the getDuplicates(Collection<E>)

    that returns a set of elements which occur more than once in a given collection. LSPS-9056

UI

Fixed Issues
  • If a Table or Grid component used a query data source and the underlying query used the join to the todo list, the condition of the query was ignored. LSPS-9002
  • When navigating away from a document, the action could fail with an exception due to possible race conditions of navigation and transaction commit.

    Now the transaction is committed, then the navigation expression, and then navigation takes place.

    The fix requires changes of the Custom Process Application:

    1. In the AppFormConnector.java class, make sure the following is removed: ui.getAppConnector().getTransactionAccessor().closeTransaction();
    2. Change the LspsUI.java class as follows:
      • Make the class extend LspsUIBase.
      • Remove the connector field of type LspsAppConnectorImpl.
      • In the constructor, replace connector = new LspsAppConnectorImpl(this); with setAppConnector(new LspsAppConnectorImpl(this));.
      • Remove the getAppConnector() and navigateTo() methods. LSPS-9005

3.2.1021

Expression Language

Improvements
  • If the inclusion operator in is used to check if an object of type T is present in a collection of objects of type E, validation checks if the T is related to E. If it is not, an error is reported. LSPS-8937
  • Validation of casted types has been improved so that it now detects if the cast tries to cast a type that is not related to the target type, for example, when trying to cast a String to Boolean. LSPS-8963
  • The instanceof operator that checks if the object is of a type has been added to the Expression Language. LSPS-8981
  • If the core::isInstance() function works with unrelated types, validation now reports an error; for example, core::isInstance("string", type(Boolean)); results in the error "Incompatible type String and Boolean".

    LSPS-8982

Fixed Issues
  • For deprecated types, the validation failed to detect the deprecation if the type was referred without the type keyword. LSPS-8980

Forms

Improvements
  • The getAllErrorMessages() and getAllErrorMessagesRecursive() methods for form components have been added: The methods return all error messages including the ones that are not displayed.

    LSPS-8932

  • The QueryDataSource that acquires the data based on a query call has been implemented. LSPS-8939
  • The following methods have been added to allow selection of Tabs from code:

    • Tab::getIndex() method that returns index of the Tab in the TabSheet
    • TabSheet::setSelectedTab(Integer tabIndex) that selects the tab with the index LSPS-8949
  • The getContextClickHanlder() method has been renamed to getContextClickHandler(). LSPS-8951
  • The validation API of form components has been improved and introduces now the following types of error messages with appropriate consistent API:

    • Validator messages produces by validator closures.
    • Data error messages based on constraint violations.
    • Custom error messages set manually by the user.

    For further information, refer to the LSPS documentation. LSPS-8952

  • A form file name and the name of the form in the file must match. Any discrepancy now represents a validation error. LSPS-8969
Fixed Issues
  • The return value and binding of the RadioButtonList has been changed from Set<Object> to Object since only one value can be selected. LSPS-8919
  • The search dedicated to search of form components with a modeling id, available in Search > Find Form Component, now works for forms of the forms module. LSPS-8956
  • Containers with sole components now propagate the refresh() call to their child components as expected (Previously, if you have, for example, a Panel in a Layout component and you called refresh() on the Layout component, the Panel content was not refreshed). LSPS-8961
  • When navigating away from a form, the current transaction was previously not committed, which is incorrect and such an action should commit the transaction. Note that the fix resulted in a modification of the AppFormConnector class in the Process Application and therefore you need to adapt the class in the Custom Process Application: add the closeTransaction() call to the navigate() method of your AppFormConnector class (generate the LSPS Custom Application to see an example). LSPS-8988

PDS

Improvements
  • Ctrl+Click on a method of a form now opens the .methods file on the methods tab of the form editor so the user can reach the definition of the form via its methods easily. LSPS-8728
  • The name of the methods file must match the name of its Record. LSPS-8968
  • A form file name and the name of the form in the file must match. Any discrepancy now represents a validation error. LSPS-8969
Fixed Issues
  • The search-for-usages feature now returns also hits in the Refresh field of Listeners in the UI form definitions files. LSPS-8911
  • The search dedicated to search of form components with a modeling id, available in Search > Find Form Component, now works for forms of the forms module. LSPS-8956

SDK

Improvements
  • If an implementation Java class of a task was not available on the server, the system failed to detect the problem. The system now logs the full stack trace in such cases so it is easier to identify the problem.

    In addition, you can now upload models created in LSPS 3.0 and older and check whether a task implementations is missing. This was previously not possible because the HumanInteractionTask was removed in LSPS 3.1. On execution, the task throws an exception. LSPS-8929

Server

Fixed Issues
  • Queries failed to handle to-do list criteria for Join Todo Lists with null values; hence, calls like new TodoListCriteria(person -> getCurrentPerson(), null, null) failed. LSPS-8941

Standard Library

Improvements
  • The countAll(<RECORD_TYPE>) function that returns the number of shared records has been added. If you use findAll(<RECORD_TYPE>).size() calls on shared records, consider substituting them with the countAll() calls. LSPS-8928
  • The toEnumeration(<String>) function that converts the String argument with the fully qualified name of an Enumeration to the respective Enumeration has been added. LSPS-8933
  • The toType(<String>) that parses the String and returns the Type defined by the String has been added; for example, the call toType("List<String>") will return the type List<String>. LSPS-8938
  • The createModelInstance() function now takes a shared Record parameter: the model instance is created with the createModelInstance(Boolean synchronous, Model model, Record sharedRecord, Map<String,String> properties) call. The shared Record parameter can be then accessed via getProcessEntity(<Record>) function. LSPS-8959
  • Functions thisModelInstanceProperties() and thisModelInstanceProperty(String) that enable the user to work with model-instance properties more efficiently have been added. LSPS-8960

UI

Fixed Issues
  • Model instances of Modules created in LSPS 2.7 could have crashed with an exception during UI validation due to a backwards-incompatible change in the data structure of the UI-validation feature. The attribute has been adapted to be backward-compatible and the problem no longer occurs. LSPS-8926

Web Application

Fixed Issues
  • The Forms.submit() call is now handled gracefully in Form Preview. LSPS-8935

3.2.1020

Forms

Improvements
  • Tab Sheet and Accordion now have the removeTab() method. LSPS-8892
  • The combo box and search combo box components now support entering of a value that is not available in the options. LSPS-8894
Fixed Issues
  • The Accordion component has been added. LSPS-8868

Standard Library

Improvements
  • The following functions have been added:

    • date (Integer) that returns the date for the given milliseconds since Unix Epoch
    • getEpochMillis(Date) that returns milliseconds since Unix Epoch

    LSPS-8898

  • The collect() function now works with Maps. LSPS-8899

UI

Fixed Issues
  • Validation in dynamic Pop-ups failed with an exception saying that the data you are trying to access was not available on a higher execution level. LSPS-8895

3.2.1019

Command-Line Console

Improvements
  • The command-line console now support export and import of raw status of model instance and saved to-dos and documents. LSPS-8788

Documentation

Fixed Issues
  • Deployment how-to documentation has been moved to the Deployment and Configuration guide. LSPS-7931

Expression Language

Improvements
  • Records, their Fields (also Interfaces and Enumerations) and Organization elements (Unit and Role) can now define a label that can be obtained with the getLabel() function. LSPS-8784

Forms

Improvements
  • You can now set the CSS style of Table and Grid row with the setRowStyleGenerator() method. LSPS-8733
  • The PDF Viewer component has been added. LSPS-8738
  • Search Combo Box has been added. LSPS-8777
  • The components Horizontal and Vertical Split Panels have been added. LSPS-8853
Fixed Issues
  • The description of the Button Caption property of the Upload component incorrectly stated that if set to null, the button should be hidden while the null value is illegal and results in an exception. LSPS-8653
  • Previously it was possible to instantiate the PlotOptions record, which was incorrect since it was intended as an abstract record with concrete plot options implemented as its sub-records. LSPS-8748

Management Console

Improvements
  • You can now export and import raw XMLs of saved to-dos and documents and model instances. LSPS-8787
Fixed Issues
  • When the user changed the value of a date variable, the variable was set to an incorrect date. LSPS-8875

Other

Fixed Issues
  • After installing LSPS Cloud Edition, PDS failed to connect to the server due to a certificate unsupported by older Java versions. Now the installer as well as PDS will warn the user that a newer Java version is required. The Java bundled with the installer has been upgraded so the certificate is now accepted by this Java as well. LSPS-8849

PDS

Improvements
  • The PDF Viewer component has been added. LSPS-8738
  • The Copy Java Signature feature is now available for functions with text declaration: to copy the function signature, right-click the function in the Outline view and select Copy Java Signature from the context menu. LSPS-8772
  • Records, their Fields (also Interfaces and Enumerations) and Organization elements (Unit and Role) can now define a label that can be obtained with the getLabel() function. LSPS-8784
  • The Details section of Record association properties has been divided into Details and DB Mapping sections for more clarity.

    LSPS-8830

  • Data models can now contain sibling Records that are mapped to the same table and define fields with the same name and type: though perfectly valid, previously such fields were considered duplicate and caused a validation error. LSPS-8889

Standard Library

Improvements
  • The extension method equivalent of the swap() function has been added. LSPS-8841

3.2.1018

Documentation

Improvements

Expression Language

Improvements
  • Switch statements with cases set to constants now use a Map to identify the relevant case, which improves performance. LSPS-8785

Navigation Engine

Improvements
  • If Timer Events, that is, Timer Intermediate Events and Start Events, have their Date property set to null, they are disabled. LSPS-8707

PDS

Improvements
  • It is now possible to disable custom component definitions. LSPS-8814

3.2.1017

Application-Theme

Fixed Issues
  • Multiple fixes have been introduced on widgets:

    • The look of the restore button in the widget captions has been changed so it is different from the maximize button.
    • It is now possible to move widgets after they were restored.
    • You can set the tooltips on minimize and maximize buttons on the GSDashboard with the setMinimizeWindowTooltip() and setMaximizeWindowTooltip().

      LSPS-8597

  • When the user clicks a link in a widget, the widget previously incorrectly switched to moving mode. LSPS-8633

Business Activity Monitoring

Fixed Issues
  • Minimizing and maximizing of BAM widgets now works correctly. LSPS-8507

Forms

Improvements
  • The Dropzone component that allows the user to drag-and-drop a file into a form so as to upload it has been added. LSPS-8739
  • The Combo Box component now has the setHint() and getHint() methods so you can now work with the text displayed if no option is selected. LSPS-8762
Fixed Issues
  • When components worked with Lists, Maps, or Set of shared records, the system failed with the Error: Unable to locate current JTA transaction. LSPS-8681
  • The style of the Token Field can now be switched to a text-field look using the html-class="tokentextfield" presentation hint on the ui::TokenField and calling addStyleName("tokentextfield") on the forms::TokenField. LSPS-8705
  • When the user sorted data of a Grid Table component, the table displayed repeatedly the same set of sorted rows. This occurred under certain circumstances if the Grid Table used a CollectionDataSource that returned a collection of shared records. LSPS-8766

PDS

Improvements
  • It is now possible to reassign to-dos from the Management perspective. LSPS-6927
  • You can now export to-dos and saved documents from the Management perspective in XML format and import them back. The feature is available in the To-Do List list view for all to-dos and for saved documents in the new Saved Documents view: right-click the to-do or saved document and click Export To-Do State or Export Saved Document State, or their import equivalents. LSPS-7401
  • The Dropzone component that allows the user to drag-and-drop a file into a form so as to upload it has been added. LSPS-8739

Server

Fixed Issues
  • Relationships between an audited and a non-audited record which are excluded from auditing are no longer audited as expected. LSPS-8726
  • If a record instance was created by a method of another record instance, it was created always on the base level. With this update, it is created on the same level as the record instance with the method. LSPS-8807

Standard Library

Fixed Issues
  • If you logged data from a document with the application log feature (the function log()), other than H2 databases reported an error about that the model instance ID cannot be null. LSPS-8764

UI

Improvements
  • The Text Area and Text Box components now throw a AsynchronousValueChangeEvent on every key stroke. The user can use the AsynchronousValueChangeListener to catch the events and define the required actions. LSPS-8718
Fixed Issues
  • When components worked with Lists, Maps, or Set of shared records, the system failed with the Error: Unable to locate current JTA transaction. LSPS-8681
  • The style of the Token Field can now be switched to a text-field look using the html-class="tokentextfield" presentation hint on the ui::TokenField and calling addStyleName("tokentextfield") on the forms::TokenField. LSPS-8705

3.2.1016

Web Application

Fixed Issues
  • If you customized the home page in the LspsUI class, the application redirect to the home page did not work if the URL contained a trailing character (#). LSPS-8741

3.2.1015

Forms

Improvements
  • The Token Field component now excludes already selected tokens from the combo box with suggestions. You can deactivate and activate the behavior with the setExcludeSelectedTokens(Boolean excludeSelectedTokens) method and check the current setting with the isExcludeSelectedTokens() method. LSPS-8709
  • You can now define the number of visible lines in the Text Area component with the setRows(Integer rows*) method. To get the current value of the visible lines, use the getRows() method. LSPS-8714
Fixed Issues
  • If the user closed a closable tab in a document and attempted to save the document, LSPS Server returned an exception (com.vaadin.server.ServerRpcManager$RpcInvocationException). With this update, tabs can no longer be set as closable. LSPS-8721

PDS

Improvements
  • You can now attach multiple boundary Timer Intermediate Events to one Activity. LSPS-8715

Server

Improvements
  • You can now attach multiple boundary Timer Intermediate Events to one Activity. LSPS-8715
Fixed Issues
  • A non-interrupting timer boundary event with a period defined was previously triggered only once. Now it is correctly triggered periodically. LSPS-8723

3.2.1014

Forms

Improvements
  • You can now set the Grid component to allow selection of multiple rows using the setSelectionMode(SelectionMode) method. LSPS-8700
Fixed Issues
  • The setCollapsed() call on table columns caused a runtime error. LSPS-8685

3.2.1013

Business Activity Monitoring

Fixed Issues
  • Fields marked as required were previously validated implicitly and if they contained no values, validation failed. Since this logic has been removed, also validation of required fields in the example BAM reports is now explicitly invoked. LSPS-8643

Forms

Fixed Issues
  • The DateFieldConfig record has been extended with the formatPattern property which specifies formatting of the selected filter dates. In addition, the options in the OptionsFilterConfiguration are now localized. LSPS-8680
  • The forms::DateTimeResolution enumeration has been removed due to being redundant: The uicommon::DateTimeResolution enumeration provides the same feature. LSPS-8692
  • All input components and Label now process calls to localization identifiers correctly. LSPS-8693
  • When a table in a document had the filtering enabled and visible, and the user attempted to save the document, the server returned an exception Parameter component: invalid value : no component instance for this Vaadin component. LSPS-8702

PDS

Improvements
  • When migrating UI forms to the new forms, the stdlib::forms module is added to module imports automatically. LSPS-8686

Server

Improvements
  • You can now enable hibernate statistics on the server either in the server.properties of the application EAR or via an MBean from JConsole. You can find further information in the Runtime Suite documentation. LSPS-6579

UI

Improvements
  • To allow the user to save and restore the width and collapse state of a table column, the getColumnStates and restoreColumnStates functions have been added to the ui module of the Standard Library. The functions work with a new record TableColumnState which holds the state of the table column. The record contains also the columnId attribute which represents the column identifier as obtained from the UITableColumn.getColumnId() method. LSPS-8676
Fixed Issues
  • You can now define a message displayed in a table when no data is available due to filtering using the no-data-message presentation hint. LSPS-7504

3.2.1012

Forms

Improvements
  • The CssLayout component has been added. LSPS-8668
  • The following functions that add and remove error messages on the specified component and its descendants have been added:

    • showConstraintViolations(List<ConstraintViolation> constraintViolations*, FormComponent component)
    • clearErrorMessages(FormComponent component) LSPS-8672
Fixed Issues
  • The captions of Tab, Table Column, Grid Column, and Dashboard Widget now support the localization feature. LSPS-8659
  • Under certain circumstances when the user selected values in a multi-select list component, the server returned a runtime error. LSPS-8683

PDS

Fixed Issues
  • The Listener registration point column in tables with listeners for registration points has been renamed to Listening on registration point.

    LSPS-6984

3.2.1011

Forms

Improvements
  • The setFilteringEnabled() method has been added to allow the user to hide the filtering feature on Table and Tree Table components. LSPS-8652

Management Console

Improvements
  • When uploading a model, the system validates that the user provided a valid ZIP file. The file validation has been added to the Command Line Management Console. LSPS-8644

PDS

Improvements
  • In the GO-BPMN Search tab, the tree of Element types are now all collapsed by default. LSPS-8059
  • PDS validation now detects unused local variables as validation breaches. By default, it is considered a warning. The users can set its validation severity in validation preferences. LSPS-8649
Fixed Issues
  • Under certain circumstances, GO-BPMN search failed to detect a Record usage. LSPS-8648

Platform

Improvements
  • When migrating database with the migrate.sh script, the user can now use properties in for SQL databases. For example, instance=whitestein in databaseUrl:jdbc:sqlserver://localhost/lsps;instance=whitestein is now correctly handled as an instance name. LSPS-8663

Standard Library

Improvements
  • The containsAny(Collection<Object>, Collection<Object>) function has been implemented: it returns true, if the collection contains any of the specified elements. LSPS-8664

3.2.1010

Forms

Fixed Issues
  • The Upload component now displays the red asterisk when it is set to required. LSPS-8618
  • When user's code required its own JQuery, it was overridden by the LSPS JQuery. With this update, the user's JQuery is used as expected. LSPS-8635

PDS

Improvements
  • PDS validation now detects usage of Null as expression return value as validation breaches. By default, it is considered a warning. The users can set its validation severity in validation preferences. LSPS-8640

SDK

Improvements
  • You can now set a Record and its Fields to be included or excluded when generating their Java classes. Additionally, you can define the target class name and the record type constant name, which holds the original Record name. LSPS-8622

UI

Improvements
  • The Single Select List can now define the size hint, which determines the size of the menu with options. LSPS-8632
Fixed Issues
  • The Upload component now displays the red asterisk when it is set to required. LSPS-8618
  • When user's code required its own JQuery, it was overridden by the LSPS JQuery. With this update, the user's JQuery is used as expected. LSPS-8635

3.2.1009

PDS

Improvements
  • The equals operator = now result in a warning since the operator is deprecated and will be removed to prevent its erroneous usage as assignment operator. LSPS-8609
Fixed Issues
  • LSPS checks the names of database tables in a case-sensitive manner. However, MySQL handles table names inconsistently using upper-case names for database tables on case-sensitive file systems and lower-case names on case-insensitive file systems. This could cause that the second and later model uploads failed. With this update, LSPS handles the names of MySQL tables case-insensitively. LSPS-8604

Server

Fixed Issues
  • LSPS checks the names of database tables in a case-sensitive manner. However, MySQL handles table names inconsistently using upper-case names for database tables on case-sensitive file systems and lower-case names on case-insensitive file systems. This could cause that the second and later model uploads failed. With this update, LSPS handles the names of MySQL tables case-insensitively. LSPS-8604

3.2.1007

Forms

Improvements
  • Forms created using the experimental forms Module can now use the "Form Preview" feature. LSPS-8605
  • The Token Field component has been added. LSPS-8616

Management Console

Improvements
  • You can reset to-dos from the Web Management Console using the Reset button on the selected to-dos on the To-Dos page. LSPS-8614

PDS

Improvements
  • If you copy a function from the GO-BPMN Explorer, it is saved as its Java signature in the clipboard. LSPS-8406
  • When the user selects a definition file in the GO-BPMN Explorer, the Properties view now displays relevant properties of the file. LSPS-8554
  • Forms created using the experimental forms Module can now use the "Form Preview" feature. LSPS-8605
  • You can reset a to-do from To-do List view of the Management perspective. LSPS-8613
  • When the user migrates their modules using the Migration feature available under the Project menu in the Modeling perspective, they can now select the Projects they want to migrate. LSPS-8620
Fixed Issues
  • PDS no longer freezes when working with large models. LSPS-8626

UI

Improvements
  • The Token Field component has been added. LSPS-8616

3.2.1006

PDS

Fixed Issues
  • When the user now renames a record, calls to its static methods are renamed as well. LSPS-8611

Server

Fixed Issues
  • Related records with a primary key that is mapped to a foreign key of another record have the key set automatically when the related record is assigned. For example,

    if Parent has a relationship to Child and one of the Child's primary-key fields is mapped to the primary key of Parent, the field automatically adopts the Parent id:

    def MyParent p1 := new MyParent();
    def MyChild c1 := new MyChild(id -> 1, parent -> p1);

    LSPS-8603

Standard Library

Improvements
  • The function resetTodo() for resetting to-do state has been added to the human module of the Standard Library. LSPS-8615

3.2.1005

Business Activity Monitoring

Improvements
  • The following improvements have been introduced to the example BAM application:

    • When the user creates, copies, publishes, or renames a dashboard, they must enter a unique names.
    • The user can delete a dashboard by right-clicking its button on the BAM document without having to open the dashboard. LSPS-8510

Forms

Improvements
  • The forms Module now contains the Forms.save() method which saves the Document or To-do with the Form. LSPS-8432
Fixed Issues
  • When the Process Application displays a form created with the experimental forms with a non-modal Popup and the user switches to another page, such as, Run Model, any open Popups now disappear. LSPS-8349
  • Form Preview no longer fails with a runtime exception. LSPS-8601

Management Console

Improvements
  • The Exceptions page now contains the Model Instance column. LSPS-8534

Server

Improvements
  • The LSPS Server no longer includes the application-server log entries in its logs. LSPS-8560
Fixed Issues
  • User activity tracking did not obey the USER_ACTIVITY_TRACKING and USER_ACTIVITY_TRACKING_TIMEOUT settings and even if no settings were specified, it logged with timeout zero, that is, always and immediately.

    LSPS-8590

Web Application

Fixed Issues
  • It is now possible to log out form the Process Application correctly when a document or todo with a popup is open. LSPS-8596

3.2.1003

Business Activity Monitoring

Fixed Issues
  • The example BAM reports in SQL Servers contained incorrect time-related data. This occurred due to incorrect logic of a custom time-related database function, which is now fixed. LSPS-8570
  • When uploading the BAM application to LSPS over Oracle database, the upload failed due to too long foreign key names. The names have been shortened to meet the required limit. LSPS-8572

Forms

Improvements
  • Support for modeling of custom components (custom components editor and related features) for the experimental forms feature has been added. LSPS-8520

Platform

Fixed Issues
  • The example BAM reports in SQL Servers contained incorrect time-related data. This occurred due to incorrect logic of a custom time-related database function, which is now fixed. LSPS-8570

UI

Fixed Issues
  • When a form contained a listener with a Save action closure, the model instance content was unnecessary serialized and set as the Document content when the closure was executed. Since the serialization could result in performance issues, this update removes the redundant serialization. LSPS-8574

3.2.1002

Business Activity Monitoring

Improvements
  • You can now configure the Jasper reports to use data from a custom data source using the com.whitestein.lsps.monitoring.datasource-jndi-name property. LSPS-8551

PDS

Improvements
  • In the experimental forms feature, you can now model the content of the Repeater and Table Column components in the forms editor (previously these could have been defined programtically in closures). LSPS-8550

Server

Fixed Issues
  • The user can now download the LDAP-integration package from LSPS documentation site, which they can customize to meet the requirements of their LDAP integration. LSPS-7952

UI

Fixed Issues
  • If a component is a child of a container component with visibility set to false, it is no longer refreshed. LSPS-8547

3.2.1001

Forms

Improvements
  • In the experimental forms Module, you can now use the setContentMode() method to set the format of the Label component content to HTML, preformatted, or plain text. LSPS-8539

Server

Improvements
  • In Wildfly 9, session bean pooling is disabled by default, which causes significant performance issues in LSPS. To remedy the situation enable pooling for session beans in ejb subsystem configuration in the

    configuration file (for example, standalone.xml):

    <session-bean>
        <stateless>
          <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
        </stateless>

    LSPS-8532

Fixed Issues
  • The user can now store and query revisions of shared Records as well as extend the revision data. LSPS-6585

3.2.1000

Additional Libraries

Improvements
  • A library with resources for a BAM application has been added to PDS. For documentation refer to the Bussiness Activity Monitor guide and to the documentation in the library. LSPS-7883

Business Activity Monitoring

Improvements
  • An experimental extension for Jasper reports that allows you to use the Expression language in the Jasper report data queries has been added. LSPS-7957
  • BAM Library with resources for Jasper report support and BAM application has been added. Note that you can generate an example BAM application based on this library. For further information, refer to Business Activity Monitor Library. LSPS-8428
  • The report Users Activity Period has been created for the BAM showcase application. LSPS-8484

Command-Line Console

Improvements
  • You can now change the LSPS Engine setting with the lsps-cli command-line tool. LSPS-8103
  • It is now possible to export Modules into a deployable ZIP file with Maven. LSPS-8367

Documentation

Improvements
  • Standard library documentation now includes documentation of constraint types. LSPS-7463
  • In the visual function editor, the 'Generic types' property has been renamed to 'Type parameters' so the name of the property is now consistent with its equivalent property in the constraint-type editor. LSPS-7769
  • A how-to document with instructions on deployment and configuration of LSPS on WildFly has been added to the LSPS Runtime Suite documentation. LSPS-7901
  • The documentation is no longer delivered as part of the LSPS but is accessible online in the PDF, HTML, and single HTML format. LSPS-8278
  • Confusing description of the Null-Coalescing operator in the Expression Language document is now fixed. LSPS-8394
Fixed Issues
  • Information on minimum size 650x490 of the Dashboard component in Forms has been added. LSPS-6985

Expression Language

Improvements
  • You can now create an expression block, that represents its own namespace, with the begin and end directives. LSPS-7831
  • The break and continue directive have been added to the Expression Language to allow better control in the while, for and foreach loops. LSPS-7862
  • The for loop has been added to the Expression Language. LSPS-8099
  • You can now use the following Java operators as an alternative to their original Expression Language versions: == (equals), ! (not), && (and), || (or) LSPS-8214
  • You can now use the range (..) operator to create Lists of Integers, for example, 3..1 is equivalent to [3, 2, 1]. LSPS-8227
  • Previously, when declaring a function or closure that returned no value, the return type was defined as Null. We have added the void type, which in these cases replaces the Null return type and allows better validation at compile time. Note that it is to be used as return type for functions, methods and closures with no return value. LSPS-8268
  • The Expression Language now supports the definition of extension methods so you can add new methods to existing types easily. LSPS-8296
  • PropertyPath has been added as the built-in data type of the Expression Language. LSPS-8302
Fixed Issues
  • When calling a function with the arguments in the form argument -> value, PDS did not detect if the same argument was defined multiple times. LSPS-7796
  • Validation failed to detect named types with type parameters in vertical bars or user-defined constants with type parameters in vertical bars as invalid. LSPS-8297

Forms

Improvements
  • The vaadin-charts library used by the Forms and UI Modules has been upgraded to 3.1.0. LSPS-8393
  • Browser Frame components can be now refreshed:

    • ui::BrowserFrame is refreshed using the refresh mechanism for ui::forms.
    • forms::BrowserFrame is refreshed when the setURL() method is called. LSPS-8473

Management Console

Improvements
  • The user can now create and preview a custom CSS theme for Process Application from Process Management Console using the Theme Sampler under Dynamic Themes. LSPS-7561
  • It is now possible to evaluate expressions in different contexts in the Expression Evaluator of the Management Console. LSPS-7783
  • The interface of the PersonManagementService now has the getEditableAttributes() method that returns the list of editable attributes of a person retrieved from LDAP. Consequently, the method isReadOnly() is now deprecated. LSPS-7972
Fixed Issues
  • The Roles page in the Management Console now displays Runtime Roles with parametric values on a separate tab. LSPS-7722
  • From the Management Console, it is no longer possible to activate substitution without selecting a substitute. LSPS-8098

PDS

Improvements
  • You can now define labels for process elements, which are displayed in the process diagrams instead of their names. Note that unlike names, label value do not need to be unique within the namespace. LSPS-6289
  • A tooltip with information on value syntax has been added to the Order by Multiplicity setting of Data Relationships (available for relationships between shared Records). LSPS-6738
  • You can now export Records as XSD files. LSPS-7420
  • The Open Element feature now returns also Module names that contain the search string. LSPS-7625
  • Parameters of a Task are now edited in a single text field as comma-separated key-value pairs, for example, message -> "Task executed.", level -> 200. LSPS-7752
  • In the visual function editor, the 'Generic types' property has been renamed to 'Type parameters' so the name of the property is now consistent with its equivalent property in the constraint-type editor. LSPS-7769
  • The Localize action available in the context menu of a selected String expression can now concatenate expressions to parameterized localization identifiers. LSPS-7840
  • Localization Editor now displays the Description area for localization identifiers. LSPS-7841
  • Debugging in the Cloud edition is now supported. LSPS-7850
  • Validation now correctly validates invalid hints on form components. LSPS-7857
  • The PDS Profiler view now contains a button for text export. LSPS-7884
  • In the Management perspective, the Profiler View can be now displayed from the Management Views menu in the main toolbar. LSPS-7888
  • In the graphical form editor, you can now delete a parent component of a form component with the Shift Children Up command in the context menu. The feature is supported for layout components (vertical, horizontal, form) and panels in a layout or panel component. LSPS-7912
  • "LSPS Eclipse Help" has been changed to "LSPS Online Help", which navigates you to the official LSPS documentation page. LSPS-7961
  • Navigating to definitions by clicking Ctrl + Left click now navigates to the respective definition also in expression editors opened from UI component properties. LSPS-7990
  • The option to export and import profiler-related data as XML has been added into the Profiler view. LSPS-8002
  • The LSPS Embedded Server could fail to start with the following error due to incorrect date class sent to the Quartz service: SEVERE QuartzScheduler Error while notifying SchedulerListener of scheduled job. LSPS-8012
  • If a Start Event in an inline sub-process used data from the context of the sub-process, for example, a subprocess variable in the Condition expression, PDS validator did not detect the violation breach (such data is evaluated in the parent context, the sub-process context is not created at the moment when the expressions are evaluated). LSPS-8078
  • PDS now supports the Call Hierarchy feature. LSPS-8114
  • You can now copy and paste the model update data in muc files. The feature is primarily intended to allow you to copy the update data for module imports in multiple models. LSPS-8167
  • In the MUC editor, you can now override the hashcode of the source and target models. LSPS-8174
  • Shared Records can now specify their database schema and catalog in their properties. LSPS-8356
  • PDS now requires JDK 1.8. LSPS-8411
  • You can now define the Navigation Factory function on document definitions that takes the same arguments as the document and returns a Navigation object to the document. LSPS-8415
  • In the Module Management view of the Management perspective, you can now perform action on Modules from the Modules context menu. LSPS-8437
  • The Find Unused Modeling Elements feature has been improved to return more accurate results. LSPS-8487
Fixed Issues
  • When the user generated data types from an MS SQL schema, the primary and foreign keys were not generated. LSPS-6373
  • When creating a new instance in a Collection of shared records from the Generic View, the system displays a pop-up with a button that confirms the creation. The Generic View does not support override of this button: the Submit expression of the Generic View does not apply to it since the button requires another logic. To distinguish this button from the Persist button, the button now has the label OK & Persist. LSPS-7809
  • If the Generic View component contained a map with keys or values of a simple data type, the front-end application returned an error on rendering. LSPS-7910
  • The Shift Children Up feature, that removes a form component so its child components are moved "one level up" in the form tree, has been added to the new experimental forms implementation. It is available in the context menu of form components when applicable. LSPS-8336
  • When multiple Form components or records used the same name, the validation detected a problem on their fields. LSPS-8419
  • It is now possible to disable filtering or inferred filtering on a TreeTable component. The setting overrides the filtering settings on the columns of the TreeTables. LSPS-8492

Packaging

Improvements
  • Database creation scripts have been substituted with the DbMigration tool, which is based on Flyway. The original scripts for database creation are no longer supported. LSPS-8279

SDK

Improvements
  • The LSPS Embedded Server now uses WildFly 9.0.2. instead of GlassFish. LSPS-5513
  • Command-line tools from the Runtime package and all libraries are now part of SDK so the user can use the cli tools directly from their Java code. LSPS-7999

Server

Improvements
  • You can now create processes that serve as REST web service servers or clients. Refer to REST Webservices. LSPS-5352
  • The LSPS Runtime Suite now contains database scripts for deletion of process log entries. LSPS-7771
  • The Execution Tracker has been removed since its functionality is provided by debugger. LSPS-7791
  • Under certain circumstances, the underlying application server logged ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (http-/0.0.0.0:8080-1) ISPN000136: Execution error: java.util.ConcurrentModificationException caused by a race condition. The race condition has been fixed. LSPS-7844
  • The ID of the failed constraint has been added to the constraint violation object. LSPS-7864
  • The Embedded LSPS Server failed with the following exception if it defined multiple data sources and the application attempted to work over any other but the first datasource: dataEjbTransactionUtil.handleSystemException: Unable to lookup JNDI name [jdbc/DATASOURCE_NAME] LSPS-8013
  • The GUID of the failed constraint has been added to the constraint violation object. LSPS-8154
  • Handling of timer events has been improved so the LSPS server creates only one timer event even if multiple modeling elements create such an event. LSPS-8175
  • Functions that request Jasper reports, that is, embeddedJasperReportUrl(), jasperReportExport(), and jasperReportUrl(), can now pass their parameter values as adequate Expression Language data types (previously these were always defined as Strings). LSPS-8205
  • Shared Records can now specify their database schema and catalog in their properties. LSPS-8356
Fixed Issues
  • The ModelInstancePlugin interface has been added to the LSPS Engine so that the user can implement hook actions on model instances. Refer to Creating Hooks on Model Instance Execution. LSPS-5562
  • When the user increased the BLOB size on a Relationship end and the server connection was set to update the database schema, the system did not return an exception, though this operation is not allowed and hence failed. Now the server returns an exception when the user attempts to upload a data model that increases the BLOB size on an existing database schema. LSPS-6771
  • A Model instance could fail with a java.lang.IllegalArgumentException on an ExecutionContext.setVariableValue() call or an ExecutionContext.getVariableValue() call due to incorrect context resolution in Module imports. LSPS-8181
  • Previously, when a Module called a public variable from an imported Module, the resolution of the variable failed if another imported Module contained a variable with the same name and the private flag. LSPS-8185

Standard Library

Improvements
  • Standard Library now contains functions that allow the user to populate a XFA PDF templates with data from models. LSPS-7424
  • Functions for working with JSON data have been added to the core module of the Standard Library. LSPS-7778
  • The ID of the failed constraint has been added to the constraint violation object. LSPS-7864
  • The event TablePageSizeChangeEvent and its listener TablePageSizeChangeListener have been added so forms can perform the required action when the user changes size of paged Tables. LSPS-8010
  • The Gauge chart form component can now define data series names in the Detail tab (the series names are displayed on mouse hover over the chart segment). LSPS-8115
  • The GUID of the failed constraint has been added to the constraint violation object. LSPS-8154
  • The NoOperation task type with no execution logic has been added to the core Module of the Standard Library. The task type is intended for prototyping purposes. LSPS-8321
  • The getModel() function has been added to the core module of the Standard Library. The function returns the model with the specified name. If there are several models with the same name, the most recently uploaded version of the model is returned. LSPS-8328
  • The following functions that return data types used in maps have been added: getIndexType(), getItemType(), and getReferencedType(). LSPS-8390
  • You can now set the height of a Grid component with the height-by-row presentation hint. LSPS-8496
  • The core::Duration parameters with the value null are now valid (for example, new core::Duration(days -> 1), which was previously invalid, is now valid). LSPS-8516

UI

Improvements
  • The DatePicker form component now supports the definition of a set of acceptable date formats. LSPS-8028
  • The vaadin-charts library used by the Forms and UI Modules has been upgraded to 3.1.0. LSPS-8393
  • Browser Frame components can be now refreshed:

    • ui::BrowserFrame is refreshed using the refresh mechanism for ui::forms.
    • forms::BrowserFrame is refreshed when the setURL() method is called. LSPS-8473
  • The notify() function takes the forms::Alignment enumeration instead of the forms::Position enumeration and the latter has been removed since it was redundant. LSPS-8504

Web Application

Improvements
  • The suffix on the UITextBox component is now rendered only when used. LSPS-6746
  • The following improvements have been introduced to the Grid and Grid Column components:

    • Column content can now be rendered as a link, button, or image.
    • Columns can define the formatting of the displayed values.
    • Row selection can be handled on the forms::Grid with the setSelectable() and setSelectionChangeListener() methods.
    • Editors for column content have been improved. LSPS-7362
  • A new experimental forms implementation in the forms module of the Standard Library has been added. The aim of the implementation is to give more control to the developer user. For further information, refer to Process Application Forms (experimental) guide. LSPS-7529
  • The interface of the PersonManagementService now has the getEditableAttributes() method that returns the list of editable attributes of a person retrieved from LDAP. Consequently, the method isReadOnly() is now deprecated. LSPS-7972
Fixed Issues
  • Test facilities have been split so that tests that do not test the UI no longer require Vaadin TestBench lincense: the SampleNonUITests class, which does not depend on Vaadin TestBench, has been created. LSPS-7877
  • If an object used in the GenericView component contained an instance of a list of Records with a Field of a Record type, the system returned an exception on runtime. LSPS-7914
  • From the Management Console, it is no longer possible to activate substitution without selecting a substitute. LSPS-8098
  • Due to absent sorting, 2.7 table components caused errors on the server. LSPS-8145