INTRODUCTION
Novacura Flow is a low-code platform that expands ERP systems and allows customers to build their own ERP applications. It offers deep ERP integration and a set of connectors that make this integration with ERPs easy for low-code application developers.
We constantly develop our product by regularly developing fully new versions offering a lot of new capabilities and functional improvements.
The latest version – Flow 6.15 – not only brings new functional capabilities but also offers
a significant improvement in the performance (efficiency) area.
Below we present these performance improvements divided into 2 categories: those that are visible in “runtime” (for the end-users), and those, that are visible for Novacura Flow developers when they develop applications.
RUNTIME PERFORMANCE IMPROVEMENTS
BETTER MEMORY MANAGEMENT ON THE SERVER SIDE
Flow 6.15 utilizes the full potential of 64-bit architecture for memory management. The Flow server can now allocate and assign more memory to all components operating on the server side. All database connectors and drivers have been updated to the 64-bit versions. This change in the internal architecture has a significant impact on the performance in the most complex cases, where the server must face many concurrent sessions (very many users) and a heavy load of workflow executions performed in parallel. In such demanding cases, all users will notice a significant improvement in daily efficiency. At the same time, the server resources will be less utilized, so there will still be some space for a higher load.
According to the tests we performed, the load on the Flow Server is roughly 30-40% lower in benchmarks, while in parallel providing a higher throughput!
Server CPU usage measured for 6.14 and 6.15 for the same transaction load
EXECUTION OF THE FLOW ENVIRONMENT CONNECTOR
The new way of managing server memory has a visible impact on the execution of connectors responsible for communication with other systems (like ERP). But in the Flow 6.15 version, we specifically improved one connector: the Flow Environment Connector. This connector allows the Flow application to access Flow Server’s configuration and also get some operational information from the server (such as application users, and their roles, but also information about the running workflows).
In the Flow 6.15 version, this Flow Environment Connector has been optimized. It now uses a more streamlined way of communicating with the internal Flow Server database, which has a tremendous impact on the runtime efficiency.
Below we present the same sequence of Flow Environment Connector calls, executed in Flow 6.14 and 6.15 versions.
Example Execution for Flow 6.14
Example Execution for Flow 6.15
FLOW SCRIPT IMPROVEMENTS
The runtime efficiency improvements don’t end with machine steps execution. The Flow 6.15 version also expands the potential of our internal programming language called “Flow Script”. With the Flow script, customers can embed more complicated logic into their workflow applications. It is usually used to manipulate sets of data that have been retrieved from external systems or databases.
The new Flow Script allows developers to use “Inner joins” to connect 2 data sources when querying them. Previously, when the application had to compare 2 data sets, the merging and linking data was done in a manual “loop”. The loop was processing each row (row by row) from a first dataset , and for each row the script was linking the data with the other dataset.
Flow script explanation – Old style of quering 2 datasets – with a loop
In the latest Flow 6.15 version, Flow Script offers “INNER JOIN” statement that works similarly to what we know from SQL: It automatically joins 2 datasets by specified “keys” , this is done on a server-side and performed as one optimized operation.
Flow script in 6.15 – Outer Join helps connect 2 datasets in 1 operation
The benefit doesn’t only affect the development phase, where – instead of many lines of Flow Script code, you achieve the same with just a single line of code.
The true benefit is observed in the runtime performance because joining 2 datasets no longer requires parsing Flow Script lines and jumping between Flow Script instructions and data processing operations.
To show, how meaningful the results might be, we executed the following tests:
Flow script performance improvement results due to the new INNER JOIN statement (test data)
IMPROVEMENT OF FLOW CLIENTS
The changes presented above implemented on the server side have obviously a visible impact on the end-to-end performance noticeable by the end users when they use Flow applications.
But didn’t end with these changes. In parallel to the Flow Server improvements, we also improved Flow Clients efficiency. We have made a technical change to the Flow Client improving the way the Flow Client handles data before it starts creating the actual controls.
The controls where this improvement will be greatly visible, are the Grid and the Calendar. Of course – the more complicated the grid view (table) will be on the user interface, and the more data will it have to present, the more this efficiency improvement will be visible. Our tests show, that in some cases the load time of the user step using such Grids can be reduced by 50%!
PERFORMANCE IMPROVEMENTS IN THE DEVELOPMENT PHASE
IMPROVED WAY OF EXCHANGING DATA BETWEEN FLOW SERVER AND FLOW STUDIO
As we mentioned earlier, the positive impact on the performance that comes with the Flow 6.15 version doesn’t end in a runtime. Novacura Flow developers who use our designer – Flow Studio – will also benefit from the latest version.
In Novacura Flow 6.15, we radically optimized the way Flow Studio communicates with the Flow Server. The Server offers now more granular API methods, allowing Flow Studio to read and write information in portions. To not make it too complicated – in the past, Flow Studio had to download a whole hierarchy of objects (workflows, sub-workflows, workflow steps, versions etc.), while in the Flow 6.15 version, It can only refresh a portion of information, necessary at a particular time. The same more fragmented API methods are offered for uploading information from Flow Studio back to the server.
A positive impact of these changes will be especially visible when operating with very complex workflows that use sub-workflows and have a lot of dependencies.
To show some tangible numbers, we tested this new version in the real environment connected to IFS Applications 10. We created a very complicated business case – where the Novacura Flow application must create a whole structure of projects and subprojects in IFS. The workflow has to touch very many ERP objects: main project, sub-projects in many subsidiary companies, assigns people to projects, sets their roles, and more! To perform all such operations, the Project wizard workflow uses a large hierarchy of sub-workflows doing particular things. But this constellation is complex and heavy.
We measured the time of publishing the entire “Project wizard” workflow hierarchy from Flow Studio to Flow Server. As you can see on the chart below, in that complicated case, Flow 6.15 offered 40x better efficiency in publishing workflows!
Measured results of a heavy Project Wizard publishing:
10 minutes for Flow 6.14, 15 seconds for Flow 6.15
LOADING THE LIST OF WORKFLOWS IN FLOW STUDIO
One of the elements that have been specifically improved is loading and refreshing the list of Flow applications (workflows) in Flow Studio. Previously, Flow Studio was pre-loading all workflows with all their versions whenever the user refreshed applications navigator (tree of all applications and folders).
In the current version, Flow Studio only reads the latest versions of applications, and other versions are examined when a particular application (workflow) is opened by the user for editing.
This might have a significant impact on the development efficiency, especially for those customers, who use many applications and who constantly improve them by producing new versions.
Below we prepared 2 heavy test examples that illustrate the difference in using Flow 6.15 versus previous versions.
Opening of a complex applications hierarchy in Flow 6.14 (up) vs 6.15 (below)
SUMMARY
Using the latest version of our product is always a good idea. The new version always brings a lot of new features, opens new capabilities, improves stability and user experience. But our latest version – 6.15 – brings also something more: a significant performance improvement!
While the new features and capabilities might not be useful for all our customers operating in various industries, we strongly believe, that the efficiency of the application is important for all businesses, in all industries, and in all countries.
We strongly recommend you migrate to the newest Flow 6.15 version.
Learn more: get to know also the functional capabilities delivered together with the 6.15 version – read the blog here: https://www.novacura.com/6-15-release/