Looking for the latest version? Download MoquiEcosystem-1.6.0.zip (91.5 MB)
Name Modified Size Downloads / Week Status
Totals: 15 Items   133.3 kB 1
v1.6.0 2016-01-18 44 weekly downloads
v1.5.3 2015-09-12 11 weekly downloads
release-1.5.2 2015-05-03 22 weekly downloads
release-1.5.0 2015-03-07 11 weekly downloads
release-1.4.1 2014-08-02 33 weekly downloads
release-1.4.0 2014-03-22 22 weekly downloads
release-1.3.2 2013-12-29 11 weekly downloads
release-1.3.1 2013-10-21 33 weekly downloads
release-1.3.0 2013-07-28 11 weekly downloads
release-1.2.0 2012-12-30 11 weekly downloads
release-1.1.1 2012-09-22 11 weekly downloads
release-1.1.0 2012-07-23 11 weekly downloads
release-1.0.1 2012-01-01 11 weekly downloads
release-1.0.0 2011-11-21 11 weekly downloads
README 2016-01-17 133.3 kB 11 weekly downloads
Moqui Framework Release Notes =========================================================================== Release 1.6.0 - 17 Jan 2016 =========================================================================== Moqui Framework 1.6.0 is a major new feature and bug fix release. There are over 575 commits since the last release and an increase in size from around 67k lines to around 74k lines of text (primarily Java, Groovy, XML, XSD, and FTL files; not including files from other projects). The System and Tools apps have 57 screens and 124 forms. Moqui has 123 entities, 23 view entities, and 97 services. The new Moqui Tools REST API has 85 services. This uses the new Service REST tool which allows specifying resource and id paths with services and entity operations associated with HTTP request methods, one of the major new features in this release. Along with this feature there is generation of Swagger definitions and Swagger UI is included with links to view the various defined APIs in the Tools app. The REST API also uses the new feature of explicitly defined 'master' entities which are based on relationships to detail and join entities to produce and consume JSON (or nested maps/lists), easily combining related records into a single document for query or update. Another major new feature is the ScreenTest interface and an implementation that includes stubs for the WebFacade and various Java Servlet interfaces to simulate web requests without a Servlet container running. There are tests for the System and Tools apps and the Tools REST API that do 70 renders. These tests are run along with other Spock tests in gradle test runs, and for the projects in the Moqui Ecosystem all are run in the Travis CI automated builds. Other features include a REST Client tool, various email send and receive improvements, a session token for CSRF prevention, password reset uses a separate temporary password to avoid disabling accounts, a login/api key issued like a temporary username/password combination, component definition files with dependencies to change load order, and wiki entities and services based on the ResourceFacade (originally in HiveMind). This is the 6th anniversary release for Moqui Framework (the project was started 3 Feb 2010). These plus dozens of smaller features and features from past releases make Moqui Framework the best option, open source or commercial, for building efficient, large scale, secure, and integrated enterprise applications with minimal code. Non Backward Compatible Changes - The Screen Facade and ScreenRender interfaces are now in the org.moqui.screen package (moved from org.moqui.context); most apps do not use these explicitly, but any code that does needs to be changed New Features - Library Updates - Apache Camel to 2.16.1 - Apache Commons Validator to 1.5.0 - Apache Derby to - Apache HttpClient to 4.5.1 - Apache HttpCore to 4.4.4 - Apache Jackrabbit to 2.11.2 - Apache Log4J to 2.5 - Apache Lucene to 5.3.1 - Bitronix 3.0.0-SNAPSHOT from latest source (13 Jan 2016) - Ehcache to 2.10.1 - ElasticSearch to 2.1.1 - Groovy to 2.4.5 - H2 to 1.4.190 - JNA to 4.2.1 - JavaMail to 1.5.5 - KIE, Drools to 6.3.0.Final - Liquibase to 3.4.2 - OrientDB to 2.1.4 - Quartz Scheduler to 2.2.2 - SLF4J to 1.7.13 - Screen and Form Features - Added ScreenTest interface and implementation; easy tool for testing screens with no Servlet container in place; this uses test stubs for WebFacade, ServletContext, HttpSession, HttpServletRequest, and HttpServletResponse - Added screen and transition render tests for the System and Tools apps - All XML Form field widgets now support expansion in tooltip string - When a form-single is rendered the form map is added to a pushed (isolated) context and popped after; field values can now be referenced directly in expressions in @condition, @text, etc attributes - Transition responses of type screen-last and screen-last-noparam now use the screen history last if no screen is saved - Integration Features - New Service REST API tool - define REST resources and methods in XML files (see rest-api-1.6.xsd) - map methods under resources to service calls and entity operations - REST resource/id visits are pushed as artifacts so authz may be granted for parts or all of a REST API by the API instead of by underlying service or entity - see example Service REST API in example.rest.xml - call REST methods through the /rest/s1 transition - see example client calls in the rest.xml screen definition file - get Swagger API definition from /rest/service.swagger - get RAML API definition from /rest/service.raml - Added Swagger UI 2.1.4, with links from Tools app - browse REST API details from generated Swagger - call REST API services - use new Login Key functionality with api_key for authentication - New RestClient API, available through ec.service.rest(), with various options for doing HTTP requests and parsing response - Added json-schema for Entity REST API: for all entities get /rest/entity.json, for a single entity get /rest/entity.json/${name}.json - Added RAML API definition for Entity REST API at /rest/entity.raml - Added Swagger API definition for Entity REST API at /rest/entity.swagger - Entity REST API supports master definitions through /rest/m1/${entity}/${master} or /rest/v1/${entity}?master=${master}; see comments in the rest.xml screen definition XML file for examples - Added RAML API definition for Entity Master REST API at /rest/master.raml - Added Swagger definition for Entity Master REST at /rest/master.swagger - SystemMessage entity has additional fields to identify messages - Changed receive#SystemMessage to an interface, now use receive#IncomingSystemMessage for remote calls, will call the SystemMessageType.receiveServiceName service if specified to save message - Added EDI handler (parser and generator), used in Mantle for X12 messages - Moqui Tools REST API - Uses new Service REST API feature - See entity op and service mappings in the moqui.rest.xml file - Has REST services for artifacts, basic (enums, geos, statuses, uoms), data documents, email, entity sync, network print, system messages, and users - Has 61 resources with 85 methods (services), 96 definitions - Use Moqui feature to generate Swagger file and view in Swagger UI - see https://github.com/swagger-api/swagger-ui - use a URL like http://localhost:8080/rest/service.swagger/moqui - Email Features - Various improvements to email message polling (calling EM-ECA rules) including support for Java System Properties pass through and fix for password pass through for IMAPS/etc - Email ECA structure significantly improved, for details see the org.moqui.EmailServices.process#EmailEca service interface - Improved sending EmailTemplate with support for reply to and bounce addresses from EmailTemplate and CC/BCC addresses from both EmailTemplate and service parameters - Security Features - Better protection against CSRF/XSRF attaches with a session token as per https://www.owasp.org/index.php/CSRF_Prevention_Cheat_Sheet; - when enabled (webapp.@require-session-token in Moqui Conf XML file not false) a moquiSessionToken parameter must be passed - applies to all transition requests with actions by all methods except, GET after the first request in a session - for REST/etc API calls with authentication for each call is ignored - can be disabled per screen transition with @require-session-token=false - Password reset now sets a reset password separate from the current password that may only be used to change the password; current password stays valid for password change or login (if email-require-change=false) - Added Login Key functionality - secure temporary keys associated with a UserAccount as an alternate way to authenticate - expire time configured in user-facade.login-key.@expire-hours in Moqui Conf XML, defaults to 144 hours (6 days) - keys generated using secure random and saved in secure hashed form (default SHA-256) so can only be retrieved on create (see UserFacade.getLoginKey()) - can retrieve with a request to /rest/api_key (see rest.xml comments) - pass key in api_key or login_key request header or secure parameter (not in path or query string) - Entity Features - Added relationship.@mutable attribute, defaults to false for type one* and to true for type many relationships; used in store through sub-records in the entity auto services (used in data load, REST, etc) - Added field.@create-only attribute, defaults to entity.@create-only value, create only now checked at field level on update (only at entity level on delete) - New concept of explicit master entity definitions with details made up of related entities; definitions go in new entity.master element; there are new methods in EntityValue, EntityList, and EntityFind to get value Maps for the master record plus all details - EntityDataLoader has new options for loading CSV files to specify the entity or service name and field list through the API instead of in records 1 and 2 of the CSV file - EntityDataLoader has new defaultValues Map option for default values to be used by field/parameter name for entity stores and service calls - EntityListImpl now uses an ArrayList internally and filter* methods have been optimized for this and faster by and methods; a few condition objects have been similarly optimized - Added beta/experimental entity filter feature to filter queries based on authz configuration; automatically adds query conditions; see the ArtifactAuthzFilter and EntityFilter entities in SecurityEntities.xml - Components may now have a component.xml with a single component element, the same component element that is used in the Moqui Conf XML file; if a name is specified it will override the directory name; added a depends-on element which modifies the component order at runtime - Component directories (referred to by component-list.component-dir in the Moqui Conf XML file) now supports a components.xml file (must use that filename) to specify which components to load and in which order - Localized strings may now contain a double hash (##) to specify context where a single word in the default language (ie English) is ambiguous; at runtime if no matching LocalizedMessage is found the text before the double hash will be used to lookup records or as the default value - Service to lookup IP geo data (from freegeoip.net), called by default on login (can be disabled with server-stats.@visit-ip-info-on-login) - Transaction Cache better supports creates/updates/deletes within a transaction; instead of consolidating all changes into one it keeps a list of changes and runs in order to avoid issues with foreign keys, etc - Added entities and services for wiki spaces and pages, originally from HiveMind, based on ResourceFacade resources - Example entities, services now have a consistent package (moqui.entity) - Added MessageFacade.pushErrors() and popErrors() methods for code that should ignore previous errors (especially service calls) - Added ServiceCallSync.ignorePreviousError() method to run a service even if previous code added errors in MessageFacade Bug Fixes - Fixed issue in the Tools EntityDetail screen where entities with many dependents (like Enumeration, Uom, etc) caused an out of memory error; GitHub issue #149 - Fixed XML Actions FTL error for entity-find.@having-econditions - Fixed issue where ResourceFacadeImpl.setInContext localized values when expanding; caused problems with set elements in widget-template-include - Fixed issue with multiple render-mode elements where there is no text.@type attribute; GitHub issue #158 - Fixed issue with check/set defaults on entity value update where fields not specified were set back to default value - Fixed issue where service semaphores were not cleared when services threw an exception or returned an error; GitHub issue #213 =========================================================================== Release 1.5.3 - 11 Sep 2015 =========================================================================== Moqui Framework 1.5.3 is a minor new feature and bug fix release. This release includes various smaller improvements and bug fixes, and a number of library updates. There are no significant new features but many smaller improvements and cleanups. There are around 400 commits since the last release and an increase in size from around 65k lines to around 67k lines of text (primarily Java, Groovy, XML, XSD, and FTL files; not including files from other projects). The System and Tools apps have 56 screens and 121 forms. Moqui has 127 entities and 70 services. New Features: - Library Updates - Apache Camel to 2.15.3 - Apache Commons Codec to 1.10 - Apache Commons CSV to 1.2 - Apache Commons Email to 1.4 - Apache Commons File Upload to 1.3.1 - Apache Commons Validator to 1.4.1 - Apache FOP to 2.0 (with Batik 1.8 and XML Graphics Commons 2.0.1) - Apache HTTP Core to 4.4.3 - Apache HTTP Client to 4.5 - Apache Jackrabbit to 2.10.1 - Apache Shiro to 1.2.4 - Drools and KIE to 6.2.0.Final - Elasticsearch to 1.7.1 - Ehcache to 2.10.0 - Freemarker to 2.3.23 - Groovy to 2.4.4 - Liquibase to 3.4.1 - OrientDB to 2.1.2 - OWASP ESAPI to 2.1.0 (with AntiSamy 1.5.3) - SLF4J to 1.7.12 - other misc updates - Added Travis CI configuration for continuous integration testing, now setup for the moqui/moqui project with a badge reporting status - Changed form-list macros to use HTML table elements instead of div with table styles - Various localization improvements - ArtifactHit and ArtifactHitBin timing fields are now number-decimal instead of number-integer to record sub-millisecond timing; internal changes for more precise timing, also calc of standard deviation, etc; existing databases may need column type changes - Added link.@entity-name and related attributes for convenience as an alternative to display-entity or link with row-actions lookup - Added link.@tooltip attribute for tooltips on any link - The Auto Screens in the Tools app now have a link to get screen/form XML for the various forms (find, CrUD) for the current entity; handy as a starting point when creating a bunch of new screens for various entities - Entity Data Loader class, command line, and DataImport screen now support a list of component names to load data from when loading by data type - The entity.@create-only attribute now only checked if fields are changed - If service-call.@ignore-error=true now logs and clears error messages - Added support for a 'default' locale value for LocalizedMessage and LocalizedEntityField as a fallback if no locale or base locale record is found; used to better support placeholder message keys meant to always be localized - Added @text-map attribute to link, label, and display for expanded fields in the @text attribute - Added shortened names for various methods in ResourceFacade (template, script, expression, condition, expand) and localize in L10nFacade - Added link.@encode attribute like that on other elements, encodes link text by default (avoid HTML injection based attacks) - Added image.@condition, @style, and @parameter-map attributes and parameter sub-element like those on label, etc - Added screen history drop-down to navbar, WebFacade code to keep history - Screen menu names are now expanded (put data prep in pre-actions) - Added screen.@menu-image and @menu-image-type attributes; when rendering a screen gets the last menu-image in the screen render path (available from ScreenUrlInfo) Bug Fixes: - Fixed issues with adding missing columns to database - Fixed issues where EntityValue objects from cache were mutable - Fixed issue where requests to different hostnames for the same server resulted in redirecting to the first hostname used in a request - The Gradle loadSave and reloadSave tasks now handle H2 files as well - The EXAMPLE1 tenant is now setup for H2 instead of Derby, fixing issues with testing of tenant and related functionality - Fixed issue with form field options in certain cases where an EntityValue was pushed onto the context (which should never be done) - Fixed issue when a drop-down with dynamic-options depends on a field with a display or display-entity widget as the hidden input did not have the @id attribute needed to get the field's value - Fixed issue when alias-all is used with a member-entity that is a view-entity where all expanded aliases would be ignored in the outer view - Fixed issue where member-entities of a view-entity used as a member-entity and the fields of that view member-entity were aliased with an alias-all with a @prefix or other name not matching the field were trimmed because no matching field was in the fields to select - XML Actions ${iterate.@entry}_hasNext is now _has_next to be more consistent with section-iterate and others using this FTL inspired name - Fixed issue with select column names when doing a distinct query with upper cased order by fields, now adds function to select clause as well as order by clause (GitHub issue #146) =========================================================================== Release 1.5.2 - 2 May 2015 =========================================================================== Moqui Framework 1.5.2 is a minor new feature and bug fix release. The main improvement in this release is significantly better performance. Overall performance is about 3x faster, with various lower level entity and service operations around 10x faster. There are also various improvements to stability, especially in production under a load. Some of these are from better concurrency handling and other improvements in Moqui, others from updates to libraries including a newer version of Bitronix TM. The H2 database is now used by default instead of Derby. There is now a CUPS server integration using Cups4J including services to print, and services and screens for managing printers and print jobs. There are fixes for running Moqui on Microsoft Windows, and for using the OrientDB database through the Entity Facade. These were both supported in the past but were broken in recent versions of Moqui Framework. New Features: - Added H2 1.4.187, configuration for H2 Database - set as default embedded database instead of Derby - in default setup can be accessed remotely on port 9092 using a URI like jdbc:h2:tcp://localhost:9092/MoquiDEFAULT - H2 console available by default (see web.xml) at /h2 - Updated Atomikos to 4.0.0M4, Bitronix to 3.0.0-SNAPSHOT (built from source in GitHub repo), FreeMarker to 2.3.22, Groovy to 2.4.3 - Updated OrientDB to 2.0.8, tested and fixed a few issues - Updated Apache Commons Codec to 1.9, Apache Commons Logging to 1.2, Apache HttpClient and HttpCore to 4.4.1, JNA to 4.1.0 - Significant performance improvements based on profiling - a big part of this is using the Groovy @CompileStatic annotation for strict typing and direct method calls for improved performance in many frequently called parts of the framework - other approaches used in various places include better caching and local tracking of frequently used data and integer for loop iteration instead of using Iterator (or for in, for :) - overall the overhead of advanced features of the framework such as artifact authorization and hit counting are significantly reduced - entity, service, and screen operations are dramatically faster - observed common entity and service operations 3-8x faster, and screen rendering around 3x faster; with these updates some performance improvement is always possible but this gets pretty close to the limit - this effort involves over 3000 lines of code changes, nearly 10% of the roughly 35k lines of Java & Groovy code in the framework implementation - ScreenUrlInfo has been cleaned up with single use parts split into the UrlInstance class; these are currently internal implementation classes so this isn't an API change, but this is a non-backward compatible change and some code using the ScreenRenderImpl and ScreenUrlInfo may need to be updated similar to the changes in DefaultScreenMacros.html.ftl - Added section.@condition attribute that does the same thing as section.condition.expression but more concise - CUPS print server integration and print job management services and admin screens in the System app; can render XSL-FO screens to PDF/etc and print, print ResourceFacade resources, and direct print other documents - Various improvements to concurrency and load handling - Production mode artifact cache warming now does more so that initial page loads are much faster, and heavy loads from start are handled better Bug Fixes: - Fixed issue with XML Form display-entity where an EntityValue was pushed onto the context (bad in the first place, changed to push Map clone of EV) and if there was an error in the string expand it stayed - No longer create auto reverse relationships for relationships going to the same entity, results in multiple relationships with the same name and the reverse one can get picked up and isn't the one desired - Fixed issues with loading KIE modules and JAR files from components on Windows caused by issue in BaseResourceReference URI handling - Fixed issue with startup-add-missing=true and runtime-add-missing=false where entities in a group without an explicit datasource would never have their tables created - Fixed issues with OrientDB wrapper objects related to EntityFacade changes since 1.5.0 =========================================================================== Release 1.5.1 - 29 Mar 2015 =========================================================================== Moqui Framework 1.5.1 is a minor new feature and bug fix release. New features in this release include various enhancements to DataDocument functionality and the introduction of the search#CountBySource to be used for analytics and reporting using ElasticSearch as the data store. Note that as part of these changes the fields of the primary entity of a DataDocument are in the root map/object of the document instead of in a map/object names for the primary entity. There is also new functionality for handling JSON documents in more places including load/import and write/export of entity data and a generic entity REST interface following various RESTful best practices. See the rest.xml screen file for more details (comments there with examples, etc). New Features: - Updated Elasticsearch to 1.5.0, Apache Lucene to 4.10.4 - More consistent handling of empty in service, entity, and screen when we don't want the Groovy definition of empty (ie don't consider 0 numbers or false boolean to be empty) - Support for CharSequence in various places (context, entity, service, screen, etc) to handle not just String but also GString when it doesn't get converted and StringBuffer, StringBuilder, etc where convenient - Improved HTTP response code handling, now uses 401 only for authc/login failures, 403 (forbidden) for artifact authz failures, and 429 (too many requests) for tarpit failures - Entity auto services (create, update, and store) now support related records in Maps and Lists in the Map passed to the service call, following the same pattern used for incoming JSON documents (the same code is used for both) - Entity Facade - More consistent handling of is-null; support is-not-null, not-between - Document mappings (type definitions, etc) are now put automatically when a DataDocument indexed with ElasticSearch is first used (by index or search) with types for numbers, dates, etc needed for analytics and also not_analyzed set for all id* type entity fields - In DataDocument the fields on the primary entity are no longer in a Map/object but rather are in the root of the document, simpler and more consistent with the structure used elsewhere - Added EntityServices.search#CountBySource service to do analytics searches using ElasticSearch; there is a real-world example of the use of this service in Mantle for current and projected inventory data - Added @short-alias attribute for entity and relationship, can be used for any entity or relationship reference, but mainly meant for use in entity REST request URLs and other entity path operations - Implemented automatic entity REST interface that supports GET/find, POST/create, PUT/store, PATCH/update, and DELETE/delete operations; supports a variety of bulk operations and flexible find options including pagination and the various features of EntityFind.searchFormInputs() that are used for find forms in XML Screens; this is a RESTful API that follows various best practices and security is handled through artifact authorization and tarpits at the entity level; for examples see the comments in rest.xml - Improved relationship info (EntityDefinition.getRelationshipsInfo()) and dependent entity handling - Added EntityDetail screen in the Tools app with info about entity and related entities - EntityDataLoader and EntityDataWriter, along with the DataImport and DataExport screens in the Tools app, now support JSON files including embedded related (or other entity) records like the REST interface - EntityDataLoader for XML files also supports nested records; with the PK field inheritance from parent records this can significantly reduce redundancy in data load files and make them easier to read/maintain - EntityDataWriter for XML files now exports nested elements for dependent records using a similar pattern to that used for JSON out Bug Fixes: - Fixed issue with link.@dynamic-load-id attribute loading the result of the load() function instead of doing nothing but calling the load method; this caused issues in browsers like FireFox that render the result of a a.@href javascript: expression - Fixed issue with sparse screen paths (starting with a '//') where a high-level screen like the echopath screen with @allow-extra-path=true would be used instead of a more complete, and correct, match; sparse paths no longer allow extra path elements, which is desirable for intended use of sparse paths to specify target screens, transitions, and sub-screen resources; extra path elements generally come in request URLs where sparse paths are not allowed anyway - Fixed issue where adding ".xml" to a request URL for a screen would treat the screen XML file as a sub-screen resource and return the contents; now treats screen XMl files as if they don't exist, ie results in a 404 error - Fixed issue with EntityFind where if a ListCondition with an OR operator was passed before passing other conditions then the top-level conditions would be OR'ed together instead of AND'ed - Fixed issues with Date (without time, ie java.sql.Date) parsing and formatting due to weirdness with time zone and truncating the time part of the Date representation in long millis since epoch; see comments in L10nFacadeImpl.groovy for more details - Fixed issue with canonicalized (for security, decoding) parameters including JSON documents passed in the body where lists containing anything other than strings (CharSequence actually) were emptied; most lists in parameters only contain strings so this hasn't come up before, but for more complex JSON documents it is an issue - Fixed issues with determining dependent entities, now more consistent by looking for reverse relationships with appropriate criteria - Fixed a few issues with the Tools auto screens and entity edit screens related to relationships =========================================================================== Release 1.5.0 - 07 Mar 2015 =========================================================================== Moqui Framework 1.5.0 is a major new feature and bug fix release. This release includes a number of UI improvements in XML Screens and Forms including lazy-loading trees (with jstree), more complete database-driven forms, general form response saving (together support DB-driven surveys, and can also be used with any XML Form), ability to include entire screen sections in other screens, required screen parameters so explicit checking isn't necessary (most screens with parameters need this), significant style improvements based on updated Metis (and Bootstrap, jquery, etc), a new dark/light style switcher, and restored use of screen themes to load CSS, JS, images, inserted text and templates, and much more. One major new feature in this release is EntitySync which duplicates data between systems based on update timestamps. This can move data between tenants, systems on different networks and used for different purposes, and so on. Another major feature is the system-system messaging that is a store and forward message queue, or in other words it persists outgoing messages to allow retry in sending or even modify and retry, and incoming messages to allow retry in processing, modify and retry, etc. This can be used along with or instead of a lower-level message queue to provide more visibility at a business level and to facilitate production support for messages with issues. It is configurable so that different services can be used to process different messages (send, receive, consume). Both EntitySync and System-System Messages are new and not yet vetted in production so should be considered beta features as of this release. The Tools application has been split into System and Tools applications targeted at the different roles of system administrators and developers. There are new screens in the System app for security (users, user groups, and artifact groups with preferences, permissions, authz, tarpits), for Entity Sync to review status and create/maintain, and for System-System Messages to review incoming and outgoing messages and handle issues with messages. There are also improvements in the Tools screens for developers including various Auto Screen improvements, an Artifact Statistics screen with counts of various artifacts and improved service detail with highlighted display of actual and generated source. NOTE: This release, just as the previous, required JDK 7 to run. It also includes the invoke dynamic variation of Groovy (which requires Java 7) for significantly enhanced performance. NOTE: The webroot, tools, and example components are now in the new runtime/base-component directory instead of the runtime/component directory to keep them separate from add-on components. There is also a new runtime/component-lib directory for library components that are loaded after mantle (if present) and before the components in the runtime/component directory. New Features: - Updated Apache Camel to 2.14.1, Apache CSV to 1.1, Apache Derby to, Apache FOP to 1.1 (now includes Batik 1.7), Apache Lucene to 4.10.3, Apache Shiro to 1.2.3, Ehcache to 2.9.0, ElasticSearch to 1.4.4, Freemarker to 2.3.21, Groovy to 2.4.1 (indy), Liquibase to 3.3.2, OrientDB to 1.7.9, Winstone to 1.7.0 - Updated Metis Admin Template to version 2.2.7, thanks to contribution from Osman Nuri Okumuş (onokumus), the author of Metis; this updates jQuery to 2.1.1, jQuery UI to 1.11.0, Bootstrap to 3.2.0, and various other updates - More profiling (with JProfiler) and performance improvements, especially in the Entity and Screen Facades - Added elFinder connector for the Moqui ResourceFacade - Added Tools screen to browse ResourceFacade resources using elFinder - Can now schedule services with a cron string in Tools Run Service screen - Added cache warming on start (disabled in dev conf) - Various improvements to Tools screens for layout and pagination - Added convert#Uom service - Added clone#DataDocument service - Added WebFacade.sendResourceResponse() method to stream content from any Resource Facade location - Artifact Authz now gets parameters from entity and service operations and if new ArtifactGroupMember.filterMap field is populated checks each filter entry to see if it matches corresponding parameter entry, otherwise authz rule does not apply - Added System-System Message functionality with persisted outgoing and incoming messages and services to manage queueing, sending, receiving, and consuming - Added UI for administration of System-System Messages - Added UI for Security administration (users, user groups, and artifact groups with preferences, permissions, authz, tarpits) - Added UI for EntitySync administration - Added sync service call transaction options (ignore and cache) to match those available through the service definition - Made XML Actions service-call.@transaction options match those in the service definition, added code generation for all options - Added ServiceFacade.callJsonRpc() method to more conveniently call remote JSON-RPC services - XML Screen: - Added tree element for XML Screen that renders a lazy-loaded tree with links using jstree (currently version 3.0.3); see the wiki.xml screen in HiveMind for an example of its use - Added section-include element to include a section from another screen - Various XML Screen elements have more consistent id behavior with string expansion and adding the listEntryIndex suffix, which is now also set in section-iterate (in addition to form-list as before) - Added container-box to XML Screen with header, toolbar, and body - Improved container element in XML Screen with better id handling and a type which (in HTML) translates to the tag used. - Added @style attributes to link and label in XML Screen - In a form-list with no @list-entry attribute creates a ${@list}_entry field along with the _index and _has_next fields for convenience in getting at the object in the List (which implements the Map interface, often an EntityValue and nice to get at it directly) - Added form-single.field-layout.field-row-big element to do what field-row used to do with more than 2 field-ref elements, putting all fields in a single column - Put CSS references back in theme instead of direct in webroot.xml - Added support for header logo, header title, body class, and footer items in theme to make applications easier to brand through theme data - Added theme support for header navbar items with FTL snippets coming from the database theme records, example in the Mantle MyAccount app to show count of unread incoming messages and link to view them - Added dark/light pseudo-theme switcher, switches body classes from Bootstrap on the fly and saves user preference (default comes from theme) - Links are now disabled when going to a screen the user is not authorized for along with failed transition condition - Screen paths can now start with a // and be a sparse path where each name in the path is searched for in the subscreen hierarchy from the root screen; can also find content this way; note that this may involve loading a lot of screen definitions and in dev mode will be slower, but in production (cache timeouts turned off) the full expanded path is cached as are the screen definitions so there is very little overhead - To help with XML Screen loading overhead, especially in dev mode with timeouts turned on, now only reloads if the file's last modified time has changed - Added date-period form field widget to show drop-downs for this/next/last day/week/month/year as an alternative to an explicit date range - Added link.@dynamic-load-id attribute to load a link into a dynamic-container using its ID - Added 'screen' option for link.@url-type to refer directly to a screen without going through a transition (technically transition can do this too, but looks funny); made @url-type an expanded string - Added support for screen.parameter.@required attribute, show error message instead of rendering screen if a parameter is not passed - XML Form text-line auto-complete now passes through parameters defined on the screen and transition - Added XML Form text-line.ac-show-value attribute which defaults to true and if set to false doesn't use the span by the input box to show what was selected - DbForm forms can now be used independently rather than just modifying existing XML Screen forms by using 'moqui.screen.form.DbForm' or 'DbForm' as the location, before the hash (#), in the @extends attribute - Added FormResponse/Answer entities to save form responses from any form based on form field names; can be used with DbFrom to have flexible database driven survey forms - Autocomplete fields (with text-line.@ac-transition) now hide the ID/value and put the label in the input box; they also do a server call with the initial value to get a label for it if there is no @ac-initial-text attribute - Added container-row and row-col elements for 12 column responsive layouts currently implemented with the Bootstrap 12 col styles - Added transition-include element to reuse transition definitions - Added @condition attribute to link and label elements - Added support _openDialog parameter or context field to specify a dialog (container-dialog or dynamic-dialog) to show on load - Entity Facade: - Added in operator (_op) for searchFormInputs/search-form-inputs - Added entity.field.@default attribute with a Groovy expression to set a default for a field based on other fields, constants, etc - Added DataDocumentCondition.operator field, uses same operator values as XML Actions econdition.@operator - Added update option to field.enable-audit-log to create audit records for updates only, not creates - Added entity.@sequence-primary-prefix attribute for a per-entity prefix that can be and expanded string expression using field values, etc - Removed EECA triggers for find operations; these are not generally useful and add overhead to the typically significant number of find operations, including cached ones - Initial implementation of EntitySync feature with example in the example component; should be considered beta but has gone through various tests in non-production environments - Added entity.@enable-audit-log attribute which is used as the default for all fields of the entity - Added EntityAuditLog.artifactStack field with the artifact stack used to do the audited update - Entity ECA rules that run after an update and have get-original-value=true now really get the originalValue from before the update even though they run after. Bug Fixes: - Fixed security issue where current password was stored in UserPasswordHistory with 2-way encryption. Now only previous passwords are stored in UserPasswordHistory on password change, and they are stored in the hashed (one-way encrypted) form along with the salt and hash type. - Fixed delete buttons not working on the Find Auto Screen - Fixed links with images (link.image element) FTL error - Required service parameters used to use the Groovy definition of empty but this is annoying for numbers and such (a zero is generally a valid non-empty service parameter), so now uses null for any object or zero length String as the definition of empty for required parameters - Fixed issues with complex-alias where aliased entities were not add to list of aliased entities used and alias level function was not added - Fixed tx cache issue where a value could be updated after putting it into the cache causing an attempt to read the original to get an updated value - Changed ResourceReference.init() to use ExecutionContextFactory instead of ExecutionContext for cases where the object is long-lived - Fixed search#DataDocuments issues with documentType parameter, adding it to the count query (was getting wrong counts because it was left out), set to null if an empty String as ElasticSearch treats that as a real one - Fixed issue with a distinct query where order by fields are not selected, Entity Facade now automatically selects order by fields for distinct queries - Fixed issue with merging row-actions in list forms, was cloning row-actions node instead of the actions nodes under it - Fixed issue with form-list-column nodes not getting removed when merging - Fixed issue with deepCopyNode copying attributes, the original Node's attribute Map was used instead of being copied allowing attributes to be modified in the copy of the Node - Fixed thread deadlock issue in dev mode (with ArtifactHit entity logging enabled) caused by refreshing DataFeed and DataDocument settings in a scheduled job and page request happening around the same time - Fixed thread contention issue checking ArtifactHit near startup - Fixed issue with EntityValue.checkFks using find instead of findAll to get type one relationships - Fixed issue with lastUpdatedStamp not getting set on updates - Fixed fairly recent issue with service auth* parameters being ignored in service calls, especially remote service calls - EntityFind.count() now selects all fields by default to match what list() and iterator() do, and to not mess things up when calling count() before calling iterator() - In XML Forms the display and display-entity field types no longer default to the value from the @text attribute, if there is no direct entry value the hidden field should be empty - Fixed issue with Quartz service calls and job data associated with the trigger, now gets data map from job and trigger - Fixed issue with the Content-Type HTTP header in JSON requests when it has one or more parameters. =========================================================================== Release 1.4.1 - 01 Aug 2014 =========================================================================== Moqui Framework 1.4.1 is a minor new feature and bug fix release. Many of the new features and bug fixes are related to multi-tenant support including better isolation of tenants and tenant provisioning services. Other fixes and improvements are related to Service ECA rules, jobs, DB setup, and the tx cache. This release also has various embedded documentation (annotations, etc) improvements done along with the Making Apps with Moqui book which is now available and has comprehensive documentation of Moqui Framework and a summary of Mantle Business Artifacts. NOTE: Starting with this version Moqui Framework requires Java 7 or later because updated libraries require Java 7. Partly because of this Moqui itself will also start to use Java 7 features. New Features: - Updated Apache Jackrabbit to 2.8.0, Apache Lucene to 4.8.1, ElasticSearch to 1.2.1 - Added UserGroupPreference, like UserPreference but for user groups. UserFacade.getPreference() now looks for group preference when no user preference is found. - Changed Service ECA rules with @when of tx-commit or tx-rollback to attach to the transaction after the service is run so that results of the service run are available. - Changed datasource configuration so that if datasources other than the one for the default-group-name (transactional) are not specified then the default-group-name one is used. There is a similar change for the TenantDataSource so that only the one for the default-group-name (transactional) is required for each tenant. - Changed the Derby database default configuration to use a single MoquiDEFAULT database instead of separate transactional, analytical, nosql, and tenantcommon databases. Also changed the EXAMPLE1 tenant to use the tenantId as the database name, setting a pattern for other tenants. - Added basic tenant provisioning services and various multi-tenant improvements and fixes to improve multi-tenant capabilities. - Changed the way database time zone and locale work so they are the same for all users, either configured (@database-time-zone and @database-locale attributes on the moqui-conf.entity-facade element) or the Java system defaults. This is instead of using the user's time zone and locale because that is inconsistent and may get undesired values back, ie getting a different Timestamp object back because of a different user time zone. - Added screen.@tenants-allowed attribute to restrict which tenant(s) a screen may be used in. The tools application is now restricted to the DEFAULT tenant using this attribute in Tools.xml. - Changed Data Document _index field to be tenantId + "__" + DataDocument.indexName instead of just DataDocument.indexName to use a separate set of indexes for each tenant. - Scheduled service jobs (including async) are now authorized before the job is scheduled, and when the username/userId is passed through does a no password authc for that user and turns off authz for the service call; this is a mechanism for handling service calls outside the main flow and still maintaining security. - Changed the ArtifactHit/Bin artifactName for screen, screen-content, and transition to use their internal Resource Facade location (like component://...) instead of external URL Bug Fixes: - Changed commit() to rollback if commit fails to cleanup the transaction, can happen for example with TransactionCache has a DB error during pre-commit. - ArtifactHit count now skipped for UserAccount to avoid infinite recursion (shows as a StackOverflow exception). - EntityValue.containsKey() now returns true if there is a value for the key (even null), not just if it is a valid field name; this was inconvenient for various things, especially when treating EntityValue like a Map. - Fixed issue where Service ECA rules with @when of tx-commit or tx-rollback were never run. - Fixed issue with primary sequenced ID where cached current bank was shared among tenants even though DB values were separate, now cached current bank is also separate. - Fixed GitHub issue #26 where the Calendar used for setting Date/etc values was not valid because the cached Calendar object in UserFacadeImpl was set in a query before getting the UserAccount, and not reset by getUserAccount() (ie calling clearPerUserValues()). - Changed Quartz jobs (async and scheduled service calls) to run in the tenant they were initiated in instead of always in the DEFAULT tenant - Fixed issue with setBlob and the Postgres JDBC driver (GitHub issue #28), similar to pull request #29. - Fixed issue where SubscreensItem records with a userGroupId were filtered for the user active when the screen is first loaded as opposed to the user active each time the screen is rendered. - Fixed issue where TransactionCache was ignored for entities with no table in the database, for OrientDB datasource, and in general for the EntityListIteratorWrapper object. =========================================================================== Release 1.4.0 - 21 Mar 2014 =========================================================================== Moqui Framework 1.4.0 is a major new feature and bug fix release. Significant new features include: incorporating the Metis Admin Template, adding Twitter Bootstrap and updating jQuery/jQueryUI, added Bitronix transaction manager and pluggable JTA implementation support, added JBoss KIE and Drools with framework and component knowledge base support, Markdown support, JSON-RPC improvements, data loading improvements to support CSV files and calling services to load data, a Quartz Scheduler history in the DB and a Quartz persistence implementation, and services to clean Quartz history as well as Moqui artifact hit and hit bin histories. There are various bug fixes and stability improvements in this release for things like PostgreSQL support, input data handling, form-list and general pagination, Tomcat and other Servlet container deployment, and email sending. This release is backward compatible with the previous release (1.3.2), though some configuration changes may be needed and custom HTML/JS may need to be updated for the new JS libraries and Metis Admin Template. New Features: - Added the Metis Admin Template version 2.1.3 (see https://github.com/onokumus/Bootstrap-Admin-Template); This includes an update to jQuery 2.0.3, Bootstrap 3.0.3, jQuery UI 1.10.3, and many other JS libraries. - Added Bitronix BTM 2.1.4 as alternative to Atomikos - Added JBoss KIE and Drools libraries (version 6.0.0.Final) and Moqui API additions for getting a KieContext, plus Moqui automatically loads and builds component kie directories when present - Added Markdown4J 2.2 - Added Apache Commons CSV 1.0-SNAPSHOT 20140122 - Updated Apache HttpCore to 4.3.1, HttpClient to 4.3.2, Commons Logging to 1.1.3, Commons Codec to 1.6 - Updated Apache Lucene to 4.6.1, ehcache to 2.8.1, ElasticSearch to 1.0.1, Groovy to 2.2.2 - Updated Winstone to 1.0.5 (note this is very different from 0.9.10) - Added ISO 8601 date/time parsing as another default in L10nFacade - Added transition.@read-only attribute to skip XSRF check for insecure parameters when the transition does not modify data, and when data is not too sensitive - Added transition.parameter sub-elements to declare additional parameters for a transition, just like and in addition to the screen parameters - Added Markdown wiki support for files with extensions .md and .markdown using Markdown4J, and .md.ftl or .markdown.ftl for FTL + Markdown - Added clean#ArtifactData service to remove ArtifactHit/Bin records older than a certain number of days (default 60), and a XML configured Quartz job with a trigger to run it every day at 2AM - Entity Facade - Enhanced EntityDataLoader to also call services, just use the service name (leave out hash (#)) instead of entity name for the XML element - Enhanced EntityDataLoader to support CSV files with the entity or service name on the first line, then a header line, then the data lines - The entity-find-one.@value-field attribute can now be an existing Map that is not an EntityValue and if so entity fields are added to the Map instead of assigning the find result to @value-field - Improved EntityFind and EntityList for cached pagination - Service Facade - Removed Dzhuvinov JSON-RPC jars (implemented internally now) - Improved and fixed JSON-RPC remote service client and auto server - Changed service.@validate=false to still apply defaults and type conversions for defined in-parameters, but not exclude undefined params or error on other validation errors - Added parameter.@default attribute which is like the @default-value attribute except that it is a field name or expression for the default field value. - Added SchedulerHistory and code to populate it on various Quartz Scheduler events, and scheduled service to clean up old records - Added EntityJobStore to do persistence for Quartz Scheduler through the Entity Facade instead of direct to DB for easier deployment and more consistent operation with other parts of Moqui Framework - Transaction Facade - Added transaction-facade.@use-transaction-cache attribute, defaults to true, set to false to disable the TransactionCache globally - Added new transaction-facade sub-elements transaction-jndi and transaction-internal instead of single transaction-factory; transaction-internal has a class attribute to specify an implementation of the TransactionInternal interface to init/destroy the JTA impl - TransactionFacade now has active Synchronization registry like the active XAResource registry per transaction that existed before - Moved XAResource tools to Synchronization: TransactionCache, OrientDB tx handler, ServiceCallSpecial.registerOnCommit() and registerOnRollback(), Service ECA rule tx-commit and tx-rollback, EntityDataFeed Bug Fixes: - Due to some quirks in Shiro ehcache support it is disabled by default; it is still supported for use in distributed environments with shared auth cache (see shiro.ini for details) - Fixed issue with entity-condition in a view-entity when the econdition value matched a localized string different from the original value - Fixed issue with form-single and form-list.@transition when it matches a localized string (especially on MySQL or other DBs with case insensitive string matching), now only expands transition value if it contains a "${" - Fixed not-like entity condition operator which was treated as like - Fixed bug in EntityFind.searchFormInputs using ec.web.parameters instead of context; parameters are added to the context and other things may be too before this is called, so best to just use the context - Changed data stored on login to be done in separate transactions so that the records aren't locked for the full surrounding tx preventing the same user from auth for other transactions - Fixed issue with runtime/db directory not being included in gradle addRuntime and ant add-runtime, caused Derby to do funny things and OrientDB to not run at all under Tomcat and other external containers - Fixed issue with Logger initializing before moqui.runtime is set when running under external servlet containers like Tomcat - Fixed issue with DbResourceReference.putStream which tried to pass an InputStream to the JDBC driver, which isn't likely to be handled; now reads from the stream to a byte[] and wraps in a SerialBlob - Fixed issue when startup-add-missing is true but runtime-add-missing is false it would not really check and add missing on startup - Improvements to DB meta data handling for databases like Postgres that default to lower-case table, column, and foreign names - Fixed issue with sri.getFieldValuePlainString() calling toString on BigDecimal objects as BigDecimal.toString() uses scientific notation by default and aside from being annoying the parser doesn't handle it and treats things like 100 represented as 1E2 as 1 - Fixed issue with iterate over a Map when key attribute is set where the key and value were switched in the specified field names - Links (including URL parameter and hidden form) now handle Timestamp and BigDecimal the same as hidden form fields. This resolves issues with time zones for Timestamps, and with number parsing for BigDecimals. - Fixed issues with transition path-parameter when screen has no actions where transition was not removed from the path name list and path, screen, and transition parameters were not expanded for response parameters - Fixed issue in sendEmailTemplate.groovy where webappName was passed into the screen render for the HTML for the email, but not the plain text - Fixed issues related to entity-find.@cache attribute used inconsistently in generated code, and more generally with filtering and pagination when using both entity-find.@cache=true and entity-find.search-form-inputs, especially along with entity-find.date-filter. =========================================================================== Release 1.3.2 - 20 Nov 2013 =========================================================================== Moqui Framework 1.3.2 is a minor new feature and bug fix release. The main new feature is a write-through per-transaction cache that effectively simulates the database for the scope of the transaction and does all DB updates with a single connection just before commit. This transaction cache is enabled on service definitions using the cache and force-cache options for the service.@transaction attribute. With this in place various Mantle services now run 2-3 times as fast with results validated by extensive automated tests. Another set of new features covers internal profiling for artifact execution (entities, services, screens, transitions, etc). There are various forms of output available including a full artifact call tree with times, a consolidated tree to see own and total for artifacts in context, and a hot spot list by own or total time. This is similar to Java-level profiling tools but focuses on business level artifacts and with a low overhead gathers data always but only generates reports when needed. OrientDB is now included in the framework by default instead of only in an addon component as before. This is useful as a general graph and document database and as an alternative through the Entity Facade for high-write entities like ArtifactHit. New Features: - Updated Apache Camel to 2.12.1, Ehcache to 2.7.5, Groovy to 2.1.9, Quartz Scheduler to 2.2.1, SLF4J to 1.6.6, Shiro to 1.2.2, Spock to 0.7 - Updated ElasticSearch to 0.90.7 and Lucene to 4.5.1 - OrientDB is now included in the framework by default instead of only in an addon component to have an embedded document and graph NoSQL database; this and other graph databases can be used through the Blueprint and Gremlin APIs - Various changes to EntityDatasourceFactory, EntityFindBase, etc to better support other non-JDBC data sources like OrientDB - Implemented write-through per-transaction cache (TransactionCache) enabled through the service.@transaction attribute cache and force-cache options or through direct initialization; this is a pretty big new feature that significantly improves performance of various types of services, but has certain limitations as described in the JavaDoc notes in the TransactionCache class and code using it should be tested thoroughly - Added econdition.@or-null attribute to make the condition an or between the specified condition and null - Added entity.@allow-user-field attribute to specify when UserField defs are considered, for security and performance reasons - Added entity.@create-only attribute for immutable entities - Added eeca.@get-original-value attribute to get the original (db) value if run on update or delete and before the entity operation - Screen form-single forms automatically add a "_formMap" field to the context with the Map used for the form; useful for reused forms that may specify different form-single.@map values - XML Actions iterate generates _index and _hasNext fields - ArtifactFacade tracks artifact running time, keeps an hierarchical instead of flat history, and can print a tree of the history; can also create a consolidated tree across larger runs to see an overview of own and total time per artifact; can also create a hot spots list by own or total time per artifact to see which took the most time - Added gradle tasks to save the Derby databases and ElasticSearch data after a load (loadSave) and to clean out and reload the saved data (reloadSave) - Some improvements to error message logging and handling in data loader, ServiceTrigger, and set rollback only - When tables are created on the fly they are now only created for write operations, finds just return no results if table does not exist and do not create the table Bug Fixes: - Fixed issue in ListCondition with null list entries, and improved the factory method with condition List parameter when List has only one condition to just use that condition - Fixed issue in service input conversion treating empty values as nulls - Fixed some minor and rare Entity Facade errors as part of more extensive testing for TransactionCache and a code cleanup and consolidation effort =========================================================================== Release 1.3.1 - 20 Oct 2013 =========================================================================== Moqui Framework 1.3.1 is a minor new feature, bug fix, and performance enhancement release. New Features: - Performance improvements based on profiling (tested screens run around 1.3 to 2 times as fast) - form-list and section-iterate automatically add *_index and *_has_next context fields following the pattern used in Freemarker - formDisplayOnly parameter (or context value) to make the form render as display-only (read-only) - dynamic and static layouts - static layout uses entire browser width and is CSS based - dynamic layout uses jQuery Layout plugin and supports closing, resizing, fixed header/footer, separate scrolling left/right, etc - popup menus are in the header to save space and for easier layout - set action inside form field sub-elements and widget-template-include for parameterized widget-template definitions - XML Form pass through of matches (regexp) validation from service - Added ServiceTrigger entity to call a service when the record is created; useful for triggering data setup services on data load and so on - The loadData execution uses anonymous user for authc and allows any authz for services triggered on data load Bug Fixes: - Fixed extraneous close script tags in screen/form HTML output - Fixed right/east container-panel field name so size, etc settings apply - Fixed calls to startFormListRow that were missing new parameters added to the method; resolves SourceForce Bug #39 - Fixed issue with a form-list with header form in a dynamic-container; now updates within the containing div using the results of the form submit - Fixed issue with service name comparison when running SECA rules - Auto reverse relationships better support titles - DataDocument no longer includes null fields, empty Maps and Lists - Fixed issue with null oldStatusId and setting new statusChanged automatic fields in entity-auto service implementation - Fixed entity-find.search-form-inputs.@input-fields-map attribute, groovy generated left out quotes - Fixed NPE in EntityUserField code - Changed searchFormInputs to default to equals instead of contains; more efficient queries and works for numbers, dates, etc - Changed saved session messages and errors to be separate from MessageFacade ones so they still display but don't stop other services from running - Fixed EntityFacadeImpl.getAllEntityNames() to not return invalid entity names, caused problems with AuthScreen, etc after an attempt to use an entity with an invalid name - Fixed issue with Entity ECA rules where fields set to null were reset back to the value from the DB - Fixed issues with export with dependents including making sure all auto-reverse relationships are in place and properly handing relationships with titles when deferring export for fk dependency - Fixed issue where secondary sequenced ID did not preserve disableAuthz - Fixed issue with DENY record not stopping sub-screens access =========================================================================== Release 1.3.0 - 27 July 2013 =========================================================================== Moqui Framework 1.3.0 is a major new feature and bug fix release. The major new features include the EntityFacade Data Document, Data Feed, and Data Search (based on ElasticSearch) features, the User Notification Message feature, and various improvements to XML Screens and Forms. This release is backward compatible with Moqui Framework release 1.2.0 with the exception that the StatusValidChange entity is deprecated by the new StatusFlowTransition entity. When updating to Moqui 1.3.0 from 1.2.0 or earlier existing databases may need to be updated because the Entity Facade now uses full entity names (with the package included in the name) for everything. The SequenceValueItem.seqName may contain plain entity names (without package) that need to be changed to full entity names (with package). This can be done by adding records with the full entity name in the seqName field with the same value as the original record in seqNum. New Features: - Updated Gradle build files to work with Gradle 1.6 (may not work with earlier versions) - Updated Apache Camel to 2.11.1, Apache Commons Validator to 1.4.0, Apache Derby to, ehcache to 2.7.2, Freemarker to 2.3.20, Groovy to 2.1.6, Quartz Scheduler to 2.1.7 - Added ElasticSearch 0.90.2 and Lucene 4.3.1 ElasticSearch files are under runtime/elasticsearch and it is initialized and destroyed with the rest of the framework - With ElasticSearch, Lucene, and full ehcache instead of just core the size of Moqui Framework has grown from ~24MB to ~42MB - Both ElasticSearch and Camel can be disabled to not init automatically - Introduced StatusFlow, StatusFlowItem and StatusFlowTransition entities for improved status flow support. A StatusItem may be used in multiple flows, each flow having its own set of status items and transitions. - Entity Facade - Added EntityDynamicView.addRelationshipMember() method to easily add member-entity based on relationship definition - Added Entity Data Document feature configured by DataDocument* entities which produce a sort of view entity (built on the fly with EntityDynamicView); the actual data documents are nested Maps and Lists produced by the EntityFacade.getDataDocuments() method - Added Entity Data Feed feature configured by DataFeed* entities; a feed is associ
Source: README, updated 2016-01-17

Thanks for helping keep SourceForge clean.

Screenshot instructions:
Red Hat Linux   Ubuntu

Click URL instructions:
Right-click on ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Briefly describe the problem (required):

Upload screenshot of ad (required):
Select a file, or drag & drop file here.

Please provide the ad click URL, if possible:

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks