Mendix Studio pro

9.12.0
Stable
March 29, 2022
Mendix Studio Pro is our low-code IDE for professional developers. It's a powerful visual model-driven development environment to build apps on the Mendix Platform. With Studio Pro you can easily create, change, integrate, test and deploy your applications, all in one place. Moreover, you can manage branch lines and security as well as extend your app with custom code using the built-in editors. Click 'Download Studio Pro' to get the installer for free (Windows OS required*). Learn more about the installation and the Studio Pro capabilities in our documentation. Not a professional developer? Learn How Mendix supports different developer profiles .Before installing, please read the Release Notes to learn about improvements, bug fixes, backwards compatibility, breaking changes and known issues. *If you are using a Mac, check out these instructions first.
Release Notes - **Release date: March 29th, 2022** ### New Features * We added an overload to the `ActionCallBuilder.executeInBackground` method of the [Runtime API](https://apidocs.rnd.mendix.com/9/runtime/index.html) that can be used to schedule queue tasks. By using the `startAt` parameter, you can specify a date/time after which the task will be executed. * Did you ever want to be able to temporarily disable some activities in a microflow or nanoflow, because you are still building and testing your flow, for example? Now you can! When you right-click a microflow activity and select **Disable activity**, the activity is shown as faded out. When running your flow and while debugging, these disabled activities are skipped. You can also have disabled blocks of activities detached from your flow, without this resulting in consistency check errors. Try it out! This is based on upvoted ideas from [Mathilde Mulder](https://forum.mendixcloud.com/link/ideas/257), [Erik Kuiper](https://forum.mendixcloud.com/link/ideas/1160), and [Ramón Frigge](https://forum.mendixcloud.com/link/ideas/993) submitted to the Mendix Idea Forum. Thanks, Mathilde, Erik, and Ramón! * We added the possibility to retry failed workflows. This would restart only the failed activities and put the workflow in progress again. For more information, see [Change Workflow State](https://docs.mendix.com/refguide/change-workflow-state/). * We introduced a capability to track workflow and user task state changes using state change event microflows. They can be app-wide (in the [App Settings](https://docs.mendix.com/refguide/project-settings/)), and/or specific of a certain workflow (overriding the ones defined in **App Settings**). This feature can be used to build an audit system for workflows and user tasks, for example. #### Add-on and Solution Modules We added modularity capability to the platform. Members of the [Mendix Vendor Program](https://docs.mendix.com/appstore/creating-content/vendor-program/) are able to create new types of modules which have IP protection options and offer different distribution mechanisms that enable using easier upgrade management on consumer side. The following is introduced for the new capability: * Modules on the publisher side now have a new **Settings** option where module type and version can be managed. * We added a new module package format *.mxmodule* for add-on modules and solution modules. * We added a new **Export Level** setting to documents to define access level to the document on consumer (customer) side. ### Improvements * We added a much requested capability to drag and drop multiple elements into existing microflows, nanoflows, and rules. This is based on an upvoted idea from [Jordy Delahaije](https://forum.mendix.com/link/ideas/208) submitted to the Mendix Idea Forum. Thank you, Jordy! * We added consistency checks for the **App ID** of feedback widgets, with a right-click option to update the App ID of all feedback widgets (or to remove them entirely). This allows you to detect and fix incorrect App IDs after an upgrade of the Atlas Core module. (Ticket 132466) * To make management of file storage more flexible, we extended the `performDeleteFromStorage` Mendix Runtime setting. This change also allows for getting rid of unnecessary log messages about unreferenced files delete failures. (Ticket 139266). * We improved the nanoflow execution performance when a nanoflow creates many objects in a loop. (Ticket 139980) * We now report consistency errors for CSS in the style property when it is invalid and cannot be exported. (Ticket 140927) * We improved the scheduled events UI so that it has clearer and more complete scheduling options. * Scheduled events are now based on the [task queue](https://docs.mendix.com/refguide/task-queue/) to increase reliability and now execute on any cluster node. * Processed queue tasks now have the additional status **Retrying**. This status indicates that a task failed to execute, but it will be retried. * We have added an index to **SystemQueuedTask** to improve task queue performance for large queue sizes. * We now allow an expression for the task queue **Threads** setting. This allows for using constants to set up different threads for different environments. * We added the `mx.runtime.stats.handler.requests` counter for request metrics, where the handler name is a tag. * [MxAssist Logic Bot](https://docs.mendix.com/refguide/mx-assist-logic-bot/) now always shows a parameterized list for the **Calculate from a list** and **Add Validation Feedback** menu items. * MxAssist Logic Bot now supports error handling for validation feedback. * We implemented the new best practice **MXP014** for MxAssist Performance Bot: [Place Create/Update/Delete Activities Closer to the End Event of a Microflow](https://docs.mendix.com/refguide/performance-best-practices/#mxp014). * The MxAssist Performance Bot link column text color is now blue to indicate that the text is actually a link which opens the relevant documentation. * We have improved some of the consistency errors related to incorrect parameter mappings. These errors now include information about the target document, the name of the parameter (if applicable), and a context menu item to go directly to the target document. * A consistency error is now shown when a [Save changes](https://docs.mendix.com/refguide/on-click-event/#save-changes) button is used on a page with widgets that can edit attributes of external entities. * A list view now works as expected when combined with the [Grid Search](https://marketplace.mendix.com/link/component/49364) widgets. * We added new data source filters for pluggable widgets to make it easier to filter on the date component of a date/time attribute. The new filters (`dayEquals`, `dayNotEqual`, `dayLessThan`, `dayLessThanOrEqual`, `dayGreaterThan`, and `dayGreaterThanOrEqual`) compare the day of the attribute with the day of a given literal date/time value, ignoring the time component. * We now use statement parameters when querying for associated objects and specializations. * [Published OData services](https://docs.mendix.com/refguide/published-odata-services/) now support the insertable capability, which allows clients to insert objects using a POST request. This setting is off by default. External entities from consumed OData services support this capability, allowing for the creation of new objects and sending them to the service in the [Send external object](https://docs.mendix.com/refguide/send-external-object/) activity. * We introduced a new microflow activity called [Delete external object](https://docs.mendix.com/refguide/delete-external-object/). This activity deletes an object of an external OData entity (if that entity has the **Deletable** capability specified in the metadata). * Mendix now supports MariaDB 10.6. * We upgraded the embedded database HSQLDB to version 2.6.1. * We cleaned up generated Java code in order to improve readability and to decrease IDE warnings. Please note that this will cause some changes in your Java code when you push commits to the [Team Server](https://docs.mendix.com/developerportal/collaborate/team-server/). This is to be expected. * We added support for dark mode for the **Change Variable** dialog box. We also improved the layout in the **Go to**, **Expression** value, **Change List**, and **Task Queue** properties dialog boxes. * We made the toolbars in the editors more compact by removing unnecessary elements. * We added a yellow warning bar for read-only documents in the modal editors. * We now show a yellow warning bar when editing read-only documents in pop-up editors like the [enumeration editor](https://docs.mendix.com/refguide/enumerations/). * We improved the layout of the domain model of the **System** module. * In Mendix 9.10, the scope of the workflow domain model has changed to mainly support actively running tasks. We now introduced the state change events for workflows, and the user tasks are now deleted from the database after completion, failure, or abort. This keeps the user task table size smaller and is better for performance. State change events can be used to store historical WorkflowUserTask data. * We now open workflow user task pages in the defined layout (allowing also pop-up pages). * We generate an annotation in the generated workflow data microflows to describe that this workflow was generated to be used in Admin or task pages. * We renamed the **Resume workflow** operation into **Unpause** to be more clear on its purpose (unpausing a paused workflow). For more information, see [Change Workflow State](https://docs.mendix.com/refguide/change-workflow-state/). * We added an option to select your repository type when creating an App in Studio Pro. You can now select SVN, or Git (Beta). ### Fixes * We fixed an improper access control vulnerability. Please note this can lead to reduced performance in cases where a UI sorts on conditions that are more restrictive than the result set you are requesting. (3.1 – CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N/E:P/RL:O/RC:C – for more information, see [Security Advisories](https://docs.mendix.com/releasenotes/security-advisories/)) * We fixed a multi-part [known issue]((/releasenotes/studio-pro/9.11/#ki-1461) where the [related stories](https://docs.mendix.com/refguide/commit-dialog/#stories) in the **Commit** dialog box were not filtered by their completed status. We also fixed the issue where text was wrapping incorrectly in the **Related stories** tab. Finally, we fixed the bug where double-clicking a story in the [Stories](https://docs.mendix.com/refguide/stories-pane/) pane did not open its details. * We fixed an issue in OQL where it was not possible to use `GROUP BY` in combination with an alias on `DATEPART`. Such syntax is not supported by some databases, but it is now supported by OQL parser. (Ticket 92781) * We fixed an issue with pluggable widgets not working properly while using the system label property in combination with a data source with a property linked to it. (Tickets 104091, 111294, 137176) * We fixed a bug that prevented a nanoflow from being triggered because of its own validation feedback. (Ticket 110482) * We fixed a bug that caused the entity of a native list view to be available as an input argument to its pull-down action. (Ticket 111037) * We fixed an issue with offline PWAs and custom login screens that led to synchronization failure when a user was implicitly logged out but had unsynced changes in the database. (Ticket 113906) * We fixed an issue where a large number of arriving console log entires made the Studio Pro UI unresponsive. (Ticket 127795) * We fixed an issue with turning an image upright for thumbnail creation. (Ticket 130249) * We fixed an issue with running apps with a native profile locally when the Windows username of the logged-in user contained non-ASCII characters. (Ticket 134009) * We fixed an issue where an exception was thrown when decoding Base64 binary data with special characters. We have introduced a new Mendix Runtime setting `com.mendix.core.UseMimeDecoderForBase64` to allow the decoding of MIME type `Base64`. (Ticket 136429) * We fixed an issue where the `FirstDayOfWeek` setting was not configured properly in clustered runtimes. (Ticket 136630) * We fixed an issue in the import mapping document where setting a binary attribute value threw an exception in Mendix Runtime when no commit was needed. (Ticket 136812) * We fixed an issue where clicking an action button with an **All rows** argument resulted in an error if the data grid had **Wait for search** enabled and the search had not yet been triggered. (Ticket 137064) * We fixed an issue where a tab page was not loaded lazily if it contained widgets that inherited their non-editability from the surrounding context. (Ticket 138096) * We fixed an issue that caused exceptions on non-leader cluster nodes after starting them for the first time after a domain model change. (Tickets 138387, 140298) * We fixed an issue where calling the **Cancel changes** action with **Close page** set to Yes from the home page did not refresh the UI after the object was rolled back. (Ticket 138504) * We fixed an issue where data sources were re-triggered when clicking **Save** or **Cancel** in a pop-up window. (Ticket 138513) * We fixed an issue where a missing widget inside a pluggable widget container caused an error while running consistency checks. (Tickets 138573, 138582) * We fixed an issue where an offline [progressive web app](https://docs.mendix.com/refguide/progressive-web-app/) (PWA) threw an error when trying to connect to Mendix Runtime after closing the browser and re-launching the app. (Tickets 139230, 143392) * We fixed an issue where a pluggable widget with an attribute linked to a data source in some situations rerendered while the data was still the same. (Ticket 140245) * We fixed an issue with data view resizing and the conditionally visible widgets on its footer. (Ticket 140261) * We fixed an issue where combining a [Close page](https://docs.mendix.com/refguide/close-page/) action with an editable-column data grid widget threw errors. (Ticket 140660) * We fixed an issue where an XPath or database source that depended on an object of a surrounding data container did not refresh if that object was updated. (Ticket 141051) * We fixed an issue where the import mapping selected an incorrect version of the Xerces library that resulted in a Java error. (Ticket 141679) * We fixed an issue where certain checks triggered on hidden properties of pluggable widgets. (Ticket 142086) * We fixed an issue that caused errors to appear in the browser console when erasing text from a RichText widget. (Ticket 142437) * We fixed an issue where an XPath data source with an invalid XPath constraint caused consistency checks to crash. (Tickets 142509, 143941) * We fixed an issue where gauge metrics stopped working after a while if the legacy Metrics API was used. (Ticket 142707) * We fixed an issue where some buttons in the page editor toolbar were unresponsive. (Ticket 143156) * We fixed an issue where it was no longer possible to zoom in or out on a page editor using Ctrl and scrolling. (Ticket 143311) * We fixed a crash that occrred when clicking the **Advanced** toolbar button in the console log application. (Ticket 143513) * We fixed an issue with the document export of a dynamic label when the option **Render XHTML** was enabled. (Tickets 144111, 141843, 142237, 142342, 142378) * We fixed an issue that existed since version 9.10.0 where the methods `withRetry` and `withExponentialRetry` of `com.mendix.core.actionmanagement.MicroflowCallBuilder` and `com.mendix.core.actionmanagement.UserActionCallBuilder` returned `com.mendix.core.actionmanagement.ActionCallBuilder` instead of its subtypes. * We fixed a bug where the **Details** button in the **Stories** pane was always shown as enabled even when no stories were shown. * We fixed a bug where a fast re-deploy at development time did not generate newly added pages correctly. This resulted in bundling failures or red screens that could only be solved by a full deployment of the app. Now, fast re-deploy again correctly generates all the affected pages. * We fixed an issue where it was possible to maximize or minimize dialog boxes using the Enter and spacebar keys. * We fixed an issue when the bottom space of a dialog box got cut off when the dialog box was maximized to full-screen. * We fixed an issue where certain pluggable widgets could capture mouse input in **Design Mode** (instead of the editor capturing this for selection). * We fixed a bug where some auto-generated files caused conflicting changes that needed to be resolved manually. * We fixed a bug where reloading an app in Studio Pro led to an error for the [Prometheus metrics](https://docs.mendix.com/refguide/metrics/) registry when this was used. * We fixed a bug where a button with no action configured did not trigger the **On click** action of the surrounding container when clicked. * We added more validation for when you import an XML Schema Definition (XSD) file into Studio Pro. Now, it only accepts absolute paths, and the accepted schemes are limited to `https`, `http`, and `file`. * We fixed an issue that prevented some grids from having initially sorted columns. * We fixed an issue where a text box ignored a value filled by a password manager. * We fixed an issue where MxAssist Logic Bot generated an incorrect aggregate action for the calculate maximum and calculate minimum suggestions. * We fixed an issue where incorrect XPath or an exception in user targeting left the user task in a created state. When that happens now, the user task gets into the failed state (and so does the workflow). * We fixed an issue where using the workflow-related microflow actions and passing an empty workflow or user task resulted in an non-descriptive exception. * We fixed an issue where the Runtime server requested to refresh the user task when completing a user task of a workflow. Undesired refresh calls that lead to empty results (because the user task is completed and, therefore, deleted) are now prevented. * We fixed an issue where dragging a microflow from the App Explorer into the workflow editor gave an exception. #### Deprecations * We made the following deprecations to [scheduled events](https://docs.mendix.com/refguide/scheduled-events/) (please note that events using deprecated settings will be converted automatically where possible): * We deprecated the start times from which a schedule commences, so enabled schedules are always active. * We deprecated configuring scheduled events as non-repeating. * We deprecated the Monthly (31 days) and Yearly (365 days) intervals in favor of true Monthly and Yearly intervals. * We deprecated the Seconds interval. * We deprecated MxAgent. Use the `Core.metrics()` [API](https://docs.mendix.com/refguide/metrics/) instead. * We deprecated public constructors for the generated `Constants` and `Microflows` Java classes. In your custom Java code, use the static methods in `Constants` and `Microflows` instead. * Starting with Mendix 10, we will drop support for running on [DB2](https://docs.mendix.com/refguide/db2/). ### Known Issues * When you double-click a multi-column tree (for example, in the **Debug Windows** > [Variables](https://docs.mendix.com/refguide/view-menu/#variables) pane), the grid view does not select the line (except if clicked in the first column), which makes it hard to copy the variable value. * Workaround: Double-click the first column where this issue is occurring. * When you update a [consumed OData service](https://docs.mendix.com/refguide/consumed-odata-service/) with a new version from [Mendix Data Hub](https://docs.mendix.com/data-hub/) but close the document without saving, the blue arrow icon will no longer be shown to notify you about the available update for that service. * Workaround: Closing your app and opening it again fixes this issue.