Mendix Studio pro

10.12.0
Stable
June 25, 2024
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: June 25 , 2024** ### New Features #### Mendix AI Assistance (Maia) With Mendix 10.12, we are releasing [Mendix AI Assistance (Maia)](https://docs.mendix.com/refguide/mendix-ai-assistance/), our new generative AI-powered assistant designed to help you as developers during your application development lifecycle. Maia can answer Mendix development questions, automate certain development tasks, and even generate parts of your app. Below is a list of Maia features introduced in this release: * We rebranded MendixChat to [Maia Chat](https://docs.mendix.com/refguide/maia-chat/) and released it for general availability (GA). It has been given a fresh new design. You can use the sparkle button at the Studio Pro top bar, to easily open Maia Chat. * We rebranded MxAssist Best Practice Bot to [Maia Best Practice Recommender](https://docs.mendix.com/refguide/best-practice-recommender/). * We rebranded MxAssist Logic Bot to [Maia Logic Recommender](https://docs.mendix.com/refguide/logic-recommender/) in the logic editors. * We introduced the new [Maia Workflow Recommender](https://docs.mendix.com/refguide/workflow-recommender/) that provides assistance during development in the workflow editor and helps you build workflows faster. It currently suggests activities with useful properties, for instance, a user task with a user-targeting microflow (only microflows that are applicable for user targeting), or Jump activities with only/all allowed activities to jump to. * The Recommenders are enabled by default and can now be disabled via Studio Pro **Preferences** > **Maia** > **In-Editor Recommender**. * We added a new experimental feature [Maia Translation Generator](https://docs.mendix.com/refguide/translation-generator/) to **Language** > **Batch Translate...**. You can enable it via Studio Pro **Preferences** > **New Features**. #### Primitive Parameters Support for Logic Called from Pages It is now possible to pass primitive values from pages to microflows and nanoflows. You can now use [expressions](https://docs.mendix.com/refguide/expressions/) to set primitive values as arguments (like a string or Boolean), use functions, and even follow associations! This can be used on triggering call microflow and call nanoflow client [actions](https://docs.mendix.com/refguide/on-click-event/#call-microflow), and also as in data sources based on microflows or nanoflows. The advantage is that microflows and nanoflows can now more easily be (re)used when they have primitive parameters, as they can be called directly from a page. Previously, multiple microflows or nanoflows had to be used, or a non-persistent entity had to be introduced in both the logic and UI. Not anymore! For example, picture a page allowing the user to approve or deny a request using two separate buttons. Before this feature, each button would require their own microflow. Now both buttons can call the same microflow passing the status as a primitive argument. Plain and simple. In general, logic that has primitive parameters can be more easily reused as it is not tied to the domain model. Thus, this feature also improves overall reusability. You can imagine how much easier and faster this makes modeling! Thank you [Jelle](https://community.mendix.com/link/space/microflows/ideas/100), [Laurens](https://community.mendix.com/link/space/microflows/ideas/2159), [Christiaan](https://community.mendix.com/link/space/microflows/ideas/174), [Tim](https://community.mendix.com/link/space/studio-pro/ideas/1170), and [Christian](https://community.mendix.com/link/space/microflows/ideas/2323)! #### Using Associations with External Actions **Published OData services** now supports including associated objects when calling a microflow that is published as an OData action. When consuming these actions in a **Call External Action** activity, Studio Pro lets you select the associations that should be included in the action call. These associated objects are then included in the request to the **Consumed OData service**. If the service returns an object or a list of objects, you can also specify which associations you want to get back from the service. These associations can then be traversed using the **Retrieve** activity. If you call the published OData service using a REST client, you can nest the associated objects in the request body and use the `$expand` query parameter to control which associated objects should be returned in the response. #### Strict Mode for React Client For the React client, we are introducing a strict mode. Setting up access rules correctly can be a challenge. Strict mode helps make your app secure, even if its overlapping access rules are not set up perfectly. Strict mode ensures that entities are exclusively accessible as defined within your model through microflows, nanoflows, widgets, or pages. It restricts invoking certain client APIs through JavaScript Actions or via the browser's console. The following APIs for data manipulation or retrieval are restricted: `action`, `create`, `commit`, `remove`, `rollback`, and `get` (except by GUID or GUIDs). Moreover, your model is analyzed by Studio Pro to ensure that only entities within editable widgets can be saved during a save changes action. Fore more information, see [Strict Mode](https://docs.mendix.com/refguide/strict-mode/). #### Other New Features * Consumed OData services now support external enumerations that have reserved words as values. * In published OData services, you can now choose to publish a string attribute as an OData GUID. * You can now specify the service URL and proxy settings of a consumed OData service using a microflow. * You can now export the service feed, metadata and OpenAPI documents of a published OData service by right-clicking the service in the app explorer. * We introduced support for indexes in the offline databases for offline PWAs and Native Mobile. * Associations are automatically indexed. Attributes (or sets of attributes) can be indexed by configuring the index in the entity properties by checking the **Include in offline** checkbox. ### Managed Dependencies Improvements * We renamed the **Deployment** tab to **Dependencies** in the **App settings**. * We added an **Overview** section in the **Dependencies** tab of the **App settings**. In this section you can see all the configured dependencies in the application and you can see in which modules they are defined. * We added an **Managed Dependency Exclusions** section in the **Dependencies** tab of the **App settings**. In this section you can exclude managed dependencies from the app deployment. Use this if there are conflicts between dependencies in your application. * You can now configure exclusions for managed dependencies in the **Module Settings**. Using this feature you can exclude certain transitive dependencies from a managed dependency to fix conflicts and ensure these transitive dependencies will not be included in your project. ### Improvements * JavaScript actions now support optional parameters. This feature enhances flexibility and ensures backward compatibility of JavaScript actions by allowing new parameters to be added without breaking existing functionality. * In JavaScript actions, all parameter types can set to be required or not. If no argument is provided for an optional parameter, it defaults to undefined. You can handle optional parameters within the JavaScript action by checking if they are undefined, allowing you to assign default values or implement custom logic as needed. * In Java actions, optional parameters without mappings will no longer trigger a consistency error (CE0115). * We added an improvement (public beta) which allows you to use [partial application clones](https://docs.mendix.com/refguide/clone-type/) with Git instead of full clones. Partial clones download a minimum required set of data, making this method significantly faster than full clones when working with [large repositories](https://docs.mendix.com/refguide/troubleshoot-repository-size/). Through **Open app** settings or version control preferences, you can choose which cloning strategy to use for future cloning operations, such as downloading a new app or branch. * We added an improvement where if you use parameters in the body of a Consumed REST Request (beta), the parameters that are not defined yet get added automatically to the parameter tab with empty test values. * We optimized data retrieval in [Optimize for Network Load mode](https://docs.mendix.com/refguide/datasource-runtime/#optimize-for-network-load) even further. Entity paths in expressions now only retrieve the ID attributes of associated objects. * We fixed memory leaks that can happen while using a context menu. * We fixed memory leaks that happened when opening and closing page editors. * We aligned the icons of the Visual Builder for XPath Constraints with XPath Expression editor. * We moved the Visual Builder for XPath Constraints is now GA (it was in public beta). * Selection can now be modified by the CTRL or CMD key, either by a single click or by dragging a selection rectangle, allowing for more precise control in selecting elements in logic flow editors. * You can now convert the [reference set selector](https://docs.mendix.com/refguide/reference-set-selector/) widget to the combo box widget using the **Convert to combo box** context menu option. * We improved the OpenAPI document generated for a published OData service. The public documentation of published microflows is now included as the summary and description of the operation, rather than the path. This makes it appear in consumers such as Swagger UI. * We improved rendering performance on the logic editors when working with large documents. * We improved the query performance for inserts and updates on the offline database (both for PWA and native mobile). * We redesigned the **Toolbox** to give it the same look and feel for both Windows and macOS without changing the functionality. You can switch to the newer version by clicking **Edit** > **Preferences** > **New Features**. * We added support for the following languages: Telugu (India), Odia (India), Kannada (India), Malayalam (India). * We updated the version of .NET Runtime Studio Pro uses to version 8.0.6. * We added the option to define the return variable name for microflow and nanoflow calls. You can now give a name to the returned value of the nanoflow or microflow through the end event form. * We made several improvements to the microflow editor. When dragging microflow/nanoflow calls into a flow (including from the **App Explorer**), we now correctly set the parameters of the call. Setting the parameters of the call now also takes the names of the variables into account and will match them by name to the parameter when possible. Thank you Peter Mudde for this suggestion! * We aligned the pagination controls position of Data Grid 2 to the default bottom position while generating overview pages or converting from data grid to data grid 2. * We renamed menu item **Reverse Merge Changes ....** to **Revert a Commit…**. * We added the following additions to the [External Database Connector](https://docs.mendix.com/appstore/modules/external-database-connector/): * GA for Snowflake connection * Support for connecting to Snowflake using Key-Pair Authentication * Passing NULL values to parameters * Connection detail constants are now saved in the active configuration of the user * Passwords and private keys are now stored as private values * Queries in the **Database Connection** document are mergeable * Logging for the **Database Connection** document * Improved Oracle connection string generation (for design time) If you upgrade your app containing **External Database Connector** version 2.0.1 or below it will have compatibility issues which prevent you from building and deploying the app in Mendix version 10.12. To fix this, you will need to get **External Database Connector** version 3.0.0 or above from the Marketplace. ### Fixes * We fixed a [known issue](https://docs.mendix.com/releasenotes/studio-pro/10.3/#ki-workflow-parameter) where the workflow's user task was not passed correctly as a parameter to the user task's microflow decision method. * We fixed an issue in **Message Definition** where refreshing from schema did not update the attribute type. (Ticket 180156) * We fixed an issue where the **Marketplace** pane in Studio Pro did not retain its position upon reopening Studio Pro. (Ticket 207933) * We fixed an issue where retrieving more than 1000 objects together with a specialization of an associated entity returned incomplete results. (Ticket 211813) * We added a check so that reimported modules only keep database IDs for attributes when a generalization of the entity remains in place. (Ticket 212565) * We fixed an issue where long text in the design properties definition file caused the styling pane to stretch. (Ticket 214953) * We fixed an issue which occured when starting an app containing a consumed OData service that retrieves headers from a microflow. This logged an error that the headers microflow could not be found. (Ticket 214979) * We fixed an issue in the Workflow Engine that caused the Mendix Runtime Server to run out of memory after deploying a new version of a workflow that had many decisions in it. (Ticket 215232) * We fixed an issue with searching in protected modules. (Ticket 216100) * We fixed an issue that caused design properties to sometimes apply a change to the wrong widget. (Ticket 216125) * We fixed an issue in the CORS configuration of published REST services. Specifying `*` for allowed origins now allows all origins. (Ticket 216564) * We fixed the positioning of objects when dragging large objects onto flows in the logic editors. * We fixed an issue where selection was lost in the **Message definition** tree view when the stored name no longer matches with the entity name in the domain model. * We fixed an issue when updating a consumed OData contract where a non-readable entity becomes a readable entity. Resolving this consistency error leaded to an error when one of the attributes had been deleted as well. * We fixed the workflow's user task to also validate its completion criteria on retry. * We fixed the user task in workflows to only send a single **UserTaskStarted** event when microflow is used as the [decision method](https://docs.mendix.com/refguide/multi-user-task/#decision-method) to complete the task. * We fixed an issue that caused an **Oops** dialog when opening a published OData service that publishes deleted entities. * We are now showing system members in the right-hand dropdown of the XPath Visual Builder. This fixes an issue where in certain scenarios the Visual Builder for XPath Constraints showed an **Oops** dialog for an expression comparison containing system members. We also fixed an issue where toggling to the Expression Editor from the Visual Builder and back sometimes suddenly showed an **Advanced XPath** error when using system members in the XPath expression. * The Column attribute selector of Data Grid 2 no longer shows an error when selecting **None**. * We made some performance improvements when checking whether the running app can be updated without stopping it first. * We fixed an exception that was thrown in the MPR tool when editing a metadata. * We fixed an issue where using a microflow variable of type DateTime in an XPath expression (particularly `[$var = empty]`) failed on PostgreSQL with the exception "could not determine data type of parameter". * We fixed an issue in the logic editors where a wrong preview is shown and an error occurs when dragging and dropping an unexpected object onto the editor. * We fixed an issue in the logic editors where dragging and dropping objects onto flows sometimes did not work. * We have fixed an issue in the logic editors where dragging a microflow from the **Integration** pane onto the canvas and cancelling the dialog to add necessary entities to the domain model resulted failed to clean up the created **Call Microflow** activity. * In the microflow editor, we fixed the caption of **Export to XML/JSON** actions. * We fixed an error in the logic editors where pressing and holding the middle mouse button to scroll only worked on an empty space of the working area. * We fixed an issue in the logic editors where the iterator variable name for loops was incorrectly named. * We fixed an issue in the logic editors where sometimes a double-click on Logic Recommender items would open the microflow properties dialog. * We fixed an issue where the "Java Development Kit (JDK) version was not determined." was incorrectly shown when selecting a JDK in Studio Pro's **Preferences**. * We fixed an issue where building failed if the app path contained quotes. * We fixed an issue in published OData services in Studio Pro where deleting a published entity used as a parameter of a published microflow resulted in an error pop-up window. It now results in a consistency error. * We fixed an error which occurred when a new line was a part of the parameter value in the **Query External Database** activity. ### Deprecations * We deprecated the [Email Module](https://apidocs.rnd.mendix.com/9/runtime/com/mendix/modules/email/EmailModule.html) from public API. It is recommended to use the [Email Connector](https://marketplace.mendix.com/link/component/120739) instead. ### Known Issues * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](https://docs.mendix.com/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](https://docs.mendix.com/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](https://docs.mendix.com/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. * Studio Pro on Mac loads user settings from the previous version of the application. * When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules