7.12

Last update: Download PDF Edit

7.12.0

Release date: March 5th, 2018

Desktop Modeler Look & Feel

We’ve worked hard to give the Desktop Modeler a consistent, fresh, and contemporary look and feel, redesigning the interface to have a flat design. The Desktop Modeler now shares its UI and color palette with the Web Modeler, and it contains almost 400 new icons to make it easier to identify all the possibilities for creating great applications.

Nanoflows

Microflows are the main way to model logic in Mendix applications. While they undoubtedly are a great way to model, microflows are executed by the Mendix Runtime, and hence, cannot be used in offline applications. With this release, we are proud to announce the solution to this limitation.

Welcome nanoflows, application logic that runs on your device or in the browser! Nanoflows are fully supported offline and online, where they often show superior performance compared to microflows. Nanoflows can be used to manipulate, retrieve, and store data as well as to implement complex validation or navigation scenarios. And there is instant user feedback!

Nanoflows are modeled the same way as microflows and rules (you can even copy-paste between them), so you can be productive right away. However, there are still some notable differences: entity security is always applied, and some microflow activities are not available. We are actively working on these differences, so you will see the feature gap shrinking fast. Stay tuned!

For more information, see Nanoflows and Mendix 7.12: Sharing Developer <3 From Us to You!.

One final note – we heard that you love the “fast deploy” feature, which allows you to apply your changes to a running application within seconds. So, we enabled this for nanoflows too!

Association Widget Improvements

We improved how the Mendix reference selectors (reference selector, reference set selector, and input reference set selector) interact with their select page. From now on, if the select widget (data grid, template grid, or list view on the select page) has some non-trivial configuration of what objects to show (for example, an XPath constraint), this configuration is not overridden by the Selectable objects configuration of the reference selector. Instead, the two filters are taken into account. For example, if you create an input reference set selector with selectable objects limited to one satisfying an XPath [Status = 'Done'] and on the select page you place a list view showing only objects satisfying an XPath [Age < 10], the user will be able to only select an object satisfying the combined XPath of [Status = 'Done'][Age < 10].

We now also support more combinations of reference selectors with select widgets. For example, you can now use a list view with a database data source as a select widget for a reference selector using a Constrained by for selectable objects.

Productivity Improvements

  • When switching between Create object and Change object in microflows, the list of changes and other settings are retained.
  • You can now select sections of your page and convert them to a snippet in two easy clicks. Every widget in the page editor now has a Create snippet option in its context menu. Right-click, select that option, give your new snippet a name, and voilà, you have yourself a brand new snippet. We’ll even automatically replace the selected widget with a snippet call to the new snippet for good measure.
  • In the Edit dialog box for a widget, grid column, or grid search field, a Show button has been added to the attribute path selector to show the selected attribute in the domain model.

New Features

  • We enabled access to low-level request and response objects via IContext.getRuntimeRequest() and IContext.getRuntimeResponse() in custom Java actions in order to allow for the customization of the response (for example, adding a custom header, cookie, etc.).
  • You can now specify a version for a published REST service.
  • You can now specify which URL you want for your published REST services, as it is no longer restricted to /rest.
  • We added an overview of parameters to published REST operations.
  • We moved the Export swagger.json button for published REST services to the context menu in the Desktop Modeler’s Project Explorer.
  • The default path for a published REST service is now /rest/myservice/v1/resource.

Fixes

  • We fixed the slowness that occurred when editing a large project in Mendix 7.11.0. (Tickets 61221, 61441, 61463, 61601)
  • We fixed the issue causing ClassCastException during the unmarshalling from JSON of Mendix objects containing a MendixDateTime when the date was close to the start of the Java epoch (for example, 01-01-1970). (Tickets 61045, 61147)
  • We improved the performance of sub-microflow parameter handling. (Ticket 61170)
  • The conditions in a condition in an XPath will now generate a correct SQL statement, allowing XPaths like [(Mydate <= '[%BeginOfCurrentDay%]') = false()] to be evaluated correctly. (Ticket 61238)
  • For custom widgets, previously only one CSS file named after the widget and placed under the ui folder was included in an application. The name of the file was case-insensitive on Windows, because the Windows file system is case-insensitive. However, when running in the cloud, the file system is case-sensitive. This led to different behavior when running locally or in the cloud. In addition, when you had multiple .css files for your custom widget, you needed to bundle them yourself. Now, all CSS files in the widget bundle are included, except the ones placed under the lib folder. So, if your custom widget bundle contains multiple CSS files, they will all be included in the CSS file. If that is not the behavior you want, you should remove obsolete CSS files from your custom widget bundle, or move them to the lib folder, which is also excluded from the bundling. (Ticket 48214)
  • If a custom date format was configured in the language settings, this format was not applied to date parameters in a text template. (Ticket 54394)
  • Validation messages are now properly shown again for an input that is shown for the first time (using conditional visibility) while being invalid. (Ticket 57422)
  • Custom handlers can now access the body of application/x-www-form-urlencoded requests. (Ticket 61729)
  • We resolved the issue where the Desktop Modeler generated a microflow with duplicate parameters when using a microflow to retrieve an object in a mapping.
  • We fixed the situation where JSON export was configured to write a non-number value in a number position but did not cause an error.
  • We fixed the issue where file documents were not represented correctly in published web services deployed on cloud V4. (Ticket 60935)
  • The generated swagger.json for a published REST service did not specify that path parameters were required. We added that.
  • In a generated swagger.json for a published REST service, we no longer set the type of body parameters, because that is invalid.
  • We fixed the bug in published REST operations where you could not commit objects with 1-to-1 associations when the service required no authentication.
  • We fixed the issue where a data view stayed empty when an object was requested and duplicates were received. Mendix now makes sure duplicate objects are never returned in the first place. (Ticket 60015)
  • We fixed the duplicate names caused by creating or pasting widgets into an empty placeholder. (Ticket 60306)
  • We made the captions of inheritance splits searchable when using the full-text search in the Desktop Modeler. (Ticket 41709)

Breaking Changes

As described in the Association Widget Improvements section above, we have changed the behavior of select widgets, and constraints configured on them are no longer ignored. This might change the behavior where your application has select widgets with constraints configured. You can verify if this is the case by checking (and fixing) the following warning in a previous version of the Desktop Modeler: “Property {name} on the {widget} of the select page has no effect when the page is used for selecting. Instead, the selection constraint properties of the {widget} can be used to constrain the selectable objects.”

Known Issues

  • In offline apps, when using data sources with paths containing association(s), the entities referred to by the association might not be synchronized if they are not referred to anywhere else in the offline app. This can result in missing data. (Tickets 61768, 61916)
  • List views are not cleared correctly when creating a building block or page template, because the list view templates are not removed. (Ticket 63507)
  • In some situations, an object associated to another object cannot be committed during the execution of a before/after commit event, resulting in an error such as “Object of type ‘MyModule.MyEntity’ with guid ‘12345’ cannot be updated, as it does not exist anymore.” For example, consider two new objects A and B, wherein A (parent) is associated with B (child) and A has a before- or after-commit event. In this event, B will be changed and committed. If you then commit A, B will be marked as ‘autocommitting’. Because of this, committing B in the before- or after-commit event of A will fail, as it expects A to already exist in the database, which is not yet the case. (Tickets 59099, 59288)