Releases: moqui/moqui-framework
Moqui Framework 3.0.0
Release 3.0.0 - 31 May 2022
Moqui Framework 3.0.0 is a major new feature and bug fix release with some changes that are not backward compatible.
Java 11 is now the minimum Java version required. For development and deployment make sure Java 11 is installed
(such as openjdk-11-jdk or adoptopenjdk-11-openj9 on Linux), active (on Linux use 'sudo update-alternatives --config java'),
and that JAVA_HOME is set to the Java 11 JDK install path (for openjdk-11-jdk on Linux: /usr/lib/jvm/java-11-openjdk-amd64).
In this release the old moqui-elasticsearch component with embedded ElasticSearch is no longer supported. Instead, the new
ElasticFacade is included in the framework as a client to an external OpenSearch or ElasticSearch instance which can be
installed in runtime/opensearch or runtime/elasticsearch and automatically started/stopped in a separate process by the
MoquiStart class (executable WAR, not when WAR file dropped into Servlet container).
For search the recommended versions for this release are OpenSearch 1.3.1 (https://opensearch.org/) or ElasticSearch 7.10.2.
For ElasticSearch this is the last version released under the Apache 2.0 license).
Now that JavaScript/CSS minify and certain other issues with tools have been resolved, Gradle 7+ is supported.
This is a brief summary of the changes since the last release, for a complete list see the commit log:
Non Backward Compatible Changes
- Java 11 is now required, updated from Java 8
- Updated Spock to 2.1 and with that update now using JUnit Platform and JUnit 5 (Jupiter); with this update old JUnit 4
test annotations and such are supported, but JUnit 4 TestSuite implementations need to be updated to use the new
JUnit Platform and Jupiter annotations - Library updates have been done that conflict with ElasticSearch making it impossible to run embedded
- XMLRPC support had been partly removed years ago, is now completely removed
- CUPS4J library no longer included in moqui-framework, use the moqui-cups component to add this functionality
- Network printing services (org.moqui.impl.PrintServices) are now mostly placeholders that return error messages if used, CUPS4J
library and services that depend on it are now in the moqui-cups tool component - H2 has non-backward compatible changes, including VALUE now being a reserved word; the Moqui Conf XML file now supports
per-database entity and field name substitution to handle this and similar future issues; the main issue this cannot
solve is with older H2 database files that have columns named VALUE, these may need to be changes to THE_VALUE using
an older version of H2 before updating (this is less common as H2 databases are not generally retained long-term)
New Features
- Recommended Gradle version is 7+ with updates to support the latest versions of Gradle
- Updated Jetty to version 10 (which requires Java 11 or later)
- MFA support for login and update password in screens and REST API with factors including authc code by email and SMS,
TOTP code (via authenticator app), backup codes; can set a flag on UserGroup to require second factor for all users in
the group, and if any user has any additional factor enable then a second factor will be required - Various security updates including vulnerabilities in 3rd party libraries (including Log4j, Jackson, Shiro, Jetty),
and some in Moqui itself including XSS vulnerabilities in certain error cases and other framework generated
messages/responses based on testing with OWASP Zap and two commercial third party reviews (done by larger Moqui users) - Optimization for startup-add-missing to get meta data for all tables and columns instead of per entity for much faster startup
when enabled; default for runtime-add-missing is now 'false' and startup-add-missing is now 'true' for all DBs including H2 - View Entity find improvements
- correlated sub-select using SQL LATERAL (mysql8, postgres, db2) or APPLY (mssql and oracle; not yet implemented)
- extend the member-entity.@sub-select attribute with non-lateral option where not wanted, is used by default as is best for how
sub-select is commonly used in view entities - entity find SQL improvements for view entities where a member entity links to another member-entity with a function on a join field
- support entity-condition in view-entity used as a sub-select, was being ignored before
- Improvements to DataDocument generation for a DataFeed to handle very large database tables to feed to ES or elsewhere,
including chunking and excluding service parameters from the per ExecutionContext instance service call history - DataFeed and DataDocument support for manual delete of documents and automatic delete on primary entity record delete
- Scheduled screen render to send regular reports to users by email (simple email with CSV or XSLT attachment) using
saved finds on any form-list based screen - For entity field encryption default to PBEWithHmacSHA256AndAES_128 instead of PBEWithMD5AndDES, and add configuration
options for old field encrypt settings (algo, key, etc) to support changing settings, with a service to re-encrypt all
encrypted fields on all records, or can re-encrypt only when data is touched (as long as all old settings are retained,
the framework will attempt decrypt with each) - Groovy Shell screen added to the Tools app (with special permission), an interactive Groovy Console for testing in
various environments and for fixing certain production issues
See the complete release notes at:
https://github.com/moqui/moqui-framework/blob/master/ReleaseNotes.md
The MoquiDemo-3.0.0.zip
file is a source distribution for the projects in Moqui Ecosystem included on the demo server (the 'demo' component set in addons.xml): moqui-framework, moqui-runtime, moqui-camel, moqui-elasticsearch, moqui-fop, moqui-poi, example, mantle-udm, mantle-usl, SimpleScreens, HiveMind, PopCommerce, and PopRestStore.
The MoquiDemo-3.0.0.war
file is a pre-built all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org/). You can also run it with java -jar MoquiDemo-3.0.0.war
but be aware that this will use a temporary directory for database files, etc that will be deleted on exit.
There is a Docker image similar to the WAR file available here:
Moqui Framework 2.1.3
Moqui Framework 2.1.3 is a patch level new feature and bug fix release.
There are only minor changes and fixes in this release. For a complete list of changes see:
This is the last release where the moqui-elasticsearch component for embedded ElasticSearch will be supported. It is being replaced by the new ElasticFacade included in this release.
New Features
- Java 11 now supported with some additional libraries (like javax.activation) included by default; some code changes to address deprecations in the Java 11 API but more needed to resolve all for better future compatibility (in other words expect deprecation warnings when building with Java 11)
- Built-in ElasticSearch client in the new ElasticFacade that uses pooled HTTP connections with the Moqui RestClient for the ElasticSearch JSON REST API; this is most easily used with Groovy where you can use the inline Map and List syntax to build what becomes the JSON body for search and other requests; after this release it will replace the old moqui-elasticsearch component, now included in the framework because the large ES jar files are no longer required
- RestClient improvements to support an externally managed RequestFactory to maintain a HttpClient across requests for connection pooling, managing cookies, etc
- Support for binary render modes for screen with new ScreenWidgetRender interface and screen-facade.screen-output element in the Moqui Conf XML file; this was initially implemented to support an xlsx render mode implemented in the new moqui-poi tool component
- Screen rendering to XLSX file with one sheet to form-list enabled with the form-list.@show-xlsx-button attribute, the XLS button will only show if the moqui-poi tool component is in place
- Support for binary rendered screen attachments to emails, and reusable emailScreenAsync transition and EmailScreenSection to easily add a form to screens to send the screen render as an attachment to an outgoing email, rendered in the background
- WikiServices to upload and delete attachments, and delete wiki pages; improvements to clone wiki page
See the complete release notes at:
https://github.com/moqui/moqui-framework/blob/master/ReleaseNotes.md
The MoquiDemo-2.1.3.zip file is a source distribution for the projects in Moqui Ecosystem included on the demo server (the 'demo' component set in addons.xml): moqui-framework, moqui-runtime, moqui-camel, moqui-elasticsearch, moqui-fop, moqui-poi, example, mantle-udm, mantle-usl, SimpleScreens, HiveMind, PopCommerce, and PopRestStore.
The MoquiDemo-2.1.3.war file is a pre-built all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org). You can also run it with 'java -jar MoquiDemo-2.1.3.war' but be aware that this will use a temporary directory for database files, etc that will be deleted on exit.
There is a Docker image similar to the WAR file available here:
Moqui Framework 2.1.2
Moqui Framework 2.1.2 is a patch level new feature and bug fix release.
There are only minor changes and fixes in this release. For a complete list of changes see:
See the complete release notes at:
https://github.com/moqui/moqui-framework/blob/master/ReleaseNotes.md\
The MoquiDemo-2.1.2.zip file is a source distribution for the projects in Moqui Ecosystem included on the demo server (the 'demo' component set in addons.xml): moqui-framework, moqui-runtime, moqui-camel, moqui-elasticsearch, moqui-kie, moqui-fop, example, mantle-udm, mantle-usl, mantle-edi, SimpleScreens, HiveMind, PopCommerce, and PopRestStore which is new in this release series.
The MoquiDemo-2.1.2.war file is a prebuilt all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org). You can also run it with 'java -jar MoquiDemo-2.1.2.war' but be aware that this will use a temporary directory for database files, etc that will be deleted on exit.
There is a Docker image similar to the WAR file available here:
Moqui Framework 2.1.1
Moqui Framework 2.1.1 is a patch level new feature and bug fix release.
While this release has new features maybe significant enough to warrant a 2.2.0 version bump it is mostly refinements and improvements to existing functionality or to address design limitations and generally make things easier and cleaner.
There are various bug fixes and security improvements in this release. There are no known backward compatibility issues since the last release but there are minor cases where default behavior has changed (see detailed notes).
See the complete release notes at:
https://github.com/moqui/moqui-framework/blob/master/ReleaseNotes.md
The MoquiDemo-2.1.1.zip file is a source distribution for the projects in Moqui Ecosystem included on the demo server (the 'demo' component set in addons.xml): moqui-framework, moqui-runtime, moqui-camel, moqui-elasticsearch, moqui-kie, moqui-fop, example, mantle-udm, mantle-usl, mantle-edi, SimpleScreens, HiveMind, and PopCommerce.
The MoquiDemo-2.1.1.war file is a prebuilt all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org). You can also run it with 'java -jar MoquiDemo-2.1.1.war' but be aware that this will use a temporary directory for database files, etc that will be deleted on exit.
There is a Docker image similar to the WAR file available here:
Moqui Framework 2.1.0
Moqui Framework 2.1.0 is a minor new feature and bug fix release.
Most of the effort in the Moqui Ecosystem since the last release has been on the business artifact and application levels. Most of the framework changes have been for improved user interfaces but there have also been various lower level refinements and enhancements.
This release has a few bug fixes from the 2.0.0 release and has new features like DbResource and WikiPage version management, a simple tool for ETL, DataDocument based dynamic view entities, and various XML Screen and Form widget options and usability improvements. This release was originally planned to be a patch level release primarily for bug fixes but very soon after the 2.0.0 release work start on the Vue based client rendering (SPA) functionality and various other new features that due to business deals progressed quickly.
The default moqui-runtime now has support for hybrid static/dynamic XML Screen rendering based on Vue JS. There are various changes for better server side handling but most changes are in moqui-runtime. See the moqui-runtime release notes for more details. Some of these changes may be useful for other client rendering purposes, ie for other client side tools and frameworks.
See the complete release notes at:
https://github.com/moqui/moqui-framework/blob/master/ReleaseNotes.md
The MoquiDemo-2.1.0.zip file is a source distribution for the projects in Moqui Ecosystem included on the demo server (the 'demo' component set in addons.xml): moqui-framework, moqui-runtime, moqui-camel, moqui-elasticsearch, moqui-kie, moqui-fop, example, mantle-udm, mantle-usl, mantle-edi, SimpleScreens, HiveMind, and PopCommerce.
The MoquiDemo-2.1.0.war file is a prebuilt all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org). You can also run it with 'java -jar MoquiDemo-2.1.0.war' but be aware that this will use a temporary directory for database files, etc that will be deleted on exit.
There is a Docker image similar to the WAR file available here:
Moqui Framework 2.0.0
Moqui Framework 2.0.0 is a major new feature and bug fix release, with various non backward compatible API and other changes.
This is the first release since 1.0.0 with significant and non backwards compatible changes to the framework API. Various deprecated methods have been removed. The Cache Facade now uses the standard javax.cache interfaces and the Service Facade now uses standard java.util.concurrent interfaces for async and scheduled services. Ehcache and Quartz Scheduler have been replaced by direct, efficient interfaces implementations.
This release includes significant improvements in configuration and with the new ToolFactory functionality is more modular with more internals exposed through interfaces and extendable through components. Larger and less universally used tool are now in separate components including Apache Camel, Apache FOP, ElasticSearch, JBoss KIE and Drools, and OrientDB.
Multi-server instances are far better supported by using Hazelcast for distributed entity cache invalidation, notifications, caching, background service execution, and for web session replication. The moqui-hazelcast component is pre-configured to enable all of this functionality in its MoquiConf.xml file. To use add the component and add a hazelcast.xml file to the classpath with settings for your cluster (auto-discover details, etc).
Moqui now scales up better with performance improvements, concurrency fixes, and Hazelcast support (through interfaces other distributed system libraries like Apache Ignite could also be used). Moqui also now scales down better with improved memory efficiency and through more modular tools much smaller runtime footprints are possible.
The multi-tenant functionality has been removed and replaced with the multi-instance approach. There is now a Dockerfile included with the recommended approach to run Moqui in Docker containers and Docker Compose files for various scenarios including an automatic reverse proxy using nginx-proxy. There are now service interfaces and screens in the System application for managing multiple Moqui instances from a master instance. Instances with their own database can be automatically provisioned using configurable services, with initial support for Docker containers and MySQL databases. Provisioning services will be added over time to support other instance hosts and databases, and you can write your own for whatever infrastructure you prefer to use.
To support WebSocket a more recent Servlet API the embedded servlet container is now Jetty 9 instead of Winstone. When running behind a proxy such as nginx or httpd running in the embedded mode (executable WAR file) is now adequate for production use.
If you are upgrading from an earlier version of Moqui Framework please read all notes about Non Backward Compatible Changes. Code, configuration, and database meta data changes may be necessary depending on which features of the framework you are using.
In this version Moqui Framework starts and runs faster, uses less memory, is more flexible, configuration is easier, and there are new and better ways to deploy and manage multiple instances. A decent machine ($1800 USD Linux workstation, i7-6800K 6 core CPU) generated around 350 screens per second with an average response time under 200ms. This was running Moqui and MySQL on the same machine with a JMeter script running on a separate machine doing a 23 step order to ship/bill process that included 2 reports (one MySQL based, one ElasticSearch based) and all the GL posting, etc. The load simulated entering and shipping (by internal users) around 1000 orders/minute which would support thousands of concurrent internal or ecommerce users. On larger server hardware and with some lower level tuning (this was on stock/default Linux, Java 8, and MySQL 5.7 settings) a single machine could handle significantly more traffic.
With the latest framework code and the new Hazelcast plugin Moqui supports high performance clusters to handle massive loads. The most significant limit is now database performance as we need a transactional SQL database for this sort of business process (with locking on inventory reservations and issuances, GL posting, etc as currently implemented in Mantle USL).
Enjoy!
See the complete release notes at:
https://github.com/moqui/moqui-framework/blob/master/ReleaseNotes.md
The MoquiDemo-2.0.0.zip file is a source distribution for the projects in Moqui Ecosystem included on the demo server (the 'demo' component set in addons.xml): moqui-framework, moqui-runtime, moqui-camel, moqui-elasticsearch, moqui-kie, moqui-fop, example, mantle-udm, mantle-usl, mantle-edi, SimpleScreens, HiveMind, and PopCommerce.
The MoquiDemo-2.0.0.war file is a prebuilt all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org) with small changes to the MoquiProductionConf.xml file for HTTPS settings.
Moqui Framework 2.0.0 RC1
This is a release candidate for public review. See the release notes at:
https://github.com/moqui/moqui-framework/blob/master/ReleaseNotes.md
The MoquiDemo-2.0.0-rc1.zip file is a source distribution for the projects in Moqui Ecosystem included on the demo server (the 'demo' component set in addons.xml): moqui-framework, moqui-runtime, moqui-camel, moqui-elasticsearch, moqui-kie, moqui-fop, example, mantle-udm, mantle-usl, mantle-edi, SimpleScreens, HiveMind, and PopCommerce.
The MoquiEcosystem-2.0.0-rc1.war file is a prebuilt all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org) with small changes to the MoquiProductionConf.xml file for HTTPS settings.
Moqui Framework 1.6.2
Moqui Framework 1.6.2 is a minor new feature and bug fix release.
This release is all about performance improvements, bug fixes, library
updates and cleanups. There are a number of minor new features like better
multi-tenant handling (and security), optionally loading data on start if
the DB is empty, more flexible handling of runtime Moqui Conf XML location,
database support and transaction management, and so on.
For full release notes see:
https://github.com/moqui/moqui/blob/master/ReleaseNotes.txt
The MoquiEcosystem-1.6.2.zip file is a source distribution for all projects in the Moqui Ecosystem: moqui-framework, moqui-runtime, example, mantle-udm, mantle-usl, mantle-edi, AuthorizeDotNet, SimpleScreens, HiveMind, and PopCommerce.
The MoquiEcosystem-1.6.2.war file is a prebuilt all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org) with small changes to the MoquiProductionConf.xml file for HTTPS settings.
Moqui Framework 1.6.1
Moqui Framework 1.6.1 is a minor new feature and bug fix release.
This is the first release after the repository reorganization in Moqui Ecosystem. The runtime directory is now in a separate repository. The framework build now gets JAR files from Bintray JCenter instead of having them in the framework/lib directory. Overall the result is a small foundation with additional libraries, components, etc added as needed using Gradle tasks.
Build Changes
- Gradle tasks to help handle runtime directory in a separate repository from Moqui Framework
- Added component management features as Gradle tasks
- Components available configured in addons.xml
- Repositories components come from configured in addons.xml
- Get component from current or release archive (getCurrent, getRelease)
- Get component from git repositories (getGit)
- When getting a component, automatically gets all components it depends on (must be configured in addons.xml so it knows where to get them)
- Do a git pull for moqui, runtime, and all components
- Most JAR files removed, framework build now uses Bintray JCenter
- JAR files are downloaded as needed on build
- For convenience in IDEs to copy JAR files to the framework/dependencies directory use: gradle framework:copyDependencies; note that this is not necessary in IntelliJ IDEA (will import dependencies when creating a new project based on the gradle files, use the refresh button in the Gradle tool window to update after updating moqui)
- If your component builds source or runs Spock tests changes will be needed, see the runtime/base-component/example/build.gradle file
For full release notes see:
https://github.com/moqui/moqui/blob/master/ReleaseNotes.txt
The MoquiEcosystem-1.6.1.zip file is a source distribution for all projects in the Moqui Ecosystem: moqui-framework, moqui-runtime, mantle-udm, mantle-usl, mantle-edi, AuthorizeDotNet, SimpleScreens, HiveMind, and PopCommerce.
The MoquiEcosystem-1.6.1.war file is a prebuilt all-in-one distribution with demo data loaded and tests run. To try it out just drop it into your preferred Servlet container (Tomcat, Jetty, etc; on AWS ElasticBeanstalk, etc). This is the file deployed on the Moqui Demo server (http://demo.moqui.org) with small changes to the MoquiProductionConf.xml file for HTTPS settings.