From 07c412898c4df0da8aff6ebdd251a34327b015d1 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 22 May 2023 15:38:29 +0200 Subject: [PATCH 001/232] Update _index.md --- .../refguide/modeling/integration/machine-learning-kit/_index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/en/docs/refguide/modeling/integration/machine-learning-kit/_index.md b/content/en/docs/refguide/modeling/integration/machine-learning-kit/_index.md index 500c2776da6..04c6b547293 100644 --- a/content/en/docs/refguide/modeling/integration/machine-learning-kit/_index.md +++ b/content/en/docs/refguide/modeling/integration/machine-learning-kit/_index.md @@ -6,7 +6,6 @@ weight: 90 tags: ["studio pro", "machine learning", "ml kit", "models", "integration"] #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- -{{% alert color="info" %}}Machine learning model support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} ## 1 Introduction From 8bc6f8481f0926194f07cda9048fcf888a04b97c Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Tue, 23 May 2023 12:40:30 +0200 Subject: [PATCH 002/232] Remove more references --- .../activities/ml-kit-activities/_index.md | 1 - .../activities/ml-kit-activities/call-ml-model.md | 2 -- .../integration/machine-learning-kit/design-patterns/_index.md | 1 - .../design-patterns/advanced-inference-patterns.md | 1 - .../design-patterns/pre-post-processor-patterns.md | 1 - .../machine-learning-kit/pretrained-ml-models/_index.md | 2 -- .../integration/machine-learning-kit/using-ml-kit/_index.md | 1 - .../using-ml-kit/logistic-regression-example.md | 1 - 8 files changed, 10 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/ml-kit-activities/_index.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/ml-kit-activities/_index.md index 6846cfa52e9..8c8fbb294a6 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/ml-kit-activities/_index.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/ml-kit-activities/_index.md @@ -4,7 +4,6 @@ url: /refguide/ml-kit-activities/ weight: 82 tags: ["studio pro"] --- -{{% alert color="info" %}}[Machine learning model](/refguide/machine-learning-kit/) support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} ## 1 Introduction diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/ml-kit-activities/call-ml-model.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/ml-kit-activities/call-ml-model.md index 3eeecabe927..4a89f5b600d 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/ml-kit-activities/call-ml-model.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/ml-kit-activities/call-ml-model.md @@ -5,8 +5,6 @@ weight: 45 tags: ["ml kit", "call model", "ML microflow", "machine learning", "models"] --- -{{% alert color="info" %}}[Machine learning model](/refguide/machine-learning-kit/) support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} - {{% alert color="warning" %}} These activities can only be used in **Microflows**. {{% /alert %}} diff --git a/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/_index.md b/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/_index.md index 9261751cd11..4afdd42825e 100644 --- a/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/_index.md +++ b/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/_index.md @@ -7,7 +7,6 @@ description_list: true weight: 35 tags: ["studio pro", "machine learning", "ml kit", "models"] --- -{{% alert color="info" %}}[Machine learning model](/refguide/machine-learning-kit/) support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} ## 1 Introduction diff --git a/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/advanced-inference-patterns.md b/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/advanced-inference-patterns.md index 15e5bca6ceb..5d2fce6d7fd 100644 --- a/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/advanced-inference-patterns.md +++ b/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/advanced-inference-patterns.md @@ -6,7 +6,6 @@ weight: 35 tags: ["studio pro", "machine learning", "ml kit", "models", "design patterns"] #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- -{{% alert color="info" %}}[Machine learning model](/refguide/machine-learning-kit/) support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} ## 1 Introduction diff --git a/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/pre-post-processor-patterns.md b/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/pre-post-processor-patterns.md index 96d2a8180a0..2419a78b9a0 100644 --- a/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/pre-post-processor-patterns.md +++ b/content/en/docs/refguide/modeling/integration/machine-learning-kit/design-patterns/pre-post-processor-patterns.md @@ -6,7 +6,6 @@ weight: 35 tags: ["studio pro", "machine learning", "ml kit", "models", "design patterns"] #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- -{{% alert color="info" %}}[Machine learning model](/refguide/machine-learning-kit/) support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} ## 1 Introduction diff --git a/content/en/docs/refguide/modeling/integration/machine-learning-kit/pretrained-ml-models/_index.md b/content/en/docs/refguide/modeling/integration/machine-learning-kit/pretrained-ml-models/_index.md index 69634f381c3..ef9cf2b83ab 100644 --- a/content/en/docs/refguide/modeling/integration/machine-learning-kit/pretrained-ml-models/_index.md +++ b/content/en/docs/refguide/modeling/integration/machine-learning-kit/pretrained-ml-models/_index.md @@ -6,8 +6,6 @@ weight: 20 tags: ["studio pro", "machine learning", "ml kit", "models", "integration"] --- -{{% alert color="info" %}}Machine learning model support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} - ## 1 Introduction The ONNX community provides an ML model repository, called [ONNX Model Zoo](https://github.com/onnx/models), where common computer vision and language models can be found. The [ONNX Model Zoo](https://github.com/onnx/models) is a collection of pre-trained, state-of-the-art models in the ONNX format contributed by community members. Accompanying each model are Jupyter notebooks for model training and running inference with the trained model. The notebooks are written in Python and include links to the training dataset, as well as references to the original paper that describes the model architecture. All the ONNX models in the ONNX Zoo should be compatible with the *Mendix ML Kit*. You can pick up any model from this repository, customize it with your own data and integrate it in your Mendix app using the *ML Kit*. diff --git a/content/en/docs/refguide/modeling/integration/machine-learning-kit/using-ml-kit/_index.md b/content/en/docs/refguide/modeling/integration/machine-learning-kit/using-ml-kit/_index.md index 7bda3057bf6..afe0db83551 100644 --- a/content/en/docs/refguide/modeling/integration/machine-learning-kit/using-ml-kit/_index.md +++ b/content/en/docs/refguide/modeling/integration/machine-learning-kit/using-ml-kit/_index.md @@ -6,7 +6,6 @@ weight: 15 tags: ["studio pro", "machine learning", "ml kit", "models", "integration"] #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- -{{% alert color="info" %}}Machine learning model support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} ## 1 Introduction diff --git a/content/en/docs/refguide/modeling/integration/machine-learning-kit/using-ml-kit/logistic-regression-example.md b/content/en/docs/refguide/modeling/integration/machine-learning-kit/using-ml-kit/logistic-regression-example.md index d316fa13f46..18e22cf538c 100644 --- a/content/en/docs/refguide/modeling/integration/machine-learning-kit/using-ml-kit/logistic-regression-example.md +++ b/content/en/docs/refguide/modeling/integration/machine-learning-kit/using-ml-kit/logistic-regression-example.md @@ -5,7 +5,6 @@ category: Using ML Kit weight: 20 tags: ["studio pro", "machine learning", "ml kit", "models", "integration", "example", "logistic regression"] --- -{{% alert color="info" %}}Machine learning model support is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} ## 1 Introduction From ca87393f51bc19bdcd92ebe572eab9ad31644bd4 Mon Sep 17 00:00:00 2001 From: Nick Gavrikov Date: Tue, 30 May 2023 16:51:52 +0200 Subject: [PATCH 003/232] Restructured existing commands --- .../refguide/general/mx-command-line-tool.md | 388 ------------------ .../general/mx-command-line-tool/_index.md | 54 +++ .../mx-command-line-tool/adaptable/_index.md | 40 ++ .../adaptable/set-app-version.md | 45 ++ .../adaptable/show-app-version.md | 46 +++ .../mx-command-line-tool/app/_index.md | 12 + .../mx-command-line-tool/app/mx-check.md | 70 ++++ .../mx-command-line-tool/app/mx-convert.md | 59 +++ .../app/mx-create-project.md | 47 +++ .../app/mx-show-version.md | 48 +++ .../mx-command-line-tool/export/_index.md | 11 + .../mx-command-line-tool/merging/_index.md | 11 + .../mx-command-line-tool/merging/mx-merge.md | 49 +++ .../mx-command-line-tool/module/_index.md | 19 + .../module/set-module-version.md | 40 ++ .../module/show-module-version.md | 41 ++ 16 files changed, 592 insertions(+), 388 deletions(-) delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/_index.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/adaptable/_index.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/adaptable/set-app-version.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/adaptable/show-app-version.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/_index.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/mx-check.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/mx-convert.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/mx-create-project.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/mx-show-version.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export/_index.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merging/_index.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/module/_index.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/module/set-module-version.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool.md b/content/en/docs/refguide/general/mx-command-line-tool.md deleted file mode 100644 index 2e1415cb4bf..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool.md +++ /dev/null @@ -1,388 +0,0 @@ ---- -title: "mx Command-Line Tool" -url: /refguide/mx-command-line-tool/ -category: "General Info" -weight: 50 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] ---- - -## 1 Introduction - -The **mx tool** is a Windows and Linux command-line tool that can be used to perform various actions on a Mendix app. - -## 2 Location - -Mendix Studio Pro comes with the mx command-line tool. The executable *mx.exe* file can be found in the same folder that contains `studiopro.exe` (for example, *C:\Program Files\Mendix\10.0.0.5003\modeler\mx.exe*). - -## 3 mx Tool Options - -The mx tool performs the commands described below. - -### 3.1 mx convert Command - -The `mx convert` command converts the app(s) MPK file(s) to a specific Studio Pro version. For example, if you are using the mx command-line tool for Studio Pro version 10.0.0.5003, `mx convert` will convert the app to that version. - -The input can be a single file, directory, or multiple files. - -{{% alert color="info" %}} -The mx tool can only upgrade your app; you cannot use it to downgrade the version. -{{% /alert %}} - -#### 3.1.1 Usage - -Use the following command pattern for `mx convert`: - -`mx convert [OPTIONS] INPUT... OUTPUT` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| --- | --- | --- | -| `--help` | `-h` | Displays the help text and exits. | -| `--in-place` | `-p` | Converts the current app directory. Use this option to convert a folder containing a Mendix app. Otherwise, `mx convert` will convert *.mpk* files. | -| `--skip-error-check` | `-s` | Does not check for errors. Use this option to disable app error-checking during the conversion. When omitted, the tool will report on the number of errors, warnings, and deprecations in the app and do the conversion. | - -For `INPUT...`, enter one or more *.mpk* files or one directory that needs to be converted. - -For `OUTPUT`, enter the output location for the converted results. Mind the following: - -* When `INPUT...` is a single file, `OUTPUT` can be a single file or directory; otherwise, `OUTPUT` must be a directory. -* When using the `--in-place` option, the `INPUT...` folder will also be used as the `OUTPUT` folder, so you do not need to specify a separate `OUTPUT` folder - -#### 3.1.2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx convert --in-place C:\MxProjects\App-main` | Converts the app in folder `C:\MxProjects\App-main` to the specific Studio Pro version which the mx tool is bundled with. | -| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the *C:\Mendix\* folder and puts the results in the `C:\Mendix\ConvertedProjects\` folder. | -| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all app packages in the `C:\Mendix\Packages\` folder to the `C:\Mendix\ConvertedPackages\` folder without checking for errors. | - -#### 3.1.3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The conversion was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | -| 3 | Converting failed. | - -### 3.2 mx create-project Command - -The `mx create-project` command creates a new app in Studio Pro. The app version depends on the version the tool was bundled with. For example, if you are using the mx tool for Studio Pro version 10.0.0.5003, `mx create project` will create a new app in that version. - -#### 3.2.1 Usage - -Use the following command pattern: `mx create-project [OPTIONS] [TEMPLATE-MPK-FILE]` - -The `OPTIONS` are described in the table below: - -| Option | Default Value | Result | -| --- | --- | --- | -| `app-name` | App | Assigns the specified app name to the app. | -| `output-dir` | Current directory | The directory in which to create the app. | -| `language-code` | en_US | The default language of the app. | -| `sprintr-app-id` | Optional | Associates the app [feedback features](/developerportal/collaborate/feedback/) with the provided [Developer Portal app](/developerportal/#my-apps). The value is a GUID. When accessing the app in the Developer Portal, this ID can be found in the browser's URL (for example, `1a428ea7-b00e-4166-9b23-20b7be88a40e`). | - -`TEMPLATE-MPK-FILE` is an optional path to a Mendix app package (*.mpk*) file. If this argument is omitted, the app is created with a default empty project template. - -#### 3.2.2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx create-project` | Creates an app in the current folder using all the default parameters. | -| `mx create-project --app-name MyFirstApp --output-dir C:\Projects\MyFirstApp` | Creates an app named `MyFirstApp` in the *C:\Projects\MyFirstApp* folder using all the default parameters. | -| `mx create-project C:\Templates\ExpenseReportTemplate.mpk` | Creates an app with the default parameters from a template located at *C:\Templates\ExpenseReportTemplate.mpk*. | - -#### 3.2.3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The app creation was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | - -### 3.3 mx check Command {#check} - -The `mx check` command checks the app MPR file for issues such as Errors, Warnings, Deprecations, or Performance Recommendations. - -{{% alert color="info" %}} -The MPR file must be the same version as mx. -{{% /alert %}} - -#### 3.3.1 Usage - -Use the following command pattern for `mx check`: - -`mx check [OPTIONS] INPUT [Optional path to exported Suppress Warnings file (JSON)]` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ---------------- | -------- | ------------------------------------------------------------ | -| `--help` | `-h` | Displays the help text and exits. | -| `--warnings` | `-w` | Include warnings in the output | -| `--deprecations` | `-d` | Include deprecations in the output | -| `--performance` | `-p` | Include performance checks in the output (performance recommendations are only output if there are no errors) | - -{{% alert color="info" %}} -Errors in the MPR are always reported. -{{% /alert %}} - -For `INPUT`, enter a single *.mpr* file. - -You can optionally specify the path to an exported Suppress Warnings file (JSON file). This means that `mx check -w` will use the list of suppressed warnings in the JSON file, instead of the default behavior which is to read from the *project-settings.user.json* file in the app directory. - -#### 3.3.2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| `mx check --help` | Displays the help text for the check command. | -| `mx check C:\MxProjects\App-main\App-main.mpr` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors. | -| `mx check C:\MxProjects\App-main\App-main.mpr -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and performance recommendations. | -| `mx check C:\MxProjects\App-main\App-main.mpr --warnings --deprecations` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, and deprecations. Suppressed warnings will be read from the *project-settings.user.json* file within the app directory. | -| `mx check C:\MxProjects\App-main\App-main.mpr c:\MxFiles\my-exported-suppressed-warnings.json --warnings` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and warnings. Suppressed warnings will be read from the JSON file *my-exported-suppressed-warnings.json*. | -| `mx check C:\MxProjects\App-main\App-main.mpr -w -d -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, deprecations, and performance recommendations. | - -#### 3.3.3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| ----------- | --------------------------------------- | -| 0 | No issues found. | -| 1 | Errors were found. | -| 2 | Warnings were found. | -| 4 | Deprecations were found. | -| 8 | Performance recommendations were found. | - -Those values are logically OR combined to indicate when there are a mix of errors, warnings, deprecations, or performance recommendations. - -For example: - -* 3 if errors and warnings found -* 7 if errors, warnings, and deprecations found - -### 3.4 mx show-version Command - -The `mx show-version` command reports which version of Studio Pro was used last time the app was opened. - -The input is a single MPR file. - -{{% alert color="info" %}} -The MPR file must be the same version as mx. -{{% /alert %}} - -#### 3.4.1 Usage - -Use the following command pattern for `mx show-version`: - -`mx show-version [OPTIONS] INPUT` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| --- | --- | --- | -| `--help` | `-h` | Displays the help text and exits. | - -For `INPUT`, enter a *.mpr* file. - -#### 3.4.2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx show-version --help` | Displays the help text for the `show-version` command. | -| `mx show-version C:\Mendix\App1\App1.mpr` | Displays the version of Studio Pro that was last used to open the app. | - -#### 3.4.3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The command ran successfully. | - -### 3.5 mx merge Command - -The mx merge command performs a three-way merge of two MPR files having a common base commit. - -The input is three MPR files: base, mine, and theirs - -#### 3.5.1 Usage - -Use the following command pattern for `mx merge`: - -`mx merge [OPTIONS] BASE MINE THEIRS` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| -------- | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -`BASE` is common base commit. - -`MINE` is the version to merge into; this MPR contains the results of the merge. - -`THEIRS` is the version to merge changes from. - -#### 3.5.2 Conflicts - -If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro. - -#### 3.5.3 Examples - -`mx merge C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr C:\MyApp-FeatureBranch\MyApp.mpr` - -#### 3.5.4 Return Codes - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | Merge is successful, there are no conflicts. *MINE.mpr* contains the result of the merge. | -| 1 | The command is invalid, check input parameters. | -| 2 | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | -| 3 | This code means an exception – an error occurred during the merge. Error details are printed to the command line output. | -| 4 | The version is unsupported. | - -### 3.6 mx show-app-version Command - -The mx show-app-version command allows you to see the [publisher-side](/appstore/creating-content/sol-solutions-guide/) version of your solution (meaning, the version of the solution that you develop) and the [consumer-side](/appstore/creating-content/sol-solutions-impl/) version of the solution package that your app is based on (meaning, the version of the solution package when you consumed the solution). - -#### 3.6.1 Usage - -Use the following command pattern for `mx show-app-version`: - -`mx show-app-version MPR-FILE [OPTIONS]` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ------------ | -------- | --------------------------------- | -| `--based-on` | `-b` | Show `Based on` version. | -| `--help` | `-h` | Displays the help text and exits. | - -For MPR-FILE enter a *.mpr* file. - -`Based on` version is a version of a solution package (.mxsolution) current App is based on. - -#### 3.6.2 Examples - -`mx show-app-version C:\MyApp\MyApp.mpr` - -`mx show-app-version C:\MyApp\MyApp.mpr -b` - -#### 3.6.3 Return Codes - -This command uses common format exit codes for all app-version related commands. - -The command outputs a version requested. If there is no errors, exit code is 0. - -In case of errors the exit code consists of three digits XYZ: - -**X:** determines the error type: - - 1: Parameter validation error. - - 2: Output-related error. - - 3: Errors related to the execution of the operation. - -**Y:** is the number of the parameter the error is related to (if applicable). - -**Z:** determines the following error details: - - 1: File not found. - - 2: App is too old. - - 3: Distribution is not enabled. - - 4: Version is not in the SemVer format. - - 5: App was not initialized from a solution package. - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | No errors | -| 315 | if -b was specified but the app is not based on a solution. | -| 313 | if -b was not specified but distribution as a solution is not enabled for the app. | - -### 3.7 mx set-app-version Command - -The mx set-app-version command allows you to set the version of your [solution when building it](/appstore/creating-content/sol-solutions-guide/). - -#### 3.7.1 Usage - -Use the following command pattern for `mx set-app-version`: - -`mx set-app-version MPR-FILE VERSION` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| -------- | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -For MPR-FILE enter a *.mpr* file. - -For VERSION enter a version in [SemVer](https://semver.org) format - -#### 3.7.2 Examples - -`mx set-app-version C:\MyApp\MyApp.mpr 1.2.3` - -#### 3.7.3 Return Codes - -This command uses common format exit codes for all app-version related commands. - -The command outputs a version requested. If there is no errors, exit code is 0. - -In case of errors the exit code consists of three digits XYZ: - -**X:** determines the error type: - - 1: Parameter validation error. - - 2: Output-related error. - - 3: Errors related to the execution of the operation. - -**Y:** is the number of the parameter the error is related to (if applicable). - -**Z:** determines error details: - - 1: File is not found. - - 2: App is too old. - - 3: Distribution is not enabled. - - 4: Version is not in the SemVer format. - - 5: App was not initialized from a solution package. - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | -------------------------------------------------------- | -| 0 | No errors | -| 124 | if Version is not in SemVer format | -| 313 | if Distribution as a solution is not enabled for the app | - -### 3.8 Undocumented Options - -The mx tool contains options that are not described in this document. Those are for internal Mendix usage and are not officially supported. This might change in the future, but these options can be used only at your own risk. diff --git a/content/en/docs/refguide/general/mx-command-line-tool/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/_index.md new file mode 100644 index 00000000000..1e0c6d17083 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/_index.md @@ -0,0 +1,54 @@ +--- +title: "mx Command-Line Tool" +url: /refguide/mx-command-line-tool/ +category: "General Info" +weight: 50 +description: "Describes the options of the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +--- + +## 1 Introduction + +The **mx tool** is a Windows and Linux command-line tool that can be used to perform various actions on a Mendix app. + +## 2 Location + +Mendix Studio Pro comes with the mx command-line tool. The executable *mx.exe* file can be found in the same folder that contains `studiopro.exe` (for example, *C:\Program Files\Mendix\10.0.0.5003\modeler\mx.exe*). + +## 3 Available commands + +| [**App commands**](/refguide/mx-command-line-tool/app) | App commands | +| - | - | +| [check](/refguide/mx-command-line-tool/mx-check) | Check the app for issues | +| [convert](/refguide/mx-command-line-tool/mx-convert) | Convert Mendix app | +| [create-project](/refguide/mx-command-line-tool/mx-create-project) | Create a new Mendix app | +| [show-version](/refguide/mx-command-line-tool/mx-show-version) | Show the version of Studio Pro that was last used to edit the app | + +| [**Adaptable solutions commands**](/refguide/mx-command-line-tool/adaptable) || +| - | - | +| [show-app-version](/refguide/mx-command-line-tool/mx-show-version) | Show the Application Version of the app | +| [set-app-version](/refguide/mx-command-line-tool/mx-set-app-version) | Sets the Application Version of the app | + +| [**Module commands**](/refguide/mx-command-line-tool/module) || +|-|-| +| [show-module-version](/refguide/mx-command-line-tool/mx-show-module-version) | Show the version of the module specified | +| [set-module-version](/refguide/mx-command-line-tool/mx-set-module-version) | Set the version of the module specified | + +| [**Export package commands**](/refguide/mx-command-line-tool/export) || +| - | - | +| create-project-package | Export a project package | +| create-solution-package | Export a solution package | +| create-module-package | Export a module package | + +| **Merging and diffing** || +| - | - | +| merge | Merge mpr files | +| diff | Diff mpr files | + +## 4 mx Tool Options + +The mx tool has `--help` option that outputs all the commands available. + +## 5 Undocumented Options + +The mx tool contains options that are not described in this document. Those are for internal Mendix usage and are not officially supported. This might change in the future, but these options can be used only at your own risk. \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/_index.md new file mode 100644 index 00000000000..9caeb18a060 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/_index.md @@ -0,0 +1,40 @@ +--- +title: "Adaptable solution commands" +url: /refguide/mx-command-line-tool/adaptable +category: "General Info" +weight: 20 +description: "Describes the commands related to adaptable solutions." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "solution"] +--- + +The commands in this group are related to [Adaptable solutions](http://localhost:1313/appstore/creating-content/sol-solutions-guide/) . + +These commands use common format exit codes. + +Commands return 0 in case of success. + +In case of errors the exit code consists of three digits XYZ: + +**X:** determines the error type: + + 1: Parameter validation error. + + 2: Output-related error. + + 3: Errors related to the execution of the operation. + +**Y:** is the number of the parameter the error is related to (if applicable). + +**Z:** determines error details: + + 1: File is not found. + + 2: App is too old. + + 3: Distribution is not enabled. + + 4: Version is not in the SemVer format. + + 5: App was not initialized from a solution package. + +Please refer to the specific commands pages for exit code examples \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/set-app-version.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/set-app-version.md new file mode 100644 index 00000000000..77c4667c1e7 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/set-app-version.md @@ -0,0 +1,45 @@ +--- +title: "mx set-app-version Command" +linktitle: "set-app-version" +url: /refguide/mx-command-line-tool/mx-set-app-version +category: "General Info" +weight: 20 +description: "Describes the mx set-app-version command." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "check"] +--- + +The mx set-app-version command allows you to set the version of your [solution](/appstore/creating-content/sol-solutions-guide/) when building it. + +## 1 Usage + +Use the following command pattern for `mx set-app-version`: + +`mx set-app-version MPR-FILE VERSION` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| -------- | -------- | --------------------------------- | +| `--help` | `-h` | Displays the help text and exits. | + +For MPR-FILE enter a *.mpr* file. + +For VERSION enter a version in [SemVer](https://semver.org) format + +## 2 Examples + +`mx set-app-version C:\MyApp\MyApp.mpr 1.2.3` + +## 3 Return Codes + + This command uses [common format exit codes](/refguide/mx-command-line-tool/adaptable/) for all app-version related commands. + + The table below shows return codes and their meaning: + +| Return Code | Description | +| ----------- | -------------------------------------------------------- | +| 0 | No errors | +| 124 | if Version is not in SemVer format | +| 313 | if Distribution as a solution is not enabled for the app | + + diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/show-app-version.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/show-app-version.md new file mode 100644 index 00000000000..b6c228899da --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/show-app-version.md @@ -0,0 +1,46 @@ +--- +title: "mx show-app-version Command" +linktitle: "show-app-version" +url: /refguide/mx-command-line-tool/mx-show-app-version +category: "General Info" +weight: 10 +description: "Describes the mx show-app-version command." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "check"] +--- + +The mx show-app-version command allows you to see the [publisher-side](/appstore/creating-content/sol-solutions-guide/) version of your solution (meaning, the version of the solution that you develop) and the [consumer-side](/appstore/creating-content/sol-solutions-impl/) version of the solution package that your app is based on (meaning, the version of the solution package when you consumed the solution). + +## 1 Usage + +Use the following command pattern for `mx show-app-version`: + +`mx show-app-version MPR-FILE [OPTIONS]` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| ------------ | -------- | --------------------------------- | +| `--based-on` | `-b` | Show `Based on` version. | +| `--help` | `-h` | Displays the help text and exits. | + +For MPR-FILE enter a *.mpr* file. + +`Based on` version is a version of a solution package (.mxsolution) current App is based on. + +## 2 Examples + +`mx show-app-version C:\MyApp\MyApp.mpr` + +`mx show-app-version C:\MyApp\MyApp.mpr -b` + +## 3 Return Codes + + This command uses [common format exit codes](/refguide/mx-command-line-tool/adaptable/) for all app-version related commands. + + The table below shows return codes and their meaning: + +| Return Code | Description | +| ----------- | ------------------------------------------------------------ | +| 0 | No errors | +| 315 | if -b was specified but the app is not based on a solution. | +| 313 | if -b was not specified but distribution as a solution is not enabled for the app. | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md new file mode 100644 index 00000000000..af8b44144bd --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md @@ -0,0 +1,12 @@ +--- +title: "App commands" +url: /refguide/mx-command-line-tool/app +category: "General Info" +weight: 10 +description: "Describes the app related commands." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +--- + +The commands in this group are related to Mendix App creation, checking, versioning and conversion. + +Typically these commands require a path to the MPR file as a parameter. diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-check.md b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-check.md new file mode 100644 index 00000000000..5247ec513eb --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-check.md @@ -0,0 +1,70 @@ +--- +title: "mx check Command" +linktitle: "check" +url: /refguide/mx-command-line-tool/mx-check +category: "General Info" +weight: 40 +description: "Describes the options of the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "check"] +--- + +The `mx check` command checks the app MPR file for issues such as Errors, Warnings, Deprecations, or Performance Recommendations. + +{{% alert color="info" %}} +The MPR file must be the same version as mx. +{{% /alert %}} + +## 1 Usage + +Use the following command pattern for `mx check`: + +`mx check [OPTIONS] INPUT [Optional path to exported Suppress Warnings file (JSON)]` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| ---------------- | -------- | ------------------------------------------------------------ | +| `--help` | `-h` | Displays the help text and exits. | +| `--warnings` | `-w` | Include warnings in the output | +| `--deprecations` | `-d` | Include deprecations in the output | +| `--performance` | `-p` | Include performance checks in the output (performance recommendations are only output if there are no errors) | + +{{% alert color="info" %}} +Errors in the MPR are always reported. +{{% /alert %}} + +For `INPUT`, enter a single *.mpr* file. + +You can optionally specify the path to an exported Suppress Warnings file (JSON file). This means that `mx check -w` will use the list of suppressed warnings in the JSON file, instead of the default behavior which is to read from the *project-settings.user.json* file in the app directory. + +## 2 Examples + +Examples of commands are described in the table below: + +| Example | Result | +| ------------------------------------------------------------ | ------------------------------------------------------------ | +| `mx check --help` | Displays the help text for the check command. | +| `mx check C:\MxProjects\App-main\App-main.mpr` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors. | +| `mx check C:\MxProjects\App-main\App-main.mpr -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and performance recommendations. | +| `mx check C:\MxProjects\App-main\App-main.mpr --warnings --deprecations` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, and deprecations. Suppressed warnings will be read from the *project-settings.user.json* file within the app directory. | +| `mx check C:\MxProjects\App-main\App-main.mpr c:\MxFiles\my-exported-suppressed-warnings.json --warnings` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and warnings. Suppressed warnings will be read from the JSON file *my-exported-suppressed-warnings.json*. | +| `mx check C:\MxProjects\App-main\App-main.mpr -w -d -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, deprecations, and performance recommendations. | + +## 3 Return Codes + +Return codes are described in the table below: + +| Return Code | Description | +| ----------- | --------------------------------------- | +| 0 | No issues found. | +| 1 | Errors were found. | +| 2 | Warnings were found. | +| 4 | Deprecations were found. | +| 8 | Performance recommendations were found. | + +Those values are logically OR combined to indicate when there are a mix of errors, warnings, deprecations, or performance recommendations. + +For example: + +* 3 if errors and warnings found +* 7 if errors, warnings, and deprecations found diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-convert.md b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-convert.md new file mode 100644 index 00000000000..977cc054a10 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-convert.md @@ -0,0 +1,59 @@ +--- +title: "mx convert Command" +linktitle: "convert" +url: /refguide/mx-command-line-tool/mx-convert +category: "General Info" +weight: 30 +description: "Describes the options of the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "convert"] +--- + +The `mx convert` command converts the app(s) MPK file(s) to a specific Studio Pro version. For example, if you are using the mx command-line tool for Studio Pro version 10.0.0.5003, `mx convert` will convert the app to that version. + +The input can be a single file, directory, or multiple files. + +{{% alert color="info" %}} +The mx tool can only upgrade your app; you cannot use it to downgrade the version. +{{% /alert %}} + +## 1 Usage + +Use the following command pattern for `mx convert`: + +`mx convert [OPTIONS] INPUT... OUTPUT` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | +| `--in-place` | `-p` | Converts the current app directory. Use this option to convert a folder containing a Mendix app. Otherwise, `mx convert` will convert *.mpk* files. | +| `--skip-error-check` | `-s` | Does not check for errors. Use this option to disable app error-checking during the conversion. When omitted, the tool will report on the number of errors, warnings, and deprecations in the app and do the conversion. | + +For `INPUT...`, enter one or more *.mpk* files or one directory that needs to be converted. + +For `OUTPUT`, enter the output location for the converted results. Mind the following: + +* When `INPUT...` is a single file, `OUTPUT` can be a single file or directory; otherwise, `OUTPUT` must be a directory. +* When using the `--in-place` option, the `INPUT...` folder will also be used as the `OUTPUT` folder, so you do not need to specify a separate `OUTPUT` folder + +## 2 Examples + +Examples of commands are described in the table below: + +| Example | Result | +| --- | --- | +| `mx convert --in-place C:\MxProjects\App-main` | Converts the app in folder `C:\MxProjects\App-main` to the specific Studio Pro version which the mx tool is bundled with. | +| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the *C:\Mendix\* folder and puts the results in the `C:\Mendix\ConvertedProjects\` folder. | +| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all app packages in the `C:\Mendix\Packages\` folder to the `C:\Mendix\ConvertedPackages\` folder without checking for errors. | + +## 3 Return Codes + +Return codes are described in the table below: + +| Return Code | Description | +| --- | --- | +| 0 | The conversion was successful. | +| 1 | An internal error occurred. | +| 2 | There is something wrong with the command-line options. | +| 3 | Converting failed. | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-create-project.md b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-create-project.md new file mode 100644 index 00000000000..d47477a05ab --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-create-project.md @@ -0,0 +1,47 @@ +--- +title: "mx create-project Command" +linktitle: "create-project" +url: /refguide/mx-command-line-tool/mx-create-project +category: "General Info" +weight: 10 +description: "Describes the options of the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project"] +--- + +The `mx create-project` command creates a new app in Studio Pro. The app version depends on the version the tool was bundled with. For example, if you are using the mx tool for Studio Pro version 10.0.0.5003, `mx create project` will create a new app in that version. + +## 1 Usage + +Use the following command pattern: `mx create-project [OPTIONS] [TEMPLATE-MPK-FILE]` + +The `OPTIONS` are described in the table below: + +| Option | Default Value | Result | +| --- | --- | --- | +| `app-name` | App | Assigns the specified app name to the app. | +| `output-dir` | Current directory | The directory in which to create the app. | +| `language-code` | en_US | The default language of the app. | +| `sprintr-app-id` | Optional | Associates the app [feedback features](/developerportal/collaborate/feedback/) with the provided [Developer Portal app](/developerportal/#my-apps). The value is a GUID. When accessing the app in the Developer Portal, this ID can be found in the browser's URL (for example, `1a428ea7-b00e-4166-9b23-20b7be88a40e`). | + +`TEMPLATE-MPK-FILE` is an optional path to a Mendix app package (*.mpk*) file. If this argument is omitted, the app is created with a default empty project template. + +## 2 Examples + +Examples of commands are described in the table below: + +| Example | Result | +| --- | --- | +| `mx create-project` | Creates an app in the current folder using all the default parameters. | +| `mx create-project --app-name MyFirstApp --output-dir C:\Projects\MyFirstApp` | Creates an app named `MyFirstApp` in the *C:\Projects\MyFirstApp* folder using all the default parameters. | +| `mx create-project C:\Templates\ExpenseReportTemplate.mpk` | Creates an app with the default parameters from a template located at *C:\Templates\ExpenseReportTemplate.mpk*. | + +## 3 Return Codes + +Return codes are described in the table below: + +| Return Code | Description | +| --- | --- | +| 0 | The app creation was successful. | +| 1 | An internal error occurred. | +| 2 | There is something wrong with the command-line options. | + diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-show-version.md b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-show-version.md new file mode 100644 index 00000000000..7f3e6362079 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-show-version.md @@ -0,0 +1,48 @@ +--- +title: "mx show-version Command" +linktitle: "show-version" +url: /refguide/mx-command-line-tool/mx-show-version +category: "General Info" +weight: 20 +description: "Describes the options of the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "show-version"] +--- + +The `mx show-version` command reports which version of Studio Pro was used last time the app was opened. + +The input is a single MPR file. + +{{% alert color="info" %}} +The MPR file must be the same version as mx. +{{% /alert %}} + +## 1 Usage + +Use the following command pattern for `mx show-version`: + +`mx show-version [OPTIONS] INPUT` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | + +For `INPUT`, enter a *.mpr* file. + +## 2 Examples + +Examples of commands are described in the table below: + +| Example | Result | +| --- | --- | +| `mx show-version --help` | Displays the help text for the `show-version` command. | +| `mx show-version C:\Mendix\App1\App1.mpr` | Displays the version of Studio Pro that was last used to open the app. | + +## 3 Return Codes + +Return codes are described in the table below: + +| Return Code | Description | +| --- | --- | +| 0 | The command ran successfully. | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md new file mode 100644 index 00000000000..15a086444c7 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md @@ -0,0 +1,11 @@ +--- +title: "Export package commands" +url: /refguide/mx-command-line-tool/export +category: "General Info" +weight: 50 +description: "Describes the commands related to packages export." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +--- + +Commands in this group allow you to export different kids of packages from your App. + diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merging/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/merging/_index.md new file mode 100644 index 00000000000..d0455728ace --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/merging/_index.md @@ -0,0 +1,11 @@ +--- +title: "Merging and diffing commands" +url: /refguide/mx-command-line-tool/merge +category: "General Info" +weight: 60 +description: "Describes the commands related to merging and diffng Apps." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +--- + +Commands in this group allow you compare 2 apps and merge them. + diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md new file mode 100644 index 00000000000..286efaf93b5 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md @@ -0,0 +1,49 @@ +--- +title: "mx merge Command" +linktitle: "merge" +url: /refguide/mx-command-line-tool/mx-merge +category: "General Info" +weight: 40 +description: "Describes the mx merge command." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "merge"] +--- + +The mx merge command performs a three-way merge of two MPR files having a common base commit. + +The input is three MPR files: base, mine, and theirs + +## 1 Usage + +Use the following command pattern for `mx merge`: + +`mx merge [OPTIONS] BASE MINE THEIRS` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| -------- | -------- | --------------------------------- | +| `--help` | `-h` | Displays the help text and exits. | + +`BASE` is common base commit. + +`MINE` is the version to merge into; this MPR contains the results of the merge. + +`THEIRS` is the version to merge changes from. + +## 2 Conflicts + +If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro. + +## 3 Examples + +`mx merge C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr C:\MyApp-FeatureBranch\MyApp.mpr` + +## 4 Return Codes + +| Return Code | Description | +| ----------- | ------------------------------------------------------------ | +| 0 | Merge is successful, there are no conflicts. *MINE.mpr* contains the result of the merge. | +| 1 | The command is invalid, check input parameters. | +| 2 | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | +| 3 | This code means an exception – an error occurred during the merge. Error details are printed to the command line output. | +| 4 | The version is unsupported \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md new file mode 100644 index 00000000000..bda123d62a7 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md @@ -0,0 +1,19 @@ +--- +title: "Module commands" +url: /refguide/mx-command-line-tool/module +category: "General Info" +weight: 30 +description: "Describes the module related commands." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +--- + +The commands in this group are related to Mendix modules. + +Typically these commands require a path to the MPR file and Module name as parameters. + +The table below shows return codes of the commands in this group and their meaning: + +| Return Code | Description | +| ----------- | ------------------------------------------------------------ | +| 0 | No errors | +| 1 | If the module in question doesn't have a version | \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module/set-module-version.md b/content/en/docs/refguide/general/mx-command-line-tool/module/set-module-version.md new file mode 100644 index 00000000000..a51b5ec69cd --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/module/set-module-version.md @@ -0,0 +1,40 @@ +--- +title: "mx set-module-version Command" +linktitle: "set-module-version" +url: /refguide/mx-command-line-tool/mx-set-module-version +category: "General Info" +weight: 20 +description: "Describes the options of the mx set-module-version command-line tool command." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "set-module-version"] +--- + +The mx set-module-version command outputs the version of the module or the version of a module + +## 1 Usage + +Use the following command pattern for `mx set-module-version`: + +`mx set-module-version TARGET-FILE MODULE-NAME NEW-VERSION` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| ------------ | -------- | --------------------------------- | +| `--help` | `-h` | Displays the help text and exits. | + +For TARGET-FILE enter a *.mpr* file. +For MODULE-NAME enter the name of the module. +For NEW-VERSIOn enter a version in [SemVer](https://semver.org) format + +## 2 Examples + +`mx set-module-version C:\MyApp\MyApp.mpr MyFirstModule 1.2.3` + +## 3 Return Codes + + The table below shows return codes and their meaning: + +| Return Code | Description | +| ----------- | ------------------------------------------------------------ | +| 0 | No errors | +| 1 | If the module in question doesn't have a version | \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md b/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md new file mode 100644 index 00000000000..e54f3133c96 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md @@ -0,0 +1,41 @@ +--- +title: "mx show-module-version Command" +linktitle: "show-module-version" +url: /refguide/mx-command-line-tool/mx-show-module-version +category: "General Info" +weight: 10 +description: "Describes the options of the mx show-module-version command-line tool command." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "show-module-version"] +--- + +The mx show-module-verion command outputs the version of the module or the version of a module + +## 1 Usage + +Use the following command pattern for `mx show-module-version`: + +`mx show-module-version TARGET-FILE MODULE-NAME` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| ------------ | -------- | --------------------------------- | +| `--help` | `-h` | Displays the help text and exits. | + +For TARGET-FILE enter a *.mpr* file. +For MODULE-NAME enter the name of the module. + +## 2 Examples + +`mx show-module-version C:\MyApp\MyApp.mpr MyFirstModule` + +## 3 Return Codes + + The table below shows return codes and their meaning: + +| Return Code | Description | +| ----------- | ------------------------------------------------------------ | +| 0 | No errors | +| 1 | If the module in question doesn't have a version | + +The command will output the version of a module to the command line output. \ No newline at end of file From f791d0ec683a944d951725724ab291306429d4fb Mon Sep 17 00:00:00 2001 From: Nick Gavrikov Date: Wed, 31 May 2023 11:41:59 +0200 Subject: [PATCH 004/232] merge and diff --- .../mx-command-line-tool/merging/mx-diff.md | 46 ++++++++++++++++++ .../mx-command-line-tool/merging/mx-merge.md | 14 +++++- .../merging/mx-merge/merge.png | Bin 0 -> 22748 bytes 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merging/mx-diff.md create mode 100644 static/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-diff.md b/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-diff.md new file mode 100644 index 00000000000..c0b6a7ce293 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-diff.md @@ -0,0 +1,46 @@ +--- +title: "mx diff Command" +linktitle: "diff" +url: /refguide/mx-command-line-tool/mx-diff +category: "General Info" +weight: 40 +description: "Describes the mx diff command." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "diff"] +--- + +The `mx diff` command performs a diff of two MPR files and outputs the differences to a file in json format. + +## 1 Usage + +Use the following command pattern for `mx diff`: + +`mx diff [options] BASE MINE OUTPUT` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| -------- | -------- | --------------------------------- | +| `--help` | `-h` | Displays the help text and exits. | +| `--loose-version-check` | `-l` | Loose version check. i.e. auto-convert if possible before diffing. | + +`BASE` is the first MPR. This is used as a base in comparison. + +`MINE` is the second MPR. This is used as a changed version in comparison. The optput will contains the changes that are in this file against the base. +{{% alert color="info" %}}E.g. if BASE mpr has Microflow1 and MINE mpr doesn't have it, Mocroflow1 wil be listed as deleted in the output file. + +If you swap BASE and MINE parameters and compare again, Microflow1 will be listed as added.{{% /alert %}} + +`OUTPUT` is the name of output `json` file. + +## 2 Examples + +`mx diff C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr c:\comparison\output.json` + +## 3 Return Codes + +| Return code | Meaning | +| - | - | +| 0 | Ok | +| 2 | Conflicts were found during diff. | +| 3 | an error happened during the merge | +| 4 | the version of either MPR is not supported. | \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md index 286efaf93b5..b16672f102c 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md @@ -24,12 +24,24 @@ The `OPTIONS` are described in the table below: | -------- | -------- | --------------------------------- | | `--help` | `-h` | Displays the help text and exits. | -`BASE` is common base commit. +`BASE` is common base version of the App. If the app is version controlled, this is the last common revision of the app -- revision that is present in both branches history. `MINE` is the version to merge into; this MPR contains the results of the merge. `THEIRS` is the version to merge changes from. +The image below illustrates the meaning of the parameters: + +{{< figure src="/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png" alt="mx merge" >}} + +**A"** is MINE -- the current commit you want to merge the changes TO. + +**B'** is THEIRS -- the last commit on a branch you want to merge change FROM. + +**A** is BASE -- the common commit where branches diverged. + +In order to merge changes correctly Studio Pro has to compare both A" and B' againt A to see what has been changed on each branch. During the merge [Merge Algorithm](/refguide/merge-algorithm) will try to automatically merge the changes. + ## 2 Conflicts If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro. diff --git a/static/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png b/static/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png new file mode 100644 index 0000000000000000000000000000000000000000..f7aad3e75a867b0e1f6d4bc2215aff31ab9fee33 GIT binary patch literal 22748 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 literal 0 HcmV?d00001 From ef2d9ae9c9f28cd64eb1bb0fa863c7274ac6a33b Mon Sep 17 00:00:00 2001 From: Nick Gavrikov Date: Thu, 1 Jun 2023 10:56:08 +0200 Subject: [PATCH 005/232] Rename merge dir. Correct links --- .../en/docs/refguide/general/mx-command-line-tool/_index.md | 6 +++--- .../mx-command-line-tool/{merging => merge}/_index.md | 0 .../mx-command-line-tool/{merging => merge}/mx-diff.md | 0 .../mx-command-line-tool/{merging => merge}/mx-merge.md | 0 4 files changed, 3 insertions(+), 3 deletions(-) rename content/en/docs/refguide/general/mx-command-line-tool/{merging => merge}/_index.md (100%) rename content/en/docs/refguide/general/mx-command-line-tool/{merging => merge}/mx-diff.md (100%) rename content/en/docs/refguide/general/mx-command-line-tool/{merging => merge}/mx-merge.md (100%) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/_index.md index 1e0c6d17083..a709dbf5b50 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/_index.md @@ -40,10 +40,10 @@ Mendix Studio Pro comes with the mx command-line tool. The executable *mx.exe* f | create-solution-package | Export a solution package | | create-module-package | Export a module package | -| **Merging and diffing** || +| [**Merging and diffing**](/refguide/mx-command-line-tool/merge) || | - | - | -| merge | Merge mpr files | -| diff | Diff mpr files | +| [merge](/refguide/mx-command-line-tool/mx-merge) | Merge mpr files | +| [diff](/refguide/mx-command-line-tool/mx-diff) | Diff mpr files | ## 4 mx Tool Options diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merging/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md similarity index 100% rename from content/en/docs/refguide/general/mx-command-line-tool/merging/_index.md rename to content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-diff.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md similarity index 100% rename from content/en/docs/refguide/general/mx-command-line-tool/merging/mx-diff.md rename to content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md similarity index 100% rename from content/en/docs/refguide/general/mx-command-line-tool/merging/mx-merge.md rename to content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md From cac1aab0a45b7817c3030d6d8e60848c156a3d58 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 5 Jun 2023 10:21:22 +0200 Subject: [PATCH 006/232] Update --- .../partials/landingpage/product-cards.html | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/layouts/partials/landingpage/product-cards.html b/layouts/partials/landingpage/product-cards.html index 9b2667d4d20..35364562b36 100644 --- a/layouts/partials/landingpage/product-cards.html +++ b/layouts/partials/landingpage/product-cards.html @@ -1,32 +1,17 @@ -
@@ -40,6 +25,8 @@

+
+
@@ -53,9 +40,7 @@

-
-
- +
@@ -68,11 +53,26 @@

+
+
+ +

    From 876807bbc70e383adb8f2a136673c69f1861dbad Mon Sep 17 00:00:00 2001 From: Tim Bakx Date: Mon, 5 Jun 2023 14:34:35 +0200 Subject: [PATCH 007/232] Modify docs to match new ui for user tasks and multi-user tasks --- .../workflow-elements/multi-user-task.md | 226 +++++++++--------- .../workflows/workflow-elements/user-task.md | 134 +++++------ 2 files changed, 171 insertions(+), 189 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index 7b753e1afc8..0473a146d8f 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -2,12 +2,20 @@ title: "Multi-User Task" url: /refguide/multi-user-task/ weight: 30 -tags: ["workflow", "workflows", "multi-user task", "multi user task", "task", "Studio Pro"] +tags: + [ + "workflow", + "workflows", + "multi-user task", + "multi user task", + "task", + "Studio Pro", + ] --- ## 1 Introduction -Multi-user tasks are tasks that have to be executed by multiple users. Each user performs the same task. The outcomes from all individual tasks will be aggregated into a single multi-user task outcome based on the [completion criteria](#completion-criteria). +Multi-user tasks are tasks that have to be executed by multiple users. Each user performs the same task. The outcomes from all individual tasks will be aggregated into a single multi-user task outcome based on the [completion condition](#completion-condition). For example, you can assign a review task to multiple users: @@ -17,70 +25,75 @@ For example, you can assign a review task to multiple users: Multi-user task properties consist of the following sections: -* [General](#general) -* [Targeted users](#users) -* [User input](#user-input) -* [Completion criteria](#completion-criteria) -* [Due date](#due-date) -* [Events](#events) -* [Outcomes](#outcomes) -* [Task page](#task-page) -* [Display information](#display-info) -* [Common](#common) +- [General](#general) +- [Due date](#due-date) +- [Events](#events) +- [Targeted users](#users) +- [Completion condition](#completion-condition) +- [Outcomes](#outcomes) +- [Task page](#task-page) +- [Display information](#display-info) +- [Common](#common) ### 2.1 General Section {#general} -**Caption** defines a title of the multi-user task. +**Caption** defines a title of the multi-user task. -### 2.2 Targeted Users Section {#users} +### 2.2 Due Date Section {#due-date} -#### 2.2.1 Target Users Using {#target-users} +**Due date** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. For example, you can use it to set a deadline for the user task and display it in your app. However, this is not an automatic reminder but rather a deadline you reference when keeping track of the user task. If you are using the **Workflow Commons** module, **Due date** is used in page templates and preconfigured dashboards. + +The **Due date** section properties are described in the table below: -**Target users using** allows you to manage what users will the task be assigned to. You can filter users using XPath or implement more flexible logic and add several checks using a microflow. +| Property | Description | +| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| None | No due date is set. | +| Duration | You can set the deadline for the user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
    • Hour(s)
    • Day(s)
    • Week(s)
    | +| Expression | You can set a due date for the user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | -Possible options of this property are described in the table below: +### 2.3 Events Section {#events} -| Option | Description | -|---| --- | -| XPath | Allows you to filter users who should be assigned the user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| Microflow | Allows you to assign the user task to certain users. Using microflow you can check, for example, which users have the right to approve user tasks and are currently not on vacation and assign the task only to users who passed the check.
    The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| No assignment | Allows you to not assign the user task to certain users immediately. This can be useful when you, for example, want the user task to be created but have an administrator assign it to certain users later. | +**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the user task to the assigned users. -In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in *Change Workflow State*. +### 2.4 Targeted Users Section {#users} -#### 2.2.2 XPath Constraint +#### 2.4.1 Target Users Using {#target-users} -Specifies the expression used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **XPath**. +**Target users using** allows you to manage what users will the task be assigned to. You can filter users using XPath or implement more flexible logic and add several checks using a microflow. -#### 2.2.3 Microflow +Possible options of this property are described in the table below: -Specifies the microflow used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **Microflow**. +| Option | Description | +| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| XPath | Allows you to filter users who should be assigned the user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| Microflow | Allows you to assign the user task to certain users. Using microflow you can check, for example, which users have the right to approve user tasks and are currently not on vacation and assign the task only to users who passed the check.
    The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| No assignment | Allows you to not assign the user task to certain users immediately. This can be useful when you, for example, want the user task to be created but have an administrator assign it to certain users later. | -#### 2.2.4 Auto-Assign When Targeting Results In One User {#auto-assign} +In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in _Change Workflow State_. -Enables automatically assigning a user task when a single user is targeted. This option is displayed only when the [Target users using](#target-users) is set to **XPath** or **Microflow**. +#### 2.4.2 XPath Constraint -### 2.3 User Input Section {#user-input} +Specifies the expression used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **XPath**. -#### 2.3.1 Input from +#### 2.4.3 Microflow -You can switch between a single-user task and a multi-user task. For more information on a single-user task, see [User Task](/refguide/user-task/). +Specifies the microflow used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **Microflow**. -The following sections only introduce the properties that are shown after you choose a multi-user task. +### 2.5 Completion Condition Section {#completion-condition} -#### 2.3.2 Required Input {#required-input} +#### 2.5.1 Participant Input {#participant-input} This property determines the maximum number of targeted users that are required to select an outcome for a user task to be completed. -##### 2.3.2.1 All +##### 2.5.1.1 All All targeted users should select an outcome for the task to be completed. -##### 2.3.2.2 Absolute Number {#absolute-number} +##### 2.5.1.2 Absolute Number {#absolute-number} The specified amount of targeted users should select an outcome for the task to be completed. -##### 2.3.2.3 Percentage +##### 2.5.1.3 Percentage The specified percentage of targeted users should select an outcome for the task to be completed. @@ -88,148 +101,129 @@ The result of applying the percentage will be rounded upwards to the nearest mat For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome for the task to complete. -### 2.4 Completion Criteria Section {#completion-criteria} +#### 2.5.2 Decision Method With this property you specify how the outcomes of the individual users are aggregated into a single multi-user task outcome. This aggregated outcome is used as the final outcome to complete the multi-user task. -#### 2.4.1 Consensus +##### 2.5.2.1 Consensus Select this rule when all users should be in agreement with the provided outcome. That is, they should all select the same outcome. There has to be consensus. When there is no consensus, the multi-user task will complete with the selected [fallback outcome](#fallback-outcome). -##### 2.4.1.1 Example +###### 2.5.2.1.1 Example - The following example shows how you can use **Consensus** as the **Completion criteria**: +The following example shows how you can use **Consensus** as the **Decision method**: -Out of a group of two or more users, two users need to perform the same task: to approve or reject a request. Their decisions are represented by the task outcomes. When the **Completion criteria** is set to **Consensus**: +Out of a group of two or more users, two users need to perform the same task: to approve or reject a request. Their decisions are represented by the task outcomes. When the **Decision method** is set to **Consensus**: -* If they both approve the request, the multi-user task is completed with the outcome `Approve`. -* If they both reject the request, the multi-user task is completed with the outcome `Reject`. -* If no consensus is reached between the two users, the multi-user task will then be completed with a fallback outcome (in this example, `NoConsensus` ) +- If they both approve the request, the multi-user task is completed with the outcome `Approve`. +- If they both reject the request, the multi-user task is completed with the outcome `Reject`. +- If no consensus is reached between the two users, the multi-user task will then be completed with a fallback outcome (in this example, `NoConsensus` ) You can refer to the following properties settings for this example: -* **Targeted users**: The users that can perform the task (they can be a team, a department, or two pre-selected users) -* **Input from**: **Multiple users** -* **Required input**: **Absolute number** > `2` -* **Completion criteria**: **Consensus** -* **Fallback outcome**: An outcome users can select but it will be selected automatically when there is no consensus (in this example, `NoConsensus`) -* **Outcomes**: `Approve`, `Reject`, `NoConsensus` +- **Targeted users**: The users that can perform the task (they can be a team, a department, or two pre-selected users) +- **Participant input**: **Absolute number** > `2` +- **Decision method**: **Consensus** +- **Fallback outcome**: An outcome users can select but it will be selected automatically when there is no consensus (in this example, `NoConsensus`) +- **Outcomes**: `Approve`, `Reject`, `NoConsensus` -##### 2.4.1.2 Fallback Outcome {#fallback-outcome} +###### 2.5.2.1.2 Fallback Outcome {#fallback-outcome} This outcome will be the final outcome of the task in the following cases: -* If any of the users during consensus completion criteria selects a different outcome from the rest of the users -* If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Required input** section: +- If any of the users during consensus decision method selects a different outcome from the rest of the users +- If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Participant input** section: - For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Required input**, then consensus can never be reached and fallback outcome will be used as the final outcome to complete the task. + For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then consensus can never be reached and fallback outcome will be used as the final outcome to complete the task. {{% alert color="info" %}} The fallback outcome should not be an option a user can select on the task page. {{% /alert %}} {{% alert color="info" %}} -The completion rule is evaluated after each user selects an outcome. Therefore,it is possible that a multi-user task completes with a final outcome before all required users have completed their task. For example, when 5 users need to review a contract (`Approve`, `Reject`) and the first 2 users are not in agreement (one selects `Approve` and the other one selects `Reject`), this multi-user task will be completed with the **Fallback outcome**. The input from the other users will not change the final outcome anymore. The task will no longer appear in their inbox. +The completion condition is evaluated after each user selects an outcome. Therefore,it is possible that a multi-user task completes with a final outcome before all required users have completed their task. For example, when 5 users need to review a contract (`Approve`, `Reject`) and the first 2 users are not in agreement (one selects `Approve` and the other one selects `Reject`), this multi-user task will be completed with the **Fallback outcome**. The input from the other users will not change the final outcome anymore. The task will no longer appear in their inbox. {{% /alert %}} -#### 2.4.2 Veto {#veto} +##### 2.5.2.2 Veto {#veto} -Veto completion criteria requires two outcomes, one of which is the veto outcome. If anyone selects the veto outcome, then the multi-user task will be completed with the veto outcome. +Veto Decision method requires two outcomes, one of which is the veto outcome. If anyone selects the veto outcome, then the multi-user task will be completed with the veto outcome. -For a multi-user task to complete with the non-veto outcome, all users, as defined in property **Required input**, need to complete their task by selecting the non-veto outcome. +For a multi-user task to complete with the non-veto outcome, all users, as defined in property **Participant input**, need to complete their task by selecting the non-veto outcome. -##### 2.4.2.1 Examples +###### 2.5.2.2.1 Examples -Two examples are provided here to show how you can use **Veto** as the **Completion criteria**. +Two examples are provided here to show how you can use **Veto** as the **Decision method**. One example is when a whole team needs to make a joint decision during a hiring process: `Hire` or `DoNotHire`. The candidate receives an offer if the whole team agrees that this person should be hired. When one team member decides the person should not be hired (veto), the outcome of the multi-user task will be `DoNotHire`. As soon as someone decides this is not the right candidate, the rest do not have to make a decision anymore, as their decisions cannot influence the final outcome. You can refer to the following properties settings for the example above: -* **Targeted users**: All users that need to decide during the hiring process (the whole team) -* **Input from**: **Multiple users** -* **Required input**: **All** targeted users -* **Completion criteria**: **Veto** -* **Fallback outcome**: `DoNotHire` -* **Outcomes**: `Hire`, `DoNotHire` +- **Targeted users**: All users that need to decide during the hiring process (the whole team) +- **Participant input**: **All** targeted users +- **Decision method**: **Veto** +- **Veto outcome**: `DoNotHire` +- **Outcomes**: `Hire`, `DoNotHire` Another example is when a group of five experts needs to decide whether a change request is `Minor` or `Major`. If any one of the five experts decides it is a major request, the change request will be `Major`. The input from the other four experts is not relevant anymore. If all five of them decide it is a minor change request, the final multi-user task outcome will be `Minor`. In this case, the outcome `Major` is the veto outcome. You can refer to the following properties settings for the second example above: -* **Targeted users**: group of experts -* **Input from**: **Multiple users** -* **Required input**: **Absolute number** > `5` -* **Completion criteria**: **Veto** -* **Fallback outcome**: `Major` -* **Outcomes**: `Minor`, `Major` +- **Targeted users**: group of experts +- **Participant input**: **Absolute number** > `5` +- **Decision method**: **Veto** +- **Veto outcome**: `Major` +- **Outcomes**: `Minor`, `Major` -##### 2.4.2.2 Veto Outcome +###### 2.5.2.2.2 Veto Outcome This property defines the [veto](#veto) outcome. {{% alert color="info" %}} -The completion rule is evaluated after each user selects an outcome. When one user completes the task by selecting the veto outcome, the multi-user task will be completed with the veto outcome. The task will be removed from the inbox of the remaining users. Their outcomes will not change the final multi-user task outcome. +The completion condition is evaluated after each user selects an outcome. When one user completes the task by selecting the veto outcome, the multi-user task will be completed with the veto outcome. The task will be removed from the inbox of the remaining users. Their outcomes will not change the final multi-user task outcome. {{% /alert %}} -### 2.5 Due Date Section {#due-date} - -**Due date** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. For example, you can use it to set a deadline for the user task and display it in your app. However, this is not an automatic reminder but rather a deadline you reference when keeping track of the user task. If you are using the **Workflow Commons** module, **Due date** is used in page templates and preconfigured dashboards. - -The **Due date** section properties are described in the table below: - -| Property | Description | -| --- | --- | -| None | No due date is set. | -| Duration | You can set the deadline for the user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
    • Hour(s)
    • Day(s)
    • Week(s)
    | -| Expression | You can set a due date for the user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | - -### 2.6 Events Section {#events} - -**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the user task to the assigned users. - -### 2.7 Outcomes Section {#outcomes} +### 2.6 Outcomes Section {#outcomes} -The outcomes property allows you to create new outcomes for the user task. Outcomes are translated into different outgoing paths of the user task and can be referred to by other elements, such as a button. For example, you have a process when you need to approve or reject a request. One button on a [task page](#task-page) can refer to the **Approve** outcome of the user task, while another one can use the **Reject** outcome. +The outcomes property allows you to create new outcomes for the user task. Outcomes are translated into different outgoing paths of the user task and can be referred to by other elements, such as a button. For example, you have a process when you need to approve or reject a request. One button on a [task page](#task-page) can refer to the **Approve** outcome of the user task, while another one can use the **Reject** outcome. -### 2.8 Task Page Section {#task-page} +### 2.7 Task Page Section {#task-page} -Task page is the page that an assigned user will use to inspect their task and complete it. You can also allow users to add comments or attachments on this page. +Task page is the page that an assigned user will use to inspect their task and complete it. You can also allow users to add comments or attachments on this page. If you generate the page using the templates in the **Workflows Commons** module, these templates contain necessary data containers and associated context entity. -### 2.9 Display Information Section {#display-info} +### 2.8 Display Information Section {#display-info} -#### 2.9.1 Task Name +#### 2.8.1 Task Name -**Task name** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. If you are using the **Workflow Commons** module, the **Task name** is used in page templates and on preconfigured pages to identify the task. +**Task name** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. If you are using the **Workflow Commons** module, the **Task name** is used in page templates and on preconfigured pages to identify the task. For more information on using parameters, see the [Parameters](#parameters) section below. -#### 2.9.2 Task Description +#### 2.8.2 Task Description -**Task Description** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. If you are using the **Workflow Commons** module, the **Task description** is used in page templates. +**Task Description** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. If you are using the **Workflow Commons** module, the **Task description** is used in page templates. The **Task description** can contain parameters that are written between braces, e.g. {1}. -#### 2.9.3 Parameters {#parameters} +#### 2.8.3 Parameters {#parameters} Parameters are attributes the value of which will be displayed. For example, you can display when the task is due using the **DueDate** parameter. -To view **Parameters**, click the ellipsis icon next to the **Task name** or **Task description** in properties depending on where you would like to display these parameters. +To view **Parameters**, click the ellipsis icon next to the **Task name** or **Task description** in properties depending on where you would like to display these parameters. Parameters have the following settings: -* **Index** – an identification number of a parameter -* **Expression** – an XPath expression that will be displayed +- **Index** – an identification number of a parameter +- **Expression** – an XPath expression that will be displayed -##### 2.9.3.1 Adding New Parameters +##### 2.8.3.1 Adding New Parameters To add a parameter to the **Task name** or the **Task description**, do the following: -1. Click the ellipsis icon next to the **Task name** or the **Task description**. +1. Click the ellipsis icon next to the **Task name** or the **Task description**. -2. In the **Edit task name/description** dialog box > **Parameters** section, click the **New** button. +2. In the **Edit task name/description** dialog box > **Parameters** section, click the **New** button. 3. In the **Template Parameter (String)** dialog box, specify the expression, and confirm your choice: @@ -239,21 +233,21 @@ To add a parameter to the **Task name** or the **Task description**, do the foll 4. In the **Template** setting, write the text you would like to display and type **Index** of the parameter you would like to include. For example, you can add a template for the **Task description** specifying the name of the workflow and what the workflow due date is : - {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/user-task/task-description-example.jpg" alt="Task Description Example" >}} + {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/user-task/task-description-example.jpg" alt="Task Description Example" >}} -##### 2.9.3.2 Performing Other Actions on Parameters +##### 2.8.3.2 Performing Other Actions on Parameters In addition to adding new parameters, you can perform the following actions on parameters: -* **Delete** – to delete a parameter click **Delete** or press Delete on your keyboard -* **Edit** – double-click a parameter to edit it or click **Edit** -* **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** -* **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** +- **Delete** – to delete a parameter click **Delete** or press Delete on your keyboard +- **Edit** – double-click a parameter to edit it or click **Edit** +- **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** +- **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** -### 2.10 Common Section {#common} +### 2.9 Common Section {#common} -**Name** is the internal name of the user task. When referring to the user task in the app you will use this name. It must be unique within the workflow, but you can have two user tasks with the same name in different workflows. +**Name** is the internal name of the user task. When referring to the user task in the app you will use this name. It must be unique within the workflow, but you can have two user tasks with the same name in different workflows. ## 3 Read More -* [Workflows](/refguide/workflows/) +- [Workflows](/refguide/workflows/) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md index 3a1643acaed..0a7a902a681 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md @@ -7,7 +7,7 @@ tags: ["workflow", "workflows", "user task", "task", "Studio Pro"] ## 1 Introduction -User task allows you to assign a workflow task to a certain user or a group of users. +User task allows you to assign a workflow task to a certain user or a group of users. For example, you can add filters and assign a task to users with the Manager role: @@ -21,117 +21,105 @@ When the workflow reaches the user task activity, the task is created and will b User task properties consist of the following sections: -* [General](#general) -* [Targeted users](#users) -* [User input](#user-input) -* [Completion criteria](#completion-criteria) -* [Due date](#due-date) -* [Events](#events) -* [Outcomes](#outcomes) -* [Task page](#task-page) -* [Display information](#display-info) -* [Common](#common) +- [General](#general) +- [Due date](#due-date) +- [Events](#events) +- [Targeted users](#users) +- [Outcomes](#outcomes) +- [Task page](#task-page) +- [Display information](#display-info) +- [Common](#common) ### 2.1 General Section {#general} -**Caption** defines a title of the user task. +**Caption** defines a title of the user task. -### 2.2 Targeted Users Section {#users} +### 2.2 Due Date Section {#due-date} -#### 2.2.1 Target Users Using {#target-users} - -**Target users using** allows you to manage what users will the task be assigned to. You can filter users using XPath or implement more flexible logic and add several checks using a microflow. - -Possible options of this property are described in the table below: - -| Option | Description | -| --- | --- | -| XPath | Allows you to filter users who should be assigned the user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| Microflow | Allows you to assign the user task to certain users. Using microflow you can check, for example, which users have the right to approve user tasks and are currently not on vacation and assign the task only to users who passed the check.
    The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| No assignment | Allows you to not assign the user task to certain users immediately. This can be useful when you, for example, want the user task to be created but have an administrator assign it to certain users later. | - -In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in *Change Workflow State*. - -#### 2.2.2 XPath Constraint +**Due date** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. For example, you can use it to set a deadline for the user task and display it in your app. However, this is not an automatic reminder but rather a deadline you reference when keeping track of the user task. If you are using the **Workflow Commons** module, **Due date** is used in page templates and preconfigured dashboards. -Specifies the expression used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **XPath**. +The **Due date** section properties are described in the table below: -#### 2.2.3 Microflow +| Property | Description | +| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| None | No due date is set. | +| Duration | You can set the deadline for the user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
    • Hour(s)
    • Day(s)
    • Week(s)
    | +| Expression | You can set a due date for the user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | -Specifies the microflow used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **Microflow**. +### 2.3 Events Section {#events} -#### 2.2.4 Auto-Assign When Targeting Results In One User {#auto-assign} +**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the user task to the assigned users. -Enables automatically assigning a user task when a single user is targeted. This option is displayed only when the [Target users using](#target-users) is set to **XPath** or **Microflow**. +### 2.4 Targeted Users Section {#users} -### 2.3 User Input Section {#user-input} +#### 2.4.1 Target Users Using {#target-users} -You can switch between a single-user task and a multi-user task. For more information on a multi-user task, see [Multi-User Task](/refguide/multi-user-task/). +**Target users using** allows you to manage what users will the task be assigned to. You can filter users using XPath or implement more flexible logic and add several checks using a microflow. -The following sections only introduce the properties that are shown after you choose a single-user task. +Possible options of this property are described in the table below: -### 2.4 Completion Criteria {#completion-criteria} +| Option | Description | +| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| XPath | Allows you to filter users who should be assigned the user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| Microflow | Allows you to assign the user task to certain users. Using microflow you can check, for example, which users have the right to approve user tasks and are currently not on vacation and assign the task only to users who passed the check.
    The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| No assignment | Allows you to not assign the user task to certain users immediately. This can be useful when you, for example, want the user task to be created but have an administrator assign it to certain users later. | -This property completion criteria used to complete a single-user task. The first user to trigger an outcome will complete the task. +In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in _Change Workflow State_. -### 2.5 Due Date Section {#due-date} +#### 2.4.2 XPath Constraint -**Due date** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. For example, you can use it to set a deadline for the user task and display it in your app. However, this is not an automatic reminder but rather a deadline you reference when keeping track of the user task. If you are using the **Workflow Commons** module, **Due date** is used in page templates and preconfigured dashboards. +Specifies the expression used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **XPath**. -The **Due date** section properties are described in the table below: +#### 2.4.3 Microflow -| Property | Description | -| --- | --- | -| None | No due date is set. | -| Duration | You can set the deadline for the user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
    • Hour(s)
    • Day(s)
    • Week(s)
    | -| Expression | You can set a due date for the user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | +Specifies the microflow used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **Microflow**. -### 2.6 Events Section {#events} +#### 2.4.4 Auto-Assign When Targeting Results In One User {#auto-assign} -**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the user task to the assigned users. +Enables automatically assigning a user task when a single user is targeted. This option is displayed only when the [Target users using](#target-users) is set to **XPath** or **Microflow**. -### 2.7 Outcomes Section {#outcomes} +### 2.5 Outcomes Section {#outcomes} -The outcomes property allows you to create new outcomes for the user task. Outcomes are translated into different outgoing paths of the user task and can be referred to by other elements, such as a button. For example, you have a process when you need to approve or reject a request. One button on a [task page](#task-page) can refer to the **Approve** outcome of the user task, while another one can use the **Reject** outcome. +The outcomes property allows you to create new outcomes for the user task. Outcomes are translated into different outgoing paths of the user task and can be referred to by other elements, such as a button. For example, you have a process when you need to approve or reject a request. One button on a [task page](#task-page) can refer to the **Approve** outcome of the user task, while another one can use the **Reject** outcome. -### 2.8 Task Page Section {#task-page} +### 2.6 Task Page Section {#task-page} -Task page is the page that an assigned user will use to inspect their task and complete it. You can also allow users to add comments or attachments on this page. +Task page is the page that an assigned user will use to inspect their task and complete it. You can also allow users to add comments or attachments on this page. If you generate the page using the templates in the **Workflows Commons** module, these templates contain necessary data containers and associated context entity. -### 2.9 Display Information Section {#display-info} +### 2.7 Display Information Section {#display-info} -#### 2.9.1 Task Name +#### 2.7.1 Task Name -**Task name** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. If you are using the **Workflow Commons** module, the **Task name** is used in page templates and on preconfigured pages to identify the task. +**Task name** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. If you are using the **Workflow Commons** module, the **Task name** is used in page templates and on preconfigured pages to identify the task. For more information on using parameters, see the [Parameters](#parameters) section below. -#### 2.9.2 Task Description +#### 2.7.2 Task Description -**Task Description** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. If you are using the **Workflow Commons** module, the **Task description** is used in page templates. +**Task Description** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. If you are using the **Workflow Commons** module, the **Task description** is used in page templates. The **Task description** can contain parameters that are written between braces, e.g. {1}. -#### 2.9.3 Parameters {#parameters} +#### 2.7.3 Parameters {#parameters} Parameters are attributes the value of which will be displayed. For example, you can display when the task is due using the **DueDate** parameter. -To view **Parameters**, click the ellipsis icon next to the **Task name** or **Task description** in properties depending on where you would like to display these parameters. +To view **Parameters**, click the ellipsis icon next to the **Task name** or **Task description** in properties depending on where you would like to display these parameters. Parameters have the following settings: -* **Index** – an identification number of a parameter -* **Expression** – an XPath expression that will be displayed +- **Index** – an identification number of a parameter +- **Expression** – an XPath expression that will be displayed -##### 2.9.3.1 Adding New Parameters +##### 2.7.3.1 Adding New Parameters To add a parameter to the **Task name** or the **Task description**, do the following: -1. Click the ellipsis icon next to the **Task name** or the **Task description**. +1. Click the ellipsis icon next to the **Task name** or the **Task description**. -2. In the **Edit task name/description** dialog box > **Parameters** section, click the **New** button. +2. In the **Edit task name/description** dialog box > **Parameters** section, click the **New** button. 3. In the **Template Parameter (String)** dialog box, specify the expression, and confirm your choice: @@ -141,21 +129,21 @@ To add a parameter to the **Task name** or the **Task description**, do the foll 4. In the **Template** setting, write the text you would like to display and type **Index** of the parameter you would like to include. For example, you can add a template for the **Task description** specifying the name of the workflow and what the workflow due date is : - {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/user-task/task-description-example.jpg" alt="Task Description Example" >}} + {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/user-task/task-description-example.jpg" alt="Task Description Example" >}} -##### 2.9.3.2 Performing Other Actions on Parameters +##### 2.7.3.2 Performing Other Actions on Parameters In addition to adding new parameters, you can perform the following actions on parameters: -* **Delete** – to delete a parameter click **Delete** or press Delete on your keyboard -* **Edit** – double-click a parameter to edit it or click **Edit** -* **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** -* **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** +- **Delete** – to delete a parameter click **Delete** or press Delete on your keyboard +- **Edit** – double-click a parameter to edit it or click **Edit** +- **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** +- **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** -### 2.10 Common Section {#common} +### 2.8 Common Section {#common} -**Name** is the internal name of the user task. When referring to the user task in the app you will use this name. It must be unique within the workflow, but you can have two user tasks with the same name in different workflows. +**Name** is the internal name of the user task. When referring to the user task in the app you will use this name. It must be unique within the workflow, but you can have two user tasks with the same name in different workflows. ## 3 Read More -* [Workflows](/refguide/workflows/) +- [Workflows](/refguide/workflows/) From 8edb8fbf7966b1653735a81d8311fbf21c1e567a Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 8 Jun 2023 13:07:07 +0200 Subject: [PATCH 008/232] Remove beta banner and notes --- content/en/docs/howto/_index.md | 5 ----- content/en/docs/refguide/_index.md | 5 ----- 2 files changed, 10 deletions(-) diff --git a/content/en/docs/howto/_index.md b/content/en/docs/howto/_index.md index 229b09bbf06..209014dba95 100644 --- a/content/en/docs/howto/_index.md +++ b/content/en/docs/howto/_index.md @@ -9,16 +9,11 @@ description_list: true cascade: - space: "Studio Pro 10 How-tos" - mendix_version: 10 - - banner: "Mendix 10 is currently in Beta. For details on Mendix 9.24 LTS, see Studio Pro 9 How-tos." - sitemap: priority: 0.7 #This document is mapped to the landing page, update the link there if renaming or moving the doc file. --- -{{% alert color="warning" %}} -Mendix 10 is currently in [Beta](/releasenotes/beta-features/). Looking for documentation on Mendix 9.24 LTS instead? See [Studio Pro 9 How-tos](/howto9/). -{{% /alert %}} - ## 1 Introduction Browse the *Studio Pro 10 How-tos* to find step-by-step guides that will teach you how to build and customize apps with Mendix. diff --git a/content/en/docs/refguide/_index.md b/content/en/docs/refguide/_index.md index 69bee04eb92..ef27b25ead0 100644 --- a/content/en/docs/refguide/_index.md +++ b/content/en/docs/refguide/_index.md @@ -9,15 +9,10 @@ description_list: true cascade: - space: "Studio Pro 10 Guide" - mendix_version: 10 - - banner: "Mendix 10 is currently in Beta. For details on Mendix 9.24 LTS, see Studio Pro 9 Guide." - sitemap: priority: 0.8 --- -{{% alert color="warning" %}} -Mendix 10 is currently in [Beta](/releasenotes/beta-features/). Looking for documentation on Mendix 9.24 LTS instead? See [Studio Pro 9 Guide](/refguide9/). -{{% /alert %}} - ## 1 Introduction The *Mendix Studio Pro 10 Guide* covers important topics concerning [Studio Pro](/refguide/modeling/), the [Mendix Runtime](/refguide/runtime/), and other components of the Mendix Platform. From e4beae9c08d9720482abfa3c9f6016c14a73ab1f Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 8 Jun 2023 14:20:24 +0200 Subject: [PATCH 009/232] Update MTS notes --- content/en/docs/releasenotes/studio-pro/9/9.12.md | 4 ---- content/en/docs/releasenotes/studio-pro/9/9.18.md | 4 ---- content/en/docs/releasenotes/studio-pro/9/9.6.md | 5 ----- content/en/docs/releasenotes/studio-pro/lts-mts.md | 6 +----- 4 files changed, 1 insertion(+), 18 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/9/9.12.md b/content/en/docs/releasenotes/studio-pro/9/9.12.md index 8fd0586192f..8cb115c598b 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.12.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.12.md @@ -5,10 +5,6 @@ description: "The release notes for Mendix Studio Pro version 9.12 (including al weight: 88 --- -{{% alert color="info" %}} -This is an [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 9 release for apps in production. The preferred version 9 release for apps in production is [9.24](/releasenotes/studio-pro/9.24/) ([LTS](/releasenotes/studio-pro/lts-mts/#lts)). -{{% /alert %}} - ## 9.12.14 {#91214} **Release date: April 26th, 2023** diff --git a/content/en/docs/releasenotes/studio-pro/9/9.18.md b/content/en/docs/releasenotes/studio-pro/9/9.18.md index 4197aeeab42..5250cbd6451 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.18.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.18.md @@ -5,10 +5,6 @@ description: "The release notes for Mendix Studio Pro version 9.18 (including al weight: 82 --- -{{% alert color="info" %}} -This is an [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 9 release for apps in production. The preferred version 9 release for apps in production is [9.24](/releasenotes/studio-pro/9.24/) ([LTS](/releasenotes/studio-pro/lts-mts/#lts)). -{{% /alert %}} - ## 9.18.7 {#9187} **Release date: May 2nd, 2023** diff --git a/content/en/docs/releasenotes/studio-pro/9/9.6.md b/content/en/docs/releasenotes/studio-pro/9/9.6.md index 34aa08f196b..e0ae920f76d 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.6.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.6.md @@ -3,13 +3,8 @@ title: "9.6" url: /releasenotes/studio-pro/9.6/ description: "The release notes for Mendix Studio Pro version 9.6 (including all patches) with details on new features, bug fixes, and known issues." weight: 94 -#DEPRECATION NOTE: MariaDB 10.3 support to be dropped after June 1, update System Requirements directly with RN --- -{{% alert color="info" %}} -This is an [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 9 release for apps in production. The preferred version 9 release for apps in production is [9.24](/releasenotes/studio-pro/9.24/) ([LTS](/releasenotes/studio-pro/lts-mts/#lts)). -{{% /alert %}} - {{% alert color="warning" %}} The Studio Pro distribution contains a utility called `mx-cf-client`, which makes it possible to deploy a Mendix application to Cloud Foundry using Studio Pro. `mx-cf-client` contains a vulnerable `log4j-core` library. The only scenario in which this could be exploited is when the applicable Cloud Foundry server is untrusted or hacked.

    diff --git a/content/en/docs/releasenotes/studio-pro/lts-mts.md b/content/en/docs/releasenotes/studio-pro/lts-mts.md index 52b5c968395..50dcaefa09d 100644 --- a/content/en/docs/releasenotes/studio-pro/lts-mts.md +++ b/content/en/docs/releasenotes/studio-pro/lts-mts.md @@ -87,11 +87,7 @@ The impact of upgrading from an LTS to an LTS is often the lowest of these optio An MTS is a minor version released approximately every 6 months after a new major version release for General Availability. -These are the current MTS versions for Studio Pro: - -* [9.18](/releasenotes/studio-pro/9.18/) (started in September, 2022) -* [9.12](/releasenotes/studio-pro/9.12/) (started in March, 2022) -* [9.6](/releasenotes/studio-pro/9.6/) (started in September, 2021) +The next MTS version for Studio Pro will be 10.6, due to be released in December, 2023. {{% alert color="info" %}} Older MTS versions (for example, 9.6) remain supported until the next major version has been released for General Availability (for example, 10). From 2abdd67999a21e29fdd12bb9466252e5d8e5d024 Mon Sep 17 00:00:00 2001 From: Nick Gavrikov Date: Thu, 8 Jun 2023 17:07:37 +0200 Subject: [PATCH 010/232] merge driver, create-project create-module create-solution --- .../export/create-module-package.md | 45 +++++++++++ .../export/create-project-package.md | 40 ++++++++++ .../export/create-solution-package.md | 40 ++++++++++ .../merge/merge-driver.md | 76 +++++++++++++++++++ .../mx-command-line-tool/merge/mx-diff.md | 2 +- .../mx-command-line-tool/merge/mx-merge.md | 18 ++++- 6 files changed, 218 insertions(+), 3 deletions(-) create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export/create-module-package.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export/create-project-package.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export/create-solution-package.md create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merge/merge-driver.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/create-module-package.md b/content/en/docs/refguide/general/mx-command-line-tool/export/create-module-package.md new file mode 100644 index 00000000000..1a526b997b6 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/export/create-module-package.md @@ -0,0 +1,45 @@ +--- +title: "mx create-module-package Command" +linktitle: "create-module-package" +url: /refguide/mx-command-line-tool/mx-create-module-package +category: "General Info" +weight: 20 +description: "Describes the options of the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-module-package"] +--- + +The `mx create-module-package` command exports a module package from an app. + +## 1 Usage + +Use the following command pattern: `mx create-module-package [OPTIONS] TARGET-FILE MODULE-NAME` + +The `OPTIONS` are described in the table below: + +| Option | Description | +| --- | --- | +| -l, --filter-required-libs | Includes all files except the userlibs that don't have an accompanying file `[ModuleName].RequiredLib` | + -e, --exclude-files | Exclude all files that match the given regular expression | + -d, --package-dir | Export module package to this directory | + --help | Display this help screen. | + + +For `TARGET-FILE` specify the MPR of the App you want to export + +For `MODULE-NAME` specify the name of the module you want to export + +## 2 Examples + +`mx create-module-package c:\MyApps\MyApp.mpr Module1` + +## 3 Return Codes + +Return codes are described in the table below: + +| Return Code | Description | +| --- | --- | +| 0 | Ok | +| 1 | Wrong project file provided | +| 2 | Output folder not determined | +| 3 | Invalid module name specified | +| 4 | Unknown package export error | \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/create-project-package.md b/content/en/docs/refguide/general/mx-command-line-tool/export/create-project-package.md new file mode 100644 index 00000000000..068d91133c1 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/export/create-project-package.md @@ -0,0 +1,40 @@ +--- +title: "mx create-project-package Command" +linktitle: "create-project-package" +url: /refguide/mx-command-line-tool/mx-create-project-package +category: "General Info" +weight: 10 +description: "Describes the options of the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project-package"] +--- + +The `mx create-project-package` command exports the app as a [Source App package](/refguide/export-app-package-dialog). + +## 1 Usage + +Use the following command pattern: `mx create-project-package [OPTIONS] TARGET-FILE` + +The `OPTIONS` are described in the table below: + +| Option | Default Value | Result | +| --- | --- | --- | +| -s, --include-snapshot | Include a snapshot in the app package | +| -d, --package-dir | Export package to this directory | +| --help | Display this help screen. | + +For `TARGET-FILE` specify the MPR of the App you want to export + +## 2 Examples + +`mx create-project-package c:\MyApps\MyApp.mpr` + +## 3 Return Codes + +Return codes are described in the table below: + +| Return Code | Description | +| --- | --- | +| 0 | Ok | +| 1 | Wrong project file provided | +| 2 | Output folder not determined | +| 4 | Unknown package export error | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/create-solution-package.md b/content/en/docs/refguide/general/mx-command-line-tool/export/create-solution-package.md new file mode 100644 index 00000000000..b648280f025 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/export/create-solution-package.md @@ -0,0 +1,40 @@ +--- +title: "mx create-solution-package Command" +linktitle: "create-solution-package" +url: /refguide/mx-command-line-tool/mx-create-solution-package +category: "General Info" +weight: 30 +description: "Describes the options of the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-solution-package"] +--- + +The `mx create-solution-package` command exports the app as a [Solution package](/refguide/export-app-package-dialog). + +## 1 Usage + +Use the following command pattern: `mx create-solution-package [OPTIONS] TARGET-FILE` + +The `OPTIONS` are described in the table below: + +| Option | Default Value | Result | +| --- | --- | --- | +| -s, --include-snapshot | Include a snapshot in the app package | +| -d, --package-dir | Export package to this directory | +| --help | Display this help screen. | + +For `TARGET-FILE` specify the MPR of the App you want to export + +## 2 Examples + +`mx create-solution-package c:\MyApps\MyApp.mpr` + +## 3 Return Codes + +Return codes are described in the table below: + +| Return Code | Description | +| --- | --- | +| 0 | Ok | +| 1 | Wrong project file provided | +| 2 | Output folder not determined | +| 4 | Unknown package export error | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/merge-driver.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/merge-driver.md new file mode 100644 index 00000000000..96d8534eabf --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge/merge-driver.md @@ -0,0 +1,76 @@ +--- +title: "mx merge as git merge driver" +linktitle: "merge driver" +url: /refguide/mx-command-line-tool/mx-merge-driver +category: "General Info" +weight: 30 +description: "Describes how to configure mx merge to be your git merge driver." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "merge"] +--- + +This page describes the configuration you need to do in order to enable using [mx merge]() command as a merge driver in git. With this configuration you can merge one branch into another using 3rd party version control tools and git command line. + +Normally when you are merging branches with git it compares the changes in files in both branches. If a certain file has been changed in both branches this is called a conflict. If the file in conflict is a text file, then git attempts to resolve it automatically (and very often succeeds), but in case of Mendix apps the conflict is in 2 MPR files, which are more complex than text (that's why we need StudioPro to resolve the conflicts). For such cases git has an option to delegate conflict resolution for a certain file type to an external tool. `mx merge` command is compatible with this mechanism and will allow git to try to merge the MPRs "as if Studio Pro would've done it". Then if there still will be conflicts, you can always open Studio Pro and resolve those manually. + +# 1. .gitconfig + +You need to add the following lines to `.gitconfig` file located in `.git` folder of your App on disk. + +At the end of the file add `[merge "custom"]` block like this + +```ini +[merge "custom"] + name = custom merge driver for MPR files + driver = [MX.EXE_PATH] merge %O %A %B +``` + +Replace `MX.EXE_PATH` with a full path to your mx.exe in unix format (e.g. `/c/Program\ Files/Mendix/10.0.0.8753/modeler/mx.exe`) + +Under `[core]` section add the following +```ini + attributesfile = .git/.gitattributes` +``` +# 2. .gitattributes + +Create `.gitattributes` file in .git folder of your App on disk. Add the following line there to tell git to use `[merge "custom"]` driver from .gitconfig chapter of this page for merging *.mpr files. + +```ini +*.mpr merge=custom +``` + +# 3. Verification +To confirm it works, you can create a blank version controlled App. + +In this app do the following: +1. Create a branch `branch`, download it. +2. Change the caption of a Home page to "Branch" +3. Add Microflow named "branch" +4. Commit and Push your changes +5. Switch back to `Main` branch +6. Pull the changes from remote +7. Change the caption of a Home page to "Main" +8. Add Microflow named "main" +7. Commit and Push your changes + +Now open git command line in your App's Main branch directory and do +`git merge origin/branch` + +If you configured everything correctly, command line outout should look like this: + +```code +$ git merge origin/branch +Checking MPR Versions. +Complete. +Converting MPRs +Complete. +Merging MPRs. +Conflicts found during merging. Please resolve them by opening the project in Studio Pro. +Complete. +Auto-merging MyBlankApp.mpr +CONFLICT (content): Merge conflict in MyBlankApp.mpr +Automatic merge failed; fix conflicts and then commit the result. +``` + +Now if you open you app on Main branch you should see: +1. Both microflows "branch" and "main" -- this is a non-conflicting change so `mx merge` sorted this out automatically just like Studio Pro would do. +2. Conflict on Home_Web page concerning the renaming of Home page caption -- this is a conflicting change as you changed the same caption to different values on both branches. You can resolve this manually. \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md index c0b6a7ce293..387080e64a8 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md @@ -3,7 +3,7 @@ title: "mx diff Command" linktitle: "diff" url: /refguide/mx-command-line-tool/mx-diff category: "General Info" -weight: 40 +weight: 10 description: "Describes the mx diff command." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "diff"] --- diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md index b16672f102c..d94fd8c356a 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md @@ -3,7 +3,7 @@ title: "mx merge Command" linktitle: "merge" url: /refguide/mx-command-line-tool/mx-merge category: "General Info" -weight: 40 +weight: 20 description: "Describes the mx merge command." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "merge"] --- @@ -42,9 +42,23 @@ The image below illustrates the meaning of the parameters: In order to merge changes correctly Studio Pro has to compare both A" and B' againt A to see what has been changed on each branch. During the merge [Merge Algorithm](/refguide/merge-algorithm) will try to automatically merge the changes. +This command works for any three MPR files. This means you can try to merge different Apps at your own risk. + +{{% alert color="info" %}}Please note, that this command works different than normal version controlled merge you can do in Studio Pro. While Studio pro does real merge of one branch into another, this command just runs merge algorithm over 3 MPR files that don't even have to be version controlled. {{% /alert %}} + ## 2 Conflicts -If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro. +If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro and doing Version Control -> Merge changes here. + +The reason for this is that conflict resolution is a complex process that requires 2 things: +1. App has to be version controlled. +2. Your git repository has to be in so called `merge state` (Studio Pro does this when you click `Merge changes here`) + +This `merge state` is needed for Studio Pro to know what is your current branch and the branch you are trying to merge into it. This way when you are trying to resolve the conflict using `theirs` document, Studio Pro can download the document from the branch and put it into your current App. + +So if you just run this command from command line specifying 3 MPRs and the result has conflicts, you won't be able to resolve conflicts in `mine` app using `theirs` documents by just opening the app in Studio Pro. + +For this to be possible you need to [configure git to use `mx merge` as a merge driver](/refguide/mx-command-line-tool/mx-merge-driver) for MPR files and trigger merge from git command line (so that the repository is put in `merge-state` for Studio Pro to be able to pick it up after the command is complete). ## 3 Examples From e430f7f4e06ef618953e54b8572bcb4aa3821e04 Mon Sep 17 00:00:00 2001 From: NikolaMendix <111512055+NikolaMendix@users.noreply.github.com> Date: Fri, 9 Jun 2023 11:49:14 +0200 Subject: [PATCH 011/232] Update Preferences Dialog --- .../menus/edit-menu/preferences-dialog.md | 38 +++++++------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md index 0964a887f9d..3f5d79a2468 100644 --- a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md +++ b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md @@ -141,25 +141,29 @@ This option is available when [Enable automatic repository optimization](#optimi Select this option when you want to work on an app that is not stored in [Mendix Team Server](/developerportal/collaborate/team-server/), but in a private Git server to which you have access. This will allow you to specify the location of the app on the Git server when opening, downloading, or uploading the app. In this section, you also need to specify name and email values that will be used to identify your commits with Git. -## 6 Advanced Tab +## 6 Work Environment Tab -### 6.1 Proxy Server +### 6.1 Studio Pro Theme {#studio-pro-theme} -Sometimes the computer running Studio Pro cannot access the internet directly, but has to connect to a proxy server that requires authentication. If this is the case, then these settings can be used to specify the user name and password to connect to the proxy server. +This option allows user to choose between Studio Pro themes: **Auto (System theme)**, **Light** or **Dark**. The default is **Auto (System theme)** which detects the theme set in operating system and uses appropriate theme for Studio Pro (**Light** or **Dark**). Changing this option requires a restart of Studio Pro to take effect. -### 6.2 Usage Data {#usage-data} +### 6.2 Default Page Editor {#default-page-editor} -When the **Send Studio Pro usage data to Mendix** setting is enabled, Studio Pro sends usage data to Mendix that allows Mendix to identify issues and improve the user experience. The usage data does not contain sensitive information. It is possible to disable this feature, but it may affect the behavior of some features, prevent Mendix from identifying issues reported by the user, or affect tracking issues that are not reported yet. This setting is machine-specific and changing this feature does not affect any existing installed version. +This option sets the default page editor mode that your page opens in: **Structure mode** or **Design mode**. For more information on page editor modes, see the [Page Editor Modes](/refguide/page/#page-editor-modes) section in *Page*. -### 6.2 Rendering {#rendering} +### 6.3 Rendering {#rendering} Hardware and driver issues may cause performance problems when running Studio Pro. These issues can appear in form of dialogs opening and closing much slower than expected, and general slowness of the UI. In case the hardware problems cannot be solved, it is possible to mitigate these issues by turning the **Enable software rendering mode** setting on. Enabling this setting requires a restart of Studio Pro to take effect. Running the application with this setting on may increase the CPU usage. -## 7 Work Environment Tab +## 7 Advanced Tab -### 7.1 Default Page Editor {#default-page-editor} +### 7.1 Proxy Server -This option sets the default page editor mode that your page opens in: **Structure mode** or **Design mode**. For more information on page editor modes, see the [Page Editor Modes](/refguide/page/#page-editor-modes) section in *Page*. +Sometimes the computer running Studio Pro cannot access the internet directly, but has to connect to a proxy server that requires authentication. If this is the case, then these settings can be used to specify the user name and password to connect to the proxy server. + +### 7.2 Usage Data {#usage-data} + +When the **Send Studio Pro usage data to Mendix** setting is enabled, Studio Pro sends usage data to Mendix that allows Mendix to identify issues and improve the user experience. The usage data does not contain sensitive information. It is possible to disable this feature, but it may affect the behavior of some features, prevent Mendix from identifying issues reported by the user, or affect tracking issues that are not reported yet. This setting is machine-specific and changing this feature does not affect any existing installed version. ## 8 New Features Tab {#new-features} @@ -169,20 +173,6 @@ The **New features** tab allows you to turn new features on and off. These are f You need to restart Studio Pro for changes to these settings to take effect. {{% /alert %}} -### 8.1 Dark Mode Preview {#dark-mode} - -{{% alert color="info" %}} -This functionality is currently in [Beta](/releasenotes/beta-features/). -{{% /alert %}} - -The **Dark mode** option allows you to preview to the dark mode of the Studio Pro user interface. - -{{% alert color="info" %}} -Not all screens of Studio Pro support dark mode yet. -{{% /alert %}} - -Default: *disabled* - -## 9 Read More +## 8 Read More * [Upload to Version Control Server](/refguide/upload-to-version-control-dialog/) From cdc51548041a777b99f4287a59b0ee0ed0dc10d2 Mon Sep 17 00:00:00 2001 From: NikolaMendix <111512055+NikolaMendix@users.noreply.github.com> Date: Fri, 9 Jun 2023 11:57:48 +0200 Subject: [PATCH 012/232] Remove 'New Features Tab' --- .../modeling/menus/edit-menu/preferences-dialog.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md index 3f5d79a2468..c89530b40d7 100644 --- a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md +++ b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md @@ -165,14 +165,6 @@ Sometimes the computer running Studio Pro cannot access the internet directly, b When the **Send Studio Pro usage data to Mendix** setting is enabled, Studio Pro sends usage data to Mendix that allows Mendix to identify issues and improve the user experience. The usage data does not contain sensitive information. It is possible to disable this feature, but it may affect the behavior of some features, prevent Mendix from identifying issues reported by the user, or affect tracking issues that are not reported yet. This setting is machine-specific and changing this feature does not affect any existing installed version. -## 8 New Features Tab {#new-features} - -The **New features** tab allows you to turn new features on and off. These are features which are being worked on but are either not yet developed sufficiently to remove the previous version, or which are currently optional. - -{{% alert color="info" %}} -You need to restart Studio Pro for changes to these settings to take effect. -{{% /alert %}} - ## 8 Read More * [Upload to Version Control Server](/refguide/upload-to-version-control-dialog/) From 64e8ba4389d55197c44062db016fd9a1fabf0ff7 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 9 Jun 2023 14:33:45 +0200 Subject: [PATCH 013/232] Review --- .../general/mx-command-line-tool/_index.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/_index.md index a709dbf5b50..6683f357f42 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/_index.md @@ -13,41 +13,41 @@ The **mx tool** is a Windows and Linux command-line tool that can be used to per ## 2 Location -Mendix Studio Pro comes with the mx command-line tool. The executable *mx.exe* file can be found in the same folder that contains `studiopro.exe` (for example, *C:\Program Files\Mendix\10.0.0.5003\modeler\mx.exe*). +Mendix Studio Pro comes with the mx command-line tool. You can find the executable *mx.exe* file can in the same folder that contains *studiopro.exe* (for example, *C:\Program Files\Mendix\10.0.0.5003\modeler\mx.exe*). ## 3 Available commands -| [**App commands**](/refguide/mx-command-line-tool/app) | App commands | +| [App Commands](/refguide/mx-command-line-tool/app) | Description | | - | - | -| [check](/refguide/mx-command-line-tool/mx-check) | Check the app for issues | -| [convert](/refguide/mx-command-line-tool/mx-convert) | Convert Mendix app | -| [create-project](/refguide/mx-command-line-tool/mx-create-project) | Create a new Mendix app | -| [show-version](/refguide/mx-command-line-tool/mx-show-version) | Show the version of Studio Pro that was last used to edit the app | +| [check](/refguide/mx-command-line-tool/mx-check) | Checks the app for issues. | +| [convert](/refguide/mx-command-line-tool/mx-convert) | Converts the Mendix app. | +| [create-project](/refguide/mx-command-line-tool/mx-create-project) | Creates a new Mendix app. | +| [show-version](/refguide/mx-command-line-tool/mx-show-version) | Shows the Studio Pro version that was last used to edit the app. | -| [**Adaptable solutions commands**](/refguide/mx-command-line-tool/adaptable) || +| [Adaptable Solutions Commands](/refguide/mx-command-line-tool/adaptable) | Description| | - | - | -| [show-app-version](/refguide/mx-command-line-tool/mx-show-version) | Show the Application Version of the app | -| [set-app-version](/refguide/mx-command-line-tool/mx-set-app-version) | Sets the Application Version of the app | +| [show-app-version](/refguide/mx-command-line-tool/mx-show-version) | Shows the application version of the app. | +| [set-app-version](/refguide/mx-command-line-tool/mx-set-app-version) | Sets the application version of the app. | -| [**Module commands**](/refguide/mx-command-line-tool/module) || +| [Module Commands](/refguide/mx-command-line-tool/module) | Description | |-|-| -| [show-module-version](/refguide/mx-command-line-tool/mx-show-module-version) | Show the version of the module specified | -| [set-module-version](/refguide/mx-command-line-tool/mx-set-module-version) | Set the version of the module specified | +| [show-module-version](/refguide/mx-command-line-tool/mx-show-module-version) | Shows the version of the module specified. | +| [set-module-version](/refguide/mx-command-line-tool/mx-set-module-version) | Sets the version of the module specified. | -| [**Export package commands**](/refguide/mx-command-line-tool/export) || +| [Export Package Commands](/refguide/mx-command-line-tool/export) | Description | | - | - | -| create-project-package | Export a project package | -| create-solution-package | Export a solution package | -| create-module-package | Export a module package | +| create-project-package | Exports an app package. | +| create-solution-package | Exports a solution package. | +| create-module-package | Exports a module package. | -| [**Merging and diffing**](/refguide/mx-command-line-tool/merge) || +| [Merging and Diffing](/refguide/mx-command-line-tool/merge) | Description | | - | - | -| [merge](/refguide/mx-command-line-tool/mx-merge) | Merge mpr files | -| [diff](/refguide/mx-command-line-tool/mx-diff) | Diff mpr files | +| [merge](/refguide/mx-command-line-tool/mx-merge) | Merges the *.mpr* files. | +| [diff](/refguide/mx-command-line-tool/mx-diff) | Shows the diff of the *.mpr* files. | ## 4 mx Tool Options -The mx tool has `--help` option that outputs all the commands available. +The mx tool has a `--help` option that outputs all the commands available. ## 5 Undocumented Options From 667fe77e416ec2d84b2642fb428e2835214d513d Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 9 Jun 2023 16:13:04 +0200 Subject: [PATCH 014/232] Review --- .../general/mx-command-line-tool/_index.md | 46 +++++--- .../general/mx-command-line-tool/adaptable.md | 106 ++++++++++++++++++ .../mx-command-line-tool/adaptable/_index.md | 40 ------- .../adaptable/set-app-version.md | 45 -------- .../adaptable/show-app-version.md | 46 -------- 5 files changed, 139 insertions(+), 144 deletions(-) create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/adaptable.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/adaptable/_index.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/adaptable/set-app-version.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/adaptable/show-app-version.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/_index.md index 6683f357f42..3161b4dc74f 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/_index.md @@ -15,33 +15,53 @@ The **mx tool** is a Windows and Linux command-line tool that can be used to per Mendix Studio Pro comes with the mx command-line tool. You can find the executable *mx.exe* file can in the same folder that contains *studiopro.exe* (for example, *C:\Program Files\Mendix\10.0.0.5003\modeler\mx.exe*). -## 3 Available commands +## 3 Available Commands -| [App Commands](/refguide/mx-command-line-tool/app) | Description | -| - | - | +### 3.1 App Commands + +These are the available [app commands](/refguide/mx-command-line-tool/app): + +| Command | Description | +| --- | --- | | [check](/refguide/mx-command-line-tool/mx-check) | Checks the app for issues. | | [convert](/refguide/mx-command-line-tool/mx-convert) | Converts the Mendix app. | | [create-project](/refguide/mx-command-line-tool/mx-create-project) | Creates a new Mendix app. | | [show-version](/refguide/mx-command-line-tool/mx-show-version) | Shows the Studio Pro version that was last used to edit the app. | -| [Adaptable Solutions Commands](/refguide/mx-command-line-tool/adaptable) | Description| -| - | - | -| [show-app-version](/refguide/mx-command-line-tool/mx-show-version) | Shows the application version of the app. | -| [set-app-version](/refguide/mx-command-line-tool/mx-set-app-version) | Sets the application version of the app. | +### 3.1 Adaptable Solutions Commands + +These are the available [adaptable solutions commands](/refguide/mx-command-line-tool/adaptable): + +| Command | Description| +| --- | --- | +| [show-app-version](/refguide/mx-command-line-tool/adaptable/#show-version) | Shows the application version of the app. | +| [set-app-version](/refguide/mx-command-line-tool/adaptable/#set-app-version) | Sets the application version of the app. | + +### 3.1 Module Commands -| [Module Commands](/refguide/mx-command-line-tool/module) | Description | -|-|-| +These are the available [module commands](/refguide/mx-command-line-tool/module): + +| Command | Description | +|---|---| | [show-module-version](/refguide/mx-command-line-tool/mx-show-module-version) | Shows the version of the module specified. | | [set-module-version](/refguide/mx-command-line-tool/mx-set-module-version) | Sets the version of the module specified. | -| [Export Package Commands](/refguide/mx-command-line-tool/export) | Description | -| - | - | +### 3.1 Export Package Commands + +These are the available [export package commands](/refguide/mx-command-line-tool/export): + +| Command | Description | +| --- | --- | | create-project-package | Exports an app package. | | create-solution-package | Exports a solution package. | | create-module-package | Exports a module package. | -| [Merging and Diffing](/refguide/mx-command-line-tool/merge) | Description | -| - | - | +### 3.1 Merging and Diffing Commands + +These are the available [merging and diffing commands](/refguide/mx-command-line-tool/merge): + +| Command | Description | +| --- | --- | | [merge](/refguide/mx-command-line-tool/mx-merge) | Merges the *.mpr* files. | | [diff](/refguide/mx-command-line-tool/mx-diff) | Shows the diff of the *.mpr* files. | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md new file mode 100644 index 00000000000..3cf1fc4c541 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md @@ -0,0 +1,106 @@ +--- +title: "Adaptable Solution Commands" +url: /refguide/mx-command-line-tool/adaptable +category: "General Info" +weight: 20 +description: "Describes the commands related to adaptable solutions." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "solution", "check"] +--- + +## 1 Introduction + +The commands in this group are related to [adaptable solutions](/appstore/creating-content/sol-adapt/) . + +These commands use common format exit codes. + +The commands return `0` in case of success. + +In case of errors, the exit code consists of three digits `XYZ`: + +* `X` determines the error type: + * `1` – parameter validation error + * `2` – output-related error + * `3` – errors related to the execution of the operation +* `Y` is the number of the parameter the error is related to (if applicable) +* `Z` determines error details: + * `1` – file is not found + * `2` – app is too old + * `3` – distribution is not enabled + * `4` – version is not in the SemVer format + * `5` – app was not initialized from a solution package + +For exit code examples, refer to the specific commands below. + +## 2 mx show-app-version Command {#mx show-app-version} + +The `mx show-app-version` command enables seeing the [publisher-side](/appstore/creating-content/sol-solutions-guide/) version of your solution (meaning, the version of the solution that you develop) and the [consumer-side](/appstore/creating-content/sol-solutions-impl/) version of the solution package that your app is based on (meaning, the version of the solution package when you consumed the solution). + +### 2.1 Usage + +Use the following command pattern for `mx show-app-version`: + +`mx show-app-version MPR-FILE [OPTIONS]` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--based-on` | `-b` | Show `Based on` version. | +| `--help` | `-h` | Displays the help text and exits. | + +For `MPR-FILE`, enter an *.mpr* file. + +The `Based on` version is a version of a solution package (*.mxsolution*) that the current app is based on. + +Here are two examples: + +* `mx show-app-version C:\MyApp\MyApp.mpr` +* `mx show-app-version C:\MyApp\MyApp.mpr -b` + +### 2.2 Return Codes + +This command uses the common format exit codes described above for all app-version related commands. + +This table shows the return codes and their description: + +| Return Code | Description | +| --- | --- | +| 0 | No errors. | +| 315 | If `-b` was specified, but the app is not based on a solution. | +| 313 | If -b was not specified, but distribution as a solution is not enabled for the app. | + +## 3 mx set-app-version Command {#mx set-app-version} + +The `mx set-app-version` command enables setting the version of your [solution](/appstore/creating-content/sol-solutions-guide/) when building it. + +### 3.1 Usage + +Use the following command pattern for `mx set-app-version`: + +`mx set-app-version MPR-FILE VERSION` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | + +For `MPR-FILE`, enter an *.mpr* file. + +For `VERSION`, enter a version in the [SemVer](https://semver.org) format. + +Here is an example: + +`mx set-app-version C:\MyApp\MyApp.mpr 1.2.3` + +### 3.2 Return Codes + +This command uses the common format exit codes described above for all app-version related commands. + +This table shows the return codes and their description: + +| Return Code | Description | +| --- | --- | +| 0 | No errors. | +| 124 | If the version is not in the SemVer format. | +| 313 | If distribution as a solution is not enabled for the app | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/_index.md deleted file mode 100644 index 9caeb18a060..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/_index.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "Adaptable solution commands" -url: /refguide/mx-command-line-tool/adaptable -category: "General Info" -weight: 20 -description: "Describes the commands related to adaptable solutions." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "solution"] ---- - -The commands in this group are related to [Adaptable solutions](http://localhost:1313/appstore/creating-content/sol-solutions-guide/) . - -These commands use common format exit codes. - -Commands return 0 in case of success. - -In case of errors the exit code consists of three digits XYZ: - -**X:** determines the error type: - - 1: Parameter validation error. - - 2: Output-related error. - - 3: Errors related to the execution of the operation. - -**Y:** is the number of the parameter the error is related to (if applicable). - -**Z:** determines error details: - - 1: File is not found. - - 2: App is too old. - - 3: Distribution is not enabled. - - 4: Version is not in the SemVer format. - - 5: App was not initialized from a solution package. - -Please refer to the specific commands pages for exit code examples \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/set-app-version.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/set-app-version.md deleted file mode 100644 index 77c4667c1e7..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/set-app-version.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "mx set-app-version Command" -linktitle: "set-app-version" -url: /refguide/mx-command-line-tool/mx-set-app-version -category: "General Info" -weight: 20 -description: "Describes the mx set-app-version command." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "check"] ---- - -The mx set-app-version command allows you to set the version of your [solution](/appstore/creating-content/sol-solutions-guide/) when building it. - -## 1 Usage - -Use the following command pattern for `mx set-app-version`: - -`mx set-app-version MPR-FILE VERSION` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| -------- | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -For MPR-FILE enter a *.mpr* file. - -For VERSION enter a version in [SemVer](https://semver.org) format - -## 2 Examples - -`mx set-app-version C:\MyApp\MyApp.mpr 1.2.3` - -## 3 Return Codes - - This command uses [common format exit codes](/refguide/mx-command-line-tool/adaptable/) for all app-version related commands. - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | -------------------------------------------------------- | -| 0 | No errors | -| 124 | if Version is not in SemVer format | -| 313 | if Distribution as a solution is not enabled for the app | - - diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/show-app-version.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable/show-app-version.md deleted file mode 100644 index b6c228899da..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable/show-app-version.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "mx show-app-version Command" -linktitle: "show-app-version" -url: /refguide/mx-command-line-tool/mx-show-app-version -category: "General Info" -weight: 10 -description: "Describes the mx show-app-version command." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "check"] ---- - -The mx show-app-version command allows you to see the [publisher-side](/appstore/creating-content/sol-solutions-guide/) version of your solution (meaning, the version of the solution that you develop) and the [consumer-side](/appstore/creating-content/sol-solutions-impl/) version of the solution package that your app is based on (meaning, the version of the solution package when you consumed the solution). - -## 1 Usage - -Use the following command pattern for `mx show-app-version`: - -`mx show-app-version MPR-FILE [OPTIONS]` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ------------ | -------- | --------------------------------- | -| `--based-on` | `-b` | Show `Based on` version. | -| `--help` | `-h` | Displays the help text and exits. | - -For MPR-FILE enter a *.mpr* file. - -`Based on` version is a version of a solution package (.mxsolution) current App is based on. - -## 2 Examples - -`mx show-app-version C:\MyApp\MyApp.mpr` - -`mx show-app-version C:\MyApp\MyApp.mpr -b` - -## 3 Return Codes - - This command uses [common format exit codes](/refguide/mx-command-line-tool/adaptable/) for all app-version related commands. - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | No errors | -| 315 | if -b was specified but the app is not based on a solution. | -| 313 | if -b was not specified but distribution as a solution is not enabled for the app. | From b8d3ee1d28ec75628332d2b1230b17acdf1c7643 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 9 Jun 2023 16:38:31 +0200 Subject: [PATCH 015/232] Review --- .../general/mx-command-line-tool/adaptable.md | 9 +- .../mx-command-line-tool/app/_index.md | 92 ++++++++++++++++++- .../app/mx-create-project.md | 47 ---------- .../app/mx-show-version.md | 48 ---------- 4 files changed, 93 insertions(+), 103 deletions(-) delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/mx-create-project.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/mx-show-version.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md index 3cf1fc4c541..b291a35c6d1 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md @@ -1,7 +1,6 @@ --- title: "Adaptable Solution Commands" url: /refguide/mx-command-line-tool/adaptable -category: "General Info" weight: 20 description: "Describes the commands related to adaptable solutions." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "solution", "check"] @@ -52,12 +51,14 @@ For `MPR-FILE`, enter an *.mpr* file. The `Based on` version is a version of a solution package (*.mxsolution*) that the current app is based on. +### 2.2 Examples + Here are two examples: * `mx show-app-version C:\MyApp\MyApp.mpr` * `mx show-app-version C:\MyApp\MyApp.mpr -b` -### 2.2 Return Codes +### 2.3 Return Codes This command uses the common format exit codes described above for all app-version related commands. @@ -89,11 +90,13 @@ For `MPR-FILE`, enter an *.mpr* file. For `VERSION`, enter a version in the [SemVer](https://semver.org) format. +### 3.2 Examples + Here is an example: `mx set-app-version C:\MyApp\MyApp.mpr 1.2.3` -### 3.2 Return Codes +### 3.3 Return Codes This command uses the common format exit codes described above for all app-version related commands. diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md index af8b44144bd..5353c727156 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md @@ -1,12 +1,94 @@ --- -title: "App commands" +title: "App Commands" url: /refguide/mx-command-line-tool/app -category: "General Info" weight: 10 description: "Describes the app related commands." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project", "show-version"] --- -The commands in this group are related to Mendix App creation, checking, versioning and conversion. +## 1 Introduction + +The commands in this group are related to Mendix app creation, checking, versioning and conversion. + +Typically, these commands require a path to the *.mpr* file as a parameter. + +## 2 mx create-project Command + +The `mx create-project` command creates a new app in Studio Pro. The app version depends on the version the tool was bundled with. For example, if you are using the mx tool for Studio Pro version 10.0.0, `mx create project` will create a new app in that version. + +### 2.1 Usage + +Use the following command pattern: `mx create-project [OPTIONS] [TEMPLATE-MPK-FILE]` + +These are the `OPTIONS`: + +| Option | Default Value | Result | +| --- | --- | --- | +| `app-name` | App | Assigns the specified app name to the app. | +| `output-dir` | Current directory | The directory in which to create the app. | +| `language-code` | en_US | The default language of the app. | +| `sprintr-app-id` | Optional | Associates the app [feedback features](/developerportal/collaborate/feedback/) with the provided [Developer Portal app](/developerportal/#my-apps). The value is a GUID. When accessing the app in the Developer Portal, this ID can be found in the browser's URL (for example, `1a428ea7-b00e-4166-9b23-20b7be88a40e`). | + +`TEMPLATE-MPK-FILE` is an optional path to a Mendix app package *.mpk* file. If this argument is omitted, the app is created with a default empty project template. + +### 2.2 Examples + +These are example commands: + +| Example | Result | +| --- | --- | +| `mx create-project` | Creates an app in the current folder using all the default parameters. | +| `mx create-project --app-name MyFirstApp --output-dir C:\Projects\MyFirstApp` | Creates an app named `MyFirstApp` in the *C:\Projects\MyFirstApp* folder using all the default parameters. | +| `mx create-project C:\Templates\ExpenseReportTemplate.mpk` | Creates an app with the default parameters from a template located at *C:\Templates\ExpenseReportTemplate.mpk*. | + +### 2.3 Return Codes + +These are the return codes: + +| Return Code | Description | +| --- | --- | +| 0 | The app creation was successful. | +| 1 | An internal error occurred. | +| 2 | There is something wrong with the command-line options. | + +## 3 mx show-version Command + +The `mx show-version` command reports which version of Studio Pro was used last time the app was opened. + +The input is a single *.mpr* file. + +{{% alert color="info" %}} +The *.mpr* file must be the same version as mx. +{{% /alert %}} + +### 3.1 Usage + +Use the following command pattern for `mx show-version`: + +`mx show-version [OPTIONS] INPUT` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | + +For `INPUT`, enter an *.mpr* file. + +### 3.2 Examples + +These are example commands: + +| Example | Result | +| --- | --- | +| `mx show-version --help` | Displays the help text for the `show-version` command. | +| `mx show-version C:\Mendix\App1\App1.mpr` | Displays the version of Studio Pro that was last used to open the app. | + +### 3.3 Return Codes + +These are the return codes: + +| Return Code | Description | +| --- | --- | +| 0 | The command ran successfully. | -Typically these commands require a path to the MPR file as a parameter. diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-create-project.md b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-create-project.md deleted file mode 100644 index d47477a05ab..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-create-project.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: "mx create-project Command" -linktitle: "create-project" -url: /refguide/mx-command-line-tool/mx-create-project -category: "General Info" -weight: 10 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project"] ---- - -The `mx create-project` command creates a new app in Studio Pro. The app version depends on the version the tool was bundled with. For example, if you are using the mx tool for Studio Pro version 10.0.0.5003, `mx create project` will create a new app in that version. - -## 1 Usage - -Use the following command pattern: `mx create-project [OPTIONS] [TEMPLATE-MPK-FILE]` - -The `OPTIONS` are described in the table below: - -| Option | Default Value | Result | -| --- | --- | --- | -| `app-name` | App | Assigns the specified app name to the app. | -| `output-dir` | Current directory | The directory in which to create the app. | -| `language-code` | en_US | The default language of the app. | -| `sprintr-app-id` | Optional | Associates the app [feedback features](/developerportal/collaborate/feedback/) with the provided [Developer Portal app](/developerportal/#my-apps). The value is a GUID. When accessing the app in the Developer Portal, this ID can be found in the browser's URL (for example, `1a428ea7-b00e-4166-9b23-20b7be88a40e`). | - -`TEMPLATE-MPK-FILE` is an optional path to a Mendix app package (*.mpk*) file. If this argument is omitted, the app is created with a default empty project template. - -## 2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx create-project` | Creates an app in the current folder using all the default parameters. | -| `mx create-project --app-name MyFirstApp --output-dir C:\Projects\MyFirstApp` | Creates an app named `MyFirstApp` in the *C:\Projects\MyFirstApp* folder using all the default parameters. | -| `mx create-project C:\Templates\ExpenseReportTemplate.mpk` | Creates an app with the default parameters from a template located at *C:\Templates\ExpenseReportTemplate.mpk*. | - -## 3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The app creation was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | - diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-show-version.md b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-show-version.md deleted file mode 100644 index 7f3e6362079..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-show-version.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: "mx show-version Command" -linktitle: "show-version" -url: /refguide/mx-command-line-tool/mx-show-version -category: "General Info" -weight: 20 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "show-version"] ---- - -The `mx show-version` command reports which version of Studio Pro was used last time the app was opened. - -The input is a single MPR file. - -{{% alert color="info" %}} -The MPR file must be the same version as mx. -{{% /alert %}} - -## 1 Usage - -Use the following command pattern for `mx show-version`: - -`mx show-version [OPTIONS] INPUT` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| --- | --- | --- | -| `--help` | `-h` | Displays the help text and exits. | - -For `INPUT`, enter a *.mpr* file. - -## 2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx show-version --help` | Displays the help text for the `show-version` command. | -| `mx show-version C:\Mendix\App1\App1.mpr` | Displays the version of Studio Pro that was last used to open the app. | - -## 3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The command ran successfully. | From 61e8d01036446f823a2dcf3e28dc8737c16b01f2 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 9 Jun 2023 16:57:25 +0200 Subject: [PATCH 016/232] Review --- .../general/mx-command-line-tool/adaptable.md | 4 +- .../general/mx-command-line-tool/app.md | 208 ++++++++++++++++++ .../mx-command-line-tool/app/_index.md | 94 -------- .../mx-command-line-tool/app/mx-check.md | 70 ------ .../mx-command-line-tool/app/mx-convert.md | 59 ----- 5 files changed, 210 insertions(+), 225 deletions(-) create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/_index.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/mx-check.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/app/mx-convert.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md index b291a35c6d1..20eef339aaa 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md @@ -30,7 +30,7 @@ In case of errors, the exit code consists of three digits `XYZ`: For exit code examples, refer to the specific commands below. -## 2 mx show-app-version Command {#mx show-app-version} +## 2 mx show-app-version Command {#show-app-version} The `mx show-app-version` command enables seeing the [publisher-side](/appstore/creating-content/sol-solutions-guide/) version of your solution (meaning, the version of the solution that you develop) and the [consumer-side](/appstore/creating-content/sol-solutions-impl/) version of the solution package that your app is based on (meaning, the version of the solution package when you consumed the solution). @@ -70,7 +70,7 @@ This table shows the return codes and their description: | 315 | If `-b` was specified, but the app is not based on a solution. | | 313 | If -b was not specified, but distribution as a solution is not enabled for the app. | -## 3 mx set-app-version Command {#mx set-app-version} +## 3 mx set-app-version Command {#set-app-version} The `mx set-app-version` command enables setting the version of your [solution](/appstore/creating-content/sol-solutions-guide/) when building it. diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app.md b/content/en/docs/refguide/general/mx-command-line-tool/app.md new file mode 100644 index 00000000000..b8d0a0a9483 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/app.md @@ -0,0 +1,208 @@ +--- +title: "App Commands" +url: /refguide/mx-command-line-tool/app +weight: 10 +description: "Describes the app related commands." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project", "show-version", "convert"] +--- + +## 1 Introduction + +The commands in this group are related to Mendix app creation, checking, versioning and conversion. + +Typically, these commands require a path to the *.mpr* file as a parameter. + +## 2 mx create-project Command {#create-project} + +The `mx create-project` command creates a new app in Studio Pro. The app version depends on the version the tool was bundled with. For example, if you are using the mx tool for Studio Pro version 10.0.0, `mx create project` will create a new app in that version. + +### 2.1 Usage + +Use the following command pattern: `mx create-project [OPTIONS] [TEMPLATE-MPK-FILE]` + +These are the `OPTIONS`: + +| Option | Default Value | Result | +| --- | --- | --- | +| `app-name` | App | Assigns the specified app name to the app. | +| `output-dir` | Current directory | The directory in which to create the app. | +| `language-code` | en_US | The default language of the app. | +| `sprintr-app-id` | Optional | Associates the app [feedback features](/developerportal/collaborate/feedback/) with the provided [Developer Portal app](/developerportal/#my-apps). The value is a GUID. When accessing the app in the Developer Portal, this ID can be found in the browser's URL (for example, `1a428ea7-b00e-4166-9b23-20b7be88a40e`). | + +`TEMPLATE-MPK-FILE` is an optional path to a Mendix app package *.mpk* file. If this argument is omitted, the app is created with a default empty project template. + +### 2.2 Examples + +These are example commands: + +| Example | Result | +| --- | --- | +| `mx create-project` | Creates an app in the current folder using all the default parameters. | +| `mx create-project --app-name MyFirstApp --output-dir C:\Projects\MyFirstApp` | Creates an app named `MyFirstApp` in the *C:\Projects\MyFirstApp* folder using all the default parameters. | +| `mx create-project C:\Templates\ExpenseReportTemplate.mpk` | Creates an app with the default parameters from a template located at *C:\Templates\ExpenseReportTemplate.mpk*. | + +### 2.3 Return Codes + +These are the return codes: + +| Return Code | Description | +| --- | --- | +| 0 | The app creation was successful. | +| 1 | An internal error occurred. | +| 2 | There is something wrong with the command-line options. | + +## 3 mx show-version Command {#show-version} + +The `mx show-version` command reports which version of Studio Pro was used last time the app was opened. + +The input is a single *.mpr* file. + +{{% alert color="info" %}} +The *.mpr* file must be the same version as mx. +{{% /alert %}} + +### 3.1 Usage + +Use the following command pattern for `mx show-version`: + +`mx show-version [OPTIONS] INPUT` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | + +For `INPUT`, enter an *.mpr* file. + +### 3.2 Examples + +These are example commands: + +| Example | Result | +| --- | --- | +| `mx show-version --help` | Displays the help text for the `show-version` command. | +| `mx show-version C:\Mendix\App1\App1.mpr` | Displays the version of Studio Pro that was last used to open the app. | + +### 3.3 Return Codes + +These are the return codes: + +| Return Code | Description | +| --- | --- | +| 0 | The command ran successfully. | + +## 4 mx convert Command {#convert} + +The `mx convert` command converts the *.mpk* file(s) of the app(s) to a specific Studio Pro version. For example, if you are using the mx command-line tool for Studio Pro version 10.0.0, `mx convert` will convert the app to that version. + +The input can be a single file, directory, or multiple files. + +{{% alert color="info" %}} +The mx tool can only upgrade your app. You cannot use it to downgrade the version. +{{% /alert %}} + +### 4.1 Usage + +Use the following command pattern for `mx convert`: + +`mx convert [OPTIONS] INPUT... OUTPUT` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | +| `--in-place` | `-p` | Converts the current app directory. Use this option to convert a folder containing a Mendix app. Otherwise, `mx convert` will convert *.mpk* files. | +| `--skip-error-check` | `-s` | Does not check for errors. Use this option to disable app error-checking during the conversion. When omitted, the tool will report on the number of errors, warnings, and deprecations in the app and do the conversion. | + +For `INPUT...`, enter one or more *.mpk* files or one directory that needs to be converted. + +For `OUTPUT`, enter the output location for the converted results. Please note the following: + +* When `INPUT...` is a single file, `OUTPUT` can be a single file or directory; otherwise, `OUTPUT` must be a directory +* When using the `--in-place` option, the `INPUT...` folder will also be used as the `OUTPUT` folder, so you do not need to specify a separate `OUTPUT` folder + +### 4.2 Examples + +These are example commands: + +| Example | Result | +| --- | --- | +| `mx convert --in-place C:\MxProjects\App-main` | Converts the app in folder *C:\MxProjects\App-main* to the specific Studio Pro version that the mx tool is bundled with. | +| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the *C:\Mendix\* folder and puts the results in the *C:\Mendix\ConvertedProjects\* folder. | +| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all the app packages in the *C:\Mendix\Packages\* folder to the *C:\Mendix\ConvertedPackages\* folder without checking for errors. | + +### 4.3 Return Codes + +These are the return codes: + +| Return Code | Description | +| --- | --- | +| 0 | The conversion was successful. | +| 1 | An internal error occurred. | +| 2 | There is something wrong with the command-line options. | +| 3 | Converting failed. | + +## 5 mx check Command {#check} + +The `mx check` command checks the app *.mpr* file for issues such as errors, warnings, deprecations, or performance recommendations. + +{{% alert color="info" %}} +The *.mpr* file must be the same version as the mx tool. +{{% /alert %}} + +### 5.1 Usage + +Use the following command pattern for `mx check`: + +`mx check [OPTIONS] INPUT [Optional path to exported Suppress Warnings file (JSON)]` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help`| `-h` | Displays the help text and exits. | +| `--warnings` | `-w` | Includes warnings in the output. | +| `--deprecations` | `-d` | Includes deprecations in the output. | +| `--performance` | `-p` | Includes performance checks in the output (performance recommendations are only outputted if there are no errors). | + +{{% alert color="info" %}} +Errors in the *.mpr* are always reported. +{{% /alert %}} + +For `INPUT`, enter a single *.mpr* file. + +You can optionally specify the path to an exported suppress-warnings (JSON) file. This means that `mx check -w` will use the list of suppressed warnings in the JSON file, instead of the default behavior (which is to read from the *project-settings.user.json* file in the app directory). + +### 5.2 Examples + +These are example commands: + +| Example | Result | +| --- | --- | +| `mx check --help` | Displays the help text for the check command. | +| `mx check C:\MxProjects\App-main\App-main.mpr` | Checks the app at *C:\MxProjects\App-main\App-main.mpr* for errors. | +| `mx check C:\MxProjects\App-main\App-main.mpr -p` | Checks the app at *C:\MxProjects\App-main\App-main.mpr* for errors and performance recommendations. | +| `mx check C:\MxProjects\App-main\App-main.mpr --warnings --deprecations` | Checks the app at *C:\MxProjects\App-main\App-main.mpr* for errors, warnings, and deprecations. Suppressed warnings will be read from the *project-settings.user.json* file within the app directory. | +| `mx check C:\MxProjects\App-main\App-main.mpr c:\MxFiles\my-exported-suppressed-warnings.json --warnings` | Checks the app at *C:\MxProjects\App-main\App-main.mpr* for errors and warnings. Suppressed warnings will be read from the JSON file *my-exported-suppressed-warnings.json*. | +| `mx check C:\MxProjects\App-main\App-main.mpr -w -d -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, deprecations, and performance recommendations. | + +### 5.3 Return Codes + +These are the return codes: + +| Return Code | Description | +| --- | --- | +| 0 | No issues found. | +| 1 | Errors were found. | +| 2 | Warnings were found. | +| 4 | Deprecations were found. | +| 8 | Performance recommendations were found. | + +Those values are logically `OR` combined to indicate when there are a mix of errors, warnings, deprecations, or performance recommendations. + +For example: + +* `3` if errors and warnings found +* `7` if errors, warnings, and deprecations found diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md deleted file mode 100644 index 5353c727156..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/app/_index.md +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: "App Commands" -url: /refguide/mx-command-line-tool/app -weight: 10 -description: "Describes the app related commands." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project", "show-version"] ---- - -## 1 Introduction - -The commands in this group are related to Mendix app creation, checking, versioning and conversion. - -Typically, these commands require a path to the *.mpr* file as a parameter. - -## 2 mx create-project Command - -The `mx create-project` command creates a new app in Studio Pro. The app version depends on the version the tool was bundled with. For example, if you are using the mx tool for Studio Pro version 10.0.0, `mx create project` will create a new app in that version. - -### 2.1 Usage - -Use the following command pattern: `mx create-project [OPTIONS] [TEMPLATE-MPK-FILE]` - -These are the `OPTIONS`: - -| Option | Default Value | Result | -| --- | --- | --- | -| `app-name` | App | Assigns the specified app name to the app. | -| `output-dir` | Current directory | The directory in which to create the app. | -| `language-code` | en_US | The default language of the app. | -| `sprintr-app-id` | Optional | Associates the app [feedback features](/developerportal/collaborate/feedback/) with the provided [Developer Portal app](/developerportal/#my-apps). The value is a GUID. When accessing the app in the Developer Portal, this ID can be found in the browser's URL (for example, `1a428ea7-b00e-4166-9b23-20b7be88a40e`). | - -`TEMPLATE-MPK-FILE` is an optional path to a Mendix app package *.mpk* file. If this argument is omitted, the app is created with a default empty project template. - -### 2.2 Examples - -These are example commands: - -| Example | Result | -| --- | --- | -| `mx create-project` | Creates an app in the current folder using all the default parameters. | -| `mx create-project --app-name MyFirstApp --output-dir C:\Projects\MyFirstApp` | Creates an app named `MyFirstApp` in the *C:\Projects\MyFirstApp* folder using all the default parameters. | -| `mx create-project C:\Templates\ExpenseReportTemplate.mpk` | Creates an app with the default parameters from a template located at *C:\Templates\ExpenseReportTemplate.mpk*. | - -### 2.3 Return Codes - -These are the return codes: - -| Return Code | Description | -| --- | --- | -| 0 | The app creation was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | - -## 3 mx show-version Command - -The `mx show-version` command reports which version of Studio Pro was used last time the app was opened. - -The input is a single *.mpr* file. - -{{% alert color="info" %}} -The *.mpr* file must be the same version as mx. -{{% /alert %}} - -### 3.1 Usage - -Use the following command pattern for `mx show-version`: - -`mx show-version [OPTIONS] INPUT` - -These are the `OPTIONS`: - -| Option | Shortcut | Result | -| --- | --- | --- | -| `--help` | `-h` | Displays the help text and exits. | - -For `INPUT`, enter an *.mpr* file. - -### 3.2 Examples - -These are example commands: - -| Example | Result | -| --- | --- | -| `mx show-version --help` | Displays the help text for the `show-version` command. | -| `mx show-version C:\Mendix\App1\App1.mpr` | Displays the version of Studio Pro that was last used to open the app. | - -### 3.3 Return Codes - -These are the return codes: - -| Return Code | Description | -| --- | --- | -| 0 | The command ran successfully. | - diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-check.md b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-check.md deleted file mode 100644 index 5247ec513eb..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-check.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: "mx check Command" -linktitle: "check" -url: /refguide/mx-command-line-tool/mx-check -category: "General Info" -weight: 40 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "check"] ---- - -The `mx check` command checks the app MPR file for issues such as Errors, Warnings, Deprecations, or Performance Recommendations. - -{{% alert color="info" %}} -The MPR file must be the same version as mx. -{{% /alert %}} - -## 1 Usage - -Use the following command pattern for `mx check`: - -`mx check [OPTIONS] INPUT [Optional path to exported Suppress Warnings file (JSON)]` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ---------------- | -------- | ------------------------------------------------------------ | -| `--help` | `-h` | Displays the help text and exits. | -| `--warnings` | `-w` | Include warnings in the output | -| `--deprecations` | `-d` | Include deprecations in the output | -| `--performance` | `-p` | Include performance checks in the output (performance recommendations are only output if there are no errors) | - -{{% alert color="info" %}} -Errors in the MPR are always reported. -{{% /alert %}} - -For `INPUT`, enter a single *.mpr* file. - -You can optionally specify the path to an exported Suppress Warnings file (JSON file). This means that `mx check -w` will use the list of suppressed warnings in the JSON file, instead of the default behavior which is to read from the *project-settings.user.json* file in the app directory. - -## 2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| `mx check --help` | Displays the help text for the check command. | -| `mx check C:\MxProjects\App-main\App-main.mpr` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors. | -| `mx check C:\MxProjects\App-main\App-main.mpr -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and performance recommendations. | -| `mx check C:\MxProjects\App-main\App-main.mpr --warnings --deprecations` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, and deprecations. Suppressed warnings will be read from the *project-settings.user.json* file within the app directory. | -| `mx check C:\MxProjects\App-main\App-main.mpr c:\MxFiles\my-exported-suppressed-warnings.json --warnings` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and warnings. Suppressed warnings will be read from the JSON file *my-exported-suppressed-warnings.json*. | -| `mx check C:\MxProjects\App-main\App-main.mpr -w -d -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, deprecations, and performance recommendations. | - -## 3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| ----------- | --------------------------------------- | -| 0 | No issues found. | -| 1 | Errors were found. | -| 2 | Warnings were found. | -| 4 | Deprecations were found. | -| 8 | Performance recommendations were found. | - -Those values are logically OR combined to indicate when there are a mix of errors, warnings, deprecations, or performance recommendations. - -For example: - -* 3 if errors and warnings found -* 7 if errors, warnings, and deprecations found diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-convert.md b/content/en/docs/refguide/general/mx-command-line-tool/app/mx-convert.md deleted file mode 100644 index 977cc054a10..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/app/mx-convert.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "mx convert Command" -linktitle: "convert" -url: /refguide/mx-command-line-tool/mx-convert -category: "General Info" -weight: 30 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "convert"] ---- - -The `mx convert` command converts the app(s) MPK file(s) to a specific Studio Pro version. For example, if you are using the mx command-line tool for Studio Pro version 10.0.0.5003, `mx convert` will convert the app to that version. - -The input can be a single file, directory, or multiple files. - -{{% alert color="info" %}} -The mx tool can only upgrade your app; you cannot use it to downgrade the version. -{{% /alert %}} - -## 1 Usage - -Use the following command pattern for `mx convert`: - -`mx convert [OPTIONS] INPUT... OUTPUT` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| --- | --- | --- | -| `--help` | `-h` | Displays the help text and exits. | -| `--in-place` | `-p` | Converts the current app directory. Use this option to convert a folder containing a Mendix app. Otherwise, `mx convert` will convert *.mpk* files. | -| `--skip-error-check` | `-s` | Does not check for errors. Use this option to disable app error-checking during the conversion. When omitted, the tool will report on the number of errors, warnings, and deprecations in the app and do the conversion. | - -For `INPUT...`, enter one or more *.mpk* files or one directory that needs to be converted. - -For `OUTPUT`, enter the output location for the converted results. Mind the following: - -* When `INPUT...` is a single file, `OUTPUT` can be a single file or directory; otherwise, `OUTPUT` must be a directory. -* When using the `--in-place` option, the `INPUT...` folder will also be used as the `OUTPUT` folder, so you do not need to specify a separate `OUTPUT` folder - -## 2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx convert --in-place C:\MxProjects\App-main` | Converts the app in folder `C:\MxProjects\App-main` to the specific Studio Pro version which the mx tool is bundled with. | -| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the *C:\Mendix\* folder and puts the results in the `C:\Mendix\ConvertedProjects\` folder. | -| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all app packages in the `C:\Mendix\Packages\` folder to the `C:\Mendix\ConvertedPackages\` folder without checking for errors. | - -## 3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The conversion was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | -| 3 | Converting failed. | From 62445b893d07ee5d71b82efe84595a7d09697a1d Mon Sep 17 00:00:00 2001 From: katarzyna_koltun Date: Fri, 9 Jun 2023 17:57:57 +0200 Subject: [PATCH 017/232] Initial draft --- .../en/docs/appstore/connectors/aws/aws-s3-connector.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/content/en/docs/appstore/connectors/aws/aws-s3-connector.md b/content/en/docs/appstore/connectors/aws/aws-s3-connector.md index 9eacc3c1231..94657d37cd2 100644 --- a/content/en/docs/appstore/connectors/aws/aws-s3-connector.md +++ b/content/en/docs/appstore/connectors/aws/aws-s3-connector.md @@ -25,6 +25,14 @@ Amazon Simple Storage Service (Amazon S3) is an object storage service offering The Amazon S3 connector requires the [AWS Authentication connector version 2.1 or higher](https://marketplace.mendix.com/link/component/120333) to authenticate with Amazon Web Services (AWS). It is crucial for the Amazon S3 connector to function correctly. For more information about installing and configuring the AWS Authentication connector, see [AWS Authentication](/appstore/connectors/aws/aws-authentication/). +### 1.3 Licensing and Cost + +This connector is available as a free download from the Mendix Marketplace, but the AWS service to which is connects may incur a usage cost. For more information, refer to AWS documentation. + +Depending on your use case, your deployment environment, and the type of app that you want to build, you may also need a license for your Mendix app. For more information, refer to [Licensing Apps](/developerportal/deploy/licensing-apps-outside-mxcloud/). + +Using AWS services + ## 2 Installation Follow the instructions in [How to Use Marketplace Content in Studio Pro](/appstore/general/app-store-content/) to import the Amazon S3 connector into your app. From 2a8b40d3e94ea85c3e7a206809724b4a5f124c9d Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 12 Jun 2023 07:45:22 +0200 Subject: [PATCH 018/232] Review --- .../general/mx-command-line-tool/adaptable.md | 2 +- .../general/mx-command-line-tool/app.md | 2 +- .../mx-command-line-tool/module/_index.md | 49 ++++++++++++++++--- .../module/show-module-version.md | 31 ------------ 4 files changed, 44 insertions(+), 40 deletions(-) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md index 20eef339aaa..86ca8a36bb8 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md @@ -2,7 +2,7 @@ title: "Adaptable Solution Commands" url: /refguide/mx-command-line-tool/adaptable weight: 20 -description: "Describes the commands related to adaptable solutions." +description: "Describes the adaptable solution-related commands for mx CLT." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "solution", "check"] --- diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app.md b/content/en/docs/refguide/general/mx-command-line-tool/app.md index b8d0a0a9483..e2eb9e235f8 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/app.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/app.md @@ -2,7 +2,7 @@ title: "App Commands" url: /refguide/mx-command-line-tool/app weight: 10 -description: "Describes the app related commands." +description: "Describes the app-related commands for mx CLT." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project", "show-version", "convert"] --- diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md index bda123d62a7..ef10ed7e5b2 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md @@ -1,19 +1,54 @@ --- -title: "Module commands" +title: "Module Commands" url: /refguide/mx-command-line-tool/module -category: "General Info" weight: 30 -description: "Describes the module related commands." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +description: "Describes the module-related commands for mx CLT." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "module", "show-module-version", "set-module-version"] --- +## 1 Introduction + The commands in this group are related to Mendix modules. -Typically these commands require a path to the MPR file and Module name as parameters. +Typically, these commands require a path to the *.mpr* file and the module name as parameters. + +These are the return codes of the commands in this group: + +| Return Code | Description | +| --- | --- | +| 0 | No errors. | +| 1 | If the module in question does not have have a version. | + +## 2 mx show-module-version Command + +The mx show-module-verion command outputs the version of the module or the version of a module + +### 2.1 Usage + +Use the following command pattern for `mx show-module-version`: + +`mx show-module-version TARGET-FILE MODULE-NAME` -The table below shows return codes of the commands in this group and their meaning: +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| ------------ | -------- | --------------------------------- | +| `--help` | `-h` | Displays the help text and exits. | + +For TARGET-FILE enter a *.mpr* file. +For MODULE-NAME enter the name of the module. + +### 2.2 Examples + +`mx show-module-version C:\MyApp\MyApp.mpr MyFirstModule` + +### 2.3 Return Codes + + The table below shows return codes and their meaning: | Return Code | Description | | ----------- | ------------------------------------------------------------ | | 0 | No errors | -| 1 | If the module in question doesn't have a version | \ No newline at end of file +| 1 | If the module in question doesn't have a version | + +The command will output the version of a module to the command line output. \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md b/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md index e54f3133c96..9295f6ec0dc 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md @@ -8,34 +8,3 @@ description: "Describes the options of the mx show-module-version command-line t tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "show-module-version"] --- -The mx show-module-verion command outputs the version of the module or the version of a module - -## 1 Usage - -Use the following command pattern for `mx show-module-version`: - -`mx show-module-version TARGET-FILE MODULE-NAME` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ------------ | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -For TARGET-FILE enter a *.mpr* file. -For MODULE-NAME enter the name of the module. - -## 2 Examples - -`mx show-module-version C:\MyApp\MyApp.mpr MyFirstModule` - -## 3 Return Codes - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | No errors | -| 1 | If the module in question doesn't have a version | - -The command will output the version of a module to the command line output. \ No newline at end of file From 8c7b58200615693224e06d530104bb82fda2045e Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 12 Jun 2023 09:20:45 +0200 Subject: [PATCH 019/232] Review --- .../general/mx-command-line-tool/adaptable.md | 6 +- .../general/mx-command-line-tool/app.md | 2 +- .../mx-command-line-tool/export/_index.md | 9 +- .../general/mx-command-line-tool/module.md | 87 +++++++++++++++++++ .../mx-command-line-tool/module/_index.md | 54 ------------ .../module/set-module-version.md | 40 --------- .../module/show-module-version.md | 10 --- 7 files changed, 95 insertions(+), 113 deletions(-) create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/module.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/module/_index.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/module/set-module-version.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md index 86ca8a36bb8..7bc12d7adc8 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md @@ -2,7 +2,7 @@ title: "Adaptable Solution Commands" url: /refguide/mx-command-line-tool/adaptable weight: 20 -description: "Describes the adaptable solution-related commands for mx CLT." +description: "Describes the adaptable solution-related commands for the mx command-line tool." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "solution", "check"] --- @@ -105,5 +105,5 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | | 0 | No errors. | -| 124 | If the version is not in the SemVer format. | -| 313 | If distribution as a solution is not enabled for the app | +| 124 | The version is not in the SemVer format. | +| 313 | Distribution as a solution is not enabled for the app. | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app.md b/content/en/docs/refguide/general/mx-command-line-tool/app.md index e2eb9e235f8..9d343106cd3 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/app.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/app.md @@ -2,7 +2,7 @@ title: "App Commands" url: /refguide/mx-command-line-tool/app weight: 10 -description: "Describes the app-related commands for mx CLT." +description: "Describes the app-related commands for the mx command-line tool." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project", "show-version", "convert"] --- diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md index 15a086444c7..afa2c95a916 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md @@ -1,11 +1,10 @@ --- -title: "Export package commands" +title: "Export Package Commands" url: /refguide/mx-command-line-tool/export -category: "General Info" -weight: 50 -description: "Describes the commands related to packages export." +weight: 40 +description: "Describes the commands related to package export for the mx command-line tool." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] --- -Commands in this group allow you to export different kids of packages from your App. +The commands in this group allow you to export different kids of packages from your App. diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module.md b/content/en/docs/refguide/general/mx-command-line-tool/module.md new file mode 100644 index 00000000000..191dc1e4abd --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/module.md @@ -0,0 +1,87 @@ +--- +title: "Module Commands" +url: /refguide/mx-command-line-tool/module +weight: 30 +description: "Describes the module-related commands for the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "module", "show-module-version", "set-module-version"] +--- + +## 1 Introduction + +The commands in this group are related to Mendix modules. + +Typically, these commands require a path to the *.mpr* file and the module name as parameters. + +## 2 mx show-module-version Command + +The `mx show-module-verion` command outputs the version of a module. + +### 2.1 Usage + +Use the following command pattern for `mx show-module-version`: + +`mx show-module-version TARGET-FILE MODULE-NAME` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text `and exits.`, | + +For `TARGET-FILE`, enter a *.mpr* file. + +For `MODULE-NAME`, enter the name of the module. + +### 2.2 Examples + +Here is an example: + +`mx show-module-version C:\MyApp\MyApp.mpr MyFirstModule` + +### 2.3 Return Codes + +This table shows the return codes and their description: + +| Return Code | Description | +| --- | --- | +| 0 | No errors. | +| 1 | The module does not have a version | + +The command will output the version of the module to the command line output. + +## 3 mx set-module-version Command + +The `mx set-module-version` command outputs the version of a module. + +### 3.1 Usage + +Use the following command pattern for `mx set-module-version`: + +`mx set-module-version TARGET-FILE MODULE-NAME NEW-VERSION` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | + +For `TARGET-FILE`, enter a *.mpr* file. + +For `MODULE-NAME`, enter the name of the module. + +For `NEW-VERSION`, enter a version in the [SemVer](https://semver.org) format. + +### 3.2 Examples + +Here is an example: + +`mx set-module-version C:\MyApp\MyApp.mpr MyFirstModule 1.2.3` + +### 3.3 Return Codes + +This table shows the return codes and their description: + +| Return Code | Description | +| --- | --- | +| 0 | No errors. | +| 1 | The module does not have a version | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md deleted file mode 100644 index ef10ed7e5b2..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/module/_index.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Module Commands" -url: /refguide/mx-command-line-tool/module -weight: 30 -description: "Describes the module-related commands for mx CLT." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "module", "show-module-version", "set-module-version"] ---- - -## 1 Introduction - -The commands in this group are related to Mendix modules. - -Typically, these commands require a path to the *.mpr* file and the module name as parameters. - -These are the return codes of the commands in this group: - -| Return Code | Description | -| --- | --- | -| 0 | No errors. | -| 1 | If the module in question does not have have a version. | - -## 2 mx show-module-version Command - -The mx show-module-verion command outputs the version of the module or the version of a module - -### 2.1 Usage - -Use the following command pattern for `mx show-module-version`: - -`mx show-module-version TARGET-FILE MODULE-NAME` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ------------ | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -For TARGET-FILE enter a *.mpr* file. -For MODULE-NAME enter the name of the module. - -### 2.2 Examples - -`mx show-module-version C:\MyApp\MyApp.mpr MyFirstModule` - -### 2.3 Return Codes - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | No errors | -| 1 | If the module in question doesn't have a version | - -The command will output the version of a module to the command line output. \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module/set-module-version.md b/content/en/docs/refguide/general/mx-command-line-tool/module/set-module-version.md deleted file mode 100644 index a51b5ec69cd..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/module/set-module-version.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "mx set-module-version Command" -linktitle: "set-module-version" -url: /refguide/mx-command-line-tool/mx-set-module-version -category: "General Info" -weight: 20 -description: "Describes the options of the mx set-module-version command-line tool command." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "set-module-version"] ---- - -The mx set-module-version command outputs the version of the module or the version of a module - -## 1 Usage - -Use the following command pattern for `mx set-module-version`: - -`mx set-module-version TARGET-FILE MODULE-NAME NEW-VERSION` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ------------ | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -For TARGET-FILE enter a *.mpr* file. -For MODULE-NAME enter the name of the module. -For NEW-VERSIOn enter a version in [SemVer](https://semver.org) format - -## 2 Examples - -`mx set-module-version C:\MyApp\MyApp.mpr MyFirstModule 1.2.3` - -## 3 Return Codes - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | No errors | -| 1 | If the module in question doesn't have a version | \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md b/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md deleted file mode 100644 index 9295f6ec0dc..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/module/show-module-version.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "mx show-module-version Command" -linktitle: "show-module-version" -url: /refguide/mx-command-line-tool/mx-show-module-version -category: "General Info" -weight: 10 -description: "Describes the options of the mx show-module-version command-line tool command." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "show-module-version"] ---- - From 58b25cb4561096a4917134ccad924d92e4731d46 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 12 Jun 2023 10:59:54 +0200 Subject: [PATCH 020/232] Review --- .../general/mx-command-line-tool/adaptable.md | 2 +- .../general/mx-command-line-tool/export.md | 126 ++++++++++++++++++ .../mx-command-line-tool/export/_index.md | 10 -- .../export/create-module-package.md | 45 ------- .../export/create-project-package.md | 40 ------ .../export/create-solution-package.md | 40 ------ .../mx-command-line-tool/merge/_index.md | 121 ++++++++++++++++- .../mx-command-line-tool/merge/mx-diff.md | 37 ----- .../mx-command-line-tool/merge/mx-merge.md | 66 --------- .../general/mx-command-line-tool/module.md | 4 +- 10 files changed, 244 insertions(+), 247 deletions(-) create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export/_index.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export/create-module-package.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export/create-project-package.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/export/create-solution-package.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md index 7bc12d7adc8..aa534c1734e 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md @@ -44,7 +44,7 @@ These are the `OPTIONS`: | Option | Shortcut | Result | | --- | --- | --- | -| `--based-on` | `-b` | Show `Based on` version. | +| `--based-on` | `-b` | Shows the `Based on` version. | | `--help` | `-h` | Displays the help text and exits. | For `MPR-FILE`, enter an *.mpr* file. diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export.md b/content/en/docs/refguide/general/mx-command-line-tool/export.md new file mode 100644 index 00000000000..5eb3584bf82 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/export.md @@ -0,0 +1,126 @@ +--- +title: "Export Package Commands" +url: /refguide/mx-command-line-tool/export +weight: 40 +description: "Describes the commands related to package export for the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project-package", "create-module-package", "create-solution-package"] +--- + +## 1 Introduction + +The commands in this group enable exporting different kids of packages from your app. + +## 2 mx create-project-package Command {#create-project-package} + +The `mx create-project-package` command exports the app as a [source app package](/refguide/export-app-package-dialog/). + +### 2.1 Usage + +Use the following command pattern: + +`mx create-project-package [OPTIONS] TARGET-FILE` + +These are the `OPTIONS`: + +| Option | Default Value | Result | +| --- | --- | --- | +| `-s, --include-snapshot` | Includes a snapshot in the app package. | +| `-d, --package-dir` | Exports the package to the directory. | +| `--help` | Displays the help screen. | + +For `TARGET-FILE`, specify the *.mpr* the app you want to export. + +### 2.2 Examples + +Here is an example: + +`mx create-project-package c:\MyApps\MyApp.mpr` + +### 2.3 Return Codes + +This table shows the return codes and their description: + +| Return Code | Description | +| --- | --- | +| 0 | OK. | +| 1 | Incorrect app file provided. | +| 2 | Output folder not determined. | +| 4 | Unknown package export error. | + +## 3 mx create-module-package Command {#create-module-package} + +The `mx create-module-package` command exports a module package from an app. + +### 3.1 Usage + +Use the following command pattern: + +`mx create-module-package [OPTIONS] TARGET-FILE MODULE-NAME` + +These are the `OPTIONS`: + +| Option | Description | +| --- | --- | +| `-l, --filter-required-libs` | Includes all the files except the userlibs that do not have an accompanying `[ModuleName].RequiredLib` file. | +| `-e, --exclude-files` | Excludes all the files that match the given regular expression. | +| `-d, --package-dir` | Exports the module package to the directory. | +| `--help` | Displays the help screen. | + +For `TARGET-FILE`, specify the *.mpr* the app you want to export. + +For `MODULE-NAME`, specify the name of the module you want to export. + +### 3.2 Examples + +Here is an example: + +`mx create-module-package c:\MyApps\MyApp.mpr Module1` + +### 3.3 Return Codes + +This table shows the return codes and their description: + +| Return Code | Description | +| --- | --- | +| 0 | OK. | +| 1 | Incorrect app file provided. | +| 2 | Output folder not determined. | +| 3 | Invalid module name specified. | +| 4 | Unknown package export error. | + +## 4 mx create-solution-package Command {#create-solution-package} + +The `mx create-solution-package` command exports the app as a [solution package](/refguide/export-app-package-dialog). + +### 4.1 Usage + +Use the following command pattern: + +`mx create-solution-package [OPTIONS] TARGET-FILE` + +These are the `OPTIONS`: + +| Option | Default Value | Result | +| --- | --- | --- | +| `-s, --include-snapshot` | Includes a snapshot in the app package. | +| `-d, --package-dir` | Exports the package to the directory. | +| `--help` | Displays the help screen. | + +For `TARGET-FILE`, specify the *.mpr* the app you want to export. + +### 4.2 Examples + +Here is an example: + +`mx create-solution-package c:\MyApps\MyApp.mpr` + +### 4.3 Return Codes + +This table shows the return codes and their description: + +| Return Code | Description | +| --- | --- | +| 0 | OK. | +| 1 | Incorrect app file provided. | +| 2 | Output folder not determined. | +| 4 | Unknown package export error. | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md deleted file mode 100644 index afa2c95a916..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/export/_index.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -title: "Export Package Commands" -url: /refguide/mx-command-line-tool/export -weight: 40 -description: "Describes the commands related to package export for the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] ---- - -The commands in this group allow you to export different kids of packages from your App. - diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/create-module-package.md b/content/en/docs/refguide/general/mx-command-line-tool/export/create-module-package.md deleted file mode 100644 index 1a526b997b6..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/export/create-module-package.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "mx create-module-package Command" -linktitle: "create-module-package" -url: /refguide/mx-command-line-tool/mx-create-module-package -category: "General Info" -weight: 20 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-module-package"] ---- - -The `mx create-module-package` command exports a module package from an app. - -## 1 Usage - -Use the following command pattern: `mx create-module-package [OPTIONS] TARGET-FILE MODULE-NAME` - -The `OPTIONS` are described in the table below: - -| Option | Description | -| --- | --- | -| -l, --filter-required-libs | Includes all files except the userlibs that don't have an accompanying file `[ModuleName].RequiredLib` | - -e, --exclude-files | Exclude all files that match the given regular expression | - -d, --package-dir | Export module package to this directory | - --help | Display this help screen. | - - -For `TARGET-FILE` specify the MPR of the App you want to export - -For `MODULE-NAME` specify the name of the module you want to export - -## 2 Examples - -`mx create-module-package c:\MyApps\MyApp.mpr Module1` - -## 3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | Ok | -| 1 | Wrong project file provided | -| 2 | Output folder not determined | -| 3 | Invalid module name specified | -| 4 | Unknown package export error | \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/create-project-package.md b/content/en/docs/refguide/general/mx-command-line-tool/export/create-project-package.md deleted file mode 100644 index 068d91133c1..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/export/create-project-package.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "mx create-project-package Command" -linktitle: "create-project-package" -url: /refguide/mx-command-line-tool/mx-create-project-package -category: "General Info" -weight: 10 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-project-package"] ---- - -The `mx create-project-package` command exports the app as a [Source App package](/refguide/export-app-package-dialog). - -## 1 Usage - -Use the following command pattern: `mx create-project-package [OPTIONS] TARGET-FILE` - -The `OPTIONS` are described in the table below: - -| Option | Default Value | Result | -| --- | --- | --- | -| -s, --include-snapshot | Include a snapshot in the app package | -| -d, --package-dir | Export package to this directory | -| --help | Display this help screen. | - -For `TARGET-FILE` specify the MPR of the App you want to export - -## 2 Examples - -`mx create-project-package c:\MyApps\MyApp.mpr` - -## 3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | Ok | -| 1 | Wrong project file provided | -| 2 | Output folder not determined | -| 4 | Unknown package export error | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export/create-solution-package.md b/content/en/docs/refguide/general/mx-command-line-tool/export/create-solution-package.md deleted file mode 100644 index b648280f025..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/export/create-solution-package.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "mx create-solution-package Command" -linktitle: "create-solution-package" -url: /refguide/mx-command-line-tool/mx-create-solution-package -category: "General Info" -weight: 30 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "create-solution-package"] ---- - -The `mx create-solution-package` command exports the app as a [Solution package](/refguide/export-app-package-dialog). - -## 1 Usage - -Use the following command pattern: `mx create-solution-package [OPTIONS] TARGET-FILE` - -The `OPTIONS` are described in the table below: - -| Option | Default Value | Result | -| --- | --- | --- | -| -s, --include-snapshot | Include a snapshot in the app package | -| -d, --package-dir | Export package to this directory | -| --help | Display this help screen. | - -For `TARGET-FILE` specify the MPR of the App you want to export - -## 2 Examples - -`mx create-solution-package c:\MyApps\MyApp.mpr` - -## 3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | Ok | -| 1 | Wrong project file provided | -| 2 | Output folder not determined | -| 4 | Unknown package export error | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md index d0455728ace..60f30a6bb13 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md @@ -1,11 +1,120 @@ --- -title: "Merging and diffing commands" +title: "Merging and Diffing commands" url: /refguide/mx-command-line-tool/merge -category: "General Info" -weight: 60 -description: "Describes the commands related to merging and diffng Apps." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +weight: 50 +description: "Describes the commands related to merging and diffing apps for the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "diff", "merge"] --- -Commands in this group allow you compare 2 apps and merge them. +## 1 Introduction +The commands in this group enable comparing two apps and merging them. + +## 2 mx diff Command + +The `mx diff` command performs a diff of two *.mpr* files and outputs the differences to a file in the JSON format. + +### 2.1 Usage + +Use the following command pattern for `mx diff`: + +`mx diff [options] BASE MINE OUTPUT` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | +| `--loose-version-check` | `-l` | Makes the version check loose (meaning, it auto-converts if possible before diffing). | + +`BASE` is the first *.mpr* file, which is used as a base in comparison. + +`MINE` is the second *.mpr* file, which is used as the changed version in comparison. The output will contain the changes that are in this file against the base. + +{{% alert color="info" %}} +For example, if the `BASE` *.mpr* has Microflow1 and the `MINE` *.mpr* does not have it, Microflow1 wil be listed as deleted in the output file. If you swap the `BASE` and `MINE` parameters and compare again, Microflow1 will be listed as added.{{% /alert %}} + +`OUTPUT` is the name of the outputted JSON file. + +### 2.2 Examples + +This is an example: + +`mx diff C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr c:\comparison\output.json` + +### 2.3 Return Codes + +| Return Code | Meaning | +| --- | --- | +| 0 | OK. | +| 2 | Conflicts were found during the diff. | +| 3 | An error happened during the merge. | +| 4 | The version of either *.mpr* file is not supported. | + +## 3 mx merge Command + +The mx merge command performs a three-way merge of two MPR files having a common base commit. + +The input is three MPR files: base, mine, and theirs + +### 3.1 Usage + +Use the following command pattern for `mx merge`: + +`mx merge [OPTIONS] BASE MINE THEIRS` + +The `OPTIONS` are described in the table below: + +| Option | Shortcut | Result | +| -------- | -------- | --------------------------------- | +| `--help` | `-h` | Displays the help text and exits. | + +`BASE` is common base version of the App. If the app is version controlled, this is the last common revision of the app -- revision that is present in both branches history. + +`MINE` is the version to merge into; this MPR contains the results of the merge. + +`THEIRS` is the version to merge changes from. + +The image below illustrates the meaning of the parameters: + +{{< figure src="/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png" alt="mx merge" >}} + +**A"** is MINE -- the current commit you want to merge the changes TO. + +**B'** is THEIRS -- the last commit on a branch you want to merge change FROM. + +**A** is BASE -- the common commit where branches diverged. + +In order to merge changes correctly Studio Pro has to compare both A" and B' againt A to see what has been changed on each branch. During the merge [Merge Algorithm](/refguide/merge-algorithm) will try to automatically merge the changes. + +This command works for any three MPR files. This means you can try to merge different Apps at your own risk. + +{{% alert color="info" %}}Please note, that this command works different than normal version controlled merge you can do in Studio Pro. While Studio pro does real merge of one branch into another, this command just runs merge algorithm over 3 MPR files that don't even have to be version controlled. {{% /alert %}} + +### 3.2 Conflicts + +If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro and doing Version Control -> Merge changes here. + +The reason for this is that conflict resolution is a complex process that requires 2 things: +1. App has to be version controlled. +2. Your git repository has to be in so called `merge state` (Studio Pro does this when you click `Merge changes here`) + +This `merge state` is needed for Studio Pro to know what is your current branch and the branch you are trying to merge into it. This way when you are trying to resolve the conflict using `theirs` document, Studio Pro can download the document from the branch and put it into your current App. + +So if you just run this command from command line specifying 3 MPRs and the result has conflicts, you won't be able to resolve conflicts in `mine` app using `theirs` documents by just opening the app in Studio Pro. + +For this to be possible you need to [configure git to use `mx merge` as a merge driver](/refguide/mx-command-line-tool/mx-merge-driver) for MPR files and trigger merge from git command line (so that the repository is put in `merge-state` for Studio Pro to be able to pick it up after the command is complete). + +### 3.3 Examples + +`mx merge C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr C:\MyApp-FeatureBranch\MyApp.mpr` + +### 3.4 Return Codes + +| Return Code | Description | +| ----------- | ------------------------------------------------------------ | +| 0 | Merge is successful, there are no conflicts. *MINE.mpr* contains the result of the merge. | +| 1 | The command is invalid, check input parameters. | +| 2 | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | +| 3 | This code means an exception – an error occurred during the merge. Error details are printed to the command line output. | +| 4 | The version is unsupported \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md index 387080e64a8..92180f17009 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md @@ -7,40 +7,3 @@ weight: 10 description: "Describes the mx diff command." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "diff"] --- - -The `mx diff` command performs a diff of two MPR files and outputs the differences to a file in json format. - -## 1 Usage - -Use the following command pattern for `mx diff`: - -`mx diff [options] BASE MINE OUTPUT` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| -------- | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | -| `--loose-version-check` | `-l` | Loose version check. i.e. auto-convert if possible before diffing. | - -`BASE` is the first MPR. This is used as a base in comparison. - -`MINE` is the second MPR. This is used as a changed version in comparison. The optput will contains the changes that are in this file against the base. -{{% alert color="info" %}}E.g. if BASE mpr has Microflow1 and MINE mpr doesn't have it, Mocroflow1 wil be listed as deleted in the output file. - -If you swap BASE and MINE parameters and compare again, Microflow1 will be listed as added.{{% /alert %}} - -`OUTPUT` is the name of output `json` file. - -## 2 Examples - -`mx diff C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr c:\comparison\output.json` - -## 3 Return Codes - -| Return code | Meaning | -| - | - | -| 0 | Ok | -| 2 | Conflicts were found during diff. | -| 3 | an error happened during the merge | -| 4 | the version of either MPR is not supported. | \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md index d94fd8c356a..62a45ff3044 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md @@ -7,69 +7,3 @@ weight: 20 description: "Describes the mx merge command." tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "merge"] --- - -The mx merge command performs a three-way merge of two MPR files having a common base commit. - -The input is three MPR files: base, mine, and theirs - -## 1 Usage - -Use the following command pattern for `mx merge`: - -`mx merge [OPTIONS] BASE MINE THEIRS` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| -------- | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -`BASE` is common base version of the App. If the app is version controlled, this is the last common revision of the app -- revision that is present in both branches history. - -`MINE` is the version to merge into; this MPR contains the results of the merge. - -`THEIRS` is the version to merge changes from. - -The image below illustrates the meaning of the parameters: - -{{< figure src="/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png" alt="mx merge" >}} - -**A"** is MINE -- the current commit you want to merge the changes TO. - -**B'** is THEIRS -- the last commit on a branch you want to merge change FROM. - -**A** is BASE -- the common commit where branches diverged. - -In order to merge changes correctly Studio Pro has to compare both A" and B' againt A to see what has been changed on each branch. During the merge [Merge Algorithm](/refguide/merge-algorithm) will try to automatically merge the changes. - -This command works for any three MPR files. This means you can try to merge different Apps at your own risk. - -{{% alert color="info" %}}Please note, that this command works different than normal version controlled merge you can do in Studio Pro. While Studio pro does real merge of one branch into another, this command just runs merge algorithm over 3 MPR files that don't even have to be version controlled. {{% /alert %}} - -## 2 Conflicts - -If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro and doing Version Control -> Merge changes here. - -The reason for this is that conflict resolution is a complex process that requires 2 things: -1. App has to be version controlled. -2. Your git repository has to be in so called `merge state` (Studio Pro does this when you click `Merge changes here`) - -This `merge state` is needed for Studio Pro to know what is your current branch and the branch you are trying to merge into it. This way when you are trying to resolve the conflict using `theirs` document, Studio Pro can download the document from the branch and put it into your current App. - -So if you just run this command from command line specifying 3 MPRs and the result has conflicts, you won't be able to resolve conflicts in `mine` app using `theirs` documents by just opening the app in Studio Pro. - -For this to be possible you need to [configure git to use `mx merge` as a merge driver](/refguide/mx-command-line-tool/mx-merge-driver) for MPR files and trigger merge from git command line (so that the repository is put in `merge-state` for Studio Pro to be able to pick it up after the command is complete). - -## 3 Examples - -`mx merge C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr C:\MyApp-FeatureBranch\MyApp.mpr` - -## 4 Return Codes - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | Merge is successful, there are no conflicts. *MINE.mpr* contains the result of the merge. | -| 1 | The command is invalid, check input parameters. | -| 2 | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | -| 3 | This code means an exception – an error occurred during the merge. Error details are printed to the command line output. | -| 4 | The version is unsupported \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module.md b/content/en/docs/refguide/general/mx-command-line-tool/module.md index 191dc1e4abd..4de731713fd 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/module.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/module.md @@ -12,7 +12,7 @@ The commands in this group are related to Mendix modules. Typically, these commands require a path to the *.mpr* file and the module name as parameters. -## 2 mx show-module-version Command +## 2 mx show-module-version Command {#show-module-version} The `mx show-module-verion` command outputs the version of a module. @@ -49,7 +49,7 @@ This table shows the return codes and their description: The command will output the version of the module to the command line output. -## 3 mx set-module-version Command +## 3 mx set-module-version Command {#set-module-version} The `mx set-module-version` command outputs the version of a module. From 43b376827ae091a7d235cd9d995b414e9660aa4e Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 12 Jun 2023 11:55:56 +0200 Subject: [PATCH 021/232] Review --- .../general/mx-command-line-tool/merge.md | 197 ++++++++++++++++++ .../mx-command-line-tool/merge/_index.md | 120 ----------- .../merge/merge-driver.md | 76 ------- .../mx-command-line-tool/merge/mx-diff.md | 9 - .../mx-command-line-tool/merge/mx-merge.md | 9 - 5 files changed, 197 insertions(+), 214 deletions(-) create mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merge.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merge/merge-driver.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge.md new file mode 100644 index 00000000000..ce438d14135 --- /dev/null +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge.md @@ -0,0 +1,197 @@ +--- +title: "Merging and Diffing commands" +url: /refguide/mx-command-line-tool/merge +weight: 50 +description: "Describes the commands related to merging and diffing apps for the mx command-line tool." +tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "diff", "merge"] +--- + +## 1 Introduction + +The commands in this group enable comparing two apps and merging them. + +## 2 mx diff Command {#diff} + +The `mx diff` command performs a diff of two *.mpr* files and outputs the differences to a file in the JSON format. + +### 2.1 Usage + +Use the following command pattern for `mx diff`: + +`mx diff [options] BASE MINE OUTPUT` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | +| `--loose-version-check` | `-l` | Makes the version check loose (meaning, it auto-converts if possible before diffing). | + +`BASE` is the first *.mpr* file, which is used as a base in comparison. + +`MINE` is the second *.mpr* file, which is used as the changed version in comparison. The output will contain the changes that are in this file against the base. + +{{% alert color="info" %}} +For example, if the `BASE` *.mpr* has Microflow1 and the `MINE` *.mpr* does not have it, Microflow1 wil be listed as deleted in the output file. If you swap the `BASE` and `MINE` parameters and compare again, Microflow1 will be listed as added.{{% /alert %}} + +`OUTPUT` is the name of the outputted JSON file. + +### 2.2 Examples + +This is an example: + +`mx diff C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr c:\comparison\output.json` + +### 2.3 Return Codes + +This table shows the return codes and their description: + +| Return Code | Meaning | +| --- | --- | +| 0 | OK. | +| 2 | Conflicts were found during the diff. | +| 3 | An error happened during the merge. | +| 4 | The version of either *.mpr* file is not supported. | + +## 3 mx merge Command {#merge} + +The `mx merge` command performs a three-way merge of two *.mpr* files that have a common base commit. + +The input is three *.mpr* files: `BASE`, `MINE`, and `THEIRS`. + +### 3.1 Usage + +Use the following command pattern for `mx merge`: + +`mx merge [OPTIONS] BASE MINE THEIRS` + +These are the `OPTIONS`: + +| Option | Shortcut | Result | +| --- | --- | --- | +| `--help` | `-h` | Displays the help text and exits. | + +`BASE` is common base version of the app. If the app is version-controlled, this is the last common revision of the app (the revision that is present in the history of both branches). + +`MINE` is the version to merge into. This *.mpr* contains the results of the merge. + +`THEIRS` is the version to merge changes from. + +The image below illustrates the meaning of the parameters: + +{{< figure src="/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png" alt="mx merge" >}} + +In the diagram, note the following: + +* **A"** is `MINE`, which is the current commit you want to merge the changes to +* **B'** is `THEIRS`, which is the last commit on a branch you want to merge changes from +* **A** is `BASE`, which is the common commit where the branches diverged + +In order to merge changes correctly, Studio Pro has to compare both **A"** and **B'** against **A** to see what has been changed on each branch. During the merge, the [merge algorithm](/refguide/merge-algorithm) will try to automatically merge the changes. + +This command works for any three *.mpr* files. This means you can try to merge different apps at your own risk. + +{{% alert color="info" %}} +This command works differently than the normal version-controlled merges you can do in Studio Pro. While Studio Pro does a real merge of one branch into another, this command runs the merge algorithm over three *.mpr* files that do not even have to be version- controlled. {{% /alert %}} + +### 3.2 Conflicts + +If there are conflicts during the merge, resolve those by opening the app in Studio Pro and selecting **Version Control** > [Merge Changes Here](/refguide/version-control-menu/#merge-changes-here). + +The reason for this is that conflict resolution is a complex process that has two requirements: + +* The app has to be version-controlled +* Your Git repository has to be in the "merge state" (Studio Pro does this when you click **Merge Changes Here**) + +This merge state is needed for Studio Pro to know what your current branch is and which branch you are trying to merge into it. This way, when you are trying to resolve the conflict using the `THEIRS` document, Studio Pro can download the document from the branch and put it into your current app. + +So, if you run this command from the command line specifying the three *.mpr* files but the result has conflicts, you will not be able to resolve the conflicts in the `MINE` app using the `THEIRS` documents by just opening the app in Studio Pro. Instead, you need to configure Git to use `mx merge` as a [merge driver](/refguide/mx-command-line-tool/mx-merge-driver) for the *.mpr* files and trigger the merge from the Git command line (so that the repository is put in the merge state for Studio Pro to be able to pick it up after the command is complete). + +### 3.3 Examples + +Here is an example: + +`mx merge C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr C:\MyApp-FeatureBranch\MyApp.mpr` + +### 3.4 Return Codes + +This table shows the return codes and their description: + +| Return Code | Description | +| --- | --- | +| 0 | The merge is successful and there are no conflicts. *MINE.mpr* contains the result of the merge. | +| 1 | The command is invalid for the input parameters. | +| 2 | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | +| 3 | There is an exception, as an error occurred during the merge. Error details are printed to the command line output. | +| 4 | The version is unsupported | + +## 4 mx merge as Git Merge Driver {#merge-git-driver} + +This section describes the configuration you need to do in order to enable using the [mx merge](#merge) command as a merge driver in Git. With this configuration, you can merge one branch into another using third-party version control tools and the Git command line. + +Normally, when you are merging branches with Git, it compares the changes in files in both branches. If a certain file has been changed in both branches, this is called a conflict. If the files in conflict are text files, then Git attempts to resolve it automatically (and very often succeeds). + +However, if the files in conflict are Mendix apps the conflict is in two *.mpr* files, both the files and the conflict are more complex, which is why we need Studio Pro to resolve the conflicts. For such cases, Git has an option to delegate conflict resolution for a certain file type to an external tool. The `mx merge` command is compatible with this mechanism and allows Git to try to merge the *.mpr* files as if Studio Pro did it. Then, if there are still conflicts, you can open Studio Pro and resolve those manually. + +### 4.1 .gitconfig File + +Add the lines below to the *.gitconfig* file located in the *.git* folder of your app on disk. + +At the end of the file, add a `[merge "custom"]` block like this: + +```ini +[merge "custom"] + name = custom merge driver for MPR files + driver = [MX.EXE_PATH] merge %O %A %B +``` + +Replace `MX.EXE_PATH` with a full path to your *mx.exe* file in the Unix format (for example, `/c/Program\ Files/Mendix/10.0.0.8753/modeler/mx.exe`). + +Under the `[core]` section, add the following: + +```ini + attributesfile = .git/.gitattributes` +``` +### 4.2 .gitattributes File + +Create `.gitattributes` file in .git folder of your App on disk. Add the following line there to tell git to use `[merge "custom"]` driver from .gitconfig chapter of this page for merging *.mpr files. + +```ini +*.mpr merge=custom +``` + +### 4.3. Verification + +To confirm this works, you can create a blank version-controlled app and do the following: + +1. Create a branch called *branch* and download it. +2. Change the caption of a home page to *Branch*. +3. Add a microflow named *branch*. +4. Commit and push your changes. +5. Switch back to the **Main** branch. +6. Pull the changes from the remote. +7. Change the caption of the home page to *Main*. +8. Add a microflow named *main*. +7. Commit and push your changes. +8. Open the Git command line in your app's **Main** branch directory and run `git merge origin/branch`. + +If you configured everything correctly, the command line outout should look like this: + +```code +$ git merge origin/branch +Checking MPR Versions. +Complete. +Converting MPRs +Complete. +Merging MPRs. +Conflicts found during merging. Please resolve them by opening the project in Studio Pro. +Complete. +Auto-merging MyBlankApp.mpr +CONFLICT (content): Merge conflict in MyBlankApp.mpr +Automatic merge failed; fix conflicts and then commit the result. +``` + +Now, if you open you app on the **Main** branch, you should see the following: + +* Both the **branch** and **main** microflows ( this is a non-conflicting change, so `mx merge` sorted this out automatically, just like Studio Pro would do) +* A conflict on the **Home_Web** page concerning the renaming of home page caption (this is a conflicting change, as you changed the same caption to different values on both branches, so you can resolve this manually) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md deleted file mode 100644 index 60f30a6bb13..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/_index.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: "Merging and Diffing commands" -url: /refguide/mx-command-line-tool/merge -weight: 50 -description: "Describes the commands related to merging and diffing apps for the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "diff", "merge"] ---- - -## 1 Introduction - -The commands in this group enable comparing two apps and merging them. - -## 2 mx diff Command - -The `mx diff` command performs a diff of two *.mpr* files and outputs the differences to a file in the JSON format. - -### 2.1 Usage - -Use the following command pattern for `mx diff`: - -`mx diff [options] BASE MINE OUTPUT` - -These are the `OPTIONS`: - -| Option | Shortcut | Result | -| --- | --- | --- | -| `--help` | `-h` | Displays the help text and exits. | -| `--loose-version-check` | `-l` | Makes the version check loose (meaning, it auto-converts if possible before diffing). | - -`BASE` is the first *.mpr* file, which is used as a base in comparison. - -`MINE` is the second *.mpr* file, which is used as the changed version in comparison. The output will contain the changes that are in this file against the base. - -{{% alert color="info" %}} -For example, if the `BASE` *.mpr* has Microflow1 and the `MINE` *.mpr* does not have it, Microflow1 wil be listed as deleted in the output file. If you swap the `BASE` and `MINE` parameters and compare again, Microflow1 will be listed as added.{{% /alert %}} - -`OUTPUT` is the name of the outputted JSON file. - -### 2.2 Examples - -This is an example: - -`mx diff C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr c:\comparison\output.json` - -### 2.3 Return Codes - -| Return Code | Meaning | -| --- | --- | -| 0 | OK. | -| 2 | Conflicts were found during the diff. | -| 3 | An error happened during the merge. | -| 4 | The version of either *.mpr* file is not supported. | - -## 3 mx merge Command - -The mx merge command performs a three-way merge of two MPR files having a common base commit. - -The input is three MPR files: base, mine, and theirs - -### 3.1 Usage - -Use the following command pattern for `mx merge`: - -`mx merge [OPTIONS] BASE MINE THEIRS` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| -------- | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -`BASE` is common base version of the App. If the app is version controlled, this is the last common revision of the app -- revision that is present in both branches history. - -`MINE` is the version to merge into; this MPR contains the results of the merge. - -`THEIRS` is the version to merge changes from. - -The image below illustrates the meaning of the parameters: - -{{< figure src="/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png" alt="mx merge" >}} - -**A"** is MINE -- the current commit you want to merge the changes TO. - -**B'** is THEIRS -- the last commit on a branch you want to merge change FROM. - -**A** is BASE -- the common commit where branches diverged. - -In order to merge changes correctly Studio Pro has to compare both A" and B' againt A to see what has been changed on each branch. During the merge [Merge Algorithm](/refguide/merge-algorithm) will try to automatically merge the changes. - -This command works for any three MPR files. This means you can try to merge different Apps at your own risk. - -{{% alert color="info" %}}Please note, that this command works different than normal version controlled merge you can do in Studio Pro. While Studio pro does real merge of one branch into another, this command just runs merge algorithm over 3 MPR files that don't even have to be version controlled. {{% /alert %}} - -### 3.2 Conflicts - -If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro and doing Version Control -> Merge changes here. - -The reason for this is that conflict resolution is a complex process that requires 2 things: -1. App has to be version controlled. -2. Your git repository has to be in so called `merge state` (Studio Pro does this when you click `Merge changes here`) - -This `merge state` is needed for Studio Pro to know what is your current branch and the branch you are trying to merge into it. This way when you are trying to resolve the conflict using `theirs` document, Studio Pro can download the document from the branch and put it into your current App. - -So if you just run this command from command line specifying 3 MPRs and the result has conflicts, you won't be able to resolve conflicts in `mine` app using `theirs` documents by just opening the app in Studio Pro. - -For this to be possible you need to [configure git to use `mx merge` as a merge driver](/refguide/mx-command-line-tool/mx-merge-driver) for MPR files and trigger merge from git command line (so that the repository is put in `merge-state` for Studio Pro to be able to pick it up after the command is complete). - -### 3.3 Examples - -`mx merge C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr C:\MyApp-FeatureBranch\MyApp.mpr` - -### 3.4 Return Codes - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | Merge is successful, there are no conflicts. *MINE.mpr* contains the result of the merge. | -| 1 | The command is invalid, check input parameters. | -| 2 | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | -| 3 | This code means an exception – an error occurred during the merge. Error details are printed to the command line output. | -| 4 | The version is unsupported \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/merge-driver.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/merge-driver.md deleted file mode 100644 index 96d8534eabf..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/merge-driver.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: "mx merge as git merge driver" -linktitle: "merge driver" -url: /refguide/mx-command-line-tool/mx-merge-driver -category: "General Info" -weight: 30 -description: "Describes how to configure mx merge to be your git merge driver." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "merge"] ---- - -This page describes the configuration you need to do in order to enable using [mx merge]() command as a merge driver in git. With this configuration you can merge one branch into another using 3rd party version control tools and git command line. - -Normally when you are merging branches with git it compares the changes in files in both branches. If a certain file has been changed in both branches this is called a conflict. If the file in conflict is a text file, then git attempts to resolve it automatically (and very often succeeds), but in case of Mendix apps the conflict is in 2 MPR files, which are more complex than text (that's why we need StudioPro to resolve the conflicts). For such cases git has an option to delegate conflict resolution for a certain file type to an external tool. `mx merge` command is compatible with this mechanism and will allow git to try to merge the MPRs "as if Studio Pro would've done it". Then if there still will be conflicts, you can always open Studio Pro and resolve those manually. - -# 1. .gitconfig - -You need to add the following lines to `.gitconfig` file located in `.git` folder of your App on disk. - -At the end of the file add `[merge "custom"]` block like this - -```ini -[merge "custom"] - name = custom merge driver for MPR files - driver = [MX.EXE_PATH] merge %O %A %B -``` - -Replace `MX.EXE_PATH` with a full path to your mx.exe in unix format (e.g. `/c/Program\ Files/Mendix/10.0.0.8753/modeler/mx.exe`) - -Under `[core]` section add the following -```ini - attributesfile = .git/.gitattributes` -``` -# 2. .gitattributes - -Create `.gitattributes` file in .git folder of your App on disk. Add the following line there to tell git to use `[merge "custom"]` driver from .gitconfig chapter of this page for merging *.mpr files. - -```ini -*.mpr merge=custom -``` - -# 3. Verification -To confirm it works, you can create a blank version controlled App. - -In this app do the following: -1. Create a branch `branch`, download it. -2. Change the caption of a Home page to "Branch" -3. Add Microflow named "branch" -4. Commit and Push your changes -5. Switch back to `Main` branch -6. Pull the changes from remote -7. Change the caption of a Home page to "Main" -8. Add Microflow named "main" -7. Commit and Push your changes - -Now open git command line in your App's Main branch directory and do -`git merge origin/branch` - -If you configured everything correctly, command line outout should look like this: - -```code -$ git merge origin/branch -Checking MPR Versions. -Complete. -Converting MPRs -Complete. -Merging MPRs. -Conflicts found during merging. Please resolve them by opening the project in Studio Pro. -Complete. -Auto-merging MyBlankApp.mpr -CONFLICT (content): Merge conflict in MyBlankApp.mpr -Automatic merge failed; fix conflicts and then commit the result. -``` - -Now if you open you app on Main branch you should see: -1. Both microflows "branch" and "main" -- this is a non-conflicting change so `mx merge` sorted this out automatically just like Studio Pro would do. -2. Conflict on Home_Web page concerning the renaming of Home page caption -- this is a conflicting change as you changed the same caption to different values on both branches. You can resolve this manually. \ No newline at end of file diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md deleted file mode 100644 index 92180f17009..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-diff.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "mx diff Command" -linktitle: "diff" -url: /refguide/mx-command-line-tool/mx-diff -category: "General Info" -weight: 10 -description: "Describes the mx diff command." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "diff"] ---- diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md deleted file mode 100644 index 62a45ff3044..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge/mx-merge.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "mx merge Command" -linktitle: "merge" -url: /refguide/mx-command-line-tool/mx-merge -category: "General Info" -weight: 20 -description: "Describes the mx merge command." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux", "merge"] ---- From 9c33f60803f40f03cc1ed5793d9500b764ab3753 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 12 Jun 2023 12:02:35 +0200 Subject: [PATCH 022/232] Review --- .../general/mx-command-line-tool/_index.md | 24 +++++++++--------- .../general/mx-command-line-tool/merge.md | 2 +- .../{merging/mx-merge => }/merge.png | Bin 3 files changed, 13 insertions(+), 13 deletions(-) rename static/attachments/refguide/general/mx-command-line-tool/{merging/mx-merge => }/merge.png (100%) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/_index.md index 3161b4dc74f..665e72a37bf 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/_index.md @@ -23,10 +23,10 @@ These are the available [app commands](/refguide/mx-command-line-tool/app): | Command | Description | | --- | --- | -| [check](/refguide/mx-command-line-tool/mx-check) | Checks the app for issues. | -| [convert](/refguide/mx-command-line-tool/mx-convert) | Converts the Mendix app. | -| [create-project](/refguide/mx-command-line-tool/mx-create-project) | Creates a new Mendix app. | -| [show-version](/refguide/mx-command-line-tool/mx-show-version) | Shows the Studio Pro version that was last used to edit the app. | +| [check](/refguide/mx-command-line-tool/app/#check) | Checks the app for issues. | +| [convert](/refguide/mx-command-line-tool/app/#convert) | Converts the Mendix app. | +| [create-project](/refguide/mx-command-line-tool/app/#create-project) | Creates a new Mendix app. | +| [show-version](/refguide/mx-command-line-tool/app/#show-version) | Shows the Studio Pro version that was last used to edit the app. | ### 3.1 Adaptable Solutions Commands @@ -34,7 +34,7 @@ These are the available [adaptable solutions commands](/refguide/mx-command-line | Command | Description| | --- | --- | -| [show-app-version](/refguide/mx-command-line-tool/adaptable/#show-version) | Shows the application version of the app. | +| [show-app-version](/refguide/mx-command-line-tool/adaptable/#show-app-version) | Shows the application version of the app. | | [set-app-version](/refguide/mx-command-line-tool/adaptable/#set-app-version) | Sets the application version of the app. | ### 3.1 Module Commands @@ -43,8 +43,8 @@ These are the available [module commands](/refguide/mx-command-line-tool/module) | Command | Description | |---|---| -| [show-module-version](/refguide/mx-command-line-tool/mx-show-module-version) | Shows the version of the module specified. | -| [set-module-version](/refguide/mx-command-line-tool/mx-set-module-version) | Sets the version of the module specified. | +| [show-module-version](/refguide/mx-command-line-tool/module/#show-module-version) | Shows the version of the module specified. | +| [set-module-version](/refguide/mx-command-line-tool/module/#set-module-version) | Sets the version of the module specified. | ### 3.1 Export Package Commands @@ -52,9 +52,9 @@ These are the available [export package commands](/refguide/mx-command-line-tool | Command | Description | | --- | --- | -| create-project-package | Exports an app package. | -| create-solution-package | Exports a solution package. | -| create-module-package | Exports a module package. | +| [create-project-package](/refguide/mx-command-line-tool/export/#create-project-package) | Exports an app package. | +| [create-solution-package](/refguide/mx-command-line-tool/export/#create-solution-package) | Exports a solution package. | +| [create-module-package](/refguide/mx-command-line-tool/export/#create-module-package) | Exports a module package. | ### 3.1 Merging and Diffing Commands @@ -62,8 +62,8 @@ These are the available [merging and diffing commands](/refguide/mx-command-line | Command | Description | | --- | --- | -| [merge](/refguide/mx-command-line-tool/mx-merge) | Merges the *.mpr* files. | -| [diff](/refguide/mx-command-line-tool/mx-diff) | Shows the diff of the *.mpr* files. | +| [merge](/refguide/mx-command-line-tool/merge/#merge) | Merges the *.mpr* files. | +| [diff](/refguide/mx-command-line-tool/merge/#diff) | Shows the diff of the *.mpr* files. | ## 4 mx Tool Options diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge.md index ce438d14135..e2cf6fa4d5c 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge.md @@ -79,7 +79,7 @@ These are the `OPTIONS`: The image below illustrates the meaning of the parameters: -{{< figure src="/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png" alt="mx merge" >}} +{{< figure src="/attachments/refguide/general/mx-command-line-tool/merge.png" alt="mx merge" >}} In the diagram, note the following: diff --git a/static/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png b/static/attachments/refguide/general/mx-command-line-tool/merge.png similarity index 100% rename from static/attachments/refguide/general/mx-command-line-tool/merging/mx-merge/merge.png rename to static/attachments/refguide/general/mx-command-line-tool/merge.png From 5dd3b2a5f3a233391136b89753360f85c721fca5 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 12 Jun 2023 12:45:44 +0200 Subject: [PATCH 023/232] Review --- .../en/docs/refguide/general/mx-command-line-tool/app.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app.md b/content/en/docs/refguide/general/mx-command-line-tool/app.md index 9d343106cd3..69a43b1a38c 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/app.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/app.md @@ -130,8 +130,8 @@ These are example commands: | Example | Result | | --- | --- | | `mx convert --in-place C:\MxProjects\App-main` | Converts the app in folder *C:\MxProjects\App-main* to the specific Studio Pro version that the mx tool is bundled with. | -| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the *C:\Mendix\* folder and puts the results in the *C:\Mendix\ConvertedProjects\* folder. | -| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all the app packages in the *C:\Mendix\Packages\* folder to the *C:\Mendix\ConvertedPackages\* folder without checking for errors. | +| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the `C:\Mendix\` folder and puts the results in the `C:\Mendix\ConvertedProjects\` folder. | +| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all the app packages in the `C:\Mendix\Packages\` folder to the `C:\Mendix\ConvertedPackages\` folder without checking for errors. | ### 4.3 Return Codes @@ -186,7 +186,7 @@ These are example commands: | `mx check C:\MxProjects\App-main\App-main.mpr -p` | Checks the app at *C:\MxProjects\App-main\App-main.mpr* for errors and performance recommendations. | | `mx check C:\MxProjects\App-main\App-main.mpr --warnings --deprecations` | Checks the app at *C:\MxProjects\App-main\App-main.mpr* for errors, warnings, and deprecations. Suppressed warnings will be read from the *project-settings.user.json* file within the app directory. | | `mx check C:\MxProjects\App-main\App-main.mpr c:\MxFiles\my-exported-suppressed-warnings.json --warnings` | Checks the app at *C:\MxProjects\App-main\App-main.mpr* for errors and warnings. Suppressed warnings will be read from the JSON file *my-exported-suppressed-warnings.json*. | -| `mx check C:\MxProjects\App-main\App-main.mpr -w -d -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, deprecations, and performance recommendations. | +| `mx check C:\MxProjects\App-main\App-main.mpr -w -d -p` | Checks the app at *C:\MxProjects\App-main\App-main.mpr* for errors, warnings, deprecations, and performance recommendations. | ### 5.3 Return Codes From f7383c9b195331afc63025f8df7e2df8c60ed899 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Mon, 12 Jun 2023 16:20:01 +0200 Subject: [PATCH 024/232] proofread --- .../refguide/modeling/menus/edit-menu/preferences-dialog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md index c89530b40d7..11fa7381074 100644 --- a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md +++ b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md @@ -145,7 +145,7 @@ Select this option when you want to work on an app that is not stored in [Mendix ### 6.1 Studio Pro Theme {#studio-pro-theme} -This option allows user to choose between Studio Pro themes: **Auto (System theme)**, **Light** or **Dark**. The default is **Auto (System theme)** which detects the theme set in operating system and uses appropriate theme for Studio Pro (**Light** or **Dark**). Changing this option requires a restart of Studio Pro to take effect. +This option allows user to choose between Studio Pro themes: **Auto (System theme)**, **Light**, or **Dark**. The default is **Auto (System theme)** which detects the theme set in the operating system and uses an appropriate theme for Studio Pro (**Light** or **Dark**). Changing this option requires a restart of Studio Pro to take effect. ### 6.2 Default Page Editor {#default-page-editor} From 822318f5a720f5bd5c25e2a0e6984e25589f1e92 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 12 Jun 2023 16:29:06 +0200 Subject: [PATCH 025/232] Update preferences-dialog.md --- .../refguide/modeling/menus/edit-menu/preferences-dialog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md index 11fa7381074..e974a382b35 100644 --- a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md +++ b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md @@ -145,7 +145,7 @@ Select this option when you want to work on an app that is not stored in [Mendix ### 6.1 Studio Pro Theme {#studio-pro-theme} -This option allows user to choose between Studio Pro themes: **Auto (System theme)**, **Light**, or **Dark**. The default is **Auto (System theme)** which detects the theme set in the operating system and uses an appropriate theme for Studio Pro (**Light** or **Dark**). Changing this option requires a restart of Studio Pro to take effect. +This option allows user to choose between Studio Pro themes: **Auto (System theme)**, **Light**, or **Dark**. The default is **Auto (System theme)**, which detects the theme set in the operating system and uses an appropriate theme for Studio Pro (**Light** or **Dark**). Changing this option requires a restart of Studio Pro to take effect. ### 6.2 Default Page Editor {#default-page-editor} @@ -153,7 +153,7 @@ This option sets the default page editor mode that your page opens in: **Structu ### 6.3 Rendering {#rendering} -Hardware and driver issues may cause performance problems when running Studio Pro. These issues can appear in form of dialogs opening and closing much slower than expected, and general slowness of the UI. In case the hardware problems cannot be solved, it is possible to mitigate these issues by turning the **Enable software rendering mode** setting on. Enabling this setting requires a restart of Studio Pro to take effect. Running the application with this setting on may increase the CPU usage. +Hardware and driver issues may cause performance problems when running Studio Pro. These issues can appear in form of dialog boxes opening and closing much more slowly than expected, and general slowness of the UI. In case the hardware problems cannot be solved, it is possible to mitigate these issues by turning the **Enable software rendering mode** setting on. Enabling this setting requires a restart of Studio Pro to take effect. Running the application with this setting on may increase the CPU usage. ## 7 Advanced Tab From 4cbc8a56674c8f59b6fec8d2678c44df5f1f5be1 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 13 Jun 2023 06:25:59 +0200 Subject: [PATCH 026/232] Push --- content/en/docs/refguide/general/mx-command-line-tool.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/refguide/general/mx-command-line-tool.md b/content/en/docs/refguide/general/mx-command-line-tool.md index 900e2589746..4d10d6cfe6c 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool.md +++ b/content/en/docs/refguide/general/mx-command-line-tool.md @@ -4,7 +4,7 @@ url: /refguide/mx-command-line-tool/ category: "General Info" weight: 20 description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "studio pro", "windows", "linux"] +tags: ["mx", "command-line", "tool", "mx", "windows", "linux"] --- ## 1 Introduction From bf3dab9a40f6c36c059ed95fc096ac65d8090746 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 13 Jun 2023 06:27:45 +0200 Subject: [PATCH 027/232] Push --- .../refguide/general/mx-command-line-tool.md | 390 ------------------ 1 file changed, 390 deletions(-) delete mode 100644 content/en/docs/refguide/general/mx-command-line-tool.md diff --git a/content/en/docs/refguide/general/mx-command-line-tool.md b/content/en/docs/refguide/general/mx-command-line-tool.md deleted file mode 100644 index 4d10d6cfe6c..00000000000 --- a/content/en/docs/refguide/general/mx-command-line-tool.md +++ /dev/null @@ -1,390 +0,0 @@ ---- -title: "mx Command-Line Tool" -url: /refguide/mx-command-line-tool/ -category: "General Info" -weight: 20 -description: "Describes the options of the mx command-line tool." -tags: ["mx", "command-line", "tool", "mx", "windows", "linux"] ---- - -## 1 Introduction - -The **mx tool** is a Windows and Linux command-line tool that can be used to perform various actions on a Mendix app. - -## 2 Location - -Mendix Studio Pro comes with the mx command-line tool. The executable *mx.exe* file can be found in the same folder that contains `studiopro.exe` (for example, *C:\Program Files\Mendix\10.0.0.5003\modeler\mx.exe*). - -## 3 mx Tool Options - -The mx tool performs the commands described below. - -### 3.1 mx convert Command - -The `mx convert` command converts the app(s) MPK file(s) to a specific Studio Pro version. For example, if you are using the mx command-line tool for Studio Pro version 10.0.0.5003, `mx convert` will convert the app to that version. - -The input can be a single file, directory, or multiple files. - -{{% alert color="info" %}} -The mx tool can only upgrade your app; you cannot use it to downgrade the version. -{{% /alert %}} - -#### 3.1.1 Usage - -Use the following command pattern for `mx convert`: - -`mx convert [OPTIONS] INPUT... OUTPUT` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| --- | --- | --- | -| `--help` | `-h` | Displays the help text and exits. | -| `--in-place` | `-p` | Converts the current app directory. Use this option to convert a folder containing a Mendix app. Otherwise, `mx convert` will convert *.mpk* files. | -| `--skip-error-check` | `-s` | Does not check for errors. Use this option to disable app error-checking during the conversion. When omitted, the tool will report on the number of errors, warnings, and deprecations in the app and do the conversion. | - -For `INPUT...`, enter one or more *.mpk* files or one directory that needs to be converted. - -For `OUTPUT`, enter the output location for the converted results. Mind the following: - -* When `INPUT...` is a single file, `OUTPUT` can be a single file or directory; otherwise, `OUTPUT` must be a directory. -* When using the `--in-place` option, the `INPUT...` folder will also be used as the `OUTPUT` folder, so you do not need to specify a separate `OUTPUT` folder - -#### 3.1.2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx convert --in-place C:\MxProjects\App-main` | Converts the app in folder `C:\MxProjects\App-main` to the specific Studio Pro version which the mx tool is bundled with. | -| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the *C:\Mendix\* folder and puts the results in the `C:\Mendix\ConvertedProjects\` folder. | -| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all app packages in the `C:\Mendix\Packages\` folder to the `C:\Mendix\ConvertedPackages\` folder without checking for errors. | - -#### 3.1.3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The conversion was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | -| 3 | Converting failed. | - -### 3.2 mx create-project Command - -The `mx create-project` command creates a new app in Studio Pro. The app version depends on the version the tool was bundled with. For example, if you are using the mx tool for Studio Pro version 10.0.0.5003, `mx create project` will create a new app in that version. - -#### 3.2.1 Usage - -Use the following command pattern: `mx create-project [OPTIONS] [TEMPLATE-MPK-FILE]` - -The `OPTIONS` are described in the table below: - -| Option | Default Value | Result | -| --- | --- | --- | -| `app-name` | App | Assigns the specified app name to the app. | -| `output-dir` | Current directory | The directory in which to create the app. | -| `language-code` | en_US | The default language of the app. | -| `sprintr-app-id` | Optional | Associates the app [feedback features](/developerportal/collaborate/feedback/) with the provided [Developer Portal app](/developerportal/#my-apps). The value is a GUID. When accessing the app in the Developer Portal, this ID can be found in the browser's URL (for example, `1a428ea7-b00e-4166-9b23-20b7be88a40e`). | - -`TEMPLATE-MPK-FILE` is an optional path to a Mendix app package (*.mpk*) file. If this argument is omitted, the app is created with a default empty project template. - -#### 3.2.2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx create-project` | Creates an app in the current folder using all the default parameters. | -| `mx create-project --app-name MyFirstApp --output-dir C:\Projects\MyFirstApp` | Creates an app named `MyFirstApp` in the *C:\Projects\MyFirstApp* folder using all the default parameters. | -| `mx create-project C:\Templates\ExpenseReportTemplate.mpk` | Creates an app with the default parameters from a template located at *C:\Templates\ExpenseReportTemplate.mpk*. | - -#### 3.2.3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The app creation was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | - -### 3.3 mx check Command {#check} - -The `mx check` command checks the app MPR file for issues such as Errors, Warnings, Deprecations, or Performance Recommendations. - -{{% alert color="info" %}} -The MPR file must be the same version as mx. -{{% /alert %}} - -#### 3.3.1 Usage - -Use the following command pattern for `mx check`: - -`mx check [OPTIONS] INPUT [Optional path to exported Suppress Warnings file (JSON)]` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ---------------- | -------- | ------------------------------------------------------------ | -| `--help` | `-h` | Displays the help text and exits. | -| `--deprecations` | `-d` | Include deprecations in the output | -| `--json ` | `-j ` | Output the results to the specified file path, as JSON. | -| `--performance` | `-p` | Include performance checks in the output (performance recommendations are only output if there are no errors) | -| `--warnings` | `-w` | Include warnings in the output | - -{{% alert color="info" %}} -Errors in the MPR are always reported. -{{% /alert %}} - -For `INPUT`, enter a single *.mpr* file. - -You can optionally specify the path to an exported Suppress Warnings file (JSON file). This means that `mx check -w` will use the list of suppressed warnings in the JSON file, instead of the default behavior which is to read from the *project-settings.user.json* file in the app directory. - -#### 3.3.2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| ------------------------------------------------------------ | ------------------------------------------------------------ | -| `mx check --help` | Displays the help text for the check command. | -| `mx check C:\MxProjects\App-main\App-main.mpr` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors. | -| `mx check C:\MxProjects\App-main\App-main.mpr -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and performance recommendations. | -| `mx check C:\MxProjects\App-main\App-main.mpr -p -j c:\temp\mx-result.json` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and performance recommendations. Outputs the result as a JSON file at `c:\temp\mx-result.json`. | -| `mx check C:\MxProjects\App-main\App-main.mpr --warnings --deprecations` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, and deprecations. Suppressed warnings will be read from the *project-settings.user.json* file within the app directory. | -| `mx check C:\MxProjects\App-main\App-main.mpr c:\MxFiles\my-exported-suppressed-warnings.json --warnings` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors and warnings. Suppressed warnings will be read from the JSON file *my-exported-suppressed-warnings.json*. | -| `mx check C:\MxProjects\App-main\App-main.mpr -w -d -p` | Checks the app at `C:\MxProjects\App-main\App-main.mpr` for errors, warnings, deprecations, and performance recommendations. | - -#### 3.3.3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| ----------- | --------------------------------------- | -| 0 | No issues found. | -| 1 | Errors were found. | -| 2 | Warnings were found. | -| 4 | Deprecations were found. | -| 8 | Performance recommendations were found. | - -Those values are logically OR combined to indicate when there are a mix of errors, warnings, deprecations, or performance recommendations. - -For example: - -* 3 if errors and warnings found -* 7 if errors, warnings, and deprecations found - -### 3.4 mx show-version Command - -The `mx show-version` command reports which version of Studio Pro was used last time the app was opened. - -The input is a single MPR file. - -{{% alert color="info" %}} -The MPR file must be the same version as mx. -{{% /alert %}} - -#### 3.4.1 Usage - -Use the following command pattern for `mx show-version`: - -`mx show-version [OPTIONS] INPUT` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| --- | --- | --- | -| `--help` | `-h` | Displays the help text and exits. | - -For `INPUT`, enter a *.mpr* file. - -#### 3.4.2 Examples - -Examples of commands are described in the table below: - -| Example | Result | -| --- | --- | -| `mx show-version --help` | Displays the help text for the `show-version` command. | -| `mx show-version C:\Mendix\App1\App1.mpr` | Displays the version of Studio Pro that was last used to open the app. | - -#### 3.4.3 Return Codes - -Return codes are described in the table below: - -| Return Code | Description | -| --- | --- | -| 0 | The command ran successfully. | - -### 3.5 mx merge Command - -The mx merge command performs a three-way merge of two MPR files having a common base commit. - -The input is three MPR files: base, mine, and theirs - -#### 3.5.1 Usage - -Use the following command pattern for `mx merge`: - -`mx merge [OPTIONS] BASE MINE THEIRS` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| -------- | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -`BASE` is common base commit. - -`MINE` is the version to merge into; this MPR contains the results of the merge. - -`THEIRS` is the version to merge changes from. - -#### 3.5.2 Conflicts - -If there are conflicts during the merge, you have to resolve those by opening the app in Studio Pro. - -#### 3.5.3 Examples - -`mx merge C:\MyApp\MyApp.mpr C:\MyApp-main\MyApp.mpr C:\MyApp-FeatureBranch\MyApp.mpr` - -#### 3.5.4 Return Codes - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | Merge is successful, there are no conflicts. *MINE.mpr* contains the result of the merge. | -| 1 | The command is invalid, check input parameters. | -| 2 | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | -| 3 | This code means an exception – an error occurred during the merge. Error details are printed to the command line output. | -| 4 | The version is unsupported. | - -### 3.6 mx show-app-version Command - -The mx show-app-version command allows you to see the [publisher-side](/appstore/creating-content/sol-solutions-guide/) version of your solution (meaning, the version of the solution that you develop) and the [consumer-side](/appstore/creating-content/sol-solutions-impl/) version of the solution package that your app is based on (meaning, the version of the solution package when you consumed the solution). - -#### 3.6.1 Usage - -Use the following command pattern for `mx show-app-version`: - -`mx show-app-version MPR-FILE [OPTIONS]` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| ------------ | -------- | --------------------------------- | -| `--based-on` | `-b` | Show `Based on` version. | -| `--help` | `-h` | Displays the help text and exits. | - -For MPR-FILE enter a *.mpr* file. - -`Based on` version is a version of a solution package (.mxsolution) current App is based on. - -#### 3.6.2 Examples - -`mx show-app-version C:\MyApp\MyApp.mpr` - -`mx show-app-version C:\MyApp\MyApp.mpr -b` - -#### 3.6.3 Return Codes - -This command uses common format exit codes for all app-version related commands. - -The command outputs a version requested. If there is no errors, exit code is 0. - -In case of errors the exit code consists of three digits XYZ: - -**X:** determines the error type: - - 1: Parameter validation error. - - 2: Output-related error. - - 3: Errors related to the execution of the operation. - -**Y:** is the number of the parameter the error is related to (if applicable). - -**Z:** determines the following error details: - - 1: File not found. - - 2: App is too old. - - 3: Distribution is not enabled. - - 4: Version is not in the SemVer format. - - 5: App was not initialized from a solution package. - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | ------------------------------------------------------------ | -| 0 | No errors | -| 315 | if -b was specified but the app is not based on a solution. | -| 313 | if -b was not specified but distribution as a solution is not enabled for the app. | - -### 3.7 mx set-app-version Command - -The mx set-app-version command allows you to set the version of your [solution when building it](/appstore/creating-content/sol-solutions-guide/). - -#### 3.7.1 Usage - -Use the following command pattern for `mx set-app-version`: - -`mx set-app-version MPR-FILE VERSION` - -The `OPTIONS` are described in the table below: - -| Option | Shortcut | Result | -| -------- | -------- | --------------------------------- | -| `--help` | `-h` | Displays the help text and exits. | - -For MPR-FILE enter a *.mpr* file. - -For VERSION enter a version in [SemVer](https://semver.org) format - -#### 3.7.2 Examples - -`mx set-app-version C:\MyApp\MyApp.mpr 1.2.3` - -#### 3.7.3 Return Codes - -This command uses common format exit codes for all app-version related commands. - -The command outputs a version requested. If there is no errors, exit code is 0. - -In case of errors the exit code consists of three digits XYZ: - -**X:** determines the error type: - - 1: Parameter validation error. - - 2: Output-related error. - - 3: Errors related to the execution of the operation. - -**Y:** is the number of the parameter the error is related to (if applicable). - -**Z:** determines error details: - - 1: File is not found. - - 2: App is too old. - - 3: Distribution is not enabled. - - 4: Version is not in the SemVer format. - - 5: App was not initialized from a solution package. - - The table below shows return codes and their meaning: - -| Return Code | Description | -| ----------- | -------------------------------------------------------- | -| 0 | No errors | -| 124 | if Version is not in SemVer format | -| 313 | if Distribution as a solution is not enabled for the app | - -### 3.8 Undocumented Options - -The mx tool contains options that are not described in this document. Those are for internal Mendix usage and are not officially supported. This might change in the future, but these options can be used only at your own risk. From 155f7e28d2283e52491deab6f3d555b10a6b3f64 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 13 Jun 2023 09:42:14 +0200 Subject: [PATCH 028/232] Review --- .../refguide/general/mx-command-line-tool/_index.md | 10 +++++----- .../refguide/general/mx-command-line-tool/export.md | 8 ++++---- .../refguide/general/mx-command-line-tool/merge.md | 4 ++-- .../mx-assist-performance-bot/_index.md | 2 +- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/_index.md b/content/en/docs/refguide/general/mx-command-line-tool/_index.md index 665e72a37bf..93180c58a10 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/_index.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/_index.md @@ -19,7 +19,7 @@ Mendix Studio Pro comes with the mx command-line tool. You can find the executab ### 3.1 App Commands -These are the available [app commands](/refguide/mx-command-line-tool/app): +These are the available [app commands](/refguide/mx-command-line-tool/app/): | Command | Description | | --- | --- | @@ -30,7 +30,7 @@ These are the available [app commands](/refguide/mx-command-line-tool/app): ### 3.1 Adaptable Solutions Commands -These are the available [adaptable solutions commands](/refguide/mx-command-line-tool/adaptable): +These are the available [adaptable solutions commands](/refguide/mx-command-line-tool/adaptable/): | Command | Description| | --- | --- | @@ -39,7 +39,7 @@ These are the available [adaptable solutions commands](/refguide/mx-command-line ### 3.1 Module Commands -These are the available [module commands](/refguide/mx-command-line-tool/module): +These are the available [module commands](/refguide/mx-command-line-tool/module/): | Command | Description | |---|---| @@ -48,7 +48,7 @@ These are the available [module commands](/refguide/mx-command-line-tool/module) ### 3.1 Export Package Commands -These are the available [export package commands](/refguide/mx-command-line-tool/export): +These are the available [export package commands](/refguide/mx-command-line-tool/export/): | Command | Description | | --- | --- | @@ -58,7 +58,7 @@ These are the available [export package commands](/refguide/mx-command-line-tool ### 3.1 Merging and Diffing Commands -These are the available [merging and diffing commands](/refguide/mx-command-line-tool/merge): +These are the available [merging and diffing commands](/refguide/mx-command-line-tool/merge/): | Command | Description | | --- | --- | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export.md b/content/en/docs/refguide/general/mx-command-line-tool/export.md index 5eb3584bf82..1f6b32f8f71 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/export.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/export.md @@ -27,7 +27,7 @@ These are the `OPTIONS`: | `-s, --include-snapshot` | Includes a snapshot in the app package. | | `-d, --package-dir` | Exports the package to the directory. | | `--help` | Displays the help screen. | - + For `TARGET-FILE`, specify the *.mpr* the app you want to export. ### 2.2 Examples @@ -65,7 +65,7 @@ These are the `OPTIONS`: | `-e, --exclude-files` | Excludes all the files that match the given regular expression. | | `-d, --package-dir` | Exports the module package to the directory. | | `--help` | Displays the help screen. | - + For `TARGET-FILE`, specify the *.mpr* the app you want to export. For `MODULE-NAME`, specify the name of the module you want to export. @@ -90,7 +90,7 @@ This table shows the return codes and their description: ## 4 mx create-solution-package Command {#create-solution-package} -The `mx create-solution-package` command exports the app as a [solution package](/refguide/export-app-package-dialog). +The `mx create-solution-package` command exports the app as a [solution package](/refguide/export-app-package-dialog/). ### 4.1 Usage @@ -105,7 +105,7 @@ These are the `OPTIONS`: | `-s, --include-snapshot` | Includes a snapshot in the app package. | | `-d, --package-dir` | Exports the package to the directory. | | `--help` | Displays the help screen. | - + For `TARGET-FILE`, specify the *.mpr* the app you want to export. ### 4.2 Examples diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge.md index e2cf6fa4d5c..94e28616048 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge.md @@ -87,7 +87,7 @@ In the diagram, note the following: * **B'** is `THEIRS`, which is the last commit on a branch you want to merge changes from * **A** is `BASE`, which is the common commit where the branches diverged -In order to merge changes correctly, Studio Pro has to compare both **A"** and **B'** against **A** to see what has been changed on each branch. During the merge, the [merge algorithm](/refguide/merge-algorithm) will try to automatically merge the changes. +In order to merge changes correctly, Studio Pro has to compare both **A"** and **B'** against **A** to see what has been changed on each branch. During the merge, the [merge algorithm](/refguide/merge-algorithm/) will try to automatically merge the changes. This command works for any three *.mpr* files. This means you can try to merge different apps at your own risk. @@ -105,7 +105,7 @@ The reason for this is that conflict resolution is a complex process that has tw This merge state is needed for Studio Pro to know what your current branch is and which branch you are trying to merge into it. This way, when you are trying to resolve the conflict using the `THEIRS` document, Studio Pro can download the document from the branch and put it into your current app. -So, if you run this command from the command line specifying the three *.mpr* files but the result has conflicts, you will not be able to resolve the conflicts in the `MINE` app using the `THEIRS` documents by just opening the app in Studio Pro. Instead, you need to configure Git to use `mx merge` as a [merge driver](/refguide/mx-command-line-tool/mx-merge-driver) for the *.mpr* files and trigger the merge from the Git command line (so that the repository is put in the merge state for Studio Pro to be able to pick it up after the command is complete). +So, if you run this command from the command line specifying the three *.mpr* files but the result has conflicts, you will not be able to resolve the conflicts in the `MINE` app using the `THEIRS` documents by just opening the app in Studio Pro. Instead, you need to configure Git to use `mx merge` as a [merge driver](/refguide/mx-command-line-tool/mx-merge-driver/) for the *.mpr* files and trigger the merge from the Git command line (so that the repository is put in the merge state for Studio Pro to be able to pick it up after the command is complete). ### 3.3 Examples diff --git a/content/en/docs/refguide/modeling/mx-assist-studio-pro/mx-assist-performance-bot/_index.md b/content/en/docs/refguide/modeling/mx-assist-studio-pro/mx-assist-performance-bot/_index.md index b35ea21ba1f..8151e82f87c 100644 --- a/content/en/docs/refguide/modeling/mx-assist-studio-pro/mx-assist-performance-bot/_index.md +++ b/content/en/docs/refguide/modeling/mx-assist-studio-pro/mx-assist-performance-bot/_index.md @@ -123,7 +123,7 @@ After the issue is auto-fixed, a pop-up window listing the changes appears. You ## 4 Best Practice Bot from the Command Line -Best Practice Bot may also be executed from the command line, via the [mx Command-Line Tool](/refguide/mx-command-line-tool/#check). +Best Practice Bot may also be executed from the command line, via the [mx Command-Line Tool](/refguide/mx-command-line-tool/app/#check). ## 5 Read More diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 5d0a3459102..007dae3c567 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -80,7 +80,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We updated the [Revert All Changes](/refguide/version-control-menu/#revert-all-changes) menu item to show the **Open App** dialog box if the app is closed after the operation (for example, when the changes include a version change). * We added support for signing in using a macOS external browser. This requires configuration. For details, see the [Configuring Your Windows Virtual Machine for Mendix Studio Pro](/refguide/using-mendix-studio-pro-on-a-mac/#configuring) section in *Configuring Parallels*. * Previously, a single XPath query could result in multiple SQL queries to the database, and if an XPath query was run outside of a transaction (meaning, not in a microflow, but in a data grid, for example), these SQL queries were run concurrently. This is no longer the case. This simplifies debugging, logging, and tracing. -* We added an option to the `mx check` command in the [mx command-line tool](/refguide/mx-command-line-tool/#check) to output the results to a JSON file. +* We added an option to the `mx check` command in the [mx command-line tool](/refguide/mx-command-line-tool/app/#check) to output the results to a JSON file. * We added the `IMxRuntimeRequest.getRootUrl` method to the [Mendix Runtime API](/apidocs-mxsdk/apidocs/runtime-api/). This method can be used to retrieve the root URL of the application. * We added `getSslContext` to the `IHttpConfiguration` interface in the Mendix Runtime API. This gives the Java code access to the `SslContext` that should be used to call a service based on the Mendix Runtime settings. * We added default values for the `ProcessedTasksCleanupAge` and `ScheduledEventsCleanupAge` Mendix Runtime settings. The default value is now 365 days for existing apps with data and 7 days for new apps or apps with an empty database. Previously, the default values were empty and required an explicit Mendix Runtime setting configuration in order to perform cleanup. From cfa0641427edb4440eac07eb487800d1b1da664b Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 13 Jun 2023 10:00:21 +0200 Subject: [PATCH 029/232] Review --- content/en/docs/refguide/general/mx-command-line-tool/merge.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge.md index 94e28616048..3ffdefef376 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge.md @@ -105,7 +105,7 @@ The reason for this is that conflict resolution is a complex process that has tw This merge state is needed for Studio Pro to know what your current branch is and which branch you are trying to merge into it. This way, when you are trying to resolve the conflict using the `THEIRS` document, Studio Pro can download the document from the branch and put it into your current app. -So, if you run this command from the command line specifying the three *.mpr* files but the result has conflicts, you will not be able to resolve the conflicts in the `MINE` app using the `THEIRS` documents by just opening the app in Studio Pro. Instead, you need to configure Git to use `mx merge` as a [merge driver](/refguide/mx-command-line-tool/mx-merge-driver/) for the *.mpr* files and trigger the merge from the Git command line (so that the repository is put in the merge state for Studio Pro to be able to pick it up after the command is complete). +So, if you run this command from the command line specifying the three *.mpr* files but the result has conflicts, you will not be able to resolve the conflicts in the `MINE` app using the `THEIRS` documents by just opening the app in Studio Pro. Instead, you need to configure Git to use `mx merge` as a [merge driver](#merge-git-driver) for the *.mpr* files and trigger the merge from the Git command line (so that the repository is put in the merge state for Studio Pro to be able to pick it up after the command is complete). ### 3.3 Examples From 4345326421c11ad816db1f9dfb14237f29870ab0 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 13 Jun 2023 11:37:24 +0200 Subject: [PATCH 030/232] Add RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 14 +++++++------- layouts/partials/landingpage/latest-releases.html | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 5d0a3459102..bfe4d240c75 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -5,17 +5,13 @@ description: "The release notes for Mendix Studio Pro version 10.0 (including al weight: 100 --- -{{% alert color="info" %}} -Mendix 10 is currently in Beta. For more information about Beta releases and features, see [Beta Releases](/releasenotes/beta-features/). -{{% /alert %}} - {{% alert color="info" %}} For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro 9 to 10](/refguide/upgrading-from-9-to-10/). {{% /alert %}} -## 10.0.0 Beta 2 {#1000-beta-2} +## 10.0.0 General Availability {#1000} -**Release date: June 1st, 2023** +**Release date: June 27th, 2023** {{% button color="info" href="https://marketplace.mendix.com/link/studiopro/10.0.0" text="Go to Marketplace" title="Download version 10.0.0 from the Marketplace" %}} @@ -89,7 +85,11 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We introduced the new Mendix Runtime setting `StrictChangeBehaviour`. This setting is enabled by default. When this setting is enabled, trying to set an invalid value for an enum or a value for a calculated attribute will throw an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. * We added a private market option to the list of available target markets for Studio Pro. -### Fixes +## 10.0.0 Betas + +{{% alert color="warning" %}} +The Beta program for 10.0 has ended, which means that the Beta versions of Studio Pro are no longer available for download. In addition, apps created in the Beta versions that are converted to 10.0.0 General Availability can no longer be opened in the Beta versions of Studio Pro. +{{% /alert %}} * We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. * We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). diff --git a/layouts/partials/landingpage/latest-releases.html b/layouts/partials/landingpage/latest-releases.html index b910996fec2..6bb3f256b16 100644 --- a/layouts/partials/landingpage/latest-releases.html +++ b/layouts/partials/landingpage/latest-releases.html @@ -3,8 +3,8 @@

    - -

    Jun 1st, 2023

    + +

    Jun 27th, 2023

    Apr 13th, 2023

    From 4aa4975ee95768acadf4624eba408f9c5f0ec68f Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 13 Jun 2023 13:06:33 +0200 Subject: [PATCH 031/232] Review --- .../general/mx-command-line-tool/adaptable.md | 12 ++++---- .../general/mx-command-line-tool/app.md | 30 +++++++++---------- .../general/mx-command-line-tool/export.md | 26 ++++++++-------- .../general/mx-command-line-tool/merge.md | 18 +++++------ .../general/mx-command-line-tool/module.md | 8 ++--- 5 files changed, 47 insertions(+), 47 deletions(-) diff --git a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md index aa534c1734e..9f9e91cc096 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/adaptable.md @@ -66,9 +66,9 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | -| 0 | No errors. | -| 315 | If `-b` was specified, but the app is not based on a solution. | -| 313 | If -b was not specified, but distribution as a solution is not enabled for the app. | +| `0` | No errors. | +| `315` | If `-b` was specified, but the app is not based on a solution. | +| `313` | If -b was not specified, but distribution as a solution is not enabled for the app. | ## 3 mx set-app-version Command {#set-app-version} @@ -104,6 +104,6 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | -| 0 | No errors. | -| 124 | The version is not in the SemVer format. | -| 313 | Distribution as a solution is not enabled for the app. | +| `0` | No errors. | +| `124` | The version is not in the SemVer format. | +| `313` | Distribution as a solution is not enabled for the app. | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/app.md b/content/en/docs/refguide/general/mx-command-line-tool/app.md index 69a43b1a38c..d875d1b5413 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/app.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/app.md @@ -47,9 +47,9 @@ These are the return codes: | Return Code | Description | | --- | --- | -| 0 | The app creation was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | +| `0` | The app creation was successful. | +| `1` | An internal error occurred. | +| `2` | There is something wrong with the command-line options. | ## 3 mx show-version Command {#show-version} @@ -90,7 +90,7 @@ These are the return codes: | Return Code | Description | | --- | --- | -| 0 | The command ran successfully. | +| `0` | The command ran successfully. | ## 4 mx convert Command {#convert} @@ -130,8 +130,8 @@ These are example commands: | Example | Result | | --- | --- | | `mx convert --in-place C:\MxProjects\App-main` | Converts the app in folder *C:\MxProjects\App-main* to the specific Studio Pro version that the mx tool is bundled with. | -| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the `C:\Mendix\` folder and puts the results in the `C:\Mendix\ConvertedProjects\` folder. | -| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all the app packages in the `C:\Mendix\Packages\` folder to the `C:\Mendix\ConvertedPackages\` folder without checking for errors. | +| `mx convert C:\Mendix\App1.mpk C:\Mendix\App2.mpk C:\Mendix\ConvertedProjects\` | Converts the *App1.mpk* and *App2.mpk* app packages that are in the *C:\\Mendix\\* folder and puts the results in the *C:\\Mendix\\ConvertedProjects\\* folder. | +| `mx convert --skip-error-check C:\Mendix\Packages\ C:\Mendix\ConvertedPackages\` | Converts all the app packages in the *C:\\Mendix\\Packages\\* folder to the *C:\\Mendix\\ConvertedPackages\\* folder without checking for errors. | ### 4.3 Return Codes @@ -139,10 +139,10 @@ These are the return codes: | Return Code | Description | | --- | --- | -| 0 | The conversion was successful. | -| 1 | An internal error occurred. | -| 2 | There is something wrong with the command-line options. | -| 3 | Converting failed. | +| `0` | The conversion was successful. | +| `1` | An internal error occurred. | +| `2` | There is something wrong with the command-line options. | +| `3` | Converting failed. | ## 5 mx check Command {#check} @@ -194,11 +194,11 @@ These are the return codes: | Return Code | Description | | --- | --- | -| 0 | No issues found. | -| 1 | Errors were found. | -| 2 | Warnings were found. | -| 4 | Deprecations were found. | -| 8 | Performance recommendations were found. | +| `0` | No issues found. | +| `1` | Errors were found. | +| `2` | Warnings were found. | +| `4` | Deprecations were found. | +| `8` | Performance recommendations were found. | Those values are logically `OR` combined to indicate when there are a mix of errors, warnings, deprecations, or performance recommendations. diff --git a/content/en/docs/refguide/general/mx-command-line-tool/export.md b/content/en/docs/refguide/general/mx-command-line-tool/export.md index 1f6b32f8f71..4f3469a26ac 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/export.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/export.md @@ -42,10 +42,10 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | -| 0 | OK. | -| 1 | Incorrect app file provided. | -| 2 | Output folder not determined. | -| 4 | Unknown package export error. | +| `0` | OK. | +| `1` | Incorrect app file provided. | +| `2` | Output folder not determined. | +| `4` | Unknown package export error. | ## 3 mx create-module-package Command {#create-module-package} @@ -82,11 +82,11 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | -| 0 | OK. | -| 1 | Incorrect app file provided. | -| 2 | Output folder not determined. | -| 3 | Invalid module name specified. | -| 4 | Unknown package export error. | +| `0` | OK. | +| `1` | Incorrect app file provided. | +| `2` | Output folder not determined. | +| `3` | Invalid module name specified. | +| `4` | Unknown package export error. | ## 4 mx create-solution-package Command {#create-solution-package} @@ -120,7 +120,7 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | -| 0 | OK. | -| 1 | Incorrect app file provided. | -| 2 | Output folder not determined. | -| 4 | Unknown package export error. | +| `0` | OK. | +| `1` | Incorrect app file provided. | +| `2` | Output folder not determined. | +| `4` | Unknown package export error. | diff --git a/content/en/docs/refguide/general/mx-command-line-tool/merge.md b/content/en/docs/refguide/general/mx-command-line-tool/merge.md index 3ffdefef376..80c06349f0c 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/merge.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/merge.md @@ -48,10 +48,10 @@ This table shows the return codes and their description: | Return Code | Meaning | | --- | --- | -| 0 | OK. | -| 2 | Conflicts were found during the diff. | -| 3 | An error happened during the merge. | -| 4 | The version of either *.mpr* file is not supported. | +| `0` | OK. | +| `2` | Conflicts were found during the diff. | +| `3` | An error happened during the merge. | +| `4` | The version of either *.mpr* file is not supported. | ## 3 mx merge Command {#merge} @@ -119,11 +119,11 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | -| 0 | The merge is successful and there are no conflicts. *MINE.mpr* contains the result of the merge. | -| 1 | The command is invalid for the input parameters. | -| 2 | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | -| 3 | There is an exception, as an error occurred during the merge. Error details are printed to the command line output. | -| 4 | The version is unsupported | +| `0` | The merge is successful and there are no conflicts. *MINE.mpr* contains the result of the merge. | +| `1` | The command is invalid for the input parameters. | +| `2` | Conflicts are detected. Open *MINE.mpr* in Studio Pro to resolve them. | +| `3` | There is an exception, as an error occurred during the merge. Error details are printed to the command line output. | +| `4` | The version is unsupported | ## 4 mx merge as Git Merge Driver {#merge-git-driver} diff --git a/content/en/docs/refguide/general/mx-command-line-tool/module.md b/content/en/docs/refguide/general/mx-command-line-tool/module.md index 4de731713fd..2659f5eea2b 100644 --- a/content/en/docs/refguide/general/mx-command-line-tool/module.md +++ b/content/en/docs/refguide/general/mx-command-line-tool/module.md @@ -44,8 +44,8 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | -| 0 | No errors. | -| 1 | The module does not have a version | +| `0` | No errors. | +| `1` | The module does not have a version | The command will output the version of the module to the command line output. @@ -83,5 +83,5 @@ This table shows the return codes and their description: | Return Code | Description | | --- | --- | -| 0 | No errors. | -| 1 | The module does not have a version | +| `0` | No errors. | +| `1` | The module does not have a version | From 92d12b4f107e331b27279f7b00019df0ca5cd905 Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Tue, 13 Jun 2023 17:12:48 +0200 Subject: [PATCH 032/232] Language and style review --- .../workflow-elements/multi-user-task.md | 133 +++++++++--------- .../workflows/workflow-elements/user-task.md | 53 +++---- 2 files changed, 90 insertions(+), 96 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index 0473a146d8f..ba18cbf293e 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -2,15 +2,7 @@ title: "Multi-User Task" url: /refguide/multi-user-task/ weight: 30 -tags: - [ - "workflow", - "workflows", - "multi-user task", - "multi user task", - "task", - "Studio Pro", - ] +tags: ["workflow", "workflows", "multi-user task", "multi user task", "task", "Studio Pro"] --- ## 1 Introduction @@ -25,15 +17,15 @@ For example, you can assign a review task to multiple users: Multi-user task properties consist of the following sections: -- [General](#general) -- [Due date](#due-date) -- [Events](#events) -- [Targeted users](#users) -- [Completion condition](#completion-condition) -- [Outcomes](#outcomes) -- [Task page](#task-page) -- [Display information](#display-info) -- [Common](#common) +* [General](#general) +* [Due date](#due-date) +* [Events](#events) +* [Targeted users](#users) +* [Completion condition](#completion-condition) +* [Outcomes](#outcomes) +* [Task page](#task-page) +* [Display information](#display-info) +* [Common](#common) ### 2.1 General Section {#general} @@ -41,19 +33,19 @@ Multi-user task properties consist of the following sections: ### 2.2 Due Date Section {#due-date} -**Due date** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. For example, you can use it to set a deadline for the user task and display it in your app. However, this is not an automatic reminder but rather a deadline you reference when keeping track of the user task. If you are using the **Workflow Commons** module, **Due date** is used in page templates and preconfigured dashboards. +**Due date** is stored in the System module on the **UserTask** entity as an attribute and its data can be dynamically displayed in the running app. For example, you can use it to set a deadline for the multi-user task and display it in your app. However, this is not an automatic reminder but rather a deadline you reference when keeping track of the multi-user task. If you are using the **Workflow Commons** module, **Due date** is used in page templates and preconfigured dashboards. The **Due date** section properties are described in the table below: -| Property | Description | -| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| None | No due date is set. | -| Duration | You can set the deadline for the user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
    • Hour(s)
    • Day(s)
    • Week(s)
    | -| Expression | You can set a due date for the user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | +| Property | Description | +| --- | --- | +| None | No due date is set. | +| Duration | You can set the deadline for the multi-user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
    • Hour(s)
    • Day(s)
    • Week(s)
    | +| Expression | You can set a due date for the multi-user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | ### 2.3 Events Section {#events} -**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the user task to the assigned users. +**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the multi-user task to the assigned users. ### 2.4 Targeted Users Section {#users} @@ -63,47 +55,47 @@ The **Due date** section properties are described in the table below: Possible options of this property are described in the table below: -| Option | Description | -| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| XPath | Allows you to filter users who should be assigned the user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| Microflow | Allows you to assign the user task to certain users. Using microflow you can check, for example, which users have the right to approve user tasks and are currently not on vacation and assign the task only to users who passed the check.
    The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| No assignment | Allows you to not assign the user task to certain users immediately. This can be useful when you, for example, want the user task to be created but have an administrator assign it to certain users later. | +| Option | Description | +| --- | --- | +| XPath | Allows you to filter users who should be assigned to the multi-user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| Microflow | Allows you to assign the multi-user task to certain users. Using microflow you can check, for example, which users have the right to approve multi-user tasks and are currently not on vacation and assign the task only to users who passed the check.
    The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| No assignment | Allows you to not assign the multi-user task to certain users immediately. This can be useful when you, for example, want the multi-user task to be created but have an administrator assign it to certain users later. | -In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in _Change Workflow State_. +In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in *Change Workflow State*. #### 2.4.2 XPath Constraint -Specifies the expression used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **XPath**. +Specifies the expression used to assign the multi-user task. This option is displayed only when the [Target users using](#target-users) is set to **XPath**. #### 2.4.3 Microflow -Specifies the microflow used to assign the user task. This option is displayed only when the [Target users using](#target-users) is set to **Microflow**. +Specifies the microflow used to assign the multi-user task. This option is displayed only when the [Target users using](#target-users) is set to **Microflow**. ### 2.5 Completion Condition Section {#completion-condition} #### 2.5.1 Participant Input {#participant-input} -This property determines the maximum number of targeted users that are required to select an outcome for a user task to be completed. +This property determines the maximum number of targeted users that are required to select an outcome to complete a multi-user task. ##### 2.5.1.1 All -All targeted users should select an outcome for the task to be completed. +All targeted users should select an outcome to complete the multi-user task. ##### 2.5.1.2 Absolute Number {#absolute-number} -The specified amount of targeted users should select an outcome for the task to be completed. +The specified amount of targeted users should select an outcome to complete the multi-user task. ##### 2.5.1.3 Percentage -The specified percentage of targeted users should select an outcome for the task to be completed. +The specified percentage of targeted users should select an outcome to complete the multi-user task. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value. -For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome for the task to complete. +For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome to complete the multi-user task. #### 2.5.2 Decision Method -With this property you specify how the outcomes of the individual users are aggregated into a single multi-user task outcome. This aggregated outcome is used as the final outcome to complete the multi-user task. +With this property, you specify how the outcomes of the individual users are aggregated into a single multi-user task outcome. This aggregated outcome is used as the final outcome to complete the multi-user task. ##### 2.5.2.1 Consensus @@ -115,24 +107,24 @@ The following example shows how you can use **Consensus** as the **Decision meth Out of a group of two or more users, two users need to perform the same task: to approve or reject a request. Their decisions are represented by the task outcomes. When the **Decision method** is set to **Consensus**: -- If they both approve the request, the multi-user task is completed with the outcome `Approve`. -- If they both reject the request, the multi-user task is completed with the outcome `Reject`. -- If no consensus is reached between the two users, the multi-user task will then be completed with a fallback outcome (in this example, `NoConsensus` ) +* If they both approve the request, the multi-user task is completed with the outcome `Approve`. +* If they both reject the request, the multi-user task is completed with the outcome `Reject`. +* If no consensus is reached between the two users, the multi-user task will then be completed with a fallback outcome (in this example, `NoConsensus` ) You can refer to the following properties settings for this example: -- **Targeted users**: The users that can perform the task (they can be a team, a department, or two pre-selected users) -- **Participant input**: **Absolute number** > `2` -- **Decision method**: **Consensus** -- **Fallback outcome**: An outcome users can select but it will be selected automatically when there is no consensus (in this example, `NoConsensus`) -- **Outcomes**: `Approve`, `Reject`, `NoConsensus` +* **Targeted users**: The users that can perform the task (they can be a team, a department, or two pre-selected users) +* **Participant input**: **Absolute number** > `2` +* **Decision method**: **Consensus** +* **Fallback outcome**: An outcome users can select but it will be selected automatically when there is no consensus (in this example, `NoConsensus`) +* **Outcomes**: `Approve`, `Reject`, `NoConsensus` ###### 2.5.2.1.2 Fallback Outcome {#fallback-outcome} -This outcome will be the final outcome of the task in the following cases: +This outcome will be the final outcome of the multi-user task in the following cases: -- If any of the users during consensus decision method selects a different outcome from the rest of the users -- If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Participant input** section: +* If any of the users during consensus decision method selects a different outcome from the rest of the users +* If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Participant input** section: For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then consensus can never be reached and fallback outcome will be used as the final outcome to complete the task. @@ -146,7 +138,7 @@ The completion condition is evaluated after each user selects an outcome. Theref ##### 2.5.2.2 Veto {#veto} -Veto Decision method requires two outcomes, one of which is the veto outcome. If anyone selects the veto outcome, then the multi-user task will be completed with the veto outcome. +Veto decision method requires two outcomes, one of which is the veto outcome. If anyone selects the veto outcome, then the multi-user task will be completed with the veto outcome. For a multi-user task to complete with the non-veto outcome, all users, as defined in property **Participant input**, need to complete their task by selecting the non-veto outcome. @@ -158,21 +150,21 @@ One example is when a whole team needs to make a joint decision during a hiring You can refer to the following properties settings for the example above: -- **Targeted users**: All users that need to decide during the hiring process (the whole team) -- **Participant input**: **All** targeted users -- **Decision method**: **Veto** -- **Veto outcome**: `DoNotHire` -- **Outcomes**: `Hire`, `DoNotHire` +* **Targeted users**: All users that need to decide during the hiring process (the whole team) +* **Participant input**: **All** targeted users +* **Decision method**: **Veto** +* **Veto outcome**: `DoNotHire` +* **Outcomes**: `Hire`, `DoNotHire` Another example is when a group of five experts needs to decide whether a change request is `Minor` or `Major`. If any one of the five experts decides it is a major request, the change request will be `Major`. The input from the other four experts is not relevant anymore. If all five of them decide it is a minor change request, the final multi-user task outcome will be `Minor`. In this case, the outcome `Major` is the veto outcome. You can refer to the following properties settings for the second example above: -- **Targeted users**: group of experts -- **Participant input**: **Absolute number** > `5` -- **Decision method**: **Veto** -- **Veto outcome**: `Major` -- **Outcomes**: `Minor`, `Major` +* **Targeted users**: group of experts +* **Participant input**: **Absolute number** > `5` +* **Decision method**: **Veto** +* **Veto outcome**: `Major` +* **Outcomes**: `Minor`, `Major` ###### 2.5.2.2.2 Veto Outcome @@ -184,7 +176,7 @@ The completion condition is evaluated after each user selects an outcome. When o ### 2.6 Outcomes Section {#outcomes} -The outcomes property allows you to create new outcomes for the user task. Outcomes are translated into different outgoing paths of the user task and can be referred to by other elements, such as a button. For example, you have a process when you need to approve or reject a request. One button on a [task page](#task-page) can refer to the **Approve** outcome of the user task, while another one can use the **Reject** outcome. +The outcomes property allows you to create new outcomes for the multi-user task. Outcomes are translated into different outgoing paths of the multi-user task and can be referred to by other elements, such as a button. For example, you have a process when you need to approve or reject a request. One button on a [task page](#task-page) can refer to the **Approve** outcome of the multi-user task, while another one can use the **Reject** outcome. ### 2.7 Task Page Section {#task-page} @@ -214,8 +206,8 @@ To view **Parameters**, click the ellipsis icon next to the **Task name** or **T Parameters have the following settings: -- **Index** – an identification number of a parameter -- **Expression** – an XPath expression that will be displayed +* **Index** – an identification number of a parameter +* **Expression** – an XPath expression that will be displayed ##### 2.8.3.1 Adding New Parameters @@ -239,15 +231,16 @@ To add a parameter to the **Task name** or the **Task description**, do the foll In addition to adding new parameters, you can perform the following actions on parameters: -- **Delete** – to delete a parameter click **Delete** or press Delete on your keyboard -- **Edit** – double-click a parameter to edit it or click **Edit** -- **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** -- **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** +* **Delete** – to delete a parameter click **Delete** or press Delete on your keyboard +* **Edit** – double-click a parameter to edit it or click **Edit** +* **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** +* **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** ### 2.9 Common Section {#common} -**Name** is the internal name of the user task. When referring to the user task in the app you will use this name. It must be unique within the workflow, but you can have two user tasks with the same name in different workflows. +**Name** is the internal name of the multi-user task. When referring to the multi-user task in the app you will use this name. It must be unique within the workflow, but you can have two multi-user tasks with the same name in different workflows. ## 3 Read More -- [Workflows](/refguide/workflows/) +* [Workflows](/refguide/workflows/) +* [User Task](/refguide/user-task/) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md index 0a7a902a681..5401bd4e472 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md @@ -21,14 +21,14 @@ When the workflow reaches the user task activity, the task is created and will b User task properties consist of the following sections: -- [General](#general) -- [Due date](#due-date) -- [Events](#events) -- [Targeted users](#users) -- [Outcomes](#outcomes) -- [Task page](#task-page) -- [Display information](#display-info) -- [Common](#common) +* [General](#general) +* [Due date](#due-date) +* [Events](#events) +* [Targeted users](#users) +* [Outcomes](#outcomes) +* [Task page](#task-page) +* [Display information](#display-info) +* [Common](#common) ### 2.1 General Section {#general} @@ -40,11 +40,11 @@ User task properties consist of the following sections: The **Due date** section properties are described in the table below: -| Property | Description | -| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| None | No due date is set. | -| Duration | You can set the deadline for the user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
    • Hour(s)
    • Day(s)
    • Week(s)
    | -| Expression | You can set a due date for the user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | +| Property | Description | +| --- | --- | +| None | No due date is set. | +| Duration | You can set the deadline for the user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
    • Hour(s)
    • Day(s)
    • Week(s)
    | +| Expression | You can set a due date for the user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | ### 2.3 Events Section {#events} @@ -58,13 +58,13 @@ The **Due date** section properties are described in the table below: Possible options of this property are described in the table below: -| Option | Description | -| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| XPath | Allows you to filter users who should be assigned the user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| Microflow | Allows you to assign the user task to certain users. Using microflow you can check, for example, which users have the right to approve user tasks and are currently not on vacation and assign the task only to users who passed the check.
    The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| No assignment | Allows you to not assign the user task to certain users immediately. This can be useful when you, for example, want the user task to be created but have an administrator assign it to certain users later. | +| Option | Description | +| --- | --- | +| XPath | Allows you to filter users who should be assigned the user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| Microflow | Allows you to assign the user task to certain users. Using microflow you can check, for example, which users have the right to approve user tasks and are currently not on vacation and assign the task only to users who passed the check.
    The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| No assignment | Allows you to not assign the user task to certain users immediately. This can be useful when you, for example, want the user task to be created but have an administrator assign it to certain users later. | -In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in _Change Workflow State_. +In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in *Change Workflow State*. #### 2.4.2 XPath Constraint @@ -110,8 +110,8 @@ To view **Parameters**, click the ellipsis icon next to the **Task name** or **T Parameters have the following settings: -- **Index** – an identification number of a parameter -- **Expression** – an XPath expression that will be displayed +* **Index** – an identification number of a parameter +* **Expression** – an XPath expression that will be displayed ##### 2.7.3.1 Adding New Parameters @@ -135,10 +135,10 @@ To add a parameter to the **Task name** or the **Task description**, do the foll In addition to adding new parameters, you can perform the following actions on parameters: -- **Delete** – to delete a parameter click **Delete** or press Delete on your keyboard -- **Edit** – double-click a parameter to edit it or click **Edit** -- **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** -- **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** +* **Delete** – to delete a parameter click **Delete** or press Delete on your keyboard +* **Edit** – double-click a parameter to edit it or click **Edit** +* **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** +* **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** ### 2.8 Common Section {#common} @@ -146,4 +146,5 @@ In addition to adding new parameters, you can perform the following actions on p ## 3 Read More -- [Workflows](/refguide/workflows/) +* [Workflows](/refguide/workflows/) +* [Multi-User Task](/refguide/multi-user-task/) From bfb51c8ddd519a21d69b497f1d6957695bd9cca8 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 07:55:52 +0200 Subject: [PATCH 033/232] Update --- layouts/partials/landingpage/product-cards.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/landingpage/product-cards.html b/layouts/partials/landingpage/product-cards.html index 35364562b36..b2d87a10a1e 100644 --- a/layouts/partials/landingpage/product-cards.html +++ b/layouts/partials/landingpage/product-cards.html @@ -7,7 +7,7 @@

From f4a1f45b00d2817e4e93436b299945f57d1c6881 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 09:21:15 +0200 Subject: [PATCH 034/232] Update --- layouts/partials/landingpage/product-cards.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/landingpage/product-cards.html b/layouts/partials/landingpage/product-cards.html index b2d87a10a1e..52fccc326bf 100644 --- a/layouts/partials/landingpage/product-cards.html +++ b/layouts/partials/landingpage/product-cards.html @@ -7,7 +7,7 @@

From 7cedbf50399ce0990380b5558a163e893a2524f1 Mon Sep 17 00:00:00 2001 From: Ishan Sharma Date: Thu, 8 Jun 2023 13:12:35 +0200 Subject: [PATCH 035/232] Updates the documentation for multi-user task auto assignment. --- .../activities/workflow-activities/show-task-page.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md index d172e34700a..24dc39bee4d 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md @@ -43,7 +43,10 @@ The user task object of the System.WorkflowUserTask entity available from the mi ### 3.2 Auto-Assign -With this option, you can automatically assign the user task to the user who has opened the task page, if the user task has not been assigned to anyone yet. +With this option, you can automatically assign the user task to the user who has opened the task page. +For a single user task, the auto assignment will happen only if the user task has not been assigned to anyone yet. +For a multi-user task, the auto assignment will happen irrespective of whether the task was assigned before (to another user) or not. + This option is enabled by default. {{% alert color="info" %}} @@ -59,6 +62,8 @@ This option specifies who is able to open the user task page when a user has alr | Assigned user *(default)* | Only the user who is currently assigned to the task is able to open the user task page. | | Users with access | All users who have access to the user task can open the user task page.
Note that this option means that multiple users can open the page at the same time. Only the assigned user is able to complete the task, however, other users can make changes to the page, and the data will not be saved unless you add a **Save** button. This button saves data, but does not complete the task.
Take into account that when two users have the task page open simultaneously, data from the user who saves changes the last is stored and this will overwrite data from the other user. | +**Note:** For a multi-user task, this setting has no effect if the `Auto-Assign` is enabled. + ## 4 Common Section {#common} {{% snippet file="/static/_includes/refguide/microflow-common-section-link.md" %}} From cff0b440c42b707135398b4bf78e171fb5b1856d Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 13:05:54 +0200 Subject: [PATCH 036/232] Add GA notes --- .../docs/releasenotes/studio-pro/10/10.0.md | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index bfe4d240c75..8ff25c9f57c 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -9,6 +9,116 @@ weight: 100 For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro 9 to 10](/refguide/upgrading-from-9-to-10/). {{% /alert %}} +# GA NOTES + +## {{PATCH_VERSION}} + +### New Features + +* We added support for `Auto-assign` and `Who Can Open` options for multi-user tasks. + +[//]: # (Include links/references to Idea Forum ideas when available.) + +#### {Major new feature specifically named in heading} + +### Improvements + +* We added "Preferences" to the App Selector and extended "Work Environment” tab in Preferences with “Studio Pro Theme”. When it is set to “Auto” we automatically detect color preferences set in an operating system and use appropriate theme for Studio Pro. You can now find “Rendering” preferences in the "Work Environment” tab. +* We have updated the style for the Context Menu. +* We added an ability to select the text in the read-only Dropdown controls. +* We styled "Select Module Role" dialog to use different colors for modules. +* We have made adding attributes even easier. When adding a new attribute, we would previously suggest the types based on the most common patterns we see in applications. We're now going one step further and also take the attributes and their types that are already in your project into consideration. We will also now automatically try to set the enumeration document if the enumeration type is suggested. +* We added tooltips to the 'branch name', 'commit message' and 'on disk' columns in the branchline pane. +* We have reduced the number of cases in the client where a data source would be reloaded even if its container was being hidden by conditional visibility at the same time. (Ticket 126149) +* We modernized "New Document" dialog to support dark mode. +* We made Design Mode the default editor for pages for new users. This does not affect existing installations. The setting can be changed in 'Preferences' > 'Work environment' > 'Default Page Editor' +* We added 'Majority' and 'Threshold' decision methods to workflow multi-user task. +* We reduced the number of default panes in the default layout of Studio Pro. +* We added Portfolio button in the App Switcher menu. + +[//]: # (Include links/references to Idea Forum ideas when available.) + +* We changed the caption of an empty enumeration value from '(empty)' to 'Empty' in the decision outcomes grid for workflows. + +#### {Major improvement specifically named in heading} + + +#### Other Improvements + +* We now set the variable name of an Aggregate List action to 'Count' by default. +* We have included support to dark-mode in the message definitions editor. +* Added a new log node called IDResolution, which will provide more details about certain actions being executed on the runtime. +* We removed the limitation that stopped you from automatically creating Import and Export mappings from Message Definitions with more than 100 attributes. +* Data sources for list view, data grid and template grid can now select an entity path from any surrounding data widget. This also allows them to be used in snippets with multiple parameters. +* You can now set input parameters as return variables via the context menu. Big thanks to Marius van der Knaap for this idea. +* We aligned horizontal indentation of the text in the column headers and cells in the data grid and tree controls. + +### Fixes + + +* We fixed a runtime error if a microflow was no longer being used in an app after doing a hot-reload in Studio Pro. +* We fixed an issue when a nanoflow retrieves a non-persistable entity over association and this entity has an event handler. (Ticket 183879) +* We fixed a memory leak that would occur when opening pages. This would cause issues after opening thousands of pages. (Ticket 172126) +* We fixed an issue when the Commit Message field was not focused upon opening the Commit dialog. +* We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. +* We fixed the styling issue of the disabled Checkbox controls. +* We fixed an issue where the Text Editor control does not have a border in the dark theme. +* We fixed icons styling in the Auto-complete popup of the Text Editor control in the dark theme. +* We fixed an issue with rendering of the custom application icons in the App Selector dialog. +* We fixed an issue with the border color of the selected cells in the Grid control. + +* We fixed an issue where published REST and OData services would create a session for a web service user when the custom authentication microflow would return such a user. This is unsupported (web service users should only be used for published web (SOAP) services), and would lead to these sessions not being cleaned up properly. This scenario now results in an 500 Internal Server Error (Ticket 182579, 187479). + +* We fixed an issue where the nanoflow debugger would not stay paused after 30 seconds. + +* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) + +* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) + +* We fixed an issue where the `originURI` cookie could not be read when using the default `index.html` (ticket 181106). +* We have updated the Building Block image requirement to PNG image that has dimensions of 432x192 pixels and downscale it when the image is too large to fit into Toolbox. + +* We fixed CVE-2023-32314. + +* We fixed an issue with getting the device name as the phone's factory name in Mobile apps. (Ticket 183392) + +* We fixed possible race conditions between microflow actions on the same workflow instance. +* We fixed the issue when Documentation pane does not show the documentation corresponding to the selected element in certain conditions (Ticket 185876). +* We fixed the functionality of the 'Collapse All' button in the tree control: It should collapse all nodes in the tree, even when there is only a single root node in the tree. + +* We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516) +* We fixed the tooltips that were not displayed for disabled toolbar buttons. +* We fixed an issue where the navigation editor's width would change upon performing UI updates (i.e. toggling a checkbox). + +* We fixed an issue where no error message is shown when an update of a Marketplace module fails. (Ticket 183507) +* We fixed an issue where a pluggable widget with a [`widgets`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a datasource and an [`image`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) +* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). + +### Limitations + +### Deprecations + +* We are deprecating the 'Import Web Service or XML Schema' wizard that is accessible in the Domain Model editor when you click the 'Import web service/XML file...' button. This functionality will be removed in Mendix 10.6. + +### Breaking Changes + +* When committing multiple objects, the order that Before Commit and After Commit events are executed may have changed. Note that this order was already documented to be unspecified and should not be relied on. +* We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling which relies on direct child (`>`), sibling (`+`) or `nth-child` selectors. +* We updated the icons in Atlas and widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. + +### Known Issues + +* The algorithm for detecting conflicts during the migration of workflows with active multi-user tasks is currently too rigid and will not allow a conflicted user task to be continued in certain cases. + In a (near) future release we will provide better migration scenarios, where workflows with conflicted multi-user tasks can be continued. + The situations in which a multi-user task is marked as 'Incompatible' without continue are: + - The type of decision method (i.e. 'Consensus', 'Majority', 'Threshold', 'Veto') is changed. + - A 'Majority' decision method is changed from 'More than half' to 'Most voted'. + - A 'Threshold' decision method is changed from 'Percentage' to 'Absolute number' or vice versa. + - The 'Percentage' or 'Amount' value for 'Threshold' decision method is lowered. + +[//]: # (Document fixes in this release for known issues in earlier release notes.) + + ## 10.0.0 General Availability {#1000} **Release date: June 27th, 2023** From f218e2c868573223c65bf1c45ebf09498db8e3d8 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 13:08:24 +0200 Subject: [PATCH 037/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 33 +------------------ 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 8ff25c9f57c..20484bada81 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -11,15 +11,9 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S # GA NOTES -## {{PATCH_VERSION}} - ### New Features -* We added support for `Auto-assign` and `Who Can Open` options for multi-user tasks. - -[//]: # (Include links/references to Idea Forum ideas when available.) - -#### {Major new feature specifically named in heading} +* We added support for `Auto-assign` and `Who Can Open` options for multi-user tasks. [**TW**] ### Improvements @@ -35,16 +29,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We added 'Majority' and 'Threshold' decision methods to workflow multi-user task. * We reduced the number of default panes in the default layout of Studio Pro. * We added Portfolio button in the App Switcher menu. - -[//]: # (Include links/references to Idea Forum ideas when available.) - * We changed the caption of an empty enumeration value from '(empty)' to 'Empty' in the decision outcomes grid for workflows. - -#### {Major improvement specifically named in heading} - - -#### Other Improvements - * We now set the variable name of an Aggregate List action to 'Count' by default. * We have included support to dark-mode in the message definitions editor. * Added a new log node called IDResolution, which will provide more details about certain actions being executed on the runtime. @@ -55,7 +40,6 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### Fixes - * We fixed a runtime error if a microflow was no longer being used in an app after doing a hot-reload in Studio Pro. * We fixed an issue when a nanoflow retrieves a non-persistable entity over association and this entity has an event handler. (Ticket 183879) * We fixed a memory leak that would occur when opening pages. This would cause issues after opening thousands of pages. (Ticket 172126) @@ -66,36 +50,24 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We fixed icons styling in the Auto-complete popup of the Text Editor control in the dark theme. * We fixed an issue with rendering of the custom application icons in the App Selector dialog. * We fixed an issue with the border color of the selected cells in the Grid control. - * We fixed an issue where published REST and OData services would create a session for a web service user when the custom authentication microflow would return such a user. This is unsupported (web service users should only be used for published web (SOAP) services), and would lead to these sessions not being cleaned up properly. This scenario now results in an 500 Internal Server Error (Ticket 182579, 187479). - * We fixed an issue where the nanoflow debugger would not stay paused after 30 seconds. - * We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) - * We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) - * We fixed an issue where the `originURI` cookie could not be read when using the default `index.html` (ticket 181106). * We have updated the Building Block image requirement to PNG image that has dimensions of 432x192 pixels and downscale it when the image is too large to fit into Toolbox. - * We fixed CVE-2023-32314. - * We fixed an issue with getting the device name as the phone's factory name in Mobile apps. (Ticket 183392) - * We fixed possible race conditions between microflow actions on the same workflow instance. * We fixed the issue when Documentation pane does not show the documentation corresponding to the selected element in certain conditions (Ticket 185876). * We fixed the functionality of the 'Collapse All' button in the tree control: It should collapse all nodes in the tree, even when there is only a single root node in the tree. - * We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516) * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width would change upon performing UI updates (i.e. toggling a checkbox). - * We fixed an issue where no error message is shown when an update of a Marketplace module fails. (Ticket 183507) * We fixed an issue where a pluggable widget with a [`widgets`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a datasource and an [`image`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) * We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). -### Limitations - ### Deprecations * We are deprecating the 'Import Web Service or XML Schema' wizard that is accessible in the Domain Model editor when you click the 'Import web service/XML file...' button. This functionality will be removed in Mendix 10.6. @@ -116,9 +88,6 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S - A 'Threshold' decision method is changed from 'Percentage' to 'Absolute number' or vice versa. - The 'Percentage' or 'Amount' value for 'Threshold' decision method is lowered. -[//]: # (Document fixes in this release for known issues in earlier release notes.) - - ## 10.0.0 General Availability {#1000} **Release date: June 27th, 2023** From be4648d00425dde29d58e76a7a46e3073b6db091 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 13:13:57 +0200 Subject: [PATCH 038/232] Remove duplicate --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 20484bada81..8daa3529da2 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -17,7 +17,9 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### Improvements +* You can now set input parameters as return variables via the context menu. Big thanks to Marius van der Knaap for this idea. * We added "Preferences" to the App Selector and extended "Work Environment” tab in Preferences with “Studio Pro Theme”. When it is set to “Auto” we automatically detect color preferences set in an operating system and use appropriate theme for Studio Pro. You can now find “Rendering” preferences in the "Work Environment” tab. +* We made Design Mode the default editor for pages for new users. This does not affect existing installations. The setting can be changed in 'Preferences' > 'Work environment' > 'Default Page Editor' * We have updated the style for the Context Menu. * We added an ability to select the text in the read-only Dropdown controls. * We styled "Select Module Role" dialog to use different colors for modules. @@ -25,7 +27,6 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We added tooltips to the 'branch name', 'commit message' and 'on disk' columns in the branchline pane. * We have reduced the number of cases in the client where a data source would be reloaded even if its container was being hidden by conditional visibility at the same time. (Ticket 126149) * We modernized "New Document" dialog to support dark mode. -* We made Design Mode the default editor for pages for new users. This does not affect existing installations. The setting can be changed in 'Preferences' > 'Work environment' > 'Default Page Editor' * We added 'Majority' and 'Threshold' decision methods to workflow multi-user task. * We reduced the number of default panes in the default layout of Studio Pro. * We added Portfolio button in the App Switcher menu. @@ -35,12 +36,10 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * Added a new log node called IDResolution, which will provide more details about certain actions being executed on the runtime. * We removed the limitation that stopped you from automatically creating Import and Export mappings from Message Definitions with more than 100 attributes. * Data sources for list view, data grid and template grid can now select an entity path from any surrounding data widget. This also allows them to be used in snippets with multiple parameters. -* You can now set input parameters as return variables via the context menu. Big thanks to Marius van der Knaap for this idea. * We aligned horizontal indentation of the text in the column headers and cells in the data grid and tree controls. ### Fixes -* We fixed a runtime error if a microflow was no longer being used in an app after doing a hot-reload in Studio Pro. * We fixed an issue when a nanoflow retrieves a non-persistable entity over association and this entity has an event handler. (Ticket 183879) * We fixed a memory leak that would occur when opening pages. This would cause issues after opening thousands of pages. (Ticket 172126) * We fixed an issue when the Commit Message field was not focused upon opening the Commit dialog. From 9201342a25589ff4d540bba56f81622ad92a1c79 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 13:20:33 +0200 Subject: [PATCH 039/232] Remove duplicate --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 8daa3529da2..0f960e7c62f 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -53,7 +53,8 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We fixed an issue where the nanoflow debugger would not stay paused after 30 seconds. * We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) * We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) -* We fixed an issue where the `originURI` cookie could not be read when using the default `index.html` (ticket 181106). + + * We have updated the Building Block image requirement to PNG image that has dimensions of 432x192 pixels and downscale it when the image is too large to fit into Toolbox. * We fixed CVE-2023-32314. * We fixed an issue with getting the device name as the phone's factory name in Mobile apps. (Ticket 183392) From e65e657d991d96a535c8e729485ed51771130792 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 13:27:05 +0200 Subject: [PATCH 040/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 116 +++++++++--------- 1 file changed, 57 insertions(+), 59 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 0f960e7c62f..e8173bdd686 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -53,15 +53,13 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We fixed an issue where the nanoflow debugger would not stay paused after 30 seconds. * We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) * We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) - - * We have updated the Building Block image requirement to PNG image that has dimensions of 432x192 pixels and downscale it when the image is too large to fit into Toolbox. * We fixed CVE-2023-32314. * We fixed an issue with getting the device name as the phone's factory name in Mobile apps. (Ticket 183392) * We fixed possible race conditions between microflow actions on the same workflow instance. * We fixed the issue when Documentation pane does not show the documentation corresponding to the selected element in certain conditions (Ticket 185876). * We fixed the functionality of the 'Collapse All' button in the tree control: It should collapse all nodes in the tree, even when there is only a single root node in the tree. -* We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516) +* We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516)s * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width would change upon performing UI updates (i.e. toggling a checkbox). * We fixed an issue where no error message is shown when an update of a Marketplace module fails. (Ticket 183507) @@ -164,6 +162,62 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We introduced the new Mendix Runtime setting `StrictChangeBehaviour`. This setting is enabled by default. When this setting is enabled, trying to set an invalid value for an enum or a value for a calculated attribute will throw an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. * We added a private market option to the list of available target markets for Studio Pro. +### Deprecations {#deprecations} + +* All SVN support has been removed. For more information, see [How to Migrate to Git](/developerportal/collaborate/migrate-to-git/). +* For published OData services, publishing OData version 3 is deprecated and will be removed in a future release. Use OData version 4 instead. +* We deprecated deploying directly to Cloud Foundry from Studio Pro. The functionality will be removed in Mendix 11. +* We removed deprecated methods from the Mendix Runtime API and the M2EE API. +* We deprecated the `Counters`, `Gauges`, `Sets`, and `Timers` interfaces from the Mendix Runtime API. These will be removed in Mendix 11. +* We removed the deprecated `com.mendix.core.UseMimeDecoderForBase64` Mendix Runtime setting. Base64 decoding is now always strict, as specified by RFC 4648. +* We removed the deprecated `rollbackTransAction()` method from the public `IContext` interface. Use `rollbackTransaction` instead. +* We increased the default BCrypt cost factor from 10 to 12. A BCrypt cost factor below 12 is deprecated and will be forbidden in a future release. Use a BCrypt cost factor of at least 12. + +### Breaking Changes {#breaking-changes} + +#### Various Breaking Changes + +* For published OData Services, Studio Pro now gives a consistency error when the exposed name of an attribute or association is the same as the exposed name of its entity, because that is not valid according to the OData standard. +* The validation of exposed names in published OData services now follows the OData standard more closely, with 128 characters being the maximum length for OData version 4 services. +* We upgraded the SQL Server JDBC driver to version 12.2.0. Since version 10, the driver uses TLS encryption by default. You can turn off encryption by setting `DatabaseUseSsl` to `false` or by setting `encrypt=false` in `DatabaseJdbcUrl`. +* We removed the deprecated reporting category widgets. Any reporting category widget in an existing app now triggers a consistency error. +* We removed the deprecated direct function calls from the Pluggable Widget API for [linked property values](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-list-values/#linked-values). +* In OQL, using a path with an association in the `ON` clause of an `OUTER JOIN` is no longer allowed. +* In OQL, comparing an attribute to a collection parameter can only be done with the `IN` or `=` operators (as in, `Attribute IN $param`). +* In OQL, clauses like `Attribute = $RangeParameter`, `Attribute > RANGEBEGIN($RangeParameter)`, and `Attribute < RANGEEND($RangeParameter)` with an infinite range (from `null` to `null`) used to be ignored. Now, they are treated as `true`. This makes a difference when the clause has `OR` with another clause. Similarly, `Attribute < RANGEBEGIN($RangeParameter)` with a range starting with `null` or `Attribute > RANGEEND($RangeParameter)` with a range ending with `null` are no longer ignored, but treated as `false`. +* Duplicate column names in an OQL query are no longer allowed. +* Mendix no longer supports responding with custom reason phrases. This has the following effects: + * We removed `com.mendix.m2ee.api.IMxRuntimeResponse.setStatus(int, String)` from the Runtime API. + * Published REST services no longer allow for returning a custom reason phrase. When an operation microflow sets the `ReasonPhrase` attribute of the `System.HttpResponse` parameter, that value is now ignored. +* Legacy scheduled events (meaning, those that are non-repeating or have a start time) are no longer supported. Mendix Runtime will fail to start if legacy scheduled events exist. +* In Mendix [9.0](/releasenotes/studio-pro/9.0/), we removed support for Mendix Runtime uniqueness validation in preference of database uniqueness validation. There was still a custom setting to use the old behavior. This setting has now been removed. +* We are more strict in the URL formats we accept at the Mendix Runtime server. We no longer allow empty path segments (meaning, `//`, as in `http://your.app//`), ambiguous path segments (`http://your.app/%2e%2e/path`), or UTF-16 encoding (`http://your.app/path%u2192`). +* We upgraded `com.sun.xml.ws.jaxws-ri` from `2.3.6` to `4.0.1`. As a result, the `SOAPFaultException` that may be thrown by consumed web services is now in the `jakarta.xml.ws` namespace. +* We removed the deprecated metric types `statsd` and `logger`. Mendix now only supports Micrometer metrics. Correspondingly, the only valid value for the `com.mendix.metrics.Type` Mendix Runtime setting is `micrometer`. We also removed the following legacy StatsD runtime settings: `com.mendix.metrics.Host`, `com.mendix.metrics.Port`, `com.mendix.metrics.Items`, and `com.mendix.metrics.FlushTime`. You can use the `Metrics.Registries` Mendix Runtime setting to configure a StatsD registry instead. +* To make it possible for a multi-user task to have multiple assignees, we renamed the `WorkflowUserTask_Assignee` association to `WorkflowUserTask_Assignees`, and this is a reference set from now on. +* We removed the request metric `mx.runtime.stats.handler.requests.[name]`, where `name` is the request handler name. This metric was replaced with the metric `mx.runtime.stats.handler_requests`, with the request handler name added as a tag. +* The `parseDateTime\[UTC\]` microflow functions now use [strict parsing](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/DateFormat.html#setLenient(boolean)) by default. To revert to lenient parsing, set the `com.mendix.core.LenientDateTimeParsing` custom Mendix Runtime setting to `true`. (Ticket 169612) +* It is no longer possible to call `clear()` on the list returned by the `IDataTable.getRows()` API function. The list returned by `subList()` is no longer modifiable. +* Instances of `IDataTable`, `IDataTableSchema`, and `IDataColumnSchame` no longer provide equality. As of now, `equals()` and `hashCode()` are based on object identity. +* An XPath constraint of the form `[$objectVariable/BooleanAttribute]` (where the microflow variable is not set) used to be ignored. Now, it is treated as `[false()]`. +* We changed the MIME type returned for *.js* files from the legacy `application/javascript` to `text/javascript`. +* We removed the deprecated error constants from `AdminException` and `IMxRuntime`. +* We removed the deprecated `IActionRegistrator#bundleComponentLoaded` method. +* We no longer support using DB2 as the database for applications. + +#### Generated Code Changes {#generated-code-changes} + +* The public constructors of generated constant and microflow proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. +* Entity and list of entity parameters in Java actions are now initialized in the constructor, and the accompanying `__[FieldName]` field is generated as deprecated. To get access to the `IMendixObject` variant, call the `getMendixObject()` method on the field (or items in the list in case of a list). +* The `initialize(IContext, IMendixIdentifier)`, and `getGUID()`methods on generated entity proxies are no longer generated. +* We introduced the Mendix Runtime setting `ObjectManagement.StrictChangeBehavior` (formerly known as `StrictChangeBehaviour`), which is enabled by default. When enabled, trying to set an invalid value for an enumeration or a value for a calculated attribute throws an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. We plan to remove this setting in Mendix version 11, after which, an exception will be raised when setting an invalid value. +* We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. +* The public constructors of generated `Constant` and `Microflow` proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. +* The fields in Java actions are now generated as final fields. +* The `Entity` and `List of Entity` parameters in Java actions are now initialized in the constructor, and the accompanying `__[FieldName]` field will be generated as deprecated. To get access to the `IMendixObject` variant, call the `getMendixObject()` method on the field (or items in the list, in case of a list). +* The `initialize(IContext, IMendixIdentifier)` and `getGUID()` methods on generated entity proxies are no longer generated. +* We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. + ## 10.0.0 Betas {{% alert color="warning" %}} @@ -230,59 +284,3 @@ The Beta program for 10.0 has ended, which means that the Beta versions of Studi * We fixed the issue where the `DATEDIFF` OQL function in Oracle threw an exception when calculating a difference in seconds. * The return type of the `round()` function with the second parameter now always returns a Decimal, even if the precision is 0. * The `ceil()`, `floor()`, and `round()` functions with a single argument now throw an exception if the result cannot be represented as an Integer/Long (for example, due to overflow). - -### Deprecations {#deprecations} - -* All SVN support has been removed. For more information, see [How to Migrate to Git](/developerportal/collaborate/migrate-to-git/). -* For published OData services, publishing OData version 3 is deprecated and will be removed in a future release. Use OData version 4 instead. -* We deprecated deploying directly to Cloud Foundry from Studio Pro. The functionality will be removed in Mendix 11. -* We removed deprecated methods from the Mendix Runtime API and the M2EE API. -* We deprecated the `Counters`, `Gauges`, `Sets`, and `Timers` interfaces from the Mendix Runtime API. These will be removed in Mendix 11. -* We removed the deprecated `com.mendix.core.UseMimeDecoderForBase64` Mendix Runtime setting. Base64 decoding is now always strict, as specified by RFC 4648. -* We removed the deprecated `rollbackTransAction()` method from the public `IContext` interface. Use `rollbackTransaction` instead. -* We increased the default BCrypt cost factor from 10 to 12. A BCrypt cost factor below 12 is deprecated and will be forbidden in a future release. Use a BCrypt cost factor of at least 12. - -### Breaking Changes {#breaking-changes} - -### Various Breaking Changes - -* For published OData Services, Studio Pro now gives a consistency error when the exposed name of an attribute or association is the same as the exposed name of its entity, because that is not valid according to the OData standard. -* The validation of exposed names in published OData services now follows the OData standard more closely, with 128 characters being the maximum length for OData version 4 services. -* We upgraded the SQL Server JDBC driver to version 12.2.0. Since version 10, the driver uses TLS encryption by default. You can turn off encryption by setting `DatabaseUseSsl` to `false` or by setting `encrypt=false` in `DatabaseJdbcUrl`. -* We removed the deprecated reporting category widgets. Any reporting category widget in an existing app now triggers a consistency error. -* We removed the deprecated direct function calls from the Pluggable Widget API for [linked property values](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-list-values/#linked-values). -* In OQL, using a path with an association in the `ON` clause of an `OUTER JOIN` is no longer allowed. -* In OQL, comparing an attribute to a collection parameter can only be done with the `IN` or `=` operators (as in, `Attribute IN $param`). -* In OQL, clauses like `Attribute = $RangeParameter`, `Attribute > RANGEBEGIN($RangeParameter)`, and `Attribute < RANGEEND($RangeParameter)` with an infinite range (from `null` to `null`) used to be ignored. Now, they are treated as `true`. This makes a difference when the clause has `OR` with another clause. Similarly, `Attribute < RANGEBEGIN($RangeParameter)` with a range starting with `null` or `Attribute > RANGEEND($RangeParameter)` with a range ending with `null` are no longer ignored, but treated as `false`. -* Duplicate column names in an OQL query are no longer allowed. -* Mendix no longer supports responding with custom reason phrases. This has the following effects: - * We removed `com.mendix.m2ee.api.IMxRuntimeResponse.setStatus(int, String)` from the Runtime API. - * Published REST services no longer allow for returning a custom reason phrase. When an operation microflow sets the `ReasonPhrase` attribute of the `System.HttpResponse` parameter, that value is now ignored. -* Legacy scheduled events (meaning, those that are non-repeating or have a start time) are no longer supported. Mendix Runtime will fail to start if legacy scheduled events exist. -* In Mendix [9.0](/releasenotes/studio-pro/9.0/), we removed support for Mendix Runtime uniqueness validation in preference of database uniqueness validation. There was still a custom setting to use the old behavior. This setting has now been removed. -* We are more strict in the URL formats we accept at the Mendix Runtime server. We no longer allow empty path segments (meaning, `//`, as in `http://your.app//`), ambiguous path segments (`http://your.app/%2e%2e/path`), or UTF-16 encoding (`http://your.app/path%u2192`). -* We upgraded `com.sun.xml.ws.jaxws-ri` from `2.3.6` to `4.0.1`. As a result, the `SOAPFaultException` that may be thrown by consumed web services is now in the `jakarta.xml.ws` namespace. -* We removed the deprecated metric types `statsd` and `logger`. Mendix now only supports Micrometer metrics. Correspondingly, the only valid value for the `com.mendix.metrics.Type` Mendix Runtime setting is `micrometer`. We also removed the following legacy StatsD runtime settings: `com.mendix.metrics.Host`, `com.mendix.metrics.Port`, `com.mendix.metrics.Items`, and `com.mendix.metrics.FlushTime`. You can use the `Metrics.Registries` Mendix Runtime setting to configure a StatsD registry instead. -* To make it possible for a multi-user task to have multiple assignees, we renamed the `WorkflowUserTask_Assignee` association to `WorkflowUserTask_Assignees`, and this is a reference set from now on. -* We removed the request metric `mx.runtime.stats.handler.requests.[name]`, where `name` is the request handler name. This metric was replaced with the metric `mx.runtime.stats.handler_requests`, with the request handler name added as a tag. -* The `parseDateTime\[UTC\]` microflow functions now use [strict parsing](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/DateFormat.html#setLenient(boolean)) by default. To revert to lenient parsing, set the `com.mendix.core.LenientDateTimeParsing` custom Mendix Runtime setting to `true`. (Ticket 169612) -* It is no longer possible to call `clear()` on the list returned by the `IDataTable.getRows()` API function. The list returned by `subList()` is no longer modifiable. -* Instances of `IDataTable`, `IDataTableSchema`, and `IDataColumnSchame` no longer provide equality. As of now, `equals()` and `hashCode()` are based on object identity. -* An XPath constraint of the form `[$objectVariable/BooleanAttribute]` (where the microflow variable is not set) used to be ignored. Now, it is treated as `[false()]`. -* We changed the MIME type returned for *.js* files from the legacy `application/javascript` to `text/javascript`. -* We removed the deprecated error constants from `AdminException` and `IMxRuntime`. -* We removed the deprecated `IActionRegistrator#bundleComponentLoaded` method. -* We no longer support using DB2 as the database for applications. - -#### Generated Code Changes {#generated-code-changes} - -* The public constructors of generated constant and microflow proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. -* Entity and list of entity parameters in Java actions are now initialized in the constructor, and the accompanying `__[FieldName]` field is generated as deprecated. To get access to the `IMendixObject` variant, call the `getMendixObject()` method on the field (or items in the list in case of a list). -* The `initialize(IContext, IMendixIdentifier)`, and `getGUID()`methods on generated entity proxies are no longer generated. -* We introduced the Mendix Runtime setting `ObjectManagement.StrictChangeBehavior` (formerly known as `StrictChangeBehaviour`), which is enabled by default. When enabled, trying to set an invalid value for an enumeration or a value for a calculated attribute throws an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. We plan to remove this setting in Mendix version 11, after which, an exception will be raised when setting an invalid value. -* We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. -* The public constructors of generated `Constant` and `Microflow` proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. -* The fields in Java actions are now generated as final fields. -* The `Entity` and `List of Entity` parameters in Java actions are now initialized in the constructor, and the accompanying `__[FieldName]` field will be generated as deprecated. To get access to the `IMendixObject` variant, call the `getMendixObject()` method on the field (or items in the list, in case of a list). -* The `initialize(IContext, IMendixIdentifier)` and `getGUID()` methods on generated entity proxies are no longer generated. -* We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. From 361544a01abe01c43bd092351cbe01c5812050c0 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Wed, 14 Jun 2023 13:38:03 +0200 Subject: [PATCH 041/232] MXConnect: Integration landing page updates --- content/en/docs/refguide/modeling/integration/_index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/refguide/modeling/integration/_index.md b/content/en/docs/refguide/modeling/integration/_index.md index e1e59a6e6a6..77b36f681a9 100644 --- a/content/en/docs/refguide/modeling/integration/_index.md +++ b/content/en/docs/refguide/modeling/integration/_index.md @@ -13,4 +13,6 @@ tags: ["studio pro"] Integration with other applications (other Mendix apps, or applications built with different technology) can be done using REST, OData, SOAP/Web Services, or Business Events. Mendix can also import and export data from XML and JSON, and supports integrating with machine learning models. +Data integration capabilities in Studio pro is part of Mendix Connect. + ## Documents in This Category From 51e38456f1010ae952a15189c79b065f2695a148 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 14:46:36 +0200 Subject: [PATCH 042/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index e8173bdd686..00424f74255 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -13,17 +13,23 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### New Features -* We added support for `Auto-assign` and `Who Can Open` options for multi-user tasks. [**TW**] +* We added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. [**TW**] ### Improvements -* You can now set input parameters as return variables via the context menu. Big thanks to Marius van der Knaap for this idea. -* We added "Preferences" to the App Selector and extended "Work Environment” tab in Preferences with “Studio Pro Theme”. When it is set to “Auto” we automatically detect color preferences set in an operating system and use appropriate theme for Studio Pro. You can now find “Rendering” preferences in the "Work Environment” tab. -* We made Design Mode the default editor for pages for new users. This does not affect existing installations. The setting can be changed in 'Preferences' > 'Work environment' > 'Default Page Editor' -* We have updated the style for the Context Menu. -* We added an ability to select the text in the read-only Dropdown controls. -* We styled "Select Module Role" dialog to use different colors for modules. -* We have made adding attributes even easier. When adding a new attribute, we would previously suggest the types based on the most common patterns we see in applications. We're now going one step further and also take the attributes and their types that are already in your project into consideration. We will also now automatically try to set the enumeration document if the enumeration type is suggested. +* You can now set input parameters as return variables via the context menu. + + {{% alert color="info" %}}This is based on an idea from Marius van der Knaap. Thank you, Marius!{{% /alert %}} + +* We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. [**TW**] +* We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. [**TW - CHECK PR**] +* We made **Design mode** the default editor for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. +* We have updated the style for the context menus. +* We added the ability to select the text in read-only drop-down controls. +* We styled the **Select Module Role** dialog box to use different colors for modules. [**TW - SCREENSHOTS**] +* We have made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested the types based on the most common patterns Mendix sees in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. + + * We added tooltips to the 'branch name', 'commit message' and 'on disk' columns in the branchline pane. * We have reduced the number of cases in the client where a data source would be reloaded even if its container was being hidden by conditional visibility at the same time. (Ticket 126149) * We modernized "New Document" dialog to support dark mode. From 1be077e16668b9c4f9f8d02ef19a9356085cef6e Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 15:13:30 +0200 Subject: [PATCH 043/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 00424f74255..cd5a9446744 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -21,21 +21,21 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S {{% alert color="info" %}}This is based on an idea from Marius van der Knaap. Thank you, Marius!{{% /alert %}} +* We have reduced the number of cases in the client where a data source is reloaded, even if its container is hidden by conditional visibility at the same time. (Ticket 126149) * We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. [**TW**] +* We added a **Portfolio** button in the **Open App** menu. [**TW**] * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. [**TW - CHECK PR**] * We made **Design mode** the default editor for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. * We have updated the style for the context menus. * We added the ability to select the text in read-only drop-down controls. * We styled the **Select Module Role** dialog box to use different colors for modules. [**TW - SCREENSHOTS**] * We have made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested the types based on the most common patterns Mendix sees in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. +* We added tooltips to the **Branch name**, **Commit message**, and **On disk** columns in the **Branch Line** pane. [**TW - WHERE, DOC UPDATE?**] +* We modernized the **New Document** dialog box to support dark mode. +* We added **Majority** and **Threshold** decision methods to workflow multi-user task. [**TW**] +* We reduced the number of default panes in the default layout of Studio Pro. -* We added tooltips to the 'branch name', 'commit message' and 'on disk' columns in the branchline pane. -* We have reduced the number of cases in the client where a data source would be reloaded even if its container was being hidden by conditional visibility at the same time. (Ticket 126149) -* We modernized "New Document" dialog to support dark mode. -* We added 'Majority' and 'Threshold' decision methods to workflow multi-user task. -* We reduced the number of default panes in the default layout of Studio Pro. -* We added Portfolio button in the App Switcher menu. * We changed the caption of an empty enumeration value from '(empty)' to 'Empty' in the decision outcomes grid for workflows. * We now set the variable name of an Aggregate List action to 'Count' by default. * We have included support to dark-mode in the message definitions editor. From edbde01b3ce24a42f138ba84ca6f9198ff8999a2 Mon Sep 17 00:00:00 2001 From: ConnorLand Date: Wed, 14 Jun 2023 15:25:25 +0200 Subject: [PATCH 044/232] change language to reflect new design mode default --- .../refguide/modeling/menus/edit-menu/preferences-dialog.md | 2 +- content/en/docs/refguide/modeling/pages/page/_index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md index 0964a887f9d..d86818087b0 100644 --- a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md +++ b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md @@ -159,7 +159,7 @@ Hardware and driver issues may cause performance problems when running Studio Pr ### 7.1 Default Page Editor {#default-page-editor} -This option sets the default page editor mode that your page opens in: **Structure mode** or **Design mode**. For more information on page editor modes, see the [Page Editor Modes](/refguide/page/#page-editor-modes) section in *Page*. +This option sets the default page editor mode that your page opens in: **Design mode** (the default) or **Structure mode** . For more information on page editor modes, see the [Page Editor Modes](/refguide/page/#page-editor-modes) section in *Page*. ## 8 New Features Tab {#new-features} diff --git a/content/en/docs/refguide/modeling/pages/page/_index.md b/content/en/docs/refguide/modeling/pages/page/_index.md index 116db6a3946..40f946e040e 100644 --- a/content/en/docs/refguide/modeling/pages/page/_index.md +++ b/content/en/docs/refguide/modeling/pages/page/_index.md @@ -136,7 +136,7 @@ You can toggle between the modes by clicking the **Design mode** or **Structure {{< figure src="/attachments/refguide/modeling/pages/page/design-mode.png" alt="Design mode and Structure mode buttons" width="250" >}} -By default, pages open in **Structure mode**, but if you prefer **Design mode**, this can be set as default in the **Preferences** (**Edit > Preferences > Work Environment > Default Page Editor**). For more information, see the [Default Page Editor](/refguide/preferences-dialog/#default-page-editor) section in *Preferences*. +By default, pages open in **Design mode**, but if you prefer **Structure mode**, this can be set as default in the **Preferences** (**Edit > Preferences > Work Environment > Default Page Editor**). For more information, see the [Default Page Editor](/refguide/preferences-dialog/#default-page-editor) section in *Preferences*. Both modes allow you to edit your page by doing the following: From 37959064eb14634f65475a08384d137f3a0a0f02 Mon Sep 17 00:00:00 2001 From: ConnorLand <47385345+ConnorLand@users.noreply.github.com> Date: Wed, 14 Jun 2023 15:28:43 +0200 Subject: [PATCH 045/232] Add design mode link --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index cd5a9446744..6a882b0ff6a 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -25,7 +25,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. [**TW**] * We added a **Portfolio** button in the **Open App** menu. [**TW**] * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. [**TW - CHECK PR**] -* We made **Design mode** the default editor for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. +* We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. * We have updated the style for the context menus. * We added the ability to select the text in read-only drop-down controls. * We styled the **Select Module Role** dialog box to use different colors for modules. [**TW - SCREENSHOTS**] From aab89e5c19ccccca2a88ad26ef73e8370d51ff27 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 15:30:04 +0200 Subject: [PATCH 046/232] Review RNReview RN --- .../en/docs/releasenotes/studio-pro/10/10.0.md | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index cd5a9446744..916fff9c084 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -31,18 +31,15 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We styled the **Select Module Role** dialog box to use different colors for modules. [**TW - SCREENSHOTS**] * We have made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested the types based on the most common patterns Mendix sees in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. * We added tooltips to the **Branch name**, **Commit message**, and **On disk** columns in the **Branch Line** pane. [**TW - WHERE, DOC UPDATE?**] -* We modernized the **New Document** dialog box to support dark mode. +* We modernized the **New Document** dialog box and the message definitions editor to support dark mode. * We added **Majority** and **Threshold** decision methods to workflow multi-user task. [**TW**] * We reduced the number of default panes in the default layout of Studio Pro. - - -* We changed the caption of an empty enumeration value from '(empty)' to 'Empty' in the decision outcomes grid for workflows. -* We now set the variable name of an Aggregate List action to 'Count' by default. -* We have included support to dark-mode in the message definitions editor. -* Added a new log node called IDResolution, which will provide more details about certain actions being executed on the runtime. -* We removed the limitation that stopped you from automatically creating Import and Export mappings from Message Definitions with more than 100 attributes. -* Data sources for list view, data grid and template grid can now select an entity path from any surrounding data widget. This also allows them to be used in snippets with multiple parameters. -* We aligned horizontal indentation of the text in the column headers and cells in the data grid and tree controls. +* We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. +* We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. +* We added a new log node called **IDResolution**, which provides more details about certain actions being executed on the Mendix Runtime. +* We removed the limitation that stopped you from automatically creating import and export mappings from message definitions with more than 100 attributes. +* Data sources for the list view, data grid, and template grid can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. +* We aligned the horizontal indentation of the text in the column headers and cells in the data grid and tree controls. ### Fixes From 0bc148a988d1327c97c5082823869c4d54f1456a Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 15:52:33 +0200 Subject: [PATCH 047/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index d1747ea1e97..257da42a426 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -43,8 +43,18 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### Fixes -* We fixed an issue when a nanoflow retrieves a non-persistable entity over association and this entity has an event handler. (Ticket 183879) +* We fixed CVE-2023-32314. +* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). +* We fixed an issue where a pluggable widget with a [`widgets`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a datasource and an [`image`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) * We fixed a memory leak that would occur when opening pages. This would cause issues after opening thousands of pages. (Ticket 172126) +* We fixed an issue where published REST and OData services would create a session for a web service user when the custom authentication microflow would return such a user. This is unsupported (web service users should only be used for published web (SOAP) services), and would lead to these sessions not being cleaned up properly. This scenario now results in an 500 Internal Server Error (Ticket 182579, 187479). +* We fixed an issue with getting the device name as the phone's factory name in Mobile apps. (Ticket 183392) +* We fixed an issue where no error message is shown when an update of a Marketplace module fails. (Ticket 183507) +* We fixed an issue when a nanoflow retrieves a non-persistable entity over association and this entity has an event handler. (Ticket 183879) +* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) +* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) +* We fixed the issue when Documentation pane does not show the documentation corresponding to the selected element in certain conditions (Ticket 185876). +* We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516) * We fixed an issue when the Commit Message field was not focused upon opening the Commit dialog. * We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. * We fixed the styling issue of the disabled Checkbox controls. @@ -52,22 +62,13 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We fixed icons styling in the Auto-complete popup of the Text Editor control in the dark theme. * We fixed an issue with rendering of the custom application icons in the App Selector dialog. * We fixed an issue with the border color of the selected cells in the Grid control. -* We fixed an issue where published REST and OData services would create a session for a web service user when the custom authentication microflow would return such a user. This is unsupported (web service users should only be used for published web (SOAP) services), and would lead to these sessions not being cleaned up properly. This scenario now results in an 500 Internal Server Error (Ticket 182579, 187479). * We fixed an issue where the nanoflow debugger would not stay paused after 30 seconds. -* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) -* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) * We have updated the Building Block image requirement to PNG image that has dimensions of 432x192 pixels and downscale it when the image is too large to fit into Toolbox. -* We fixed CVE-2023-32314. -* We fixed an issue with getting the device name as the phone's factory name in Mobile apps. (Ticket 183392) * We fixed possible race conditions between microflow actions on the same workflow instance. -* We fixed the issue when Documentation pane does not show the documentation corresponding to the selected element in certain conditions (Ticket 185876). * We fixed the functionality of the 'Collapse All' button in the tree control: It should collapse all nodes in the tree, even when there is only a single root node in the tree. -* We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516)s * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width would change upon performing UI updates (i.e. toggling a checkbox). -* We fixed an issue where no error message is shown when an update of a Marketplace module fails. (Ticket 183507) -* We fixed an issue where a pluggable widget with a [`widgets`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a datasource and an [`image`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) -* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). + ### Deprecations From 96882b135f20e740f8de3ad7fdcf754bc90406fd Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 16:01:27 +0200 Subject: [PATCH 048/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 257da42a426..3aa463e476b 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -43,15 +43,17 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### Fixes -* We fixed CVE-2023-32314. -* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). +* We fixed [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314). [**ALSO 9.24.3**] +* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). [**NEW**] + + * We fixed an issue where a pluggable widget with a [`widgets`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a datasource and an [`image`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) * We fixed a memory leak that would occur when opening pages. This would cause issues after opening thousands of pages. (Ticket 172126) * We fixed an issue where published REST and OData services would create a session for a web service user when the custom authentication microflow would return such a user. This is unsupported (web service users should only be used for published web (SOAP) services), and would lead to these sessions not being cleaned up properly. This scenario now results in an 500 Internal Server Error (Ticket 182579, 187479). -* We fixed an issue with getting the device name as the phone's factory name in Mobile apps. (Ticket 183392) +* ------We fixed an issue with getting the device name as the phone's factory name in mobile apps. (Ticket 183392) * We fixed an issue where no error message is shown when an update of a Marketplace module fails. (Ticket 183507) -* We fixed an issue when a nanoflow retrieves a non-persistable entity over association and this entity has an event handler. (Ticket 183879) -* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) +* ------We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) +* ------We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) * We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) * We fixed the issue when Documentation pane does not show the documentation corresponding to the selected element in certain conditions (Ticket 185876). * We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516) From c38cfd4dfa21704a9d0d6471f40ebb4770a12a5d Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 16:07:32 +0200 Subject: [PATCH 049/232] Review RN --- .../en/docs/releasenotes/studio-pro/10/10.0.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 3aa463e476b..e6b6bf31d49 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -45,15 +45,15 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We fixed [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314). [**ALSO 9.24.3**] * We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). [**NEW**] +* We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) +* We fixed a memory leak that occurred when opening pages. This caused issues after opening thousands of pages. (Ticket 172126) +* We fixed an issue where published REST and OData services created a session for a web service user when the custom authentication microflow returned such a user. This is unsupported (web service users should only be used for published web [SOAP] services), so it led to these sessions not being cleaned up properly. This scenario now results in a "500 Internal Server Error." (Tickets 182579, 187479) +* We fixed an issue with getting the device name as the phone's factory name in mobile apps. (Ticket 183392) +* We fixed an issue where no error message was shown when an update of a Mendix Marketplace module failed. (Ticket 183507) +* We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) +* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) -* We fixed an issue where a pluggable widget with a [`widgets`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a datasource and an [`image`](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) -* We fixed a memory leak that would occur when opening pages. This would cause issues after opening thousands of pages. (Ticket 172126) -* We fixed an issue where published REST and OData services would create a session for a web service user when the custom authentication microflow would return such a user. This is unsupported (web service users should only be used for published web (SOAP) services), and would lead to these sessions not being cleaned up properly. This scenario now results in an 500 Internal Server Error (Ticket 182579, 187479). -* ------We fixed an issue with getting the device name as the phone's factory name in mobile apps. (Ticket 183392) -* We fixed an issue where no error message is shown when an update of a Marketplace module fails. (Ticket 183507) -* ------We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) -* ------We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) * We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) * We fixed the issue when Documentation pane does not show the documentation corresponding to the selected element in certain conditions (Ticket 185876). * We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516) @@ -71,7 +71,6 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width would change upon performing UI updates (i.e. toggling a checkbox). - ### Deprecations * We are deprecating the 'Import Web Service or XML Schema' wizard that is accessible in the Domain Model editor when you click the 'Import web service/XML file...' button. This functionality will be removed in Mendix 10.6. From 6f89cd78ee9c824073a2a115123f5e139fa32608 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 14 Jun 2023 16:12:25 +0200 Subject: [PATCH 050/232] Review RN --- .../en/docs/releasenotes/studio-pro/10/10.0.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index e6b6bf31d49..2537ce95575 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -52,16 +52,18 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We fixed an issue where no error message was shown when an update of a Mendix Marketplace module failed. (Ticket 183507) * We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) * We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) +* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and another authentication type. When the custom authentication does not authenticate the user but a subsequent authentication type does, the operation was previously unable to read the body of the request. (Ticket 185790) +* We fixed the issue where the **Documentation** pane did not show the documentation corresponding to the selected element in certain conditions. (Ticket 185876) +* We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) +* We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. +* We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. +* We fixed a styling issue in disabled check box controls. +* We fixed an issue where the text editor control did not have a border in dark mode. + + +* We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. -* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and an other type of authentication. When the custom authentication does not authenticate the user but a subsequent type of authentication does, the operation would previously be unable to read the body of the request. (Ticket 185790) -* We fixed the issue when Documentation pane does not show the documentation corresponding to the selected element in certain conditions (Ticket 185876). -* We fixed an issue where compilation of Java actions fails when annotation processors are used. (Ticket 186516) -* We fixed an issue when the Commit Message field was not focused upon opening the Commit dialog. -* We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. -* We fixed the styling issue of the disabled Checkbox controls. -* We fixed an issue where the Text Editor control does not have a border in the dark theme. -* We fixed icons styling in the Auto-complete popup of the Text Editor control in the dark theme. * We fixed an issue with rendering of the custom application icons in the App Selector dialog. * We fixed an issue with the border color of the selected cells in the Grid control. * We fixed an issue where the nanoflow debugger would not stay paused after 30 seconds. From 347586cc4219957bc866819c50bfa87c7d7cea7a Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Wed, 14 Jun 2023 17:32:23 +0200 Subject: [PATCH 051/232] Doc update for setting an input parameter as the return value --- .../microflows-and-nanoflows/parameter.md | 20 +++++++++++++----- .../set-parameter-as-return-value.png | Bin 0 -> 24190 bytes 2 files changed, 15 insertions(+), 5 deletions(-) create mode 100644 static/attachments/refguide/modeling/application-logic/microflows-and-nanoflows/parameter/set-parameter-as-return-value.png diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md index 794eca598f3..2a83d099555 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md @@ -10,18 +10,28 @@ tags: ["studio pro", "parameter", "microflow"] A parameter is a special kind of variable that is used as input for the microflow. When a microflow is triggered, the parameters are filled with the current values. -If you want to use an object of the *Customer* entity in a microflow, use the parameter. In the picture below, the object name is *EnclosingCustomer* and is shown in black. The data type is object, therefore the entity name is shown underneath the object name in blue. +If you want to use an object of the **Customer** entity in a microflow, use the parameter. In the image below, the object name is **EnclosingCustomer** and is shown in black. The data type is object. Therefore, the entity name is shown underneath the object name in color blue. {{< figure src="/attachments/refguide/modeling/application-logic/microflows-and-nanoflows/parameter/parameter.png" >}} -## 2 Output Properties +## 2 Common Section -### 2.1 Name +The **Documentation** property can be used to store developer documentation. This can be used to explain to other developers about the parameter. End-users will never see this documentation. -**Name** refers to the value of the parameter. +## 3 Output Section -### 2.2 Data Type +### 3.1 Data Type The data type of a parameter defines the type of the value that it expects. See [Data Types](/refguide/data-types/) for the possible data types. Default: *Object* + +### 3.2 Name + +**Name** refers to the value of the parameter. + +## 4 Setting an Input Parameter as the Return Value + +To set a parameter as the [return value](/refguide/end-event/#return-value) of your microflow, right-click the parameter and select **Set $Parameter as return value**: + +{{< figure src="/attachments/refguide/modeling/application-logic/microflows-and-nanoflows/parameter/set-parameter-as-return-value.png" width="300px" >}} \ No newline at end of file diff --git a/static/attachments/refguide/modeling/application-logic/microflows-and-nanoflows/parameter/set-parameter-as-return-value.png b/static/attachments/refguide/modeling/application-logic/microflows-and-nanoflows/parameter/set-parameter-as-return-value.png new file mode 100644 index 0000000000000000000000000000000000000000..60576c7dd7ab276545ff16137ed78272d1007b7b GIT binary patch literal 24190 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 DpUNl) literal 0 HcmV?d00001 From 0d40d23a9f3e3a7cf34b9d089f7f8d5069937404 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 15 Jun 2023 08:45:45 +0200 Subject: [PATCH 052/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 20 ++++++++----------- 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 2537ce95575..339e27a75ac 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -23,7 +23,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We have reduced the number of cases in the client where a data source is reloaded, even if its container is hidden by conditional visibility at the same time. (Ticket 126149) * We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. [**TW**] -* We added a **Portfolio** button in the **Open App** menu. [**TW**] +* We added a **Portfolio** button in the **Open App** dialog box menu. [**TW**] * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. [**TW - CHECK PR**] * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. * We have updated the style for the context menus. @@ -59,19 +59,15 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. * We fixed a styling issue in disabled check box controls. * We fixed an issue where the text editor control did not have a border in dark mode. - - * We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. - - -* We fixed an issue with rendering of the custom application icons in the App Selector dialog. -* We fixed an issue with the border color of the selected cells in the Grid control. -* We fixed an issue where the nanoflow debugger would not stay paused after 30 seconds. -* We have updated the Building Block image requirement to PNG image that has dimensions of 432x192 pixels and downscale it when the image is too large to fit into Toolbox. -* We fixed possible race conditions between microflow actions on the same workflow instance. -* We fixed the functionality of the 'Collapse All' button in the tree control: It should collapse all nodes in the tree, even when there is only a single root node in the tree. +* We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. +* We fixed an issue with the border color of selected cells in the grid control. +* We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. +* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. +* We fixed the possible race conditions between microflow actions on the same workflow instance. +* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. * We fixed the tooltips that were not displayed for disabled toolbar buttons. -* We fixed an issue where the navigation editor's width would change upon performing UI updates (i.e. toggling a checkbox). +* We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). ### Deprecations From 9a033d7870034a8b6eb509d34de090b4b4074956 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 15 Jun 2023 09:04:54 +0200 Subject: [PATCH 053/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 339e27a75ac..ff5173eed82 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -3,6 +3,7 @@ title: "10.0" url: /releasenotes/studio-pro/10.0/ description: "The release notes for Mendix Studio Pro version 10.0 (including all patches) with details on new features, bug fixes, and known issues." weight: 100 +# Deprecation note: Import Web Service or XML Schema wizard will be removed in 10.6. --- {{% alert color="info" %}} @@ -71,11 +72,11 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### Deprecations -* We are deprecating the 'Import Web Service or XML Schema' wizard that is accessible in the Domain Model editor when you click the 'Import web service/XML file...' button. This functionality will be removed in Mendix 10.6. +* We are deprecating the **Import Web Service or XML Schema** wizard that is accessible in the domain model editor when you click **Import web service/XML file**. This functionality will be removed in Mendix 10.6. [**TW - ADD NOTE TO DOC?**] ### Breaking Changes -* When committing multiple objects, the order that Before Commit and After Commit events are executed may have changed. Note that this order was already documented to be unspecified and should not be relied on. +* When committing multiple objects, the order that **Before Commit** and **After Commit** events are executed may have changed. This order was already documented to be unspecified, and it should not be relied on. [**TW - WHERE DOCUMENTED?**] * We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling which relies on direct child (`>`), sibling (`+`) or `nth-child` selectors. * We updated the icons in Atlas and widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. From 27614ff72526422dfba64f912b54a2014a38b71a Mon Sep 17 00:00:00 2001 From: Yiyun Liao <110980413+Yiyun333@users.noreply.github.com> Date: Thu, 15 Jun 2023 10:04:22 +0200 Subject: [PATCH 054/232] Update parameter.md --- .../application-logic/microflows-and-nanoflows/parameter.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md index 2a83d099555..b78f41d4386 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md @@ -32,6 +32,6 @@ Default: *Object* ## 4 Setting an Input Parameter as the Return Value -To set a parameter as the [return value](/refguide/end-event/#return-value) of your microflow, right-click the parameter and select **Set $Parameter as return value**: +To set a parameter as the [return value](/refguide/end-event/#return-value) of your microflow, right-click the parameter and select **Set $Parameter as return value** via the context menu: -{{< figure src="/attachments/refguide/modeling/application-logic/microflows-and-nanoflows/parameter/set-parameter-as-return-value.png" width="300px" >}} \ No newline at end of file +{{< figure src="/attachments/refguide/modeling/application-logic/microflows-and-nanoflows/parameter/set-parameter-as-return-value.png" width="300px" >}} From d71cabe763786ac2b611c656447e96c513078206 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 15 Jun 2023 10:05:56 +0200 Subject: [PATCH 055/232] Review RN --- .../en/docs/releasenotes/studio-pro/10/10.0.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index ff5173eed82..1bbfcec29f8 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -77,18 +77,16 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### Breaking Changes * When committing multiple objects, the order that **Before Commit** and **After Commit** events are executed may have changed. This order was already documented to be unspecified, and it should not be relied on. [**TW - WHERE DOCUMENTED?**] -* We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling which relies on direct child (`>`), sibling (`+`) or `nth-child` selectors. -* We updated the icons in Atlas and widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. +* We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling that relies on direct child (`>`), sibling (`+`), or `nth-child` selectors. +* We updated the icons in Atlas and the widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. ### Known Issues -* The algorithm for detecting conflicts during the migration of workflows with active multi-user tasks is currently too rigid and will not allow a conflicted user task to be continued in certain cases. - In a (near) future release we will provide better migration scenarios, where workflows with conflicted multi-user tasks can be continued. - The situations in which a multi-user task is marked as 'Incompatible' without continue are: - - The type of decision method (i.e. 'Consensus', 'Majority', 'Threshold', 'Veto') is changed. - - A 'Majority' decision method is changed from 'More than half' to 'Most voted'. - - A 'Threshold' decision method is changed from 'Percentage' to 'Absolute number' or vice versa. - - The 'Percentage' or 'Amount' value for 'Threshold' decision method is lowered. +* The algorithm for detecting conflicts during the migration of workflows with active multi-user tasks is currently too rigid and will not allow a conflicted user task to be continued in certain cases. In a future release, we will provide better migration scenarios where workflows with conflicted multi-user tasks can be continued. These are the situations in which a multi-user task is marked as **Incompatible** without continue: + * The type of decision method (as in, **Consensus**, **Majority**, **Threshold**, or **Veto**) is changed + * A **Majority** decision method is changed from **More than half** to **Most voted** + * A **Threshold** decision method is changed from **Percentage** to **Absolute number** or vice versa + * The **Percentage** or **Amount** value for the **Threshold** decision method is lowered ## 10.0.0 General Availability {#1000} From 15a2645ebccf24b9838f9458277528d300bd0f04 Mon Sep 17 00:00:00 2001 From: Yiyun Liao <110980413+Yiyun333@users.noreply.github.com> Date: Thu, 15 Jun 2023 10:22:32 +0200 Subject: [PATCH 056/232] Language and style review --- .../activities/workflow-activities/show-task-page.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md index 24dc39bee4d..2a284fed6d8 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md @@ -44,8 +44,8 @@ The user task object of the System.WorkflowUserTask entity available from the mi ### 3.2 Auto-Assign With this option, you can automatically assign the user task to the user who has opened the task page. -For a single user task, the auto assignment will happen only if the user task has not been assigned to anyone yet. -For a multi-user task, the auto assignment will happen irrespective of whether the task was assigned before (to another user) or not. +For a [single user task](/refguide/user-task/), the auto assignment happens only if the user task has not been assigned to anyone yet. +For a [multi-user task](/refguide/multi-user-task/), the auto assignment happens irrespective of whether the task was assigned before (to another user) or not. This option is enabled by default. @@ -62,7 +62,9 @@ This option specifies who is able to open the user task page when a user has alr | Assigned user *(default)* | Only the user who is currently assigned to the task is able to open the user task page. | | Users with access | All users who have access to the user task can open the user task page.
Note that this option means that multiple users can open the page at the same time. Only the assigned user is able to complete the task, however, other users can make changes to the page, and the data will not be saved unless you add a **Save** button. This button saves data, but does not complete the task.
Take into account that when two users have the task page open simultaneously, data from the user who saves changes the last is stored and this will overwrite data from the other user. | -**Note:** For a multi-user task, this setting has no effect if the `Auto-Assign` is enabled. +{{% alert color="info" %}} +For a multi-user task, this setting has no effect if the **Auto-Assign** is enabled. +{{% /alert %}} ## 4 Common Section {#common} From 0b3530f524a764f7cd737b8d6e68c63ce20bea5f Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 15 Jun 2023 10:23:58 +0200 Subject: [PATCH 057/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 1bbfcec29f8..14adad9d9d4 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -4,6 +4,7 @@ url: /releasenotes/studio-pro/10.0/ description: "The release notes for Mendix Studio Pro version 10.0 (including all patches) with details on new features, bug fixes, and known issues." weight: 100 # Deprecation note: Import Web Service or XML Schema wizard will be removed in 10.6. +# KI: WOR-1563 --- {{% alert color="info" %}} From 1712ced5e254d8e9b927756e5d766ebc0a0537ba Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Thu, 15 Jun 2023 10:28:26 +0200 Subject: [PATCH 058/232] Add space between paragraphs --- .../activities/workflow-activities/show-task-page.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md index 2a284fed6d8..42e19a2fbc6 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md @@ -44,7 +44,9 @@ The user task object of the System.WorkflowUserTask entity available from the mi ### 3.2 Auto-Assign With this option, you can automatically assign the user task to the user who has opened the task page. + For a [single user task](/refguide/user-task/), the auto assignment happens only if the user task has not been assigned to anyone yet. + For a [multi-user task](/refguide/multi-user-task/), the auto assignment happens irrespective of whether the task was assigned before (to another user) or not. This option is enabled by default. From ee6025596ab42a854c53ea65002a1fb7bdb89825 Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Thu, 15 Jun 2023 10:33:01 +0200 Subject: [PATCH 059/232] Add anchor --- .../activities/workflow-activities/show-task-page.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md index 42e19a2fbc6..7749fabfcef 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/show-task-page.md @@ -41,7 +41,7 @@ You can also open the dialog box by double-clicking the activity in the microflo The user task object of the System.WorkflowUserTask entity available from the microflow parameters. -### 3.2 Auto-Assign +### 3.2 Auto-Assign {#auto-assign} With this option, you can automatically assign the user task to the user who has opened the task page. @@ -65,7 +65,7 @@ This option specifies who is able to open the user task page when a user has alr | Users with access | All users who have access to the user task can open the user task page.
Note that this option means that multiple users can open the page at the same time. Only the assigned user is able to complete the task, however, other users can make changes to the page, and the data will not be saved unless you add a **Save** button. This button saves data, but does not complete the task.
Take into account that when two users have the task page open simultaneously, data from the user who saves changes the last is stored and this will overwrite data from the other user. | {{% alert color="info" %}} -For a multi-user task, this setting has no effect if the **Auto-Assign** is enabled. +For a multi-user task, this setting has no effect if the [Auto-Assign](#auto-assign) is enabled. {{% /alert %}} ## 4 Common Section {#common} From 8af7985ab7cf95ba38f8dd79f4bdcfff54bbb045 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 15 Jun 2023 11:51:49 +0200 Subject: [PATCH 060/232] Consolidate RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 135 ++++++++---------- 1 file changed, 61 insertions(+), 74 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 14adad9d9d4..2002a94b29d 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -11,19 +11,36 @@ weight: 100 For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro 9 to 10](/refguide/upgrading-from-9-to-10/). {{% /alert %}} -# GA NOTES +## 10.0.0 General Availability {#1000} + +**Release date: June 27th, 2023** + +{{% button color="info" href="https://marketplace.mendix.com/link/studiopro/10.0.0" text="Go to Marketplace" title="Download version 10.0.0 from the Marketplace" %}} ### New Features -* We added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. [**TW**] +* [Page URLs](/refguide/page-properties/#url) got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. +* We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions that you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list that is currently being processed. +* We added a new workflow activity and a related microflow activity. You can use the [Wait for notification](/refguide/wait-for-notification/) workflow activity to suspend a workflow's execution, and you can use the [Notify workflow](/refguide/notify-workflow/) microflow activity to send a notification to resume the workflow that has been suspended. +* We have added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. [**TW - LAST LINE**] +* We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects that are cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. +* We renamed MxAssist Performance Bot to Best Practice Bot. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice . ### Improvements +#### Performance Improvements + +* We improved the performance of editing published web service operations. Operations that expose large data structures no longer cause Studio Pro to become irresponsive upon opening the editing dialog box. (Tickets 179950, 183039) + +#### Other Improvements + * You can now set input parameters as return variables via the context menu. {{% alert color="info" %}}This is based on an idea from Marius van der Knaap. Thank you, Marius!{{% /alert %}} * We have reduced the number of cases in the client where a data source is reloaded, even if its container is hidden by conditional visibility at the same time. (Ticket 126149) +* We improved the export size of the model. It should now be about half the size in a lot of cases. (Ticket 174121) +* We improved data encryption in mobile apps. (Ticket 181442) * We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. [**TW**] * We added a **Portfolio** button in the **Open App** dialog box menu. [**TW**] * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. [**TW - CHECK PR**] @@ -42,78 +59,6 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We removed the limitation that stopped you from automatically creating import and export mappings from message definitions with more than 100 attributes. * Data sources for the list view, data grid, and template grid can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. * We aligned the horizontal indentation of the text in the column headers and cells in the data grid and tree controls. - -### Fixes - -* We fixed [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314). [**ALSO 9.24.3**] -* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). [**NEW**] -* We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) -* We fixed a memory leak that occurred when opening pages. This caused issues after opening thousands of pages. (Ticket 172126) -* We fixed an issue where published REST and OData services created a session for a web service user when the custom authentication microflow returned such a user. This is unsupported (web service users should only be used for published web [SOAP] services), so it led to these sessions not being cleaned up properly. This scenario now results in a "500 Internal Server Error." (Tickets 182579, 187479) -* We fixed an issue with getting the device name as the phone's factory name in mobile apps. (Ticket 183392) -* We fixed an issue where no error message was shown when an update of a Mendix Marketplace module failed. (Ticket 183507) -* We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) -* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) -* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and another authentication type. When the custom authentication does not authenticate the user but a subsequent authentication type does, the operation was previously unable to read the body of the request. (Ticket 185790) -* We fixed the issue where the **Documentation** pane did not show the documentation corresponding to the selected element in certain conditions. (Ticket 185876) -* We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) -* We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. -* We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. -* We fixed a styling issue in disabled check box controls. -* We fixed an issue where the text editor control did not have a border in dark mode. -* We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. -* We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. -* We fixed an issue with the border color of selected cells in the grid control. -* We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. -* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. -* We fixed the possible race conditions between microflow actions on the same workflow instance. -* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. -* We fixed the tooltips that were not displayed for disabled toolbar buttons. -* We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). - -### Deprecations - -* We are deprecating the **Import Web Service or XML Schema** wizard that is accessible in the domain model editor when you click **Import web service/XML file**. This functionality will be removed in Mendix 10.6. [**TW - ADD NOTE TO DOC?**] - -### Breaking Changes - -* When committing multiple objects, the order that **Before Commit** and **After Commit** events are executed may have changed. This order was already documented to be unspecified, and it should not be relied on. [**TW - WHERE DOCUMENTED?**] -* We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling that relies on direct child (`>`), sibling (`+`), or `nth-child` selectors. -* We updated the icons in Atlas and the widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. - -### Known Issues - -* The algorithm for detecting conflicts during the migration of workflows with active multi-user tasks is currently too rigid and will not allow a conflicted user task to be continued in certain cases. In a future release, we will provide better migration scenarios where workflows with conflicted multi-user tasks can be continued. These are the situations in which a multi-user task is marked as **Incompatible** without continue: - * The type of decision method (as in, **Consensus**, **Majority**, **Threshold**, or **Veto**) is changed - * A **Majority** decision method is changed from **More than half** to **Most voted** - * A **Threshold** decision method is changed from **Percentage** to **Absolute number** or vice versa - * The **Percentage** or **Amount** value for the **Threshold** decision method is lowered - -## 10.0.0 General Availability {#1000} - -**Release date: June 27th, 2023** - -{{% button color="info" href="https://marketplace.mendix.com/link/studiopro/10.0.0" text="Go to Marketplace" title="Download version 10.0.0 from the Marketplace" %}} - -### New Features - -* [Page URLs](/refguide/page-properties/#url) got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. -* We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions that you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list that is currently being processed. -* We added a new workflow activity and a related microflow activity. You can use the [Wait for notification](/refguide/wait-for-notification/) workflow activity to suspend a workflow's execution, and you can use the [Notify workflow](/refguide/notify-workflow/) microflow activity to send a notification to resume the workflow that has been suspended. -* We have added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. -* We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects that are cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. -* We renamed MxAssist Performance Bot to Best Practice Bot. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice . - -### Improvements - -#### Performance Improvements - -* We improved the performance of editing published web service operations. Operations that expose large data structures no longer cause Studio Pro to become irresponsive upon opening the editing dialog box. (Tickets 179950, 183039) - -#### Other Improvements - -* We improved the export size of the model. It should now be about half the size in a lot of cases. (Ticket 174121) -* We improved data encryption in mobile apps. (Ticket 181442) * **New merge algorithm with fine-grained conflict resolution** is now the default and only option for conflict resolution in Studio Pro. Therefore, it was removed from the **New Features** tab of the **Preferences** dialog box. * Cloning another branch of a Git app in which you already have a branch on disk now first makes a local copy and then downloads the latest version from the server (instead of completely downloading the branch from the server). As Git always downloads the entire history (whereas SVN only downloads the latest revision), making this local copy significantly speeds up working with branches for Git apps. * The new **Properties** pane that was introduced in [9.23](/releasenotes/studio-pro/9.23/#new-features) is now the default and only option in Studio Pro. It gives you a good overview of what is going on while making it significantly easier to make changes. @@ -167,6 +112,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### Deprecations {#deprecations} +* We are deprecating the **Import Web Service or XML Schema** wizard that is accessible in the domain model editor when you click **Import web service/XML file**. This functionality will be removed in Mendix 10.6. [**TW - ADD NOTE TO DOC?**] * All SVN support has been removed. For more information, see [How to Migrate to Git](/developerportal/collaborate/migrate-to-git/). * For published OData services, publishing OData version 3 is deprecated and will be removed in a future release. Use OData version 4 instead. * We deprecated deploying directly to Cloud Foundry from Studio Pro. The functionality will be removed in Mendix 11. @@ -180,6 +126,9 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S #### Various Breaking Changes +* When committing multiple objects, the order that **Before Commit** and **After Commit** events are executed may have changed. This order was already documented to be unspecified, and it should not be relied on. [**TW - WHERE DOCUMENTED?**] +* We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling that relies on direct child (`>`), sibling (`+`), or `nth-child` selectors. +* We updated the icons in Atlas and the widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. * For published OData Services, Studio Pro now gives a consistency error when the exposed name of an attribute or association is the same as the exposed name of its entity, because that is not valid according to the OData standard. * The validation of exposed names in published OData services now follows the OData standard more closely, with 128 characters being the maximum length for OData version 4 services. * We upgraded the SQL Server JDBC driver to version 12.2.0. Since version 10, the driver uses TLS encryption by default. You can turn off encryption by setting `DatabaseUseSsl` to `false` or by setting `encrypt=false` in `DatabaseJdbcUrl`. @@ -221,12 +170,50 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * The `initialize(IContext, IMendixIdentifier)` and `getGUID()` methods on generated entity proxies are no longer generated. * We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. +### Known Issues + +* The algorithm for detecting conflicts during the migration of workflows with active multi-user tasks is currently too rigid and will not allow a conflicted user task to be continued in certain cases. In a future release, we will provide better migration scenarios where workflows with conflicted multi-user tasks can be continued. These are the situations in which a multi-user task is marked as **Incompatible** without continue: + * The type of decision method (as in, **Consensus**, **Majority**, **Threshold**, or **Veto**) is changed + * A **Majority** decision method is changed from **More than half** to **Most voted** + * A **Threshold** decision method is changed from **Percentage** to **Absolute number** or vice versa + * The **Percentage** or **Amount** value for the **Threshold** decision method is lowered + ## 10.0.0 Betas {{% alert color="warning" %}} The Beta program for 10.0 has ended, which means that the Beta versions of Studio Pro are no longer available for download. In addition, apps created in the Beta versions that are converted to 10.0.0 General Availability can no longer be opened in the Beta versions of Studio Pro. {{% /alert %}} +### GA Fixes + +* We fixed [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314). [**ALSO 9.24.3**] +* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). [**NEW**] +* We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) +* We fixed a memory leak that occurred when opening pages. This caused issues after opening thousands of pages. (Ticket 172126) +* We fixed an issue where published REST and OData services created a session for a web service user when the custom authentication microflow returned such a user. This is unsupported (web service users should only be used for published web [SOAP] services), so it led to these sessions not being cleaned up properly. This scenario now results in a "500 Internal Server Error." (Tickets 182579, 187479) +* We fixed an issue with getting the device name as the phone's factory name in mobile apps. (Ticket 183392) +* We fixed an issue where no error message was shown when an update of a Mendix Marketplace module failed. (Ticket 183507) +* We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) +* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) +* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and another authentication type. When the custom authentication does not authenticate the user but a subsequent authentication type does, the operation was previously unable to read the body of the request. (Ticket 185790) +* We fixed the issue where the **Documentation** pane did not show the documentation corresponding to the selected element in certain conditions. (Ticket 185876) +* We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) +* We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. +* We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. +* We fixed a styling issue in disabled check box controls. +* We fixed an issue where the text editor control did not have a border in dark mode. +* We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. +* We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. +* We fixed an issue with the border color of selected cells in the grid control. +* We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. +* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. +* We fixed the possible race conditions between microflow actions on the same workflow instance. +* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. +* We fixed the tooltips that were not displayed for disabled toolbar buttons. +* We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). + +### Beta Fixes + * We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. * We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). * We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) by upgrading the vm2 library. The CVE does not pose any apparent risk for Mendix customers. From 0844735da79f070af382b5457bd9a0a6c5521e91 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 15 Jun 2023 12:17:58 +0200 Subject: [PATCH 061/232] Consolidate fixes --- .../docs/releasenotes/studio-pro/10/10.0.md | 59 +++++++++---------- 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 2002a94b29d..208cb0ece06 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -184,45 +184,18 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S The Beta program for 10.0 has ended, which means that the Beta versions of Studio Pro are no longer available for download. In addition, apps created in the Beta versions that are converted to 10.0.0 General Availability can no longer be opened in the Beta versions of Studio Pro. {{% /alert %}} -### GA Fixes - -* We fixed [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314). [**ALSO 9.24.3**] * We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). [**NEW**] -* We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) -* We fixed a memory leak that occurred when opening pages. This caused issues after opening thousands of pages. (Ticket 172126) -* We fixed an issue where published REST and OData services created a session for a web service user when the custom authentication microflow returned such a user. This is unsupported (web service users should only be used for published web [SOAP] services), so it led to these sessions not being cleaned up properly. This scenario now results in a "500 Internal Server Error." (Tickets 182579, 187479) -* We fixed an issue with getting the device name as the phone's factory name in mobile apps. (Ticket 183392) -* We fixed an issue where no error message was shown when an update of a Mendix Marketplace module failed. (Ticket 183507) -* We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) -* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) -* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and another authentication type. When the custom authentication does not authenticate the user but a subsequent authentication type does, the operation was previously unable to read the body of the request. (Ticket 185790) -* We fixed the issue where the **Documentation** pane did not show the documentation corresponding to the selected element in certain conditions. (Ticket 185876) -* We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) -* We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. -* We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. -* We fixed a styling issue in disabled check box controls. -* We fixed an issue where the text editor control did not have a border in dark mode. -* We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. -* We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. -* We fixed an issue with the border color of selected cells in the grid control. -* We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. -* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. -* We fixed the possible race conditions between microflow actions on the same workflow instance. -* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. -* We fixed the tooltips that were not displayed for disabled toolbar buttons. -* We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). - -### Beta Fixes - -* We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. -* We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). * We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) by upgrading the vm2 library. The CVE does not pose any apparent risk for Mendix customers. +* We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). +* We fixed [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314). [**ALSO 9.24.3**] +* We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) * The `weekday-from-dateTime` XPath function and the `DATEPART(WEEKDAY, ...)` OQL function now return the documented values of (1 = Sunday, 7 = Saturday) for all supported databases. (Ticket 130641) * We fixed an issue where the debugger caused an error and disconnected after 30 seconds of inactivity. (Tickets 151937, 169696, 175161, 175542, 178553, 180332) * We fixed an issue where it was possible to add a path after a non-object variable, which led to issues in a running app. (Tickets 171893, 172495) +* We fixed a memory leak that occurred when opening pages. This caused issues after opening thousands of pages. (Ticket 172126) +* When a database transaction for a microflow does not perform any database operation for 10 minutes, it is automatically aborted. When the same microflow then does another database operation, this previously silently started a new database transaction, losing the earlier updates. Now, the microflow results in an error. (Ticket 174408) * We fixed an issue where non-localized date/time attributes in XPath constraints were not handled correctly, producing incorrect queries. (Ticket 176850) * We adjusted consumed OData services to use query options in the request body when the given service is configured to do so and pagination with `@nextLink` takes place. (Ticket 176976) -* When a database transaction for a microflow does not perform any database operation for 10 minutes, it is automatically aborted. When the same microflow then does another database operation, this previously silently started a new database transaction, losing the earlier updates. Now, the microflow results in an error. (Ticket 174408) * We fixed an issue in the domain model editor where an element outside the boundaries of the current view was not scrolled to when there was navigation via [Go to options](/refguide/go-to-option/). (Ticket 178829) * We fixed an issue where an object validation was removed incorrectly. (Ticket 180011) * We fixed an issue where the language-sensitive parts on pages were not fully updated when you changed the language via the [Language Selector](/appstore/widgets/language-selector/) widget. (Tickets 180130, 180670, 180824, 181274, 181713, 181974) @@ -236,14 +209,36 @@ The Beta program for 10.0 has ended, which means that the Beta versions of Studi * We fixed a crash that occurred during login that blocked some users from logging in. (Tickets 181864, 183014) * We fixed an issue where an application with excluded *.jar* files failed to deploy. (Ticket 181931) * We fixed an issue that caused the attribute of conditional visibility settings or the text template parameters of a button inside a reference set selector to not be selectable, which resulted in a consistency error. (Ticket 182203) +* We fixed an issue where published REST and OData services created a session for a web service user when the custom authentication microflow returned such a user. This is unsupported (web service users should only be used for published web [SOAP] services), so it led to these sessions not being cleaned up properly. This scenario now results in a "500 Internal Server Error." (Tickets 182579, 187479) * We fixed an issue in the OpenAPI contract of published REST services where operations that used an import mapping had a schema defined for the other parameters but not the type. (Ticket 182615) * We fixed an issue in the OpenAPI contract of published OData services where `GET` operations no longer specified the `$expand` parameter when there were no associations to expand. (Ticket 182627) * We fixed an issue where importing a file from a version below [9.24](/releasenotes/studio-pro/9.24/) caused many errors to appear. (Ticket 182860) * We fixed an issue where attribute widgets (for example, a text box) did not trigger a consistency error if the selected attribute had an invalid source, causing an error when deploying the app. (Ticket 183379) +* We fixed an issue with getting the device name as the phone's factory name in mobile apps. (Ticket 183392) * We fixed an issue where deployment failed on the Linux operating system when module names contained upper-case letters. (Tickets 183841, 183872) * We fixed the colors of the term `empty` and the symbol `-` in the XPath constraint editor. (Ticket 183998). +* We fixed an issue where no error message was shown when an update of a Mendix Marketplace module failed. (Ticket 183507) +* We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) +* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) * We fixed an issue in published REST services where publishing two REST services on the same location caused a consistency error. (This was not a problem where services did not publish resources and operations that resulted in the same operation URL.) (Tickets 185087, 185423) +* We fixed an issue in published REST services and published OData services that use a combination of custom authentication and another authentication type. When the custom authentication does not authenticate the user but a subsequent authentication type does, the operation was previously unable to read the body of the request. (Ticket 185790) +* We fixed the issue where the **Documentation** pane did not show the documentation corresponding to the selected element in certain conditions. (Ticket 185876) +* We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) * We fixed an issue where clicking **Load more** on a list view triggered the on-click event on a surrounding widget. (Ticket 365439) +* We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. +* We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. +* We fixed a styling issue in disabled check box controls. +* We fixed an issue where the text editor control did not have a border in dark mode. +* We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. +* We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. +* We fixed an issue with the border color of selected cells in the grid control. +* We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. +* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. +* We fixed the possible race conditions between microflow actions on the same workflow instance. +* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. +* We fixed the tooltips that were not displayed for disabled toolbar buttons. +* We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). +* We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. * We fixed an issue in the OpenAPI contract of published OData services where the server URL contained a double slash. * We fixed an issue where the workflow user task on-state-change microflow did not run again when the state changed to failed due to a prior execution error in the same event-handling microflow. * We fixed an issue where the outcome selector dialog box for a completed workflow user task activity showed duplicate outcomes. From dfca5828273bd19652c28a343ee870f6c0f1215e Mon Sep 17 00:00:00 2001 From: Yiyun Liao <110980413+Yiyun333@users.noreply.github.com> Date: Thu, 15 Jun 2023 13:17:04 +0200 Subject: [PATCH 062/232] fix name description --- .../application-logic/microflows-and-nanoflows/parameter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md index b78f41d4386..43eb4370ebe 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/parameter.md @@ -28,7 +28,7 @@ Default: *Object* ### 3.2 Name -**Name** refers to the value of the parameter. +**Name** refers to the name of the parameter. ## 4 Setting an Input Parameter as the Return Value From 0345d71c344549b72c57f003a7c0d70eb69b51e4 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 15 Jun 2023 13:42:25 +0200 Subject: [PATCH 063/232] Consolidate via Slack --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 208cb0ece06..d98b133f324 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -184,10 +184,9 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S The Beta program for 10.0 has ended, which means that the Beta versions of Studio Pro are no longer available for download. In addition, apps created in the Beta versions that are converted to 10.0.0 General Availability can no longer be opened in the Beta versions of Studio Pro. {{% /alert %}} +* We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) and [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314) by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. * We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). [**NEW**] -* We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) by upgrading the vm2 library. The CVE does not pose any apparent risk for Mendix customers. * We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). -* We fixed [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314). [**ALSO 9.24.3**] * We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) * The `weekday-from-dateTime` XPath function and the `DATEPART(WEEKDAY, ...)` OQL function now return the documented values of (1 = Sunday, 7 = Saturday) for all supported databases. (Ticket 130641) * We fixed an issue where the debugger caused an error and disconnected after 30 seconds of inactivity. (Tickets 151937, 169696, 175161, 175542, 178553, 180332) From a6f9bf358f0c495dc2ca6cd94d102bada8df6fdf Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 15 Jun 2023 13:47:47 +0200 Subject: [PATCH 064/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index d98b133f324..3f82b410e68 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -184,8 +184,8 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S The Beta program for 10.0 has ended, which means that the Beta versions of Studio Pro are no longer available for download. In addition, apps created in the Beta versions that are converted to 10.0.0 General Availability can no longer be opened in the Beta versions of Studio Pro. {{% /alert %}} -* We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) and [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314) by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. * We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). [**NEW**] +* We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) and [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314) by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. * We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). * We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) * The `weekday-from-dateTime` XPath function and the `DATEPART(WEEKDAY, ...)` OQL function now return the documented values of (1 = Sunday, 7 = Saturday) for all supported databases. (Ticket 130641) From df3268bbd6703ad2124838b5e65f344be1787a81 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 16 Jun 2023 10:04:52 +0200 Subject: [PATCH 065/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 3f82b410e68..af043d6e9eb 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -43,7 +43,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We improved data encryption in mobile apps. (Ticket 181442) * We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. [**TW**] * We added a **Portfolio** button in the **Open App** dialog box menu. [**TW**] -* We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. [**TW - CHECK PR**] +* We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. * We have updated the style for the context menus. * We added the ability to select the text in read-only drop-down controls. From b0513d18fd2a384d0eb53a6b6027574ea83a7187 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 16 Jun 2023 12:28:44 +0200 Subject: [PATCH 066/232] Review RN --- .../en/docs/releasenotes/studio-pro/10/10.0.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index af043d6e9eb..2e1f9899362 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -22,7 +22,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * [Page URLs](/refguide/page-properties/#url) got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. * We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions that you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list that is currently being processed. * We added a new workflow activity and a related microflow activity. You can use the [Wait for notification](/refguide/wait-for-notification/) workflow activity to suspend a workflow's execution, and you can use the [Notify workflow](/refguide/notify-workflow/) microflow activity to send a notification to resume the workflow that has been suspended. -* We have added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. [**TW - LAST LINE**] +* We have added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. * We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects that are cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. * We renamed MxAssist Performance Bot to Best Practice Bot. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice . @@ -41,17 +41,17 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We have reduced the number of cases in the client where a data source is reloaded, even if its container is hidden by conditional visibility at the same time. (Ticket 126149) * We improved the export size of the model. It should now be about half the size in a lot of cases. (Ticket 174121) * We improved data encryption in mobile apps. (Ticket 181442) -* We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. [**TW**] -* We added a **Portfolio** button in the **Open App** dialog box menu. [**TW**] +* We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. +* We added a **Portfolio** button in the **Open App** dialog box menu. * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. * We have updated the style for the context menus. * We added the ability to select the text in read-only drop-down controls. -* We styled the **Select Module Role** dialog box to use different colors for modules. [**TW - SCREENSHOTS**] +* We styled the **Select Module Role** dialog box to use different colors for modules. * We have made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested the types based on the most common patterns Mendix sees in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. -* We added tooltips to the **Branch name**, **Commit message**, and **On disk** columns in the **Branch Line** pane. [**TW - WHERE, DOC UPDATE?**] +* We added tooltips to the **Branch name**, **Commit message**, and **On disk** columns in the **Branch Line** pane. * We modernized the **New Document** dialog box and the message definitions editor to support dark mode. -* We added **Majority** and **Threshold** decision methods to workflow multi-user task. [**TW**] +* We added **Majority** and **Threshold** decision methods to workflow multi-user task. * We reduced the number of default panes in the default layout of Studio Pro. * We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. * We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. @@ -112,7 +112,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ### Deprecations {#deprecations} -* We are deprecating the **Import Web Service or XML Schema** wizard that is accessible in the domain model editor when you click **Import web service/XML file**. This functionality will be removed in Mendix 10.6. [**TW - ADD NOTE TO DOC?**] +* We are deprecating the **Import Web Service or XML Schema** wizard that is accessible in the domain model editor when you click **Import web service/XML file**. This functionality will be removed in Mendix 10.6. * All SVN support has been removed. For more information, see [How to Migrate to Git](/developerportal/collaborate/migrate-to-git/). * For published OData services, publishing OData version 3 is deprecated and will be removed in a future release. Use OData version 4 instead. * We deprecated deploying directly to Cloud Foundry from Studio Pro. The functionality will be removed in Mendix 11. @@ -126,7 +126,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S #### Various Breaking Changes -* When committing multiple objects, the order that **Before Commit** and **After Commit** events are executed may have changed. This order was already documented to be unspecified, and it should not be relied on. [**TW - WHERE DOCUMENTED?**] +* When committing multiple objects, the order that **Before Commit** and **After Commit** events are executed may have changed. This order was already documented in [Event Handlers](/refguide/event-handlers/) to be unspecified, and it should not be relied on. * We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling that relies on direct child (`>`), sibling (`+`), or `nth-child` selectors. * We updated the icons in Atlas and the widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. * For published OData Services, Studio Pro now gives a consistency error when the exposed name of an attribute or association is the same as the exposed name of its entity, because that is not valid according to the OData standard. @@ -184,7 +184,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S The Beta program for 10.0 has ended, which means that the Beta versions of Studio Pro are no longer available for download. In addition, apps created in the Beta versions that are converted to 10.0.0 General Availability can no longer be opened in the Beta versions of Studio Pro. {{% /alert %}} -* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). [**NEW**] +* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). * We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) and [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314) by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. * We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). * We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) From 51c4300aa9bf73ac2a2b2d4041ed59b9274b154b Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 16 Jun 2023 16:09:22 +0200 Subject: [PATCH 067/232] Update --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 2e1f9899362..c13896a785b 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -43,13 +43,13 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We improved data encryption in mobile apps. (Ticket 181442) * We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. * We added a **Portfolio** button in the **Open App** dialog box menu. +* We added tooltips to the **Branch Line**, **Message**, and **On Disk** columns in the **Branch Lines** dialog box accessible via **Open App**. * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. * We have updated the style for the context menus. * We added the ability to select the text in read-only drop-down controls. * We styled the **Select Module Role** dialog box to use different colors for modules. * We have made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested the types based on the most common patterns Mendix sees in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. -* We added tooltips to the **Branch name**, **Commit message**, and **On disk** columns in the **Branch Line** pane. * We modernized the **New Document** dialog box and the message definitions editor to support dark mode. * We added **Majority** and **Threshold** decision methods to workflow multi-user task. * We reduced the number of default panes in the default layout of Studio Pro. From ebea90f615b56527bb0816798ac6c40ad82a9fb6 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 19 Jun 2023 09:49:10 +0200 Subject: [PATCH 068/232] Initial commit --- .../consumed-web-services/consume-a-complex-web-service.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/refguide/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md b/content/en/docs/refguide/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md index a7a19731439..fafe559c132 100644 --- a/content/en/docs/refguide/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md +++ b/content/en/docs/refguide/modeling/integration/web-services/consumed-web-services/consume-a-complex-web-service.md @@ -19,6 +19,8 @@ This how-to will teach you how to do the following: * Directly import a web service document into your app * Configure a web service call +{{% alert color="warning" %}}The **Import Web Service** wizard is deprecated and will be removed in Studio Pro 10.6.{{% /alert %}} + ## 2 Importing a Web Service Using the Wizard This section describes the powerful wizard that enables integrating—in just a few clicks—the creation of an imported web service, the related data entities, the XML-mapping, and a microflow to trigger the web service. From 81656e1d5814ac7282ab2ad95f81d21a402c851a Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 19 Jun 2023 16:11:59 +0200 Subject: [PATCH 069/232] First pass --- .../modeling/domain-model/external-entities.md | 6 +++--- .../integration/odata-services/_index.md | 2 +- .../consumed-odata-services/_index.md | 2 +- .../consumed-odata-service.md | 8 ++++---- .../odata-services/wrap-services-odata.md | 4 ++-- .../refguide/modeling/menus/view-menu/_index.md | 2 +- .../modeling/menus/view-menu/data-hub-pane.md | 16 ++++++++-------- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/content/en/docs/refguide/modeling/domain-model/external-entities.md b/content/en/docs/refguide/modeling/domain-model/external-entities.md index c3957b43360..71b3d4c43c9 100644 --- a/content/en/docs/refguide/modeling/domain-model/external-entities.md +++ b/content/en/docs/refguide/modeling/domain-model/external-entities.md @@ -7,7 +7,7 @@ tags: ["domain model", "entity", "entities", "attribute", "external entities", " --- ## 1 Introduction -External entities can be added to the Domain Model through the [Data Hub pane](/refguide/data-hub-pane/). They are displayed as *purple* entity containers in the Domain Model. External entities represent the link to the datasets that are made available through the shared data sources registered in [Mendix Data Hub](/data-hub/). Data sources are collections of entity sets (that are referred to as datasets) are published in OData services. +External entities can be added to the Domain Model through the [Integration pane](/refguide/data-hub-pane/). They are displayed as *purple* entity containers in the Domain Model. External entities represent the link to the datasets that are made available through the shared data sources registered in [Mendix Data Hub](/data-hub/). Data sources are collections of entity sets (that are referred to as datasets) are published in OData services. Datasets are maintained and updated in the source application. You can integrate or consume these datasets through external entities in your app development, and any changes to the data in the originating app is automatically updated in the consuming apps. @@ -79,7 +79,7 @@ This tab displays the general properties of the external entity. The values that The [attributes](/refguide/attributes/) that have been exposed in the OData service for the external entity are listed here. All changes that are made to the attributes and the attribute list are applied to the local instance of the entity. As they are consumed, these changes will not affect the metadata of the consumed service that the entity is exposed in or the attributes of the entity in the originating app. -{{% alert color="info" %}}In the [Data Hub Pane](/refguide/data-hub-pane/#association-attributes) the associations and attributes that are not supported in your Mendix model are shown as non-selectable (gray) and will not be included when you drag them into the domain model or be included in the entity properties. For more information see [Data Hub Pane](/refguide/data-hub-pane/#association-attributes).{{% /alert %}} +{{% alert color="info" %}}In the [Integration pane](/refguide/data-hub-pane/#association-attributes) the associations and attributes that are not supported in your Mendix model are shown as non-selectable (gray) and will not be included when you drag them into the domain model or be included in the entity properties. For more information see [Integration pane](/refguide/data-hub-pane/#association-attributes).{{% /alert %}} The following operations can be done on the displayed attribute list: @@ -171,7 +171,7 @@ For details on the types of authentication methods and how to set them up, see t ### 3.2 Consuming External Entities with Authentication -When an external entity is used in an app module through the Data Hub pane, a [consumed OData service](/refguide/consumed-odata-service/) document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. +When an external entity is used in an app module through the Integration pane, a [consumed OData service](/refguide/consumed-odata-service/) document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. If the service you are consuming requires authentication, you will need to add authentication credentials. Consumers of an OData service in an external entity can contact the owner of the data source to check the required authentication method and credentials. diff --git a/content/en/docs/refguide/modeling/integration/odata-services/_index.md b/content/en/docs/refguide/modeling/integration/odata-services/_index.md index 4c5e99192a8..dafeb3f6d0e 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/_index.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/_index.md @@ -11,7 +11,7 @@ tags: ["odata services"] OData is a set of best practices for building REST APIs that standardizes many aspects of REST APIs. It describes how you should provide filtering, sorting, and pagination on your resources, as well as how you should provide nested data structures. Using OData best practices ensures that your APIs are compatible with tools like Excel and PowerBI out of the box (see [Expose Data to BI Tools Using OData](/howto/integration/exposing-data-to-bi-tools-using-odata/)), and also ensures that API clients can optimize payload size and minimize roundtrips for the best possible usage performance. -Published OData services are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for users deploying to the [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/) and made available in the Studio Pro [Data Hub pane](/refguide/data-hub-pane/). +Published OData services are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for users deploying to the [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/) and made available in the Studio Pro [Integration pane](/refguide/data-hub-pane/). To publish OData services, see: diff --git a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md index d8ef2e3b018..e683066d67d 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md @@ -10,7 +10,7 @@ tags: ["studio pro"] Data can be published from an app for use by other apps through [published OData services](/refguide/published-odata-services/). Consumed OData services can be used to integrate external data sources in apps through [Mendix Data Hub](/data-hub/). -Mendix Data Hub enables integration of available data sources from different sources in an organization into your Mendix apps. OData services that are registered in the [Data Hub Catalog](/data-hub/data-hub-catalog/) expose entities that can be dragged and dropped into your domain model through the [Data Hub pane](/refguide/data-hub-pane/) as external entities. The OData service document that is added to your app provides the information for retrieving the metadata for the service and exposed entities. +Mendix Data Hub enables integration of available data sources from different sources in an organization into your Mendix apps. OData services that are registered in the [Data Hub Catalog](/data-hub/data-hub-catalog/) expose entities that can be dragged and dropped into your domain model through the [Integration pane](/refguide/data-hub-pane/) as external entities. The OData service document that is added to your app provides the information for retrieving the metadata for the service and exposed entities. For further details on the consumed OData service document and updating consumed OData services in your app, see [Consumed OData Service](/refguide/consumed-odata-service/). diff --git a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md index c7c2e85e7e9..610c264eb19 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md @@ -9,7 +9,7 @@ aliases: ## 1 Introduction -When an external entity is used in an app module through the [Data Hub pane](/refguide/data-hub-pane/), a consumed OData service document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. +When an external entity is used in an app module through the [Integration pane](/refguide/data-hub-pane/), a consumed OData service document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. ## 2 Consumed OData Service screen @@ -124,7 +124,7 @@ When downloading the metadata from a URL, the server may request a username and This information is not stored, so if you download the metadata from the same server again, you will have to enter your username and password again. {{% /alert %}} -When you import the metadata, you can add external entities from the consumed OData service in the [Data Hub Pane](/refguide/data-hub-pane/). +When you import the metadata, you can add external entities from the consumed OData service in the [Integration pane](/refguide/data-hub-pane/). ### 3.2 Properties @@ -194,7 +194,7 @@ The **Update** option is available when Studio Pro detects that that the contrac See the [Limitations](/refguide/consumed-odata-services/#consumed-odata-service-limitations) section of *Consumed OData Services* to read about known update limitations. -##### 4.3.1.1 Data Hub Pane +##### 4.3.1.1 Integration pane In the **Data Hub** pane, in search results and in the **Used in your App** section an update arrow indicate if there is a different contract at the Catalog endpoint: @@ -242,5 +242,5 @@ To consume the service deployed to the **Acceptance environment**, follow these ## 5 Read More -* [Data Hub Pane](/refguide/data-hub-pane/) +* [Integration pane](/refguide/data-hub-pane/) * [Consumed OData Services](/refguide/consumed-odata-services/) diff --git a/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md b/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md index 3e9e5ac1996..05c6144c474 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md @@ -34,7 +34,7 @@ OData is a set of best practices for building REST APIs that standardizes many a ### 2.2 Compatibility with Data Hub -Wrapping a service, API, or database in OData ensures compatibility with the [Mendix Data Hub](/data-hub/). Published OData services are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for licensed users on a [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/) and made available in the Studio Pro [Data Hub pane](/refguide/data-hub-pane/). +Wrapping a service, API, or database in OData ensures compatibility with the [Mendix Data Hub](/data-hub/). Published OData services are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for licensed users on a [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/) and made available in the Studio Pro [Integration pane](/refguide/data-hub-pane/). ## 3 Non-Persistable Entities as Published OData Resources {#npe-published-odata} @@ -175,7 +175,7 @@ Set up a connector module that communicates to the Twitter API with OData by fol {{< figure src="/attachments/refguide/modeling/integration/wrap-services-odata/query-followers-microflow.png" alt="Microflow for querying followers." >}} 6. Export the metadata file of the published OData service to be used in the client module. To do so, open the service and go to **Settings**, and click **Export** next to the **Metadata** field. - Since you are working in local development environment and not deploying locally, your published resource will not automatically be available in the Data Hub Catalog or the Data Hub pane. See [Data Hub without the Mendix Cloud](/data-hub/data-hub-without-mendix-cloud/) to understand how to work with Data Hub (external entities and the Catalog) for local deployments. + Since you are working in local development environment and not deploying locally, your published resource will not automatically be available in the Data Hub Catalog or the Integration pane. See [Data Hub without the Mendix Cloud](/data-hub/data-hub-without-mendix-cloud/) to understand how to work with Data Hub (external entities and the Catalog) for local deployments. #### 7.1.3 Building the Client diff --git a/content/en/docs/refguide/modeling/menus/view-menu/_index.md b/content/en/docs/refguide/modeling/menus/view-menu/_index.md index e1063f7d35b..d11574d698e 100644 --- a/content/en/docs/refguide/modeling/menus/view-menu/_index.md +++ b/content/en/docs/refguide/modeling/menus/view-menu/_index.md @@ -71,7 +71,7 @@ The **Console** pane displays the output of the [Mendix Runtime](/refguide/runti ### 3.5 Data Hub {#data-hub} -The [Data Hub pane](/refguide/data-hub-pane/) enables you to browse the [Data Hub Catalog](/data-hub/data-hub-catalog/) and use registered data sources that are available for your organization in your app development. You can add [external entities](/refguide/external-entities/) to your app via this pane and see entities and data sources already consumed in your app. +The [Integration pane](/refguide/data-hub-pane/) enables you to browse the [Data Hub Catalog](/data-hub/data-hub-catalog/) and use registered data sources that are available for your organization in your app development. You can add [external entities](/refguide/external-entities/) to your app via this pane and see entities and data sources already consumed in your app. ### 3.6 Documentation diff --git a/content/en/docs/refguide/modeling/menus/view-menu/data-hub-pane.md b/content/en/docs/refguide/modeling/menus/view-menu/data-hub-pane.md index 764bb19491e..69b71beef29 100644 --- a/content/en/docs/refguide/modeling/menus/view-menu/data-hub-pane.md +++ b/content/en/docs/refguide/modeling/menus/view-menu/data-hub-pane.md @@ -1,9 +1,9 @@ --- -title: "Data Hub Pane" +title: "Integration pane" url: /refguide/data-hub-pane/ weight: 30 -description: "Describes the Data Hub pane in Mendix Studio Pro." -tags: ["studio Pro", "data hub", "data hub pane", "data hub catalog"] +description: "Describes the Integration pane in Mendix Studio Pro." +tags: ["studio Pro", "data hub", "Integration pane", "data hub catalog"] --- @@ -19,7 +19,7 @@ To display the **Data Hub** pane, click **View** > **Data Hub**. In the Data Hub Catalog, registered published services are referred to as *data sources*. Exposed entities will show the **Entity set** name and are called *datasets.* {{% /alert %}} -## 2 Data Hub Pane Overview +## 2 Integration pane Overview The **Data Hub** pane is used to search the Data Hub Catalog for entities that can be dragged into the domain model and used in your app and also display the external entities and the associated services that are consumed in your current model. @@ -64,7 +64,7 @@ By default, the search is performed on assets in the **Production** environment. When the **Show development environments** is checked, all subsequent searches results will also include those in non-production environments. {{% /alert %}} -## 4 Data Hub Pane Information {#viewing} +## 4 Integration pane Information {#viewing} The information that is displayed in the **Data Hub** pane either when you enter a search term or when you open the **Used in your App** section is described in the sections below. @@ -89,7 +89,7 @@ The search results and **User in your App** section show the following informati * **Gray shield icon** shows if the service or entity is validated in the Catalog * **Update icon** is a blue arrow icon that indicates that there is another version of the consumed service available in the Data Hub. Click to update the service that is consumed in the app to the contract that is now available: - {{< figure src="/attachments/refguide/modeling/menus/view-menu/data-hub-pane/update-available.png" alt="Data Hub Pane update" >}} + {{< figure src="/attachments/refguide/modeling/menus/view-menu/data-hub-pane/update-available.png" alt="Integration pane update" >}} {{% alert color="info" %}}If there is an OData service update available, then the entities that are listed are those that are available in that version of the OData service. These entities are grayed-out to indicate that they cannot be dragged into the domain model, as the *current* contract that is consumed in the app does not have these entities. You must update the contract to the version shown in the search results by clicking the **Update** icon. {{% /alert %}} @@ -97,7 +97,7 @@ The search results and **User in your App** section show the following informati * **Information icon** allows you to view further details for the service and a link to go directly to the [Service Details](/catalog/manage/search/#search-details) screen in the Data Hub Catalog: - {{< figure src="/attachments/refguide/modeling/menus/view-menu/data-hub-pane/data-hub-pane-info.png" alt="Data Hub Pane Information" >}} + {{< figure src="/attachments/refguide/modeling/menus/view-menu/data-hub-pane/data-hub-pane-info.png" alt="Integration pane Information" >}} ### 4.2 Entities, Attributes, and Associations {#association-attributes} @@ -105,7 +105,7 @@ Entities, attributes, and associations are displayed under the service name. For any service in the list, you can click **Show details** to see the full list of the exposed entities, associations, and attributes for that service. -{{< figure src="/attachments/refguide/modeling/menus/view-menu/data-hub-pane/expand-service-list.png" alt="Data Hub Pane Information" >}} +{{< figure src="/attachments/refguide/modeling/menus/view-menu/data-hub-pane/expand-service-list.png" alt="Integration pane Information" >}} {{% alert color="info" %}}The associations and attributes that are not supported in your Mendix app are shown as non-selectable (gray) and will not be included when you drag them into the domain model.{{% /alert %}} From 5e6faf13a0845d7185a04b3b6c934f8420966906 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 20 Jun 2023 07:28:01 +0200 Subject: [PATCH 070/232] Add via Slack --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index c13896a785b..e5ca1935dfe 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -238,11 +238,12 @@ The Beta program for 10.0 has ended, which means that the Beta versions of Studi * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). * We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. +* We fixed the missing line breaks in the **Metadata** property of the consumed OData services properties pane. * We fixed an issue in the OpenAPI contract of published OData services where the server URL contained a double slash. +* We fixed an error that occurred in OData services when the user had no access to an entity's association and there was an attempt to change its value. Mendix Runtime used to produce a response with the status 500, and now this is an error response with the status 422. * We fixed an issue where the workflow user task on-state-change microflow did not run again when the state changed to failed due to a prior execution error in the same event-handling microflow. * We fixed an issue where the outcome selector dialog box for a completed workflow user task activity showed duplicate outcomes. * We fixed the [Create object](/refguide/create-object/) activity so that it now produces a consistency error when committing an external object. -* We fixed an error that occurred in OData services when the user had no access to an entity's association and there was an attempt to change its value. Mendix Runtime used to produce a response with the status 500, and now this is an error response with the status 422. * We fixed an issue that occurred when adding external entities to an app where the generation of enumerations caused an error. * We fixed an issue that occurred when the ML Kit mapping document was moved and the underlying ONNX file was not copied to the new location. * We fixed an issue where the ONNX file for an app using the [ML Kit](/refguide/machine-learning-kit/) disappeared after deployment. From a0a03f07cee2f7af2959e48bca4ce2595d101bc2 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 20 Jun 2023 11:05:15 +0200 Subject: [PATCH 071/232] Correct terminology --- content/en/docs/releasenotes/studio-pro/9/9.10.md | 2 +- content/en/docs/releasenotes/studio-pro/9/9.18.md | 2 +- content/en/docs/releasenotes/studio-pro/9/9.20.md | 2 +- content/en/docs/releasenotes/studio-pro/9/9.22.md | 4 ++-- content/en/docs/releasenotes/studio-pro/9/9.24.md | 2 +- content/en/docs/releasenotes/studio-pro/9/9.6.md | 8 ++++---- content/en/docs/releasenotes/studio-pro/9/9.8.md | 4 ++-- content/en/docs/releasenotes/studio-pro/9/9.9.md | 2 +- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/9/9.10.md b/content/en/docs/releasenotes/studio-pro/9/9.10.md index e7d64615cf4..9b56377f2c8 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.10.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.10.md @@ -142,7 +142,7 @@ With this release, we are making this functionality more simple and powerful. Fr * We fixed an issue where calling microflows from offline-first apps failed with an error logged on the server with the following message: "invalid jsonrequest jsonobject["guid"] is not a long". * We fixed an issue in [MxAssist Logic Bot](/refguide9/mx-assist-logic-bot/) where the [Microflow call](/refguide9/microflow-call/) action could not be inserted if the exposed microflow existed in the app. * We fixed an issue that occurred when a module was at the app level and the user received an error when trying to update the access rules. -* We fixed an issue where the Branch Line Manager closed when an empty area was clicked and the app selector froze. +* We fixed an issue where the Branch Line Manager closed when an empty area was clicked and the **Open App** dialog box froze. * We fixed a bug where the validation for creating branches in Subversion apps was not being called. * We fixed an issue where Studio Pro became unresponsive if compiling the app's theme never finished. * We fixed a small visual issue that occurred while rendering context menu items. diff --git a/content/en/docs/releasenotes/studio-pro/9/9.18.md b/content/en/docs/releasenotes/studio-pro/9/9.18.md index 5250cbd6451..365a456afe2 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.18.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.18.md @@ -283,7 +283,7 @@ These are the main features of Validation Assist: #### Other New Features * We now use your default browser to sign in to Studio Pro and listen for a callback in port 8100. If you are already signed in to your SSO provider for Mendix, then you will automatically be signed in to Studio Pro. You can opt-out from the new features tab in the **Preferences** menu. -* We added a **Sign-in/Sign-out** menu (just like that which appears in the Studio Pro main window) to the **App Selector** window. +* We added a **Sign-in/Sign-out** menu (just like that which appears in the Studio Pro main window) to the **Open App** dialog box. * We implemented a VS Code Command Palette-like window where you can quickly access all of Studio Pro's menu items. This window is reachable via Ctrl + Shift + P. * The Git command line interface (CLI) is now automatically installed during Studio Pro's installation, which increases performance while using Git in Mendix * You can now optimize your Git repository directly from Studio Pro to prevent a slow-down over time. This optimization calls the `git gc` command to execute a garbage-collection round (which requires the Git CLI to be installed on your device). The repo optimization runs automatically after 10 commits have been made and you push to a remote server, or it can be run manually. For more information, see [Git Storage Optimization](/refguide9/git-storage-optimization-dialog/). diff --git a/content/en/docs/releasenotes/studio-pro/9/9.20.md b/content/en/docs/releasenotes/studio-pro/9/9.20.md index 41c01a978ae..d7ad88d00a8 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.20.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.20.md @@ -41,7 +41,7 @@ weight: 80 * In published OData services, the list of entities and the list of entity details now have the same width. * We improved the alignment of the controls on the **Published OData Resource** dialog box. * We added more control to the **Show user task page** microflow activity and button. It is now possible to configure if the activity should automatically assign the current user to the task. Secondly, you can now control who is allowed to open the task page when a task is already assigned (only the user currently assigned or all users with access to the task). -* When selecting a team server app from the App Selector that is not locally on disk, the dialog box for choosing the disk location when downloading the app is now always shown. +* When selecting a team server app from the **Open App** dialog box that is not locally on disk, the dialog box for choosing the disk location when downloading the app is now always shown. * We made it possible to select multiple widgets on a page at the same time, enabling moving or copying them in one go. * We added the option to export workflow models as an image. * We upgraded to HSQLDB 2.7.1. As a result, Java functions can no longer be registered in the database. diff --git a/content/en/docs/releasenotes/studio-pro/9/9.22.md b/content/en/docs/releasenotes/studio-pro/9/9.22.md index 92849be418b..082d500976a 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.22.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.22.md @@ -17,8 +17,8 @@ weight: 78 * Native mobile apps now support encrypting files and images stored in the app. You can enable this feature on the native navigation profile settings page. Check out the [Encrypting User Files and Images](/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security/#encrypting-files-images) section of *Offline Data Security* to learn more and start using it! * When adding a new attribute to an entity, Studio Pro now tries to guess the attribute type. -* It is now possible to open an app by dragging its *.mpr* file or containing folder into the main window of Studio Pro or into the App Selector. -* It is now also possible to open a Mendix app package by dragging its *.mpk* file into the main window of Studio Pro or into the App Selector. +* It is now possible to open an app by dragging its *.mpr* file or containing folder into the main window of Studio Pro or into the **Open App** dialog box. +* It is now also possible to open a Mendix app package by dragging its *.mpk* file into the main window of Studio Pro or into the **Open App** dialog box. * You can now import Mendix module packages into an app by dragging the *.mpk* or *.mxmodule* file into the main window of Studio Pro. * We added support for screen readers to native core widgets, making them more accessible for users with visual impairments. diff --git a/content/en/docs/releasenotes/studio-pro/9/9.24.md b/content/en/docs/releasenotes/studio-pro/9/9.24.md index 9076375e1ac..ee4b4b17c18 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.24.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.24.md @@ -220,7 +220,7 @@ We made a major update to your business events modelling experience: * Oracle 21c * PostgreSQL 15 * Studio Pro now builds apps using Gradle. You can switch back to Ant if you disable building using Gradle in [Preferences](/refguide9/preferences-dialog/#gradle). -* We added a button to the App Selector dialog box that opens the **Open App** help page. +* We added a button to the **Open App** dialog box that opens the [Open App](/refguide/open-app-dialog/) documentation. * We now provide more accurate drag-and-drop feedback on domain model and navigation editors, and we fixed the incorrect feedback for a few controls. * We updated the data grid and tree controls to allow for scrolling the containing dialog box using the mouse wheel when the cursor is over the controls and the controls do not have a vertical scroll-bar. * We improved the resizing behavior of the **Entity Access Rules** dialog box so that the **Documentation** field no longer takes a lot of space. Instead, the grid with **Member Rights** settings adjusts itself to the available space. diff --git a/content/en/docs/releasenotes/studio-pro/9/9.6.md b/content/en/docs/releasenotes/studio-pro/9/9.6.md index e0ae920f76d..5a854904ccb 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.6.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.6.md @@ -305,12 +305,12 @@ If updating is not possible, customers using Log4j version 2.10–2.15 can set t * We fixed an issue where setting multiple entity access rules at the same time resulted in an error where no access rights were defined. (Ticket 136705). * We fixed an issue that caused the Workflow Engine to hang in a [parallel split](/refguide9/parallel-split/) with huge workflow definitions. (Ticket 137269) * We fixed an issue where an error occurred when trying to update the access rules in [App Security](/refguide9/app-security/). -* We fixed an issue where the Branch Line Manager closed when an empty area was clicked and the app selector froze. +* We fixed an issue where the Branch Line Manager closed when an empty area was clicked and the **Open App** dialog box froze. ### Known Issues * There is a known issue for the scenario where there are multiple instances of the same identical object (meaning, with the same ID) assigned to different microflow variables, this object has a one-to-one association to another entity, and no changes have been made to the associated object. When you then set the association to the same value, only a single microflow variable points correctly to the new association, and the other variables have an empty association. (Ticket 168024) - * Fixed in [9.6.15](/releasenotes/studio-pro/9.6/#168024), [9.12.9](/releasenotes/studio-pro/9.12/#168024), [9.18.4](/releasenotes/studio-pro/9.18/#168024), and [9.22.0](/releasenotes/studio-pro/9.22/#168024). + * Fixed in [9.6.15](/releasenotes/studio-pro/9.6/#168024), [9.12.9](/releasenotes/studio-pro**Open App** dialog box4), [9.18.4](/releasenotes/studio-pro/9.18/#168024), and [9.22.0](/releasenotes/studio-pro/9.22/#168024). * In the **Properties** pane, you cannot copy, paste, or delete using keyboard shortcuts. * Fixed in [9.6.9](#2102). @@ -403,8 +403,8 @@ If updating is not possible, customers using Log4j version 2.10–2.15 can set t * We fixed an issue in the App Explorer where the active item selection border was not displayed when all nodes were expanded. (Ticket 134616) * We fixed an issue where it was not possible to paste when inline-editing a caption in the page editor's **Structure mode**. (Ticket 134741) * We fixed an exception that occurred when starting apps with specific app file sizes. (Ticket 135034) -* We fixed an issue in the app selector where version-controlled apps that were not checked out locally were displayed as **Unversioned** and had a default SVN icon (even when those apps were under the Git version control system). -* We fixed another issue in the app selector so branches are ordered with the main branch displayed first. +* We fixed an issue in the **Open App** dialog box where version-controlled apps that were not checked out locally were displayed as **Unversioned** and had a default SVN icon (even when those apps were under the Git version control system). +* We fixed another issue in the **Open App** dialog box so branches are ordered with the main branch displayed first. * We fixed an issue with resizing dialog boxes that contain expression editors. Now, these editors scale according to the size of the dialog box. * When using DB2, the `DATEDIFF` OQL function now correctly returns negative values where applicable. * We fixed the functionality of selecting a **Data Type** item via keyboard shortcuts. diff --git a/content/en/docs/releasenotes/studio-pro/9/9.8.md b/content/en/docs/releasenotes/studio-pro/9/9.8.md index 3ab886f566c..61cfb6b59ba 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.8.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.8.md @@ -175,8 +175,8 @@ function getAuthtokenSetter() { * We fixed an issue where the [Send external object](/refguide9/send-external-object/) activity did not send an attribute that was made empty. * We fixed a bug where the **History** form title showed incorrectly. * We fixed a bug where filtering the [commit history](/refguide9/history-dialog/) by the selected unit was not working for Git-based apps. -* We fixed an issue in the app selector where version-controlled apps that were not checked out locally were displayed as **Unversioned** and had a default SVN icon (even when those apps were under the Git version control system). -* We fixed another issue in the app selector so branches are ordered with the main branch displayed first. +* We fixed an issue in the **Open App** dialog box where version-controlled apps that were not checked out locally were displayed as **Unversioned** and had a default SVN icon (even when those apps were under the Git version control system). +* We fixed another issue in the **Open App** dialog box so branches are ordered with the main branch displayed first. * We fixed an issue where the [Atlas UI Resources](/appstore/modules/atlas-ui-resources/) module could not be imported from the Marketplace. * A data view in read-only mode no longer does unnecessary commits. * We fixed an issue with resizing dialog boxes that contain expression editors. Now, these editors scale according to the size of the dialog box. diff --git a/content/en/docs/releasenotes/studio-pro/9/9.9.md b/content/en/docs/releasenotes/studio-pro/9/9.9.md index 0cf24d052e0..20ccfaf2a52 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.9.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.9.md @@ -124,7 +124,7 @@ We have also added a setting that lets you configure which styling files should * We fixed an issue where a [Close page](/refguide9/close-page/) activity called from a data-source microflow resulted in an error. (Ticket 134521) * We fixed the app crash that happened while performing changes in the app's security, such as deleting [access rules](/refguide9/access-rules/). (Ticket 134605) * We fixed an issue where it was not always possible to paste when inline-editing a caption in the page editor's [Structure mode](/refguide9/page/#structure-mode). (Ticket 134741) -* We fixed an issue where apps with hundreds of branches took a very long time to load from the app selector and [Branch Line Manager](/refguide9/branch-line-manager-dialog/). (Ticket 136374) +* We fixed an issue where apps with hundreds of branches took a very long time to load from the **Open App** dialog box and [Branch Line Manager](/refguide9/branch-line-manager-dialog/). (Ticket 136374) * We fixed an issue where it was possible to select all tree items using Ctrl + A. * We fixed an issue in [consumed OData services](/refguide9/consumed-odata-services/) where parsing metadata without an entity container resulted in an error. Now, it results in a service with no entities. * We fixed an issue where metrics were missing because they were initialized too early. From 9c930fe32cccaffffa216e3d55b41e61f3e348d9 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 20 Jun 2023 11:55:43 +0200 Subject: [PATCH 072/232] Remove unnecessary note --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index e5ca1935dfe..3d274b0f83a 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -42,7 +42,6 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We improved the export size of the model. It should now be about half the size in a lot of cases. (Ticket 174121) * We improved data encryption in mobile apps. (Ticket 181442) * We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. -* We added a **Portfolio** button in the **Open App** dialog box menu. * We added tooltips to the **Branch Line**, **Message**, and **On Disk** columns in the **Branch Lines** dialog box accessible via **Open App**. * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. From 61d728971219cf4c98cd0916489791c1eecb59e7 Mon Sep 17 00:00:00 2001 From: Mark van Ments Date: Tue, 20 Jun 2023 12:00:54 +0200 Subject: [PATCH 073/232] Updated Open App Dialog --- .../menus/file-menu/open-app-dialog.md | 18 +++++++++++++++--- .../file-menu/open-app-dialog/open-app.png | Bin 50681 -> 69836 bytes .../file-menu/open-app-dialog/select-app.png | Bin 67716 -> 73952 bytes 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/content/en/docs/refguide/modeling/menus/file-menu/open-app-dialog.md b/content/en/docs/refguide/modeling/menus/file-menu/open-app-dialog.md index edcb7981b3f..daee6022975 100644 --- a/content/en/docs/refguide/modeling/menus/file-menu/open-app-dialog.md +++ b/content/en/docs/refguide/modeling/menus/file-menu/open-app-dialog.md @@ -17,7 +17,7 @@ To open an app in Mendix Studio Pro, do one of the following: * Select **File** > **Open App** * Click **Open App** on the Studio Pro landing page -The **Open App** dialog box will open, where you can [select an app](#select-app) from your apps, [open an app locally](#open-locally), or [import an app package](#import-app): +The **Open App** dialog box will open, where you can [select an app](#select-app) from your apps, [open an app locally](#open-locally),[open an app from a private git repository](#open-private) or [import an app package](#import-app): {{< figure src="/attachments/refguide/modeling/menus/file-menu/open-app-dialog/open-app.png" alt="Open App" >}} @@ -35,9 +35,21 @@ You can select an app from the list of your apps. Once you have selected an app, For opening an app you already have on disk, click **Open App Locally** in the left sidebar and point to the app file. -### 2.3 Importing App Package {#import-app} +### 2.3 Opening a Private App {#open-private} -You can also import and app package and open it. Click **Import App Package** in the left sidebar. For more information on how to import an app package, see [Import App Package](/refguide/import-app-package-dialog/). +For opening an app you already have in a [Git On-Premises Version Control Server](/refguide/on-premises-git/), click **Open Private App** in the left sidebar. You will need to enter the **App repository address**, credentials for the repository, choose the **Development line** (branch) and indicate where you want to store it on the disk. + +### 2.4 Importing App Package {#import-app} + +You can also import and app package and open it. Click **Import App Package** in the left sidebar. For more information on how to import an app package, see [Import App Package](/refguide/import-app-package-dialog/). + +### 2.5 Preferences + +Clicking **Preferences** opens a dialog box with a subset of the preferences you can set in [Preferences](/refguide/preferences-dialog/). The preferences you can change are as follows: + +* Studio Pro Theme +* Default Page Editor +* Rendering ## 3 Read More diff --git a/static/attachments/refguide/modeling/menus/file-menu/open-app-dialog/open-app.png b/static/attachments/refguide/modeling/menus/file-menu/open-app-dialog/open-app.png index 70b7be83879367c810af8cabcc64509e8572d81e..9ae7b2eed938908d83e38c5f93cf3fbefcc28e54 100644 GIT binary patch literal 69836 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�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 aM@fnQgsb61w>$m8XsGF2FSvFu=-&Vrxs)jY diff --git a/static/attachments/refguide/modeling/menus/file-menu/open-app-dialog/select-app.png b/static/attachments/refguide/modeling/menus/file-menu/open-app-dialog/select-app.png index dd8d3faee2de8270fc891b09a569ebebc3de4550..f81467632867c09192b45e8a08dbdac82e70deeb 100644 GIT binary patch literal 73952 zcmdSAcUV)~7dD7`?E=>VC{+biK;R<1t0)k9@8u%BBM^GA0ZLVRM|uemDWL~c1fHf`XPE`g;nd!L|iXo_B{SKR>^8?#4xNw#1%y zvA<6}*K>aYceinNr6?@zk_V@*xPw#AEZxjqZC%`Lot-GIU%bN#&R>Gg%Q(AuyV_dY zxKk8UcZq?sRKL%q17`u?6=9hop+}6$9 z!3;EYrKtW|83j&XfKKb0xjNZ8SyOyvSPTK@&i`{g+|}HYVxRnW?LW(2G7qb;6v}X5$9W4dTD#U z5~(QC!&6dHDipuEy}@@>yv;b9`YmqSv-dmNz|O0IR#>=NZ$gPL1f!&&=tcaXLZk<6U4E|`dV_-vwz;|aC`k$Y zX%$jDXXnk+asg%@oB=LW^YW_s-rOAF`0iPI)MsjnKUo5*&wQW4n7Tdn`h77J(ZD}V|+p0z-z`F-}~JK z3W^z+rF@2tXt||M&$@mrzZ@+MN22c4t5+YTbSuPh#%bg!ad3zc-QC>6s9@aRzkk2M z%v@Sf@W8myM+Py1>l?eAkP7Gh_g)|W_I$dzqViKRO$2TdJ)b5Xa%|UB$~g9j>)}Hs zb#-;p5{sSpBwyK)j}3@(3pM#)2xxN!c9$04b!;9 z;q&_5X|O4NAH3zL6c0OM&)d+@Pz@WKf-*fc2PdZj=(5k&%xfM~^pnTXJ_5(+$Ggvu zFEgO`H0ktL3)WF1vD?c0EYa;rLYh9qzYW+#J74UBae=w&zr*qG$(p+rV~moM z%>RBh>VJElI`;dcq3IpSwxMH&GYcHL)d@Lwq?Hu6E=q(7#1tyg)#mQSPHM1u_z!0> zKj1vBx=Tgobo<(sgQorGvR8ED)mT-`XOoR=84ZqKX!$86+t|DngLYQO=o>b~EROm3 z4n+>rjlx)@UluWJ^+AW9^ie7GKNrsgU8A942No*Vym9^R*qMPg@0^IzQ~&%(k^ZJX zM&OQ8%Y=yVZPb=LSJd6^8!umER&f2(;Hz7Yg=sc0a?l}8%CeY85r08YWkp1^}o`{b({`vSyk(KT2KObiXG~_jakyk*z13I=&*Lq5- z8B05+d^WEO7}vp=dV*eJpE?53O5G3 zQ>wL#p7B{HK;sYxx6C(VZ9@cRIK4c00QY#zc@-L9%{!rzUou>{nii!pgn zhgx5#fE7SMqx_z;qCzRp{uJ7+32HTe2QW$bbU86}rsnX;wE2#l*&j^IG&mY@n5t*C zIj-J8jtTW%y-_n!G&T3y-e^ft{x3stjpIb4Vzm3=GM{$I>~(~4icWXG4FB zlM}r0tETnd?&vS7sWA4L%0KFwxDN;Ih;zY|CmIt~xbh-s_RGet+hbwP=K^g7brA^( z_n&|neSCKfbPBSa>~nCGWeS=9>PLllIiS1m+xBPvMwk(deXjJyJD%uBig3TS?K)Cf zL+`%^D^QX?C2o+$yESwRu^YiGtgkWo#9B$4Q&(-KkiXTf^COWnj%(B*5X=v&8fxf< z*J}9HV*@X5Z%)r&BgIvaB{eiiFcn<}Pl{Y2*cyUa%zhhk1`IHYZ*O|+0u1cxzZZ5E z5IViwG85+IdkUz%YuwsdiJ-4hm`xv-FXa{;7I;7YrH8R>G!JJSt4o2A=~JSrMf~;> zFVS^5@7`2Y9ZcjgZRF(TRYf@Ry&ZWs4DHZ1cT!~u-;a}h`iO{3eD6~=JB8xw`+m(b zWBfHMUxUsYc#CN8PvmO^9d9Ook$T#ELN)UCLE+0=F~JRK8c73nwp-CI$`kaNBRjQg zX*-+IITgap%S)72uz~kh91(6&2DdWTJhQJMw7|0x9sxrqNqE%Am}Mj+EwrjMEqpzcWxhF z{5Z2ueJX6^DRV(Xb$x%ps5r-dV-yS?P=gFg)8Imd?A=x%z!Cc14I0a=rXY~bV9u}B z|0Pk@@dpKk3+#1%Pl48l7akK5QrLXfhiGnRu=LGxQS7$z`e5ImO&2p4%)#D$;NsbU zr_+4;X5#+E2(WTn?@L|{ecx#S`%b4f#xRSzx;Oof*lkIcF|-_G$-i?6E6@q*FPtlR2X}lhDmfTl=34B}Y;S zt0421hU=A%E~VW3%1JtdcD$rjqFV%V$4@$oXhS+T2hpHkRB;)_VEV zpOQ#a@9i6Jnc62hRX9zDZQ4n!r)l|co4SAYnfZRk_<~iUBn8FS!DLbE%rZ_=02!l0 z9Iv#?1J1;pyTC#n_zOf!n9hlyVbJBp5z|hcTN4lOtj{f(9F45&eOrk6^6=z_F0XFq zL7Pl}k+xrPX%lcCVBirgSuaBMeSvcss)D;gv%MD&tmE-_k!v3fM8qE`SN=NS;}-o> z61m*%tNut%;hyJ;oqX(Ou{UJ6~4z{ zW2>pnZ0fm%co2$BQ_W_8f7#QKkw$nwW^tAVcH5m=p$0;gL7I5k)7I~2cPEUDIP!p> zf%Yh-N+n}|5ICTY>Xz7H%eyl~Re%koKP5{|378GIhlKP|Gl{C) zdX%FJ&P4l|a-(KYz~N?LxfYZfxx-@3=4F$SLe^ zFva?b^WWG?F%iwird-gFG^LeovnP>bc$yWy;^E#wP>zXJNMgJGpJtB*@`89c-8K@q_D{(zye9t}$#SB8-I-`0UCJi=3ydIYZ0? zh$D>x_stt(H}-C)^Me_3-q+L{D7LOM72l~`DaX6s*C@>ZF!^b8`N+(JXg#ulGdeWe#Yh@ z8Oev$9Sx1|sTKOC%_};EH@?vd8nL2UnTlAQADJAXmztQ+iJBT=KA#J=CPGK0O`soQ zMFm!n7yr3tCJ6sb62^U3mFLAz@qcf#G=6>mKPc)IU5n;_zZkVNu&>QJ$6SHm-tLe2 zFXZAsdmiiR@lT>cLGf|@;aC9x4}cHI(8vD^ z2=_lUjam4%z)wuoKTjbcJdm%tw0;e`4usB|V(tZO|AlZaFMr2P=qDrk|03-KS^0mF z{@2{!UxmaclVeebO&%eE(e3#`_FXE{4WkpGxWwh6z-wJDB*v4z^lQ& zi2qLY|A21)hpG90F^m7dZ>o5ehGt=%{-3F$_-eZh`|rZ$y12Qy{nrj>1pYs-%KzzP z{U1A^A>p<4bxiPfQrZQHk|KC=kzHCIVL8S`Xo8XQg4Ww=X{{+??8xwjcueine|mlU zC~xvmtX#EJiG;=uEov zuU}Wk%iNGBCbcT(sn0GCEFfANhYB@U7K}vab@S_vS9KCRrzcg4_gY4(%vCp}U7ke` zeKz5yB-SBgxFCo8iY|uZ`K6Kc_&tCD31*WwHb!fOdxY-X@ua!tsvCAuROCs9@@6-Fx=dsY13AlX`uBAHSmTTasydzrAHcqEZjf*QCgE ze-vTK{`oU0)!~kXnz1Wm?pCFC??B0f=Smu0Y`NZC zef@;Q$hYRUN)Hn4S(2~*oLpc`4(fi$wU*2FN3*wjc$)99htl*XpzB5_>0FL;8i@f} zDjA~pVaa0t>7ledpGW*nlzXndwjM{V2@hquv7|}TSvc&L7(Gc7t5k2l_WT8kj63n? zCi<4hMrCC6_5BqT99*c|bcg;?P4z0Kq|XcPP68Yn+}BO z@LwzS>VHbGoV`H9rO`K9<ilEEZ1H@+(%3#1=6W+O&Y@Owc*R7 z2?II(u^F;O&$gHU!Z--o@71)!H1ZK+4c%BTBg}}LAVOCt9cf(Ma*O@npkBl!1JSy7n;rtyuP4sveqVp8- z(c6bjM0}dw#c0Itgu(x zak5;-szN_{XvRz=nJ+uv4pVR!R_A_HB;<6`X1o87HU8Y2`F6&7WadUoDD6Pw896ps z7}+4#2X6nfxw-k*oa#UB#N3fu0xqk)CV(0j@_I~-DP7@$8C07g&QUY5!hEtl1QE=7 z+s1954ib1xF#tr{Zv>ar`7I=~alnhTIMuV>8#GSn#c{@aE}y&@9&6n2-7dYra`kFv z_k@RCcU`v_{htLX)lLjVSBu^vF+qR8QgJV|r*&qo-4E*2MYhyB6V|bUaDoIZD!>GK z#OQ~?O7kU?r0!2XC?i{vh~1a&IcMy}{#kY|RC6FwB~2>7@5^7Xex(1m)6+W$L*xC` z;lB;eOK1u?`wQd{r#$I7Efv}V&r6kBp*je2y)@A|B`^2b9Q*4kA~QtTVSxHj(AZ1R zst6>?ge4RY<#y__!wNO?2e@)W5w`C9uIaM_UtpEP5Md2w2_<`1&D?^+9hsci1#|M)!1pCUB2Y zyQ!zzREsQAmRok{hY-1DruaBECh3<7gVrP-vN5sP1hJ~kwSx9!K-h%WW{8sufd))agUdGe}# zzV!HLXVfu}B>P2bWw`h7GcU|@a}qV?0j;O`0j|u%lY@YgzUJ~&?zD={EZNHLG1iId zEW=~hQS{QQ?V9K)bJNd1TJoQYCMn%Z>b9B!5k*EWve3Q#g-6sF2xC$>Nj(rgbS3~n zTj_=m*qB6{0)|BsOU+VHtp8|2awJ^zvS7e0QkJ?aaY@Wem?p%PR24ci15{2u)tbt(MXw{>ibAqln*r$r@J^avQ2Od~f zbspQ0+oGsrw;dg4NB-rzI$Ue~W)B$Q3$)i^ZCFL%kM+IIqvp2BE>%k z3YjY0STC7|^|5jrFgMXTGc$$+?~aGCe)PSGY7}$1L5sC~#G&E;KC;MFcLI^EQh8?%k(vLn6yoBN9N+(nid(;zGW) zQjyW)wM(y_KHcO5=JK}j$Ye?krMa6&nKA41D&KQ<{#N$+%o~!~sBqtYjRw0^-QKG2VhjMtYJ$r8b zteDm0jqb#XJ};APRC$pmqG%uoR>E)HYyXQSa82c>v2m@BF;o2>ra@o2g`uw0s6zeB z`KZ`-3yuAvIIVmg?Wrb~B1iK2KpwX^+w=2ZGVt`pG=bedMJ6?T09>?tF}juAoJrP4tDH@Tk5 z4de$WC#U{9g$O(1w|a%RN4WqAad6a)V85te7qBE4!EGi6ob*;#lD-{oc>%ytCh1@2 ze$nJ`-j+1i)CNUQPdM)Q)3lROZ;^70Y(SmgQBmVEzC;HZHuZKHwmua&%6Z!ndmxFj z>t`FbKWJ}bv1#i;)9>x$FHv3|ER{SjV86*iC{PZ2R>&%)n1JN-p;Xiu^zs?l9P`v` zQ%Thb((NqpU5bkB6|Z&zZuS_PpodD?SuOOo!|}N(@m{;`ig4< z<)d54#|VYE2Sot2+;81Dr8KOogZ>=JOWsbEOlG*#du2s%Z%wM~WXjzEt6*4- z8(2c0?{pAav-x^aIRo|8s^*|AgDd=%000)sjN%W6)wWfook}w9DMQ;D&U%>F8cuGx zd6zjsJ^TKcgefpP6z;1Te0fqASQWr=yVu-?qI`-W?jfmO^!U(gna#0?v@N8B;qDgfu>_@qr_)ri%3u&I$Y!1ryNN`zDW^(kYWw?Zfe0S522lX7=4Z+;3+q=poWutZUcSeK z%-D}O*^CxkwCm3ct8&6F{8(k=w;VT`+fFcb|3LH6VE*SPW%DMoK~lq`dmZrm#}ZRs z4oTGlrE0Yrz`65PHf{S2JBJlNP5$8lhFyglEdk5ca>=zbf!h*4N`n|#ix|fU`1~N> zk};O#&#As-12O@jH@Y$H#?4Jfk9v+wBqbz<%KW)dpi5)2*`Y0Qlb#KU*mDTdWfYi$>sd8=!2i;f&G&0Qu`pxA+~;g(mw9%*j4OHG@oT zz2A;mgUm96^f8GQ210H5M3sMiyhpDt@t4AGbft7FE-AmvY}aG%rJyNGilau}o|T<^U!VS#d4MX?RgdpVTCaj4@%AAwKt?enK-_j( z{(JnFL=M)`88c#&Q&TZ}$F;5tU+S^d3eQ7&GzDeruisZS+}OpE9tf0ZH~XBZ81Brs zTS`cIP6tqTg(Bln_0k|Ui(pQR;$7ck``*l2X`$~vWBVvcE88wtWMa5P8{^gBhw%wP zs@D!6w$HU|>|w9PaQFzNAD*5`6)hJP$Z(XxP3lN$sisQIJ#K-ffL05``JY;VkA6lz zDjJ3o5)yl0CGGT@susJ*gL)_l5W+I{2@0C`{gDlPQa0ifK_Qp#!ZZr6J!cYYweTUh z%pV^GUiUMGaegHC7Y$hVn0T#K&PkAFM9iG+T>9jFcRJ7&7c- z)Qqf^S*ob)5IkX!8PO5(4_%<8I|gY-allpvdC=dpCEWXtXrfXa$=Z+KQgE={Gk?c+;$m>rn5~&)u<= zFyYWPGNoM3?Dg>n=)BRq8sa%VeLtIOr0<~r$X9fs4%AN`eOJ*q8%Xk?ZeHfcl*J0SN%G@ zQit50p5888T{C}|bD4Z-$c^>qnm+3_d(Ex?j@;4;{6_?Xa73H_BmKaupt?fHxXw=- zze&oMrCenj7mS%$MWuwdv4_&V^twq%_YZ+`W00v2J5QE+CJ(7rCiAo$8mH;K#$#>{ zvRkyj2%NTtW>lUBgvO5UZsokLq=pMHrjNizS#S8!o0voe8_LPbwoXVjdW-Ka^&-rv z=^ncZG@$=<=bIMV{&4FCGquEmiw!_Zv9m3+rdLn&=U0-RtPJLB%KtP5B1rZ`HBN+4 z<$OzGNTu2-XL0V=Ir!leI0V1}NP=8_6S+*OWZGB!+mfjJeB#NWThMkxe+qn~GSUO& z!XZ9V%-$j)xi?5ep1cINg+7pYMbM{v)KOUL*ZGxf*T_{zF{LBnt*Jru{7#{4w(UED z+rc^bP0@o~m9N_|twxCWmiXD(qXzNNQhCF3H=&>96Tq+@v?x4s2 zF|p2XT<3Y%jo2ILSDGO`{!j)V5{dR81&@2I+ZOAkgY^;fwAtt@o4bEf1n84`N7=|E zi$Clm7=|M-yF=9qXXmy7?z_&oC3RV+IAD)m@o7HCPm-$&CiH4756L%T>HxSwyPk#? zj|oOGS0(<%hXUzsBS7sIvY(CB_n0uM50C-(wv%vPf2{i3D&(C2zp^>zD^EG?lwBsR zJoqcS&9Umk`}chysUPzE`j`2{M8sMPy@BzUSJg^+%b)kU#x8H4vl1+lG6?b-N+hrB zH2=!tOB3~dLOQ|Kd*N7}(~W%UUrNq-V^1|#+V`GHar9iDMBHI*<%k&>M1I-)^(!-K zqDmlLHBCx&(3)KO{=!6NTV$GVL<^Fw(09qB7cQ^Y=)l3+_g4xl21jlT3`<@~g1B!pI^rL9^vf>;WFdq~Lur3W_i)VKO}?o{e>pIEt?axF zfS%#2T7+%lH!5CccYqzC$re;Cdk%nIYk10w;w`5~NkfYytFrMpE=`39hQ>P_V#UOU zk-r_M8o6}p6X8)Ahlt@~>^19@c~HJ(hOw`Z-G7HvW7+MzC)Y^9AZQg$`_RbF4ZD3k zf6p8FP4=%18|2K{%L#T}H5@`RxUhuM0*I7&z!yAB;$OkI=CVKMeg6`$23?DCyTP$DlTBHBt)w%Q? zOpM*g9wsP|*LHQ!J38y_z}c|)!dZl+R{Qrc1mM$>&k#M4ckzL3|++ z=U{rUTD(hlf+@S6f5UG#-UrW81PJ^>0~!`@=_|Azhd4|R*zn9bfV&>pa&FX$?|NwP z###M%I8fFleyIedKMawVB{n^!TKq4p2-zY1EI#^(=bhpI>jI z(){*ER|U}wVU^5hok=fDl-D*1RE9(Y0b30yry`+Wr19O)W23w^DcjI~EB1^zd|0YJ8`T%rfBXjT>E+1Cf=I4QMmc`05y1CKb&h?SN4NEZ}&GXLizqt+b~z+;F|e{ig52S`d=|8U-z)uBl73z4ebc5x9O-P_9rSEmb&QwN!2 zdGwXmbbChLW#rp0tVXo1#kO;0DIZY;ObkFyrt9TF~2tpq!(X|9Lc=TvZWxiM1OpPu7YQzS{ z#UNf%a*a3)C7cOSj282B$d24Fl-w6R6PcmaDP+tBgHru3NTSsKZ#ex`pRh;LaB_{| zkU1x{{u{sm4PG+7e~zcV4%F@ZKIH#*NuKflxq6?>A#xa>bz@;2RGIVE997&CtN$ZG z6DXlzVOiCC^#N70fj5mSSb{tXg>~&!KTW6~nt9%N+!`ao&K$Y{o3;X zwNBvww)%j>b)h5IsMb}qo=QT%^P6drKC%{)YsPXZ9=`!fS7EtSz$zJY0hD!0Bs?Ss z-&0My?mR&)zW32ITc-}b=J7}iqMsTPLBR!w@4xchODV2Z$Qb&y!#uPmi|p4vrvCK>P( zc~MsjxAl9c=&ms{XG#M(<@mWGeDk;oqy(*vJxmh?AXustQ$aKSD#yBA*4U}We?g(& zZ0dl?ccW@zvq>&m3*ocChUCbL@5T-U$6eOS9$#zsG4_SX$kB|vLd%I#F~51Q)C~|w zReuOh81Gj4Um_2wdma=d*ZopMMFWD$iz8`2{k zf($Y1^pJdGp3s;qW^NK~%qrTQ_(&EJ-=hw4h#nru2)#CwQjH(G0_9d6xVphsZgPQK z^}){8)|W9SOmc(*(D;G>Vsi`Xjc2*9gvpXl=(KRvt$maWkmqZW36(?v<68syBl8!r z9Eyud(K%u$Kg`MCG^E;V@9uxt-H!y&l6o$$K=0EVpokRomjX0{$!()h23G<=5wSZC zLe|jG%I==*h8_J7j^ErDkRbwI%Qux%${zds1Q6JGPi;L-CK64>T($}b_|2llZhF!B z)cfUL?Fuy98hvAy5_pfzX^0+7H4Z)p5Tt(W!P|O+)U@>u|)1|YAA2g%)CeQs-hQoF*;R?*3OZOw29?Do zrO31+z(vj>QJ8&(Zv>ywn{$ae8+BtFl!Tf_Q+FLKuUMOS{?coiQ_(q(aut7!TaS5c zesA)Kl;(u(6sq;KZnv;M@AaflF!rT-5ZEZuk#hgwt_2cJ2nBHHY`O#ko|1xRb$p+J zs(PxMjK8rM_Xyj?9 zPO;lzy5m&a68c=5&(wX@v~1wzE{Oza07XC}W^p6p0FrgUHZ2}+Gn!li%qjt-Cv)k^ z0?s(K2oPv z+0~Pts5#zVx&+-Qe~Q2%Awf`VqAd|OM5{#aH${OC&?CK#aBx`Jv}y|%5|6Y(9eY(#!Dx8m(-5RbAf_<7I)G@URkfbE$E;o z2NLZ*kQ||0yJaCZ(ax);1(N^ZK6|OwpFUBu!73I{G6DD~=;C7EYq4gcp{LKIK?sji zQgef#lC2M@e?a!`1DZaT&-@$!_EC^f3Rnl5)f{zDbDoW4C=7VpsJYl>vPyhz4Peb=})eK#mquyF3S!My20^kN>d!mqr#TwOZG4(;v_drLF zM0D2#8fW|oTGrV2%8;iFq0nTC{)5MHYd5(7l(GQqxZh*Auic<$W?bj~oIzMFuxx)g z#d#T?p)0t&rrwdnnj#jslgU>2xUs>*{sJ&Ja38H-Z;mkNT{%#!JcJ92x1F6&auu#c zkV0@RVpdyy{dKMj$vz&q0w9Rkk9Qr>i+JTo@aO1aIA8LfSodf5j)-|m$wN31fKARB zz0VMCD>Z4##O6gsVFEgJ0+mxlO>qs{rW+GgLqJ%sbUy+D!IXYQUWE2`R#5Rcw()w_ zFpGa4AZhk7ub3e@l$KO$1eDAnzzjP~$2>2)8??8fi{1yySS1j<{HIaqN7g+#mAtup z|5O8bgk-9KIt7dGA>1`@TyIS=YIXA7A04HXL zNmjNa1!&T67=2x39JJ={`_ay?jkaTlZw#pjJ5LXX1Gi)!^+d=t0lW{kygU6C4tU0# z<)#p90LJkCX;pimOw9u*UFKyD-U8bg1|mOhTC+Y${=FPX%-Hc>66)cbuYYNP_Nbr-vf9pq!rDMCS2EOQeLy#C@uYXN zAq&El!p(tNA7-BmY=$^P=}5K_WUPW~Rm*c8IK}A2E~3o!`@LG@mAr)*UuT95Dkjl9 z52mJ%Y}r+4B2^*wGwub65yBaCNs7Ta(V*ACc`6zCAW}emEhDjzC84?%gKEFFQK6Hi z6#{;MraPIC-Je|!tc#PV0HeIcrvgesG=SDv($i!yMo&pzRLmZ++pEHKWbj7a3qKhi zJ(#YKfFHR|{>sSB0~_hRAl3?qqkwDU*(WyP1gwsE>BVZIFfZ4HoHU75xLaKPBOu#2 zyR+2)vp=TN6_oE7*Ajpie$-OY7lvlGPe7Usc5c5D`1Y;Z!Kn#k{cJ7ueO(bEk>`!n zA=UM!m#n6Bm*$)mOQH8*Fd@gE3-HhHF$cgEP%=s=uv9x1f~8I5YL*SJ zW{72s_SPzB{QB6a(aF@b%Gwpnl609F07 z*B9n`~S(dxid;Ry( z0-#<@yGX6a>1%bsoX6CK#=<*qi3NZiX!VC5J`ii@OzhVL!|KlsY3fvre{gM$1ZZrN zU2Ema!U`8bfhY3%hbrQO?) z*n*0FUC#1|PMSp9X(R8#3|Pzy>e)zhERxSkfmFv1t9Hir12;d^VB4%G(?eR-(FLU* z?gBH<)^|q=UI3kWvWbP>-l^*_xSZFpOyyooeVwNhoqdM$!lk0cwQR5t;KT!_wOy-T zyFYShF-6aKpIKg{z1}%hPv&Tic&OsBg5 z+1%Mvdd98}?v%e0BgfU`$xIR=t74q`G-C35_=0x~9s-h_+!7DC?#1;=ZAn4udYwZ zOFiOMed^UcfZ-e}m@|ty@FlmLqzyM3cj`5Da%w+B+BHgn0uICC4CS#$>?Nl)U_Knm z^eFo&BOr?zlE*gG(yE{uI-rFV87_I01<-d;=hzie#xszShriMa4Zsc+nSg4$Qn(vprd%gtdBd8; zH>#4nh1SD6G|)1nVZ*8GqYcPwdR(^uc`AGS z^jpFgZGP6ymi-gEIkLx#a5zQD*fA>Af7ip{T5VqfnumC0%cLH zYJ1sjr!9r#>;OgCx^>i+*5txBT&3F?7m3>FCZM1yI{(R9BzOm=$WEJ6tn#lRQ1u5% z;v&-PG+YMqkai9D2=wM|Q5o7|`)=8|L5~??F`veD#N+4Rp9B#kYERF(!;dzfL@N@e zNMw?=^dH@+9NAN(S6rNic{u@O$7oRCkXv>=&kjV-@fypJfFtjmtD8(B?pk2xX%Ir; zyAouR21YK6GWnm|AyLc;?H1+9*Twiqp5(?VM{F)A(ivXiU!vK=v7g0;Z(1^g5?5{2 z4iFL@4?cE%yn`;=iem-IK@7RnA1WLMw9jyENcQ=jj3`Nr!iN`C`G0U|XB7y6I?F=- zrDD5>nng9;2k~1Qvn@6Gq91zu&0j~~SW?(xXFiD#rL`fW3RVr(llZ-D=M!OKzEbjF zv7z1Kcp$p=V{qFgL4Nl80$qVPzEQ27(PN`Vw7_ zGiu5NInFAlYBM2S@4nh4$|P~)v;9c+(v3g~wYaQ&4KE~|4mL2KAfWOmQ~o z$O1-?^X~Uz{U+{m?{M}Xu384-O}ZKJxgk~n{*F(Y=BNcAJYN3hIh7d@pQMkAv5VwF z=r6Ey9q=j>J0sLQt_#T|3 zi|t5Vq>f6T@B@WW9UrCApom6~G0{D6(BGSD{`J2+ho)+uaz4DE8ya1blS&pWMq>#ps;kC~kTi zMJQ#M!@q@Z1K5;K41vl?L59<2F!?h+B8A-lCP>k|+m?%?=i{C}KOWx%B*1CC-8NYy zy|Xym#$i7Z+I~$+8C<-)y&_8wm9K1{odOg5ipyn86qdU@QvoO|sP<`1_zfyxP)NIU zFB$X2Ly@-yl(O7kMcI!OWSQQJR0AL$<$gq8@2HsYFc0jUmSne~*{_+|5TE>46G`+* zj7EP5aEWx0T@Fg)T{C~Zp^O*9Y;&_r|mqL|Br#~?a_N~T*&+sIhXQjn#L z`9*l(L<>N|C0{;m`!(#Ix$Ih@q(a<7&Wf>OW8d_LFr}Z{xeBxxP`4!H>mkK+M^aKX zO*9`={b<+A#_6FukS6HOE$?fyKvp65PNUnFjL3nEfiG0bL|HViOpG$-#ij=HE&3J7 zXIBmge|o2YJ-Vw9^zpsryw(l3p2TJc^JhZlRE9~KiTpHX>-e_1Qf#U5NTkrnqR*tW zaP|0-PoPxB$Wlc!+_-nm|6`aNcg!m-g{BeWr$A{f1@0GkWRXT~RvA9;TV`{7MoJdd z4|#=?iNsHpo7ul`gho<7EsL;&XV-T(RSaj`-ifcXZ7SARK}l(7_@m35x$W7yvX^b_ zFh@zlL4- zQ@7((u#AsQEC=rtvI+W@mR-A!TUm2%)O;~3IrsF+Ic;1e&HD5Tj9^}v7x^f0Lor{JpM2ubTV!n(;>1O`&9YV$EMslltVq)e_E^tU1 zNUr`n$!UtvRzm{vw!y)mfuP-T{ALQgSEt+3T2~&+ebR4XhG>?Xt$ev#bp?q8kR^TT zoS$>K|Js2IQ@ChR`jnUze&Chdz@ciMeyZ;7dhH)UxZ~%W98$41V-LO09@z3PC2=#l z9~iv}xHS23v$niEuwA2U8YlRq`E`}Yx6MXV`Vh1mI=i8pI@I;_`-4g0YAFEJFP_*mBhZwRnemPCtbHBSfY|zm(N8SuD zk17it@t?3Y?V`-FRd(B{jO&Va{n0d5*tyR$f0~a%?Cj|26lN!07?irkuDDeSTI8>9 zD0XB&zg{6k_C_~>mv#{^Gn6#9s{TS9*c9zvq(i+N^hlFT_`B+jpMlAix1y?G5mJa* zS-V(I-EoYzRMMAqfoO+y$JBhakKK$#>H05oaxSxQEKY>~&H*_K5a-%WY!&sbbOzHpQ%ahhB?i6W+lkvFy z2BCX(oT$CO*$>k$(i(_&G#kHFrux=oE#bF?WC!mHxNkk~PDMYSHum51L-x29Z|C%+ zDXPiaylXT)M3t4KASzDlIuDWWDQQdU(y_Bo>1Hg|>lbI1DmvBf zF%PwNPb^ILaqE8ne6S%Q;C65teY~oM?yC<2Rr#fHh`@OBi2LqGp$pSF`)im_yWLc!|>T&IPX7fS*wzXsX` zyP1}fy~E;<|Fqdb8#TUw;;4DKPo0^`xV{@5=k~NDlbD|pOVq8*c<$t%fhTx^OBWkj z=yQ}p0#B~;w>z9_pC9Ly^5z;uVix{3)c~@EPOYmYoJ62R*-s2u@D)$?X zsg54=;y2jAdnkAGauvp`Yn+327Ureb+$epBXO1FLirWx6DsG=Di#auNzDN=NE|A(w z$tgvjUqzkr4{u8GJ&-NZjf%WvgzmS<(4D?nYF^f4|C*do8-Rr(PDuNr%)s}c%LsE{ z)e@qp-o|+4mzwbgd*l1uREedxDwgcA$bM*vLDgRz0#R`wWi{{iW#zpGDButb}9?+YC`Qbf*Q*7n<%_${4HH6-hN?6*Fjc+Z|tc(=Ei%i4^o+N138QY9wUuxPC+ zC0mHyac&q^1-|!@J+?;OA3V5k^eqyqHx~2yY~pi=)Us4w*M#HpUzpWWJUOKpf#zXa zS1j@#v{o8N@5=@n*ZL^~24T4O$;95b_up2A|1$3o@!uI!I_rFS5ZEYqjmMbV_%F>< zmlGBgY;s0&hnSKx@yn+ZpW0e0DlMN&w!c z$TWl5$MfeJZSzlH4Va3QYN`K?xVMa|s_p)Tw;~n-w@M=*64FRFC zaFdeK-E6v%?(XiE+|uv0^!`83`{9iDydTaOXMb>jd$HCPbIxnd`TNbeVp*kfMsIiY z_R7jtjt$+RxNYJd@NJY-hQqZV25@05gH}0}t;p+o*Q9b)3mz38VMUYQ^tL@>mnELa z09^WPPSPGo3ri9oOA%F$DgMr{)hKmLd-V8m&|Fv2$2&0$l4>dL95PQ(b#>9anu*>l zL*rW|K>xf1tUf>wFS*3eQY%W{9Ip!!3n5B2(RA(@<{-kMRZ!FQJkyoA*rxY7ji`sl zZsKxCTE)}TRgy*>?4hgM`->}KY%NX4d?NXa4$&`X`1x42y7o}U*P(`26zsPBcNu>r z#u&WH0>h4AkQY`=?;EhZ7Hv&TO2aVLc=8GYM)|YvTaFi!)6&vPkdo%*YGc5bF-}gX z^0aS~vVgtenDY7Nt;SBTSbG@!$=nbgVz@Rx32sD)}`oS2t=;-zZf@6 zO;kbQkpR?71^SG0{->^(^S_OYWJ>t#4oX2gu1>$dm%$pE4coewqbIG{{?tn zAq%)3F&1@A!}Q+vPdRz0fOzlB*f$3hl80KpaSvB@Wbl-ah6-#wF`M0`b_>;Xlu5jB z%w$Gpc0|XVoFVjlU;n)WU5PW-84|Dh=kh74vjf6&$)ijg?+XEdKOS9J@mgZ=sP5Ju z2+en!R<+ny%!Tfm1g|&Cb%+urbZdugPXuL_q#)V-Kf^7|?@U9?sgerF{ZD;9?DT)T zyXaIvF*+ulpb>#jgNRYP=*EA_!2j2B5Hr)v-SH(X1IebJ7~GaP+@pE@20==%Bh5jQ z)0LCwPp3kIdeQm!hABOacc>M6-nHcbv12-+2 zCKwBd0lIn~nQH!6`usltJAEw^%O4TD0)yE%WDWV44zJ&<0vVE)wnVe(w<)t;Qs@}0 zDUd3|p86EhD`ke-Wu3_mzdEILbL3Ss2WqQNIp6a8lROG` z&k%2|%HBl-UAb5qi5NDUBB*MdC1tK>z~PU!k}^6wcaWRq2l?^4ZDQjxYADHZnTP6W zW=wKi&#Zl&FaW!64v00`^0hI%9v+>@;IJ$1*dIKHk?UZvVPy|JPApCXoUY*|j3ZSm z4s=SHKOzg%GCm8O_XK-wjS6WTT}npS+r9<6hPvUtRSZ($*pTrdnndaG(k+C7_n2SH7eadHVWqCf~a4-AH z5Gjq!+xVSIxp5NDXB@IKt5wuT+$c_N-t2^4F5N)l^Ye#U2@`qPuKmG(Y%S z?e2KYxw|(}uq7K zw}MCyvnaDvQNiEMbt?+vslE6$QUqgufV7$5(d;P*4z5K6$o@)d7cwCg$cO4cvMA|q zZka?Y!?JnBkM2&(YD*HA-WQ*W+SZuQlPM+QYp1@KGHQ*>9?xv9pX^KpoHNcYv$PS( z#h_<6X_-qQ0H(X&fJAFZnFm$wkYZ2=dkIOM^NhL*`(faZ4sSR(WU>CyUVE|pe1zk9 znOk3fZg!;DUP`ty9o^MW+IT?+6%LZbVX#r{ z2`Pgys!lE0nD_4my^v*o$9)C<7rC9mAz5KdJA~keh*k#py&#IDImK|JXluSu|3C?NcOSrPp~G z8!rY9_Zvh2e&6)mQaFe^lRwYYuR2Oha2i%5N)YgX ze^@j179E zD=|^sbIq|ojcF>$$Akx;XDcf=`I%l45ymep%7}-wTvp3PNRwR`)LTnR>d31j?&C3J z)?d|S;q?q+fzwr8HP=*LVi4Fg<;=IE#%7gHTVzXf8*!WlD!v_KSspwZ2l{*Y)UV!I zgrrk98k_zm1^Z`Mc6S)8d{1xGl`Jtey^y^7U~jTSeW)o2Y5_K5H&?CDr&%&dQ;X* z0KQ>OH0r`pmUIX7d4u`ZP=bkxVQ!htU77mrT!>DpIDh4%!U1hsptR4%hzqVp+@V9nn zsyE|X13IdGCJN|P3%*-w*4qW<>((co9d8np16vqQiEe|*!L({(P9v;u5pHWcKrPRohF&sqNT+I*RS$id)p+8BobZ-wRe1dw)u021->ARiygWNnsw_5QMb16f^`w$;Kkres zFRF@DP7S znpw$adn(Otm=2LT6|S^B=;@H%o7d|c300CzxZc?iJ4RZyFtwF3}V(A-}lP-ApTt_rR$-#NYWk zZo(fTerU2XQ6;*oO$p;)gk!pC*MrkAPz{hZFIa_Lm9Sk!9$*B zQR0|@b_ZLEHPO4_pZgiJLV5iYFHFp=PjVq;PYK#^(8wrn?WJ}TWQZ?w0ao3Rx!IN?PZJKLW;n6v=gNebLCMerE zvaFgr`HqFVhoPB2iB@E?G@lVjUYKa6a5IXAlD(p zy3F$y`w2e?u2i6HdS`_VdDzQ7R8o=s)87*DZYl&5^AtueIR&xOBiF_K@B^*5Bb?PqIN7!(mC>U z>vcfv`r|n*?CDmV`PlH-kYGpQjE~M`U5ou=%8CPoZhSmN{w^|NH=^IP{-BUgQ7mhW7uC z3;)yd>;L0Y%db)(8+N&t|6IND5%h$Y-jTKxr(Q%bB-a^8Vir)V|v^@}<7i zM>P67tfT}WmThQNa-{h&j|#}Cjg6PY>A6lk`4jAr);$u%$c&I8xAH8H-c;$hen#4+9+hNnyf=sQgQ_o&R(aGrylu-|6e|@7>C} z^6d%lSd6_ZrSJ^N*Qqrxs})zZp;!7hq;J3*k6^a4*&(8osCM2PatVym^t3z=){Z%8 z;l^c9`$evbuKB|L=oS<&zOsmXgV0|J?n?2p0r^C7W;twn)xXW~e5Z}a*6&$Fg>E;s z09Xy(p`Lw$)L}U~9iU=!^2*jlkJE@YyjZPAupHa8}xeW{4} z?6OIbCXQ_0Iz3-_;2H5Rb%Ye_)ak zWAB{(J;U$=gUIQWv6j4Z1&I0$qdxh36 zDOR-;%)X_Sr0?MJ-yI-TmOl7?`}$OBWwwEFMkgu|%@~xqyad!C{o+U6OzL=5(3q37TZ6wjIF@vh(q|maKjux7L&sa`VkQ5 z8!JK<5?xSnB&~@D;~O*0^Hxd5R+y;gPC*+a&ue)Zb_}>}bg(=Ah&wD)P*?%uL6WLW z+jBO{EihEbd|AfwHtQlB1qBt>mMDp!3NUze9Pc|`xeci=iq0Cvb~9(DS}KQbFgV$1Q$fFftWIC z;8wY%B_|sch1rMFjDg^u4lg{-yh%X;h$eG(UJSd65Y+MPKFpw6O28vP1WjnP0 zTk(6o3CNenYDeiMsES}~{~hVF?x$3qhODxbjEWDRWmnUBo+n;!tD1qCJYDZQR9*o1WW zisqyZBua-y>9{(^{^YN>!EP--fs^K`$HyM(al4&Kr%$zB;xVIcTW^%Hbf3o9b9;-O zt08#Rbda1h%{&(WN|De%h;;HiHyTArfjJXnf}3jK52zii(=Vdj2|S$hG>9n^>uMPi znrq){!pEW%R6ew9e`>uwl9(B}QI_TLE1i?;-50RZK;#bIdw3GTukP4j$ds4U|GUX# z!h`Gtt4Y!YF=60I)c0X*sO-skyYWa;uWN#=O z$ch30r^2iv-D`-1mvV2#XAue;N;we(+uVI_!7FICPc&#y!91}5FBAwH!}wq2 z{&km}Qs$#x(o-q=?6y`CRiKi_7<7aT>UgHb?R~&SbuOn@qvVYzm{JB zl0*JU6ld0iEjFfrhN3s~Ea7Rr<=9ALPDCUF#xPJFwZgycPUj!$o9x_t&>2okAwl$e z)q}^m`~FIoK>w9a0x7UwW^rSzY5hI)Ll4mK?|=$w!YiPB3_T}6Xq^NF2Q5hlOFxX| zg0c56E=tk@jR3@_jF>oP$3scC(mkueT~E){7O!}7zL@E#Vfw)g6CfI`mGX+D4xOni z2M0$lM!yxyY$|W3EstzLR}F82ELTO-rEC2|<2nEB+i74JK-SVT*9q_}|MtUm{e+`d z?QDghL|V_ZP9jamcD+Dcr4ali$MQStf$0FHcyI(RT=c_%=4U)&7cJ5qj|}1~A_DhN z+3)PDdf|~7t}ZC~KI>VYM}`#F#pTRqJAeEG*h?(6a_jh1{^2ksM2x`L_#_p~?EWlX zHh8ob$BKc)pHA}NP<`?JQ!W3yzWd7x496Fjt% z2}Im`!9*D#*dM8iz{u6cf<47PcO7&@&!5fQ2y4qiiVv|*k?@?v0xYGBUz2MrD$&Gd zL3%ttw%pq663(bmXCE({a3=EQ%a_(RhzcmP6{%5FRg)xl-N=h~UfscY=Nz#)m=zDN zInD+d-)YH+8!xY3gM4%UBxa-ec!TntWNi9_267H_wZ2Kv^6!8qWK{;I!aYUUWmkfW z5))&NLc)A*cY(?DET9j=y=BeM-(7Y&w;j!&{h;{^U=U|_M$+bikc5bg&x7feI9cN? zT#wIZp!~32wZ2YZd1r)o=p2Cg;U-(Ftp%u^kWo~ZDm~p# z*H#5N37IEclB)Sy08=9eh=(sbfY<533?_>?q{)I^HGxA=Hf}xBr-?v|Q|Vz8#8R_= zv6?wcaPeM}XM79frACq`*g#4?iQArCcECS4Gtu49te#Gp4x)EZPYM1ySBm}MLSwnc z3|L|laSV@Pq-Nb9dCqCw1AixhFv(ekK=N0yWm~=R)hhY-VWCkFL{IE?(E5K6H+_Sq z>I|YL%Magvd*(Nie9Bg}zovWUHpCfdb$&#aD|mSadfEZD8eNEUEkLqA@=qR*;_G@F z;N_>seG>8<(>Zn>P~DZ`%>+V5baZm(?DDrniNkA>&jYYImyrrL6CiC*<@N;6toK7I z?RQ|l+h#L#Zqb*kc}aL=*b@)QB@PZO&8D3XM;X2LSGZc&g4Z;hh5+khV>M5c`rMoS z!~wbkEg&y~Cv2iN-!3hIf)u5_sM{U25_ce3#?sbRu?^sT&?oS!k=)qHZ*S7#;K|ZJ zetD}8s|+ZV;k4KS0~aJZuLP|Ea|a9r*>;DPM0IzrjC`o~aEkRuCW9bZne{%zRi@Ep zQan#BpASiEQ?Le!kemdI5t*P^m&kDbkbI9YEU*&Ub0LYt7?)QRC~6XEyc>{YrL=jb zgJH8>JvhC?z~O-ze!wvVEt2Kl#*8=!&^XH2;vCAZpGge*dxw1$nwr4H$7hzvUecN} z^yp07AaA~01|z(Q$HXRB=X_}#HkUVy)Zmph_ThSf>iKm(2bK}@m)Ds76lhpPq{~Kh zCHw1!ps#iP07SO2lv(o4?(WGN%6{-Y`H+0GdTugQM^u2I z>+1sS?F{{v0CPp#H&utaetvrc7ouGwIUeE=!vLZ*R3(;Y0`1h`_knL#QPzLPp2bTC zO}#p^B2#7wFJkt`i|Sj}dO=T2!@z}8{lmz&LFaoO#-IYm26N=`NcQIU3}Q*iUGm>& zntNNW7ZS&tv+_<`+=Pi3!7U_XE?2rSBowyCVg|OL8>xVVLPL{L43EeA1ZyQ-vRWaf z>k9|XEzVo?S3fr%SR{Ziz=9|u+j7?98w;|ezbi}@GfD&CnHE3=k&FpOc-=GAE^^?t zAc}qmMjR*g%}yY922z?jBJhxbfW5VBv19XzI{z2t09XQP`r$OiYAvC$ZxnWCz=j2e z%+&knLgo#mj3m#l6YB$`m~yTynjKNQ+7J^0!c{?R&kg`x**M-5xi+77&bfApo>`wh z1-kFWzp8THsaj>$V5+y%%?$rotHJ4`0z$R^Pemy>bzAsW_h*x?F5SB(vW&~}AxVae z1V&VTe}5y|(8Vc8LBpF|c4X?xelA;J+{YRKbQ6v%Yl%T%e>!ZY@#!>5KX=?Ag?k_- z=7K3gH&#JPLldvgp#Us^^lG35Fd%>iumLJd@N~7v0xz{WvQ-u5i*15zOm(+sL;-nf zV9+S1)P07!#Mh|<`~7{ble}z|EJ}&Z$*g!@SLC1%Ja`nCPp*9Tn%%jiYpMEJGyCn5 zwMX_>iy*pAwa9Re*{Od6x+b%$n^FT)#_MwR!Bcm`Vw%&aRV$vyVRXB4ej|gZ9Zd3! z*0xq>cWP+)H@(Vr?uKG(mQ&ZY?h|v-`P(A^mcQYUPEd~NTImAsdkl=WJP?-6Jq-(KUHxxk6a9Eq$4opmmai^C23WUF#2+{ue>F(YG8&2j z#Q^@R7mXr2gKniPSrAb&=}b*eZ@B=wuq=`UX?XP@f^OyAG@^TVi{>Hrqa-3MB= z@`B9AtmhuHX$G3$)Kof3qA+gTn;+?* zE)xpKCmhB{h0-!fFB;a|!kocbt^$BSiNOt_-|=Xn)le^UPIJh`1IOcm>FiHK5ACQ) zd%OHJ-1o#son3vgJF02+qJaX^Qc+A)_-h)xc7qq9^%f-01388roaBM`a7pT;;G}Jy z6IPx9GL!8l^Lz(hX$4h|)+Q%nw_u@M!8! zfR8L~;nC5V6IX#>o7WUej;8l54O~jBppY4yEPtqHg1@McW+M!WwOFW2_m{hvT0`4@ ztE-#2R^)t6FIJ-^eG9}_05NvAgyb?Z_?Y?r~_89&%6UqU1P@kvNi9380DAV9i0;*hRNdA-BPI%)BLLd z00uIe!cM>6ko&Pu^8s~fcCobYaQYAgJy4VD3VQjXxg?$H=0QdfuNP7}vp{B=ITZt#dZ+!JW zTCZ+1{Pt;GZf69YY3EVpS;L+pF1?D94JOgMeUaL5*3G2ft|Oh)NFp2n5Y8+;GXdy_ z!qKZkot8>+C%MjWb2ZoPz4|a8&RLSh9MB^`W4b^;I|1SBJnB|G1GFMfhdA|z%v6u? zAmE>BPMd5LE64C#1q0)|tkEU`Ak=nbehFY>=R@EWvTu7&3?MRQ2}6%8X4qh%Am7+P ztzGS`4G6W%8e{6cNRl4X`r|&KNt_xHVlEpl42dC!U9At<$~iF`C!lIG!thME8i2v2 zg1`7KiQL|ntT7Ek9xUf>#i|z@&rlmWjQ>e|tpJDH-zmP zDZWe#EQa=>JSh*Stw9~&dz#LEAY>bcRo*g{Y39uXQT@xD} zG#+)12x&f$V9Nn!kT)#bpAojK{KvU91>P4wCLoR$p=oe!9C;7mdZ##_>?Zs^FUJ- z6(uYCeL*ErFGd<3A0HoQKGHrw^o;}Pm=q$tC(gu9P)15J+*KOk*xKY7@!Z~YR!+h` zKYkkHtUoCQgskBY$Sq|-2fJ5TCsb@BC#Ksr2t&KG00-;}S7QJO0D>&DC@J^R%eEW7 z{_jC%)v_PdR6{UgPl839ajfiY0z~ufi!J*uzx%; z?^qfkEl6&a<9G|!10CHzdS{QUkbP)P@{(U3(2hYuU9frW^O}c~ioSj_P^-4>qR_&- zRu~gmIs&}K_GJ+xPFZ=4A8)V!`leR9e{znei$7iCB(-;qdb~6Sr+rdpiNR*(0-_yn zELI=PFm0IxvsA!|Hr+TF;UzF23ZDhX6Yx6(`u8yv1*b30N6|>cB@@EfH(!2j88h6F zcr!9JDfG@P#sOih@;@x@kseKKZ!1`6EY$delNtm!q9mW?pWE~~uAN$rEb_>lZ)!p# zB-Q34D2I4_;=z~HbJt&$?i7rkttC#K*{$%#pDx7#$KahERwV#4A)C87lM)8GcECG0 z?y94y9CaGaxzuGZBfh$F#idhwJG(QL3AvhNZg0UsmIaJ;wtx5<-&G(abY;#c0oHl7mY;vs(3kQ?r0Mb(qQ zIPEXC;FP*mJBw`(&A&n$oavj&K|1eTDFgbZ%26YQdy$K31g)YZfIQ4hehNZ^YuB?e z-a7kM0$D9^)%y8L&PY}pj3ZN372s;&;ZG2IA-t&yw5#Gis~d3pyscc2^K;x7#61RF zU<&aioC@O<$Zt!ZC*e_01u-7SX6-fbz6>#+unTMRA%_%$Hi5%Un|F8m2M9$wP!V+# zg5D%+%VTnY<*Kw;>jBbt(SoFG&zdixiB){jC8`ewNy29FB_+VptY!I?CLMoX>4P@^ zy#$|zd?9%gV2c1s;>B^0Mw+XP0oTWPFPRdA@Nyz|up!#~^2~^MA8L~UkVrPC0j>X& z*!sDjuF3g0EEIxV8d^W?P1Dm>uF1KZD-{@TpE`i<)k~6@z!=4_7{v*mTBg_iJ|G4* z19I?VxOcq(UOc*3bcWi>Ba%}YLXh2rP98|B0Py)jGc-%ngqcyJN?6x>1;ku{5(2M3 zgzLB`dB|$Y+6N{rP|3^k0wil1CtfD$ZTI?*aoV2Q7%_yIt3o57$b0^qlCX0>VmwV0cZmBA{t-tRuY-HpaSAYZsg(Tz~37W*qqBLq{D; z_MQ)EYzjv0bFV%Lo_eN_Ue<_0zExvgY7Cc`7+6ft9|puaQeG@hWrCOb#_2*&>VR{i zQEMFra=#Y2U8Tgz)G4A91${V@=J-pO|DREjCBP^ z5rK+~Ab1_Q@aqb4;ZDQwy62l|TN z16!z&ynUO_7!zP+_Ta1(NvI8r6TZc?TKGq3pCB zoklQN@z$BuO@%*mDyG<&(+c;Cg*{C)`24rQ5_YTguOI2HKLIj&ec?4W`S(p!q4m() zoDM2u|E1XS|MS0QsFpb2pxwDUmy)Ae5M#ABFfw(2r_Y@AYa|2UpbE?jtD88mF0M%G#drq|*+qb)xdVsq^Z5dnS4`621>2 z(si`4)tMP_KnbLt!n@NQ8kNz8M#jelV$)ZE1rlS0JyW9q^092wKGqG7g5tTA0m9;t zQln*%=>ZbLwHsRoJNADE723A)J(QjCzYv(kbeZv`@rYd(W0cY>-Oe4*%3yRgPY(p0 z+GTwtHH=D^Uj7{!Hq7XG>iW~9f3vAwweMp)PHJeJf&jA84lt}7|C-quui=tdm;6uB zkfwkOK&Jc|B|1Ze!+Dvp&s9-V*{zK|Ase;oIBD9Gaf8kALs85pyb7ZB^UchEhNjSo zzcdyfZ=MYx#U&vLdkG}tv9m;#3p2~q+E-xpuIifEXKg;EOA{HW^qu~G1G3zy$;Z1B_5mMal6iK(sWgDWCRz7jg*rpmG^)11h1< z)>dWmG|u9op&>I8s7mB2$N-3<`6Q>M>b6Fr*#SY##6gq2MI z_yI|7DhT%jS?Qgm>Rjzdp=-DD&ITr_3^m6ipISuynUCwOmD7cj(PBgO9{@jkQy!#O zaRy+MRvtlmKF+~KUqW6|A4yPC$5AF@;oUua7@wZN%$~Po{9x+@^x-qmG9<$cAgyP(Q6d1uL+0y%sgQ2w*}9g}TklKbqYx zbl@a6$mg_e2mAIXW~zxxBY<+Df%fV$4?sDnez+-GUbJ&?XLkCPj2 z=o%6c^ztD5xOQZDf0i8F@T)E{d^&^Udh@g1M``yU07Vt*bvYOHSHd6f)FyYS=4<5PWlRQB>k_*wryH(En6IZ*fP_fP!o{(ccK6Me z;WoBg9&Jl(eeOC#@DUa1 zP({eB;^~1Al|&!^%v+3A?<|`O{FV0o5+dPX0#2H)wa;MPdON;r7~kyb?%baKp5;HM zi6}Nn2k2@`LL!_;-0SRw6<$QUMlRC__8AA4B+NMTJ83gJ44!pQA(pt1az?b`&sM_T zRUa6=;dR)&g-i3c!SY-a_{LY4=REdU&HV>QACSWi?~LK(zL2aY%+wre+nT67FauDN zv4D`lQZR&Zt819jrU7)68snu=3s?vUon5R0GQ@hJlb%me!pdgD_zr_fyDs^cwg=MY z`UaG*?1>dj!IMc;&QdrTW%~1GBHsrqT?;3XHx)j9KzCS0JP_$pWG)L=_#Y?{?GKbl znhfp9Dykd%!7GDbWp4wUrx-i7od7ekTZMUWI8Z!|Q-Ay^#9v@+H#8F*0MKktx?G`B znBLr`oKly4Z9~fPdeI#F+Efb^GDC$}X-~G5>$KGK)R3=IuJ~S+ta@jFw0NoW_dm;% zO0Nq~#r{|VYOu49vhe)^fawJMgKj(}R$v+WDSg3OzJ?Bs2VGpB3bR5407j}F9X0kF z0C&K|O5<4~uIi&KJ40Q;Q4)CgMdSV#Ocd*J_I~4(@R0V?j>3KgjapUADNK=ZRem(f z_wi`rXUOnm%6C8z9QxU3V!Hh)YqEwz>3X`(YUkjO%DxCQflo!zDvBZ4fAyg3x1(`8 zqdb0G0%#Lr5P;26nkf3#VE{-J>4c#G*-y%1yO0sC7~TO#$R>asA+g`cidOj*6Xgg( zVF>bO8pi<&2BD%lkYOR(<7%>$9fZ*PkdsbI<%14;fThg`zRU!1(fUMd5GY94 zFtLuH3s<>wdkpmF`wNgM4Fy`P4HZ_qyN{JNxz?~UP2Ak zI3*-lt3PsbGV1|?K>$E6$K*qDJI#0g{eMZB|B((+zL?OY? z@a3{6RSU9TzT%5_y?#DJFF*MQE3BkHAIp6C{-#^T^S{N;NGZ?`734DzW&XPgAPxp? zB&0wBVYuOnIeT9b^LX5#rNpTlByMt4dNwyv`q+NE(|P^B1fW_3kbg=7iYGrrEjLsR z7+R@W?JZ&M_M1}I-cFhvf*aY7ueHVB-iNh6bfW_)cQxI4(90C%P)L~t?mS#3gE3;4 zA8*j+vt6`!aAHnjQ@{zyqh`53Jq`D3fLd)%c1VFz&h8?I8!%sSkw%{@$%moT^tRUt zPo6ug)Xd%f07!0VkdN#;08kGkxoHkyhtf#^I=;>wgW%1xVsujzoYPTrlXFVLCcgCeaC0e&uj8drcjo%>YV#qCefUd zlKSfcu=)2;br^$vzP4g7(gGqtLORIjvNLj(DU!XSrX621m0cGrmEPR#f!f`Q^7=MO zS|tUjJX=MJEhBZH+Q)+(3Z$qcz=_(^1JzocN-xlx1c_|Z=fWxdE>aPHN}6N`AwqL zx6y8!)f@l|0l95YX>kDb-loMmz-gAmQlmJ5CYh~Pbb-bUi_jKH+)q9J@V#@^YpWgCPOK*Q!c|aL zb>@TVUXgt+EBYUrxNQ1o`}3-tPeCcyTXH_-+_Q=V^HE8wsuP6){m6ReJ1DXC>q9#_ z-OB7%@7kwbYqGTayV{qiBjy-H>PuLiudpU?xjTu{?)Y3eo!@ z-ez)jE(yg$7{1yvh86ld{2)1*EI)n=JQ09*41<~o&`OZnjon8U z^eZ4x%@6`8l{eO8w!rx_AhgL^aTaC`U41!qnk4kPemHe*BI&csw+c>K#?0T;c&OIH zZN|=wFr0P{(%9$bb-|t_hIne0Usq|=MWzJiEQXMb?ulayye+Kc zvW&I9J`737UCC{(-v#{SgQ8fU+5XnVNIJ_Qcd!dIs;E}Hsrb))*&E&zhPqXyHHmu} z&qM>w&fzb6PKV_Ru*l+9=Sa~+D&8Jnk5?a7#0&~y%_nk75sQTVlNGK&qxm^CmEjws zMJsEJ-fba+?<@u+#;w-yM$^{bb`?XZAWB58`m;2Iu(O0Z-Q`t#Wz|gDlzU3w`SAf! zuUmpc-5UFh$1X~+4`pWhwT_}@|D?y_*51^YG$HAq*LVyf6l|w^%4dO{Yr< zc~R?u{w`s52kWmGF3I8d0`9-j_@ES;bGATXIcnmR#!eHPg<3hic$+}Mi*&SjcU85s z;#}8s>-2nacjuPtHBxjU>2s0Q*u647zKBhhncG;+BZnsQ19^XP3Mq`OYBCV+Zp6mU zDJrSYpPvx;vV?QTsI1zZ>1K%HUQ%R&V1l5xS~iPT@PoF~57hnetag%^Qa(vJtKd1G z<_e1_I!NmjY7O@`rQ>=h@}OVEdcAOKwEw>5ZOeu3?`-|b;?8qVmVJ+b6EPWvBC{47 z?ivevxaV>G;`B{Aw9|}nDTBhx=ah1@a4lty${*ueyM-G>QebRSDi zXI_VEMu%j(PVMQt8Z%K{zQ=;(OB7HwdrDGzm?zU}j zGYoUFHl`*y`=hpm*!a5g#!kGpQCVO}CHzygDL0DnY2@$BeRV7FlW+Ie zs0vR`E#qs4=OUrs_a9lK!2_rih`*~h^md@%V;OiOTSHZHJ%K9Fv%YK*pDQnR`SisP z_nF9tz{?o1w4BZqN&?16A&nC7gHk0i2CP5mK||olWvA!JdBCrWw}hWa04uW8!BO6x za;2@i3SF8Z_n+mpob9)t?>>=`eEmA@rD6&1v{u#A%}ytnuSZD0sclYnIy`vBoxFWc zbv1ndceF*t6GE(zhX&v5`E)FG*U5dhXMRV$*3R9|W$3<|#8A#rZIh$-Gz^B{JP-`W z=gh-_=@;m}l9lC@W{j2CF7XtKKlYYXNNVG;qqGT+@*j)xD~nj^oER!Zy7*SXZ^x9G ze|+kr8^=fZ;Y7AL>{+o^we4+l^UY*=1NYm<{}2)}I2i`NxaoX`7;)X-CcNOfrpl%= zH8%^oVbGdljYc7VzWh^Djem#u=n4BxE0SvczB6Qn_eNaiiC+1Y$iQf0sEyQ<4>oYlic>>q3y1~OQoSpg`X13%Z4dQUkKrH z(bOl?Fqn-_eN&?k*Fsa)+tm7YsZ8QnP5t(Y4t*;>1leig4L>W2=Y76q!Av*HtQz7! zam)8Cz0w6Qd48R%ZGyk8hT&iTMS6S<4$PS+EUuV2Z? zknB9s4vk?*__RHqhyNf*#_r+=8LLj}m$K_}8~nkc1iglJJNw6}qWe!zv0!ibyV2Yz zgfN3-_J8RFOdA;1ylGx(w;kuH#POJnd2zG5DuM*oFx*50$%7Ypv057+uH&0@K`K7SAU3Qm5^J-^62urkk!=DQ&De=>{9vVZT<7=^qdZ z5enQ1YKR>xC~{iSzjf-6dRyMD`uYl~r13~${N%-PLid%6OE)g+xc$p+1U$V|T0M(en_}PfoGU(1_i!h~D${mOX z9&uo&f_G0ebE&crFtFIf& zK>NjwLjUlF=jKKZ?Ys$Uqc7UHcuX#yu) za+;UPlgUcaqiUMKUq+H%6p#Iu_{i`+*s=M%pK8$4N9m6V`3RS) zXKfY@xDwLIrQ$QU#iB3QZa;vmW%vB)O8FZ(4>&lRZ~~Urb#%YRo?^IT6Ju8QYO`#t zr4?Em`B$vde-5csG4-kCb&@ZC|4_mDIgRJeYbDO;Kb9dQ&_gKe3y+@DYVVAI;R#2H z^?Ol2M-~R#9`o=_d=BQ-O|AHn zX{cjl{KH!0RCn}lf!iRk$Dh2(72g^iqrg4>hb{z*Gr> zZ{|2=)^x!abeAYkp36-uHLV|nFP|p8w=;0Gcfg-Y&rfI3rhXu+^Am7r_cE4 zF@T~Z`NexB9skfe$8PisYb)~VVWpg{!2%8^MqZ+_79sPXA!&7FLY;7%YuKrzzGjbx zdvZ*20V~@-POIUsV~OS0z5!QelyT>08P^Nz2O1t($x z39s7&!vhb4SkZl#KXJnv7R~0``Bl_wP@L=$o`V1EiZ-58T1Kt*=Ba7bJ7S>}5w_>6 zn5hCD_n+GE)<4_iKs>qBP%hzxwG>pxMB*g~MF=D(eC|{kjK_h|y|pnk{5<`v?jCqQ zf!FpVPvznqN0%KrKTh5@iD=IADcZthb08xr=TDipXA1FJS0jyz3Esw6xsjD72)a?S zNn~fGP@o8I?`2E~g&&04n42+byrAOQj~u4VDhw#-ORi+?d+4&m+MTP}9)$M0koS0F zo&tC`ugzm~Oej*RC04u&zolz9^*lp9PcAm@csaUP8~Q@h z<4Vcehdk+3XGDtf<1cL3xG^+61K;Av$z=wQX4r0!^-d?Qv1CO`Rd*deLV*rnd zowdYQrdqbb{-jh`u^2r~`CRLv`DQ@gA;Z^kQbE0#Zce8yE{2Hc14a370xT-u&cov) z{OY}9gMd2(x$o(bptV++fcfZP^Oe;WZm@_(AOJd}Ltr^lWiLAy53iC&9?k??$gL z^5hfh>Te{zGCLx{t2bML%7uJ3c)!kJX!uP~%?LOi$ir`@rshmen^Un|1$HbKw|YUI zlSYEbi=5RayEeXd_;QRXj?q3YVAu-R;@aErb2hI~_dgNO^}^R?QeS@=3!AcIfu%Al zJkL~@!sbe5dNcEUm?d}UrSr{n5DSuaW+q*L1JoB=m+sray)T1e^%Wv3+QC1s&MBgv z{Xew51yGe=6fb%Z6(t2JNofHoX^@Z(0qK&KE(OU$BP|VrARrBg5~RD4?(Rl7bobjw z{oi-z-FbKBzL~dYm;t`n-`;!WZ?C;pjfw90Cw^te?~5fAO5ygVU13TJ5qH|49>4m! zn#+aa(riSju552!s1%$~(5JXv;y+T}H2A`px>jUBHB2cNr(XUTl%8LU4I#Yg#Vt04 z0pb?Mj>^bfbdd0G?q?TMany)LC}JAm*C3n^;EjAkM;8`(&GGianPFty_K@#g{p${( zMVf)|gmUFG9rNiokL+b=bSlVm&yA1ZO89gQx7CpY0ln04iY7?m;#r{L{d6yVYv>Wa1K{`!GRuv#-GzmhylVzJDSfgg}hge-G~mi}ew2aFhMQoGhlPsSp||r1Ow3?$6QZ6}aP0_zQEi91c7RouYAMX=ueWX8IVPyxEgAU6dU? zI06RJCYP1U&N>a{hu2X!*osverB)c|y;F^im6;<#RP|TnVR!wSTf1}(^?v8eGUg_w zqXCDz*lC#$VfGgojf-50>Aehz_C{F%6SXrVaWApuEgZay0vyyGUq6N*;Q0x8r2j`>U#bZYI~= za#B7~VBbqR+CGM2)Q}RS4+Jk2@H-+w?!qUYm0ycEKf^Ih8?1uvF6k1*QW%JtH;Lum zoP14d7@xhW6Klx$UDN&i6~nW>LuANH=!Fz~o}gJ2o4`HuxyW<%FI?8&v$Dc`>l10_ zisoxQ{ERN02wc&xt6d)Mj>KfV2vST&IhRN<1z^ZtU%{&D&1VAh%9L-^GF*=%58i{l zZtNg4vm8-XRlITA*5<-8CX0~>y~C1cY6Y`_aFR}Q`(Wi)<}4gJncB#X^2`W#kF@5P z;bVdmuqeulbTI{dT{ku(xh+~@#@eN&yPu7ap!&o0(XE?VG=tDH!Ye_0)Gxj9cL~B@ z4Ga}{D@$T6%_WI_{`OKd)%^D+5m7vkEt^{ZE%vLM`Ue8=aN1t0)N8@iy_H4eK`Ca8 zPzHz>aHgdKgCqcOQnmiWW)$Dw#|OacwR>FXuu0t9+KdY9SsMI2 zi+48O01Nx%K2CP_x&gC~3`+uD_Kbsrli-@R4C=yip>e68QSsYk#?=!}Lzz&4;_MbQgY-^2HUf|O>iqCDZ9MbWfW8@?(qUbx z4sXh-af$h`$*QX^WmGEy-vfkV*4Q$Ohk}V>G^KF3xG{hvppzs^qp4MLH~0IIWK8+? z3|_Wx`1gW4Xk6#kx&cR}ri45v#Kl-*0xu;O4!*vJ-!m49eQ%?tOr%<%R8fXnKb%(mf(`Bjhg9ZJy?~g+Mqhw^9p?)Jr!v z0s)~QLB?6WAwx7Oq67{e|GIqh&SaEioLOwCX%;s(@1niqZOifq)Q|QpQe(M09d)bN z@@umnW~2HD6EK|50ppK*&8~}3pJ4(o2RgQ7b35`a%|2oF*-X@Va8icd69GI6G%F#i zN$pH^0MGTb7Pa2076`EWrH1wVU%DdA3~41f)8pKGT(kdGfN(|qlnj)?e_QjHLj z4&axD3mdjwtEWTdI&{u*-@@Dz-4+_!P!hDJHiq)Z^R=c8_DgNMuC9DG&>~rje?;ZH zQV?5JFuuLHMr7}PZ^v*Q>k)rI-0r*kE(%;_iR<7)xV{iqSHQ)P0>jfsb! zBv)vRkD&JoC9%CxL>y#GQ=aE@?8Hbx3z9HdA35M!Z4k%Y=7;*88S;7{*=EU z#y==JzW!aA2sugAV_U?h4A>7m063ub54b|(qex@IHoL%IKvrFh=#vV-7h^CeQ&IV`uJoRV0!X7H6 zq54QGQBp?b`WG_$ySfHOWfHLHwSBwS{ljA0pOQw_$YzeAHC==W-{KSoCQLSU5(+9ej5_-iXSUdh+M$4E&7_IY3mK|Y){=W~vw zS&W7IX>bqlX1}0N!t@bdA~-iVFzOdj!&uGBzo62}OM>~*pBL>*Q}Yb2`;1V&O|lR# z3{+xM)J^8W!G+Z}f-gt36@3J%5d0bdnBc+hA)-(ctdPdVMk9oFh6n>K5b~wSyS|>R z{WFQriM2L>rE05X%V4U5GgEg=S>Aqebz@?ZibrYeJvFVoT zNJW&F7Pl{8FMoXsCIr#5UDN1xP+-nXoyXyQU&+rMoqIp`W=rm4o>(IZKYyk5{u7`W zL{rrKgRaC-dZv{|*O5Y4UjbMb(PWwsf{s2k;u(gZBMvxTVc-Mi3(;bHIHiLErE))s znX_A>eTy!h0;==xy9~jc=0pt+4T?)#ph3L6i>-N+HO1GG$8G1H#XK#@%GFFj`g<=n z(!xh5!2Yt8)wyYscq>{ZH+B{^Q9nHTdpT%XN(o#wxjOx+SWr!S=XASytEb0K5X!s~ z`YcvlRuUzty4ql*l|GXk=kF7$u828OeW40dYa1W-Xa+w@j?ey%MGWsw_VnX_9b+qI zwj+l2uc=xfp8MAnGqVyBwGT%9{}D+b-f;~mQv5d-ATUr+0tkpd!1urR#!gGdQ44%v zzyS%B)Ex=M#PIyp@Qfve|6V@&psel)33fg>;=P$XVllLt!?C`EE;j(PE^LtMrDBa5 z6ODwVSjJl|BH?yzW64+l9@~cvNGr_?AU)uBxDRs0--qx_Os9IzC;xIk#jLr)Tsr!C z7|&;f#F3{SU>_F-_AzRrsAwq}Jj-B6SnM&R_x=uMutU~(zTUkGvaqs}57&S|xNYW| zLFVK4{Pa&C1HW>RTr2rf<9N5fjgX z-Qj>etaV3u=~)0b`>!KGJd?$&h=Dz<+h6yF^yM{+rsF0 zsL}7Ymj{N*K09F(l-L@x_4O`h8Y`I3g1=c9Gvz`5Y)y0XC^7?PA^fx7yFCRdMHP93 zu_urJ?^G$asT)W{t<@{Mm%pA@=W$*kr0f@`ICzVDWZ~(5;|^^C#vm#tLvQcBzT}1n z4PL@8-OdOh`hyv4_nnU#eZ(2XJMusKh&C^9n&2osX2Hu%@f3b)m7v`u^z@Nl=o4Lu zL3*3B1rLpj>F0wD*?sX?$VS>>7t~Ryg^qLNfB2P>l40g1#O1btRa(hA*7&i8CKnQf z1ofqV81=vv(HI$s=E*vinni9uo!d00SF;rrr$WR5-9k=sloeYo{|?Q^nCpOh@r zI|+*Ql=9$CR?nGcX+xQ{Jv#9a7N_L~16!9uK)?SspPw#8};Tc#nEoA`KPC%u0 zP#31}zcmUJ#3mOXttR69xG3OC$W^G#JXQW-*3Rwl_?MkrgnSYkIjBrUFv^H`^T0v& z&^D3Js9s|ptiPhRL09D-SiRSq=cr>#F=})w8!RNsXGP=j(uN%o4q;d2=NC<*ne347 zwzk|onm=Br$tf0!R_ck6FNSNU3?;Se?Fr)5p8EK3${Uv<3yx&;lIOiCQl07-Z1C9z z>wmvOuq87&{8;TjhK^C-{4I|fwUhCTKPuT0DOS& zkWe^KaY1E=SP#TTV$F&jMV5GO`<(%ey^i@$n8i|2aKk`xE%N&gN3o>+k~Fs>BFeNb zRDeR(dcRR7B-q%P_$>Nf0wR5rW;;J;WB9PUs2#myuj%>+Vl?H(o@e@VJ@kfXbYBy{ z>Tg{L{pcN6Fg!|g7^d~3eT8Pvady`qYlqHJ5X>77k(-DGR2<|VPAe1(p&>$g3Z@49 z%E(b&_7tpv!SIaCN85TL_P5V57w6Vf!h{^!-M|KUR3O!DzhZFI(2dm5VTU#}xj58|{QNkr1p ztcSMZdoT}eR!)HtR2I@l*JhR*)v5mDV*mDa3seKiev zx}%mR_Cke-f>!f%y4pNiB>bPU5EG+`OH4$=!;1~Bt9Cc0q#pkinY-Ev*3{(1P(lCu zGnBgw->6lorJp@Bx8nwk#!;s;wIL^bkt479Pf%1I158`X0g$C1trZ?kYbhW@8s_MK zN(^+MzL+)L06i^i?a29sY=kBsi*gVZ)4cJD!ke}r=}n9Bl*;K6PSz>GHw%_W7KQlv zzFJ^*Gvvkz3e)p(n(y_~7nNJQ64%s#EeO1K`2GA?_u*+}CEI^%sW=H^l^$9f`vUP| zTh3Zqh%|D(Jh6@p-#@X&FW;F68PxMcfdCD`G)gGj0?g3XC^H~TBmvnEQVI*tJ!nC2 z0@K1{;<%@Fw%j zXOUG~0=X=H_4fM3X7bjPaN+{_`bGID_;J?9b-IyC+)5taz^PS*RyuUe3Fl@z#Iq;b(Ms99y0s+^fH;&IKZGV>R?aF(8<8iq!JO}%oUVA^a z&|6T#J(gSM<8t+CC6on^xMD}lO$0|p1!5|RaJ+{?$a)@sqIny4jd=2!1T{A4}sus>{>|r;qWR7PA5%*84GhcgGO-LBa|LKGFKZat3@Il+C1ikgV&upDZ-t`LL}-Do+Z{x{ zzW68!FA#hF_9EL1+E?RrX3)hAD9bxII2ebD`l1o=%iSG*{`dXd*9O zW}zBOiuso(-3<|b73`e}i$<{Av?D$LXUfiBzgkl~t(&{!zJi*oEM1rZe?L`_?VF{7 zm`bPB)WruHsl!8|M>+6Ee=lu3ZjA(^k9{p6k+rc4^j!>L&=N4jkQUPEvHmSHIRPR9 z;9pCV2}L-b{~B!Mk8}6;um9(z%J;yUkDXYiQ~0oX#QUwm`N{5Fov-^P*TzIWfb9kp z9nJpDyC1?O2@GahTVwjQiJeY3b>FnE~xY7mncgRpFl{@`(O8y zf3_bfJA2&xekhy1fBF0l7P)}G$?@jK8XO`SfSHqCgaUEi+h7YL74q8~UVneHgvY^= zk9CP@y)ZC{ISNx#J;3|VmHD%>xKYmhPbgBe-|s9L*SZ|yn}migF75=E7g(oe(dsT$ z_pQ4kLX^DSp_IVx1h(W4qj5pF(0kky(y8yDI*ZxF_xh+pu#Si(MS^fEsfV|?ZQtKC z{SI$B#T!Y33{sk8n4@AEmD`G%2BJr$&Q*wG?S#R2E=3HNIn0o$H^ zm}cfi7#J9#c9le6hA$?J=VhDIQzS%G&8^x~HCQ^d5djfA@X>B`Xi^j=O}8m%Wq=nv@u@b)f?^xI9;dUbt2wpNDCffCLnbg`D~U*bOG}TG zgvJ3aVW&iV0{??RtgV?4ws(GhzLLMdRiir?0R8%ds*vYR_9|+?6o2cP$EN-GJKTgLG|-kRutPoH5~gz*5gXe}lnH3|?m`PLbQU{0b(QZ?)ug7>{7Haw`pjGTIy%ZU zoIjM5@xs>X&S5*P^VJHyPnaLY)e-O8&(-&pji`>^+e@(L(W26^+uO}8!p~)S$Q+42 zRN$m))*&#CMgR(JZfqezK%b1=-RCRk`SW3%g4#cfx-B%g=<5z1fd0Fp4)>DHg0DlE z7{9|Zk+*kz-;567L-tnIKm2k(WGLFF<2b$vDUOazxOl{0QTVDifm7yqg3Gbc%+Mw{ zNqZauNfuIQd0Mp3$~w@o)}S7@F*cZFBEFyy^Q%uxR2d$g2%wgof{J@1*&Lt*GNfP|+GYLI<&uo23d1KfiE+wd zC)A}OUl>qurkw{++#h#uklolEU$~9g#!b=!E}5Hm3m-cXFfdw2#p-9{0YxR7*Lmzu zC?!6hr)-qDw8q~qnpo8~Ut^K+-Um1QD7F{3yi7iuAE~Nzy7g|p&UHiZQA;OsYq@~l zC3}fYhe&!PF9*?AQQM~b`|`%D$GVgKSh0fxk&jtFbXg5HSi|40)|b0IzvC+kIt>O% z7La~j`b<|{>c4co66=h_j`X5JU@a5?Kmwx23!p!N)i@v}&wKd3(5GvZ@aCp^QWCzY zAhqmi)T8Q$&r`UuSqZ0ZbJ@(QGOVKsJna=;W@zKYf5lo#VzQvENF2H77GI@K4>-@Q7EJGL5s~@|KidIwAXbrt7 zinLU!>(?cBoRoGzAzhkG4=dy3kPYRyFDG|^)7=5!g~+5Nj7!IY%<>w*T8eYZZ)()! zoWse2EkWIx#0UvHKUi ziyO+%<+jGt=%OgcZQB{|;8V~?>XIFePFogkh3Ykx6<%G!H>z-&9QU&ac_%J9o!7=3 z$Mr8$$h+*tOaWcKKN4<}7A~BJhX7CWs`z6_i758+(#S(*`6QX+_&Fngildb$&#&D{ z@tMy4zs2sZ+mW&{C_J`Tp7|UqX{K?PgmkLgihu~;dnE>n5R#XZwkU)fji(MkRUVAkA5H0@4F~(IPI!$_-bl`@`tDu(MnzLvl}FD zz*kx(9qMCMfr7>%UkaLlut+T|3>#xgT<)0+c`?m=*@D9P(cy>nvW%igNlhNreW<&y z9zlVRvMKbd-u*iFL_hEs!1nEnSwg2OEd9WmApAS415M_`8PLs-c2hLhO5VkBm-&!# zZd;Qea+4eXGEdt!_>)`4KBn(4B0K>!4?^uf^%GbltBih6Q@mGAmA%xKmAMou6)6q?J+-&+4I)dA?+L@QH=Z@#^Ez<{VxUe42ruBuyrK7y(F55OL+CaN~LI zzeFcm2s`^kJtJKo;Nf0vbl%KMxXPK+40c_=M@CY7bSTAs|4hTC#!IxxOkV@5oNKI2 zP+eXg6VOqRIGRW6j_0ipn1`9e-h7kf8$j%OlqM{eF)++OoLu1UJhyRJ5{e$Py4~*nva>p^7 z4SXjf;>bZcC1VEvDTM!^Mwlo14Z05=VsvD7k7txufjX8VA}ws+Q{G(#L^hXPBFqu!PG>Ma-PhYF{9e2K^*eX&H0kf9Od&WedW>P0`C&$Sc(> z|2A`f5%_XA+g9+m```t?+>TKX!A_QA5;SB=HqSIpD9g+Dl_96OX^++~K4X>C-gEO8 zYgZgkjyK05r{&K`t>|e!P+Qfw^H&YrkY>DIwKX3`hpg1kiG8bkp!^sFioA%K7%vQE zD*5^I1H1hGRF(?YihOY#h4r<_JCa!prZ|rrfpL_wES3P7GPi#6-R!wI4n?h@brkQt zWX6$Ihm9${P3Qp7R5+Y+hYfmGbM+{gI+xu75{kHPdIW}qE1YDu06W`1C^OtO9h$rK zsy!XMatKJ8xlgg6AJP1QM3Bg5uI??WPX1lrep(1%SW?uqQmvqzR>W(Nm2lMVMlAzW#VqzPBe$Rt0UsS5QqcD5u0Zp2jU$k+tYzl zJ=ey(Y6X)IYPibdg-nSg(6_?b*O{9wkEn~Wp8i~CX(^Ju`6M3Qp2nkF-_zJ48IC6y z$KljP$Z#OabBl_yXkCgTPj@oA;GWkK`8_zqp+uYz$V}{TN>|5niUfY%Jg|-;4mSj0 z@tWxtA&#sXdQZJinNhH4PnbTq(SS|NgSp)Xpy&X2-`={Pj+h3H7hQ~b$}x(c1h*=d z7gBHcR&!Dj-wRVO@<-TUv*QiU1Zsg*4bKVcQbJG3ya5xk+V2>CLlE z2t6g&UpgB+`*3lWklVrwjFCR3weG_q{!X?auKRwZp2~`%B5&H2&AfC|2EF~l#sC@6 zs}dMGr1=`>+>YD4Uee0zOFMNcJ%HEzF%KRI#Nl2IRZ;h|rt#R&8C`@od{5GmMXVT8 zf+pqBySpYmTF=J%dfTuSBPD4pYAURakRcDk-?&lmQ!)_eBTfLs%1}{>^6*YkE$Fj? z>W4I3T8rn09Cu03C4|CvlqA_ya?`wXZ!b}eIuttEnQB;FmNbBAb61e~#%~>RYB(C@ zdUZw*5th>_*mIOa6`Ct2_1HVS*5)Yb25HqRt3S4nKQ>v|#ke&*Ppcg@w57|`Uz?#h zvs-!O#&466bGzVOw+KLY51mp}AezlUV4Q@6e_&v(muwtTO*s<{*^ZptXP^OmC(K^d zO_l8(+BPh|(SP8N@#T7Pq_BVqqCW=WX-7xB0cRLqR$N{zzt?}jb@BW$jRn$o*>%i4 zB7ujVwlm)3+3uG&rUZA@u>oBiRqO;I9&q6X--WiRb#$< zB0L9$`B(FC+0Oe$JYFG@ zsd>KpMs>k>vJxh=knbJ>$bM6JCOtV6ILdm{W!4V^!W@A%B?$fgXmo>-^+mc29>&qm zZy$o+EFU=eB#P}l*ff^DefeVI^1<{Oe#P_p8sveNUg;%d33f)bQkzK9OgjsTVY)WzQfZNpR^d#^ zO67RnwQMj|hmksa1`!=ROy|jTvddMV^&OyeQ9Ew&L>|D-Nq*_>53D5|s(PqH|E0(a zaC)a|9b3XTk(*16hYL)VA=QW<6iN6fnQ`MxFck`*xZ>^1eROuKh=5ipmkxOsG`HD0 zI!z*}go|VJm9Rj%w1XxD*rW1$qWp(Huyf%1{M1^UH`~+Ct)>@I=p-*igg%Fpa^Cfp z3^(fYF|Kr5<-_ku(lxuzZw67)Q8f*Y1^u{u^2%uJxzh!STnG%Im5#QlMB3_Lh>bQr}oo z<+L0V#^R5L#fwmlx1nK8>5>ZXJaWp+4QL#+ z-Y2RtL8MaDtcGiIM~o(?H0&3dFQ{vsBbl8%4MMIuWqeQti*#gnZknS=UHy)-OR{0g zj~&KH8UZHYJ(Cv7=pJ`Nf>oQzLUwWR>@mvIBAcq` z#*vVilOC#>5T8@&31&Iz6oa0O&mN;AU6)JBgIi-`W6j9CRGUFLZmfSqa})@QSYy@* z1M0l8iYHi2VW*%m7=|!>$BpU`79Jvcp=hVCEvzNSU=9V=p^)5VO}D#P&$B(GXM&)Z zcF$wK9xnVfKhFVIAPpX8_q2mFTd8^J7}~^^Jba~+r0xP&H|wr`hLHqR5FoB4Ixzj> zUc_GxJDH6PJR&ZKx2n(Ic=27h0_pZK$U{(gF6Neo@x})jH3?ersb6F7C1@oWEq_U> zOu2ZIR+lE^dnJ?bjt=(gwcKY^xs&e8I&;Vf3WKAZh;a=>P;us;X(wag zP=u+87PDX;tHb>hJg$dOv4r#{bQ!Hc_+$hAd6im5Qpd!e`YL!PqhO&#n|S(SaMwelc>vS=@M(>oOK3cKmM!)7l(tii>vURt8Mo^H}kC09tP zbVg-}9kV@Y>!}Kf{Bn{u;V^{|f1SY%3!6il`F%tX z_^gwLMU)D@xFywEwiJ_OTChCf>JuoVq9H@Un=#S3k5^zVc-+@~M%+b6MU9LmAI1aG z^g=zf-ktvmM4!@V|0RQGn%Hk=rv*epehsDu@Z|?u zXK>g1B&Fd{K!(_+%#Eq(NzENKAE@LvPXgHq-i!l$gZcJ*3>WE ziPq{|_;_B3qB_Do=VD6ihTB>ig>G>hW)`Zr1EYn5HUGcx;=0m%Uq9WYhvbY$Cf{Z1 zMMN~NpHm33J!BcuYn~j`O}iKzRE`j_TOXcF_joIOQ zAkYl~sTodlThICdJvmrWk=WcZRp~%LCg4F?-fMd82$alYe);Uv;c@l+3rWf*C;-&p zC;ZgqavDcsYC4Tq>7{e^z0Fe%6$~Wo5!}JAwR%Ok$C&}IKLTd3ES%qYC4Qr2nD7(7@WKJ{s$YWE~YO-G4Y8o&Mf)zJ5&00E(eZ^85 zxUU%Z?KNtbSU`f;^ngU=NJAQ!**CuFbf8auxXzjs&krL!vF>sKfL2${jHc8$Y@<6k zIDnXn#EIR`(G5aBHQZgWdj!#6oeDLaM)noOcHkxQMLA*K$y9uTBN2oDIz~{3_poI? z&YfjY!Lx1Wg=_?B@Zl8%l8Z$ibj{DoqjGd_s-vggoft8}$JMU@8!GYbTQuIFy}-jgG65BM<=QU!jHhNP zj*$drQ)oQT>suR=>W@2K0Ma_!oZe-#dM^ZN^cHOrzwzvV#gkT${3yY**FAKKZ^ z8w_~O5%OC+kpCpEAKH&EmRxgJoj|hIw3z(m`S&3+o_h~;)9IS(-7P;l zY<^NN(p_FyynQcpOhN0;FOh05Jq-MQgr}D`X4UG860UD<;D0M3zoc~}2Moxdtc$hr zR2@sJxpHCxW}R2++47a1w@BsNdo3YHaT=BS{v+?gl69HTiFuKB1a#gMXsN={9<(0E z^8f(dCo#k*a)(Ay93=I)pXGka=@EZUeBtUr?^-aivlUQE@Y}E5n*rs^Y3}-p+DEtySCknN|Oy_7yt?i5tg0)7v798`ajYS*LsWR$3PwdK(SS zY6Oh_Kx_TzH08ZGactTDF&xin`;f9fmpAvo&f5tBHO<8$GXQQ|r4x%StO}Un z&*S+?H8m$SKvd+d)fEAAUlQx8ryd^t&IhBqg^64N;C~@toHweydELiVy4GjA7bxz~ z8j2k?N)Me{RK{^DFJO<{ye$@1$t$x->R$vPaa>v>jX}R#h>KFQ}2^ip@QXtq!d3LlK zbsBG=!Ro|^FxT}6ikkhI_y^lkk=-f^+kusjwtc%*yUPa9mn9n-L-4IU&Syf-C%ZJq zWswZ{F3P)yjNSAnL%6HwNRS&1K7z2MDFB*KoAhe?0NB-Pz7iE6ZS>u&-Mzp;Tn0mY z(~ykBWi=P1dH7`kWavlaM=-fzRZKMk0tfAulwT8$BO$H|)DI0FaN4+-@@3w7CI`yM zx6RKBAtD5HY8XzI zcd@`O`JX*!X@E~5!s#>)wqEn_eH7L>djjIia6PZ<@SLJ{8TelU(F}Vh#wmmL`G%#4 z{zT>E(-6@X_fABP^+m2$@g_OX$5JDom>i!!am4Rnsd*u($z*Boez$e2vza!%$k(b# zmFgUdPps%-l|j4<{ZsBKY_!aaLABdGSRl3zIAFl956EmNQg(c1+y~U@OXs}@KTTdE z!d8#S2y8$UuLy|vO}3He@u0lZ)Y1H&&EkpHlt#J&i#mtZQ}?@)J-yl!o_o&>4VSxl z4M86lxVf7nVo9Dpv84B7BLM^M?PjTVVWz)z4u5igm#rm+^gj0Lp9CfJ`5?Oc<&4f? z?<7(-W#8ia1vW5xbo{lfjpZE%i@5)nnCXRPIWaMDl_&T%N-An<_+T@00Xzw|JWcc3ycgVC@r=s~y|D1aOx9W)jNrQIRTps!> z$0x?PcPEYU8K4gz7+b1}y+M11`U3BbFw#AGH8q!4pGr)PHBKI(zIcZfsZ;*BeBd-Z zVS+i!wb{IDOT%6b6 zLW-0cvt*EnC15h;_sw2fY@G;b@i-;Cv}|CIrbRM`|I1kW=e1rst>`jaV};DpcQgKU zR`V2uoJ@pLJj0l)R1GH+p#57Ua^jvnNLdB%dK9DfOiu!OtFujpxZNuTQMw3|7J6b; z4bpZ~(|ZAjfdPm^M&zxisPK70;J zNXW~}_bVt2At47azI-|JZh8tso5N_6hhOz?wJ^wn_}`-L*vzxt)Vj_}6X_mAF@!^j>R5tt=|)rltnaNLSgds$`6d4DPH4v z%Pb9QL>1H$jme!aJ#MNg3m3s6jg%C3D$ph~+x?eO77`E%17)cdQY_>bSQvDVjH_Z9 zQXQHSW4Wxg+>hH#yCMY=rKgo>LVoA52oBHIoF45Du#{Pz?t*M=-$5Z{^F@|!)dm~6 zOu0*V1wk#n*z5&5>$IR4p?GS%nlq)!X{I zSOF+kna!k_`L`rQpVC8Mdl%Pr;|C>W^2R7Eb|ry3yu`R0*7;bnQ(9goaZDVG?BxiQ z+#_q!JLE{Mh&iZ`{#^?W_-bZpz7GeVUnZ80cPg858o+;urA)u?8xWOT;cn!X?)$Hb zq=AyElGNBLwTHe|JXHT{us~p`z6oTh+Xqv{>znm0j*YSFH9FRgng@ z)zUXda|`Fox8ONdnl{pEsr@y^kX5*QZ61 zhUtFY))XD}CC=hH9%c!W@r`9{=QpMtPnXYjs_7y3Yel6&z5b;WcD~7kMR4d}+#Su= zRpocw9tPu}ksdFceWNkKRCj2?t?Hf`^(_fZQ$Yw!Jum;%4f+heCZ|(_Uzc`0c}Rd; z;!t6sS_A`#ZxSVE|APlHPL|}LY_r69h^pF+VXWMp5pPim;)-<^HO;0(k=G|KT;?p& zn`5S4ZP#OAoN#iUccnhueuUGlxQ7!Hm*|(i+ey3a2pSCC*2*B z=Krq<-`;aDo11WWKBje|Y_M*;bkxa}$D1gXwsarOOK^O;f|Tc@MwCkaukNS}a0{bc z0!OFP@>&FG)VpulBj0Zu`yE!{NIJaG#>##`Cz#{{HZy`O`X$xJPxR3V=suHXMPSHM zOCR2$-Rhb|KCsv@A1=Nh5KcCJu`vI6JLC3FZ=~q;=V^Doil2mUiSV<7C;J}F5Z$#! zjWmrup7apW z0>_%m&M=(Oqp1vv^LL6bCT;b+pR0byocpA=23jciXXHt19OwmCkOc-D>= zA5Q=p>sgaLzBR9Z$xywuEqHr8!cqDa`;pnuShhWXv}1i;4Ur}52AF6G%wu-*_0fT0 z!i_1ry6Eh_F2oI%>_uR|717{K3=9ko$JFizD?wkLYcomnxxzE3bM4v=qB7>ONVqIL z7xa(H)%8GKp>~Rkkhp@e;cSKI4BCF$?a-E%n&T(m!F+vQ)PG$J{Zfc^BPW{d|hG%R%Ed;t{d!kGMLDuA6H7vH-ejK~np6)B|8?xkSrywC#1WdH$tlb^u zf8VADWD1buD*ZpRTpitK-(8-ui2^}Ye6iS3MLTW3-j}(b9uRK@y`7!A_;7N^dcKN# zaw}B!+%6O3V*PDOq?8(z-5t)*1~9nno5*AlrBt;=y9^>JRI|LaE{y^s`wh_WR@j8VGs2%RTDVOamlb# zJHp9jqjqMh^0xU;VRo4ZC$)IXdj~OsYQZ~`)q-agrhFf`VW5lFd<~M1^eD*s& z7Akr9I#4XL#_x+=iF6fiP$$(+9B~?H(|)}HC!wCf-oy%OX)?TSbDcdCX{92Yq!qZ; z?bRuQp>4L)ui6-hD<=5}Obx@1EjDri{jN-A)B)LQHUqSX-ksg2T0Q4tM&t1jTWz&* z@g4tt$Oj+>vu zFg6Fu{Su(uG1Rlw4%*n*k?p!!kO-0zlU~DJoIisT#?h$$n46)(H8a-;$d>JCYzBT2 zXUWvqqX-$LzHht_r2d!<5D2vtpab$aP%Q%SUafji44&)n{6M5WuhUW|y)?)ev!1Xj zDfr-9?Fjpm{vHBp3|XprD9xUsVEYZAtAAUR4D1`oQ~$Rqq5cnT5+DIAqCc%M6_Mui zPkV3nFPS|sU5NgFxiulA4zPPhzGOIA_inVJR<&IcpjpdZJF6&Ods^UiDN+Sss`#V- z-Uc--L0h;dim=?)4%r@a@V}3&>z0b}ym9%y>k(gYc}l)YxwWe3~68Cq?9eekI_3p;Bh4rks>e z!~i|XKlzsj+8Hsw$&)D^3g)uEMt!Q(TzSC;knSP#!H|p2ZGQH*;mT*b+zr2YEis{ScOlNNK=mm| z&)XVD(L_%~#-RGEjIcnEIr&SI58h!3}ajt}$+r{$CsO)!D<2&a59 zUpgS7GUzUnw9=?LL$0@}oX*)+6sUNW1>%p_o`JriZio$23N8b>W{w=h#U(a$7v2p^ zC@P}Yp+Kk+(x8#DBC2gwt)vn`^8TR|Q}sqgCjn$?L5AWZJvEUGm2u^~J#GgpxhHV` z@1QfpF#i{d-5bwbsU=;gT2`#fm8ppx=s(Pw1ZkUpgwTyMKM9zaPr3~K#%`+mWt@-R zeX=Vmrd!{&a=Mmx*Ez$KZjdk&*|;qP^q;TS5(6KVk``1qIUirpOLiu$gUc~yH8 zkLZkX*T}oJQ!t8__TSe|P*_0!)(JC;@CypS1g-Q6J8w6KibHj6r{4l{Vt6;rESGc> zU1HkJP$ZFjkgqJN`SV@5Gu#&iD;;?(35r;ow>pQ^u1Gnpe4dMGCjFP<2nz$a5Y)gq zT6=SB5j*;GdW&IOt(n<@rec{+-g1$J@o0KXr`m^syTs=mp-v~0F?}+mD&!Bk0(2Jr>~$;P%ZW1!`SV|oh$LG z%E}x-_(bqi8`#bD`Y%J~p?B}07tgA28463qXQ`!K+OOXI$>l5kB*s<6mO=XB$F26} zV3}y`w(pmM(VXIWnJ5vbB84a-61lkKT}FkSZwW6x#AIx&e=o9i%4^V0CfM?+*oaOw zD%0ONWzeq9xI$jrT5n@4dp~!I(9(6?$e`#k#4B_N$N_)|jAle;10!)Ti)p&d`L_j= zUYTxkndPsa@(#JGP(Og)WB^sYH+{ME$d@1C5M)kHKTWxdn;VhoHS(<2liXlEuu{Hv`XV?ma3Fl>45fNyIu;%$J|2C?AKl+v_cYtoRaXz7X-2hYc?$kvqu`A9(Rl<`@+yV!i$LDi zxu|JnLFKu9?DyK98l+@=tIT_x}H@xwn9dvU~eR zQA{LETF?g&X_0Of6$YdkIz&pkJ1tO=a403EV;Fjd98l>-VunUQx?x~w&c4;>d;jZQ z-#O!lVfKF=RN*Xw%h zAp`+8m{}>*CjOL zO38_a<*N5Pwv)}A38ChOr=eJ<+bbYWCp zK#}XupC)gZBvV(UuRnPiUhU^4WAoTZykM<_ zofSqUj8e5IaBrzu@cZ%4n^3GHVY&7c$Yo| zMeR{0&~R9yd$_32En4Y9xyO&KwCkkBz?0BZYjlDPHk^wk7)`m zpnID6YJR*5rb02TGT$)VoXLv;aoMDAm(R<2%EMgP#{$qtXRy1wlg`*BmPRq!n#vjNemP19`RUg#a<)={Ujy+kY-!sQ0wSxbaXkOq^HU0 zto(T=%A&GK<*%ZLB}X*o+tyhlEC`O2|F% z1YJ@d-HYq*&e1o16D&7}g!P6Nuu)(otbom;?lN6mj0EW;2X!R1(K@e|xhL}^nANkC zOu{v1@Y#3;aHp87qg-yyg-(rnm4rFVb>i!Z!?=mV5V@_)g|S)E5)3d#v;}lN!<9dI zELKl*W3vh~;U#l?KAnlR&oz8VT7tpRU~AupOZYSqeTDug&tdu*4k2#x4esxCEQFb= zSJz5?QF?+lc|YpT&ZBQplsb15cyEq=qkh%&#oPwc?*Fi`Z2fAvg5E2mX~5Z4bqpne zlaEu*hR&}WLpJJG3%cSPZmY>*t2mT)o=laofVvZ z$E6i6 zhynPj0YV5LLOraOy246Fb4H=PZ1>8ou5NJD@6}Sr%%Wg;n?>lBLiBrj@ky@3%cZTh zPT37@xVho;ESk0Uu4}YROewayCC{f~mMxgcg%9??LG?~) z@^ojt+WVX^HOt1eHUGumy0=xL^NYw$5H6^Jqksi1kDj6Jrcu@fn(E!fXvkP+D%0CJ zCyEOptzwQJnzz!9PGy^yG%74kriyLS*nsJ<*nD|i#z}9}Qbi~!&1^lDUT9k%nsjOA zjTcTokeQ*2Ifo22WO^7a(zDfe?hY?5ylg)*6x_KgK8|M95NtyK>D@tQQ~ulx=hryBf@tE!CKQg_cz$%K$;XSH!(mYik$!a%WG zY|G*g8>PiXG;S2V7JCg=v-WHKN*1KiPamv}Clo|WwJxG+UZGtZ#HVb`9~dR)@tSrs2!Ek3IID<~=Zf6Xzu&xPMXg z8}>u4R!;Ufk@>Dft&f-p7`VIlPs|G*S2U(L2FVl!pRFM(tAHGfhJZhL-}0~r;qZf) zb${wR-ML-=aihk-zAv_e>WK6JCdoTh?pfQJXnJopn&wq&a`}w8S(FJ@@BN1lee)$V zQt$Q%-gQgkk3zMPP^@A%R4mmwe+8E}o?aMV)>oo0SJH$6t|Hr`vs3(so8j}=dJ%4V zc}n8SvFXw}oi>Bb%2<_yQ?~CDB8t&L)FI{N?v$kT_VKm!YF~{Qg-)xa`2hx5pT&6@ zVmkXrGKQ`E!6QlIc4Y&n;{{wsA}~5=N!&3Wz zcO{Pb#oO$x9f~L!k#5Yip!9@{et;okYa6M2CF9%lYZh8rz}*GmYb{@7^7Iymu&je) zU2H#QEl*=KJ-BkBC?eh7a45bMwYj<ItdQ z@mSk^=Zy@|g{4bWH_W>Mt{BKlX!4Hg*txEUGzGX_PhCPm$-X|6_9929E+TN(Ny z`)2x5Z!d<49ruz{ztnmrL(R0dAC&8Tz{1K7FukG)s_$1aw(t##dyA87sCWF~Hon}W z4!*6?ZUXyjQS2(bk;%Ooib$&c+Kd#Inx4S>ELSgGN+FIfTdn(65t+JIuxDL?I}Spp z#`4QfOH=@1%Z-|MqmX*Tsdd{1Ck(^Yf zzXrjHe?vu_#V$PCg*jdW@xd zQk9SS?py;3_v`8V);hKB)h0*4k45`68G)pM3KZKm)bcIPpyqbf!>`L+Ta8UdXy!Z+ zE3pgWdpPAy;YAGqouUB&VSP*j>q$v$0Jv3P)?FFE#Nm7A4=TeFVEg%Ca6Jyp}4I~d>`HQpo!MHKsw(y!yx^Yh{# zP%#zd*w^{hGMdWU)a{`OK-+vKuNW`nf0*Q!%OE32=WQhf6tFnjC>r&?nvr-GrnrDd znK&sI59n3n^@%Jd62gw$|zRMM;-=xPXVggAV7acHANKbLmGp`pT)E`kw& zgO^uhZ#x~1-(J@GXKd~3Q0$eUaTLDJzR|1tW_O^Um}N(bZ?AR}LsVu&EVfWH58udL)z#QF z*qj?)J!zX?*DyWkeUDV$4}yUCs;%Li3v)$R^h*3Ahe}IFdh4Igu8gzk8oe2$4(jHX z3$q2LXNLf&BQs7%;HzFX9I#{=JduToR|Dm9UAhM!xj-J3+?MlG`6E3+$cUlE~M zts;7o0BTJ=ydzN1GzSYJ@G8g_0VfFijwik#$64~2gb?jA*XA( z@c^(8vi_8;hkg!Du$AigxO~$}9k3#kPX(-#-I(VGsezwwW=Bh3uv#sY>QZa#iIn@Z zJaHkV;qu5&u*Q|9I8~(tN2ZjSKPl2K6e8$}({_#MW2{$3Re@JJgz+l?QDPc2${?(; z6~{S_AITi@b$Yb|A=mhtcbd~6`^(@+q7uCiy>`WTrD-_XFAt&J8*^I4pNh>pQnC9F zk|$OWMxLIpAAk6qo(qJb%ApCQ<$3&$>ue*1<-#5pxL)_6?2pnZpB^ZRq%K<>*{TBf z2;HnRpAYc4#jO03Y%60_;rY^>3ZMx{lT~>s*4hn6f0=qwf463qKNPFZekUPzq8?t)t(Q4Pu6$bv*>}!TH?L?s%8F#*22N zMRIR0T+;-w#-MB7L`^u8L<&fV>SG;}jSjbdPO$iiEtr-ZQY`jsfw-^Kl(?!_=3fHy zwEYQ0h1a;kVtowkj{GT=+4I(uq!i#R{33oEZhUkXzznw3`35z<{j8!jK#*iQcEtu4 zZ(FmMu1^;ItEoeC5dtGuy%HG`au+!`II>Itu8q3%1+3-rD7M_W^7K38Kn7+ z^QK9=(oL{Kt%+P&HOc&PAY>7=7xCqXqZJxNwFB&duWn#qAUM@@FY>r7fN{4s^I8Li zF}KoZ={B={5Gj*Mc|J@ucG$`*3oAd^f5M#bX99_)OQm8Ll|*U9k1FlK9fO@P z_3zZqZ(GV#w59wR^8>{$^yevgVDNV~jH{%GcO!H~>fIsk zpX#^mh(T3x2L*s7ITsp+Lc8rV@#s~nOI5nx*`D)5;u#<@y5%b&3pgoUU@=+u3}|R% zb*SS3zO}W@1Hp$N_x!lwJ+;*gBhifnzz zVpj+79U}c=D{0Mi}ED9N^2l+bgM7M=nZ7<41x-OY^Q6xI@DZ))NZRHxA_?oz&UxzzTD- zsm%o-@3m4}RA+K+wlJ#NZ3&E4saZ5=Lhs_TUi#0p7q1Hi2}dm%E|nwbn1<~Zp?YZy zqgXK#eu3{ak3JIMQ*S-UB7tWNbsTypn2IS!t0T8@d=vnkc1bdlXoY3~GJ%xBZG9X! zkdVG5KOJW))q)sY-f()^zMt&@w$$0p5m9rDZiqpFJxFsk^CMF6r=Nxaqie zeF4p|H=b&qtFaF^jkx_NfOg~9zxuKNdMM6*AP>zTjC{6R47~;1Wx*qm=KHGMX&KdLXl`{_5d^N+PlPWDGj#LTn^uE0N z5QNr*X>E;YE=x*3!LQo9yjBRToJtw*GMq5|fXv`xdKGbn3$zyS1Vg3gh?z>8ueaxa z=w>KJcZ+CP()-lRw0@Rd)~n3~NR=RFGf%@1(%MiQCwzUlOtsd-=PonH()VFxjk8%- zrqh)gd^*Pw(28o;!Z+fCciTi~S%lV>d*P=q%;3{oj`lW?Ijs>lvGks}VlVz;J~@Be zgIW>WU-;G-p%8$OnQR_Q4TPhRW9+jReH8VCZSp|4%H!|#yye$<7D7XL4n%O>k$!fR zmqYfcWUYb<#x`u6Jh|arMZL%NJX(6)hwssmu{Ri6ewH&fJ!Sz)agzlg#%-PrbpMV znFA>j`vd8JdjdRjrQ!-^9VxDLI=BTLK z50j|wldO>^jaAtR-Bt>NFMZqq7-=@8;TR4QVL3eIHZS|5rNhH7V+#^GAV&!+Vk#wR zKYjXiOH0c;2yL1H-UU27zhH5ZFBqaCys;h6m@vIH7YrQ4iGtc?L!)B(SYDL>Cvh#H z)wH$j34Fc`Ffx6)r|^gVcplw>XS4msAN^OLSZtaL;00L$*y5>D+6 z*|omc4weH|QD(Ei{(_1ceBn*fB}1~nfC_naO-7fhbay1~C>J1ZIq=O}xw=wrm=cfpiPW^sXqJW?~FrlF67x;ugDfxW2OZ%kUZ9WM{WT z>1`sz00vsnL}@-INfKE1J9zXb$9T}m-vVf8|FMM%+JlbcdzlLU6yMDG8(t3|Jp$v- z;YDLlzp*PC&0%=AGf5QS;W&s+vXrfYD7i{e@R|Y zR%a+3?3rJn0@k56();rJHJm!y`9_hf(_OQE9S+3A5`O3lp1_t>w{o?D>rIOa0^aON0;TQ#%XF-V-GyJdW+%!-fEexecO{eqXGsNyXPL0ZRSUCqQLxEZ& zC6;Us@{+_=fK{@Xb?k_TydfLFH4^t)$Ww^sj`=b~LIP|1%eP16xl=)nyyvX29U%zV z_M8AlMeg$*`RRJBj0he1ZVgcY(u+3uL&>q6UjN(6T^)R@Sio7E8!#& zw*Nu%Z{*8V?<_f;0en^XaLgFJSUcam;_v&2R%_BAsJ(XC0FmE_hR;ZWP{C_h^UP^~ zw>GuQ5c8zvp)n~*k_g@1biB5)Z)QQwPWxB})ButQ&h*y&D8Mk90~uRA^tN`19|YR$ zUI-X=O*%{o-qOx1beml{1l*~F)+pW_U}acg*xx^eXhAvo(Anu$OW;87E}Q*MKfu3A zh4MLX-<|`xhNyhQ+LSVHx1xDTFf47yS;skmA3NO>fq;Lh^ZQg%))zs8LEG$<-8W2`uxG&tXrPq5#Vd_Z}*dzb@olMj!7)aAvAnpi1gp$L7gTO#@L(AArO7j&pVWHfgRWxCrs@n zca6Ho{wTR{W{{n8$a(2Acs2KGAWLhUPzYA>&y8SDTM%praHP1BiAkBDRqGS1=AGJ1 z6*>lodz>&Y=h+?thv}C3w}UuA^UUw|V^3ZvXav)pc+qN{SB!1@w=McPoPZin$dSIz zuT0mIh5t11N@*K}p(z04n*%xjT%v^k#=cn;lMJPZm4L<0Q*-%bBfwKAsOOc37?Yq7 zBF4ie8Dy7Vwt}0#tF%xT1vMiZG{`)_^nWKFK5@iz2wSQ!k$B+v`+3*T$4hNz8qo?dQ z;CkI^L93?$VzcY?(ut{L@B-pjzm&K@{%xb=pTIxt;KFdtYlt&E#%Ta`i(>asj$8(O zkj0kBEQrS7<%^Oq(C?`rg^av;0FhLoV5>gsAm=e>qQMB}q2y&kyB}VQM zk+s6;8N}u0vZQK8rdSpyjRPK%64v&kDB#imh%Pz1WccT?UoY_VzfKo%7>!{C6!F-> z8VZIq*;exTUWPKdBY&_%ZOQg(?Qq+#gm*tM(PbxT&dh^Ao0_PSuv7qe;-F4PKDA&= za-HEP5~MiuqKh*mqM%l?s* zVvs07btMNrODUU0%#olLCSHmX@j-)*c3atlyyQ+AeaLO~L zXTau|{=A^Pgy5cBPZ3MZp34W+Q~CfV&_SsAcf)fgl1#hM^Pr2Mj^oLU1dnk(L7?Bn zlbn2(KVcl)eG21sB2vh={b7kXVnOV#0gDBLY=k7sjqYDw7X}MKQ26RYSIg_7x({v) zLrSy~?F)zAW!pc1!>+_60UpeKrWzEx+y+Kos{ow(3$8%Ts|fn~GS0)m`*mn(&l2nY z>|CpH|C}eE@5Z5>oShYV;>b;&wLgV~gUo<7J=185o9T)GNr)Fy`1_R&P#6On9(a-A zu$qrByF5o1wAGYgLs*uU-k2ZZ9owTgG4U?a@&nd*ifkh3&BXe-!NPi0LE%18r{Y?t zVc?IwVG@5PjGrmN{Zjie`fFX_Nx;){JQ;II1x2&5N(-~iab^2EpClb1Qwo*S1P*Ei z&35&eTISeuc(0=d@PKh>`0{U8)>0LOZss6um|#7i?qt%|V|C0A)}xQD)Un%KGa-m= z9Qt&oUzE^+d@``8P`nYPAae^;oh1hAThSx#ODJ!_4BSWFG?RqtW#&kFh6;~BtxSV{ zmA0%3Bml?BGf1qhUa>F>)%T*Ja z*rr{~LO#{)k)_OM+>-7D1`^^=09x)yY2 z?Eu#qT!C(#>Ia*FnNdm7*P*`V8&#R0JDBCdtODjtkoyjRxMRhIPz}Qf~s^9qliII4f z$%*tG+LKB^Q-of)(vaV#1yt2EPzF$S*!&BtPej4()-~{6=n2#}uuOrLeOs*`zx`9N z&ulIcV1u)benDSEIM}va%;we^HpTARhR`|c`z)FAaht!J*lh!fu4NmjH}Muod z0_NYlRf1BEhMNn3pxO&m;H@TdW&t&TrrfErtXo*(@4D`i)B`Lb)HkPbP|b(%{g#vN zA4bmA#E_H*jIlEp+yFqV@$G&PJE4IoIcSy*Xe6hgfyJ1!zpLirz{ckGm`SNWJ+z%F z^<1CK&d$CqWVdiVVDaik(??UtnYf#-QUF+E5JMVxD&EUMAWxGGJe4+3_yp=wBOgSc z{O{$xM%6lCta1ccqXCORWNUtHos246RT_lUL}fn6=F$mR0LUncN!mLdY)$`sfuIZ0 zHh?#q(F;aUYsK>A!xWn@b5ZZT&0|Y+b$g{(m@4YcFANTTFMnU6f`8je zLP8k|;MCt&pzQyjzG}cE-{*Up3O26J+Tlx3Fao|q~egpOAe=bIb|Ml{$xDxjjL>N|t?I~U}gH31<=551g*T>b3L1x*uUd*#pL zGLPeLYWUsjO~&J^_BRHVF0%fJ43oNZ>7r0;1A`+iN-xEEi1Ynfv(mHILo7qdmPaVg zObw=9@^K-Rw{U!(<#dYlYWl#7maAyjrAH?^PP3dj|L&*QOGHG(H`{ZpRfn(qV-I1% zH{(}5O1hfbDeFYW4}HgyyF_$@Jivdm0i|yHy!}ThV=Jm8qB}6?dwc-0S&QBHegPp~n_tg7d`xRa$AxJ{$0zS6hTlgegeHbQe*2NXvcqYn;cV8#7Hrk)@C`Aun>aR+Jm&{cPeSc);HBJo~X8 zg0TBd7Pg9<@VqhaM?!l0{rj1t()-o-5rWe}i*{kB?s3xlHQa`&E86Jy z?2G>@tUnXj*XKCmmCVNaTL;7o1#F>Nt-kNbpv5kecBt1Ixs*B=j6xy-QWRps}r z+#$Jbln8)$}?ys_V$J_#FLKOjvNlK*)JFxj%!H*d*Q6Vi!6tA-hFTWrCX`Voo}F) zYni0S3ftRojC^m=9+PhJ`S$6c5csCtLeadvP}z=9Q6EjUkz@x-=)&WLqX*gpTNCZ{ zE=n2&Ou3>A)ir6X0!uYu+j#o0{kjzxTMA5jaaW~TNZnoXZRj-EkdTDL)@im~u5@nQ ziywI**~|JzVg5g%<{RlJQQ*<76#7e)=FJ^RZe`;7;i`|wnz)i?aHhSZxmF9Ix%GKN z__S)aMEWUyM(ioyXE_etx$?~B|13; zyYh*55L!j+Y=ejAV)B#T!$>&TjMVS+HDaY&y9D5pb~}7y*dCi~l)zIDTG^E;i-5lE zlk$ER`ubHvLn_0+B_U9-*lk}Kv~p;bI4ZVz$;+i6R)pvcUVi*U%rn%ct8VgcxZ-7; zXMTkHrWR|>_v2{Kxx7gCk;a9(eBHCRbf?I!d(8RP$3=F_7M!tJ`DZrGo0xPWT%@>z zk4ofGsKm#k8p#pY7B7-BivCGCK~qPHW2SJ`qk}A($aEegR!=A(-95@I*BmXf^WGrF z9!&V_QJT+=p?ITz-VHX_g+U({ja;$Cd$Xxi3_Felw7f37HclI!LU)=Mowt2vzqp1P zD2$K%O^D`^1{;A5Y|%;uBaV?;#ihxY+9%fX&6ZuqiG&o?Vd>D&P|okAa;FruDSfEY z8)&Ij{5}w58@~n{Ab+WyIF?)#QoE&x=KD$o5bSTHFZ1xJO|y^Ke&*E=w_eMj8Aj&d ziiYQ{(gRfE%7uVjq5uX#VTL5BZ=x5LV22J9-8VnwV&@5w!u*3q698h7i8vW+faY_ zpg=DzJbE2xu3EtQeClI_0;N>*-=&j2;yu9}wuc@ysa~q!j^{Le&xp8K#t4o=6oOhkFN*Mx? z;uECzuGw<63=mbo{ss-~0o%nR}9D^OH=e@O|&gV;(Nga#Wx(>k_zl?%}pMkV&wlQ@1%1j})}q#gyuSq5>a!&yTv8;F~l8{6VWL=OH(4K$OiFG4Ibc z@Mvqepfa6hZf1_iLJg)fFrN^lt@IdU3FlRAUOqPZ4Aj-yVa%%d$@8mKR`3scEj`~1 zl#e!(D@_~OIV^-Mvw_$MmDP_ieH-GuaVbS{8kO6pv;NR1{x0v)HaX+bFGz8a z?)f~OYf(jvhkNm_hZBIw=*MXyo$F$3a6*O;s*Hd8DeIsu5%)bwd zJ4!)(k4d9?2!tT^NxgXV7I%n6J5#Bj$qUcD$k&Wh{Fn7&m>2zUV~HsR4 zl7{}6&On4OD)eDw&T1<#> z*uzNQEB?NAwL^)LIX7&R6&+T#Oxk+N;HdE2zG}vgXGIz|rYCOkaB(r0)@bnG=QQ+< z`8a%vqy-_rm5d%475~a{N$VtLlt#5~ea)PZlWA=no`e-i>+%vGqVN82%HOtj@oj#p zlBT}p@s<8pIRy&ZqKeiBoRG5rTByF!_6AI$%JcEghe~mum@!=z*{ETUGqIEUEu}j9 z&-HwC8ui}u8RiklweBeM^Z^Htmv8MHDe6HqFVk9|acrCfdsSb_Da6DUv5Tn7wmabJ z(ayG6HY=C)^dBk`>qT<%c(#Few{Ejgsk~3fN<-1a9LkMpOLmM}X3Th8e^CxE*Jx}o zelMfLyCu1~Imy=$EEUwG0&Q>*81?Kr;;L6%b%xpeg+poA+0R+jIbfT$aIS&|nSbp>5*w3hxuSOF8X~f%aM(%H3s2L&PbHcpyh< zy5mkyoK=5Q!^gDPjcktm1yo=UZTKbkds=s&1Y{_hNd+0|Hd)mt>{LHRTN~&3qsY3WxfEWVuY2)U$YY)IJAJlJR|O_>uXxCJ zCg%}nGjl;jLr7h|15z(QclqQx_vi>JBfhF%XXTwjjZ|5V#0=PCyc9S~D}1i=Me}3j zMD688wf>rbi?#md9Z_U}KEPmA_7Ssk90pp+;-RE+h4? zHKvl@i5M*+xu?+F(t?pVMe_BI%VKG51nczyqOq{t$s2Hr{@G?#wwR#!n0_O>k>TC~ zKZO?)yc@CP?t|q{X-|61D*mD%frQ8ZQ(w1&^hF?fU7^IE;5pFb9oFE)Z1F~_=D(Rc zd7D2jG?lgD0K?o*I{^Ns1V2&1Ee5Uv4 z=+Bk$ly^8-d|Xv`BI1ENJmAamNQJ(b*dS+;2>bkDN8F@>H#134Z3~{(J@{gSt;1^f zXMw~&?s+CS7i-bJY#QwYCz zOIS}xhN9~hyaKlBv)#el!Q;%1WhSY^kNi`XbWlQGRrhvs`|L^gCa7QOSYSiCxsG>i z>_%%8lX3o;k3x>WtwfNd2M)it|1lya)7$Q|LW?-MD?lE7IDIa0?p$`}yXE^Ngf69k zXA7&A=C=jvyrR<&_MqUy@$J6FSO#6ML$5x3b#C)jFrguZMcifPY*pRKpLde-xPe+L z_#V%W^c+jLnRA0e$i6h?I@@ROl9}pUs_oqEPsY~`uRcBTwnL()8-WspRKIXf3`5h7~~CCEwUdcV`r>50~PDO#L(dgDoKTOZFG zk)i(xhXl!GMU*~2|Bv`5c;#<8n1n?3)qj^7aR2{>DC~bKjOsToMi7o+>UDQ)DgJJ$ zLlP7hO(R4x^?-kVu*A^4@n2|1wsCe7h9IwtvWm+juj`)g&9bBXH|rhrSYJP$ye^_` z8u9t#$CP_F?){G?GbHM^5XIWE?B3Si+KMotU6`9I6ypX>hAvwA<>h5WdR`v)XG6;> zx0zsNp#V2cb`^gIm*;=JK@wpA=y9s1QJ^6Kc<&be_c9$ND(>HrH$LR4RM-26L$_na9;9q-L{x!DlrxHKaI z67wteI6otzK(mWXn-manadCa!Yj035{(k@KQzR0pAzSz6pC90JPOzPBkV&&0ZP3XV zfzHm(zli(&LqoYUGZyI5(z!+k2X$~Bc}L3MG5h+}@A#0Ii$e8-(PA@{kFc<`JX>qO zG+rxn@!Tmhtgm#ka*|}u*x1-lA=o#W*>*3_Ik^)gl!(a4QKHiCu6-4jPFBfMPE-d2 z459|Ya@lz69r6kT-f3{?Cp)_w!i+ZPNpIA83w!dZ1OHmqmc7k`-A!u;2RzuX@oL;X zv<{K&AA+B9Z?e;kxX5HwZ$|G3zt*gyx36;J$O)2*op;EqWNGgzGb4Ma7@mB%_U`El zZ@5()Sk&49Np^FhtZf}5N!cp?Zw*;B2@N4p~du24v=!+kYi0=+&_PUS+x=#KI z@aduGIw@b{x+i9uCyOsIp>?hrrRRV4T9PTexVTvGS^eAW@;tNo;}gL{Z!p?aR1cs5 Ofjv@wnE&AE%l`uj4sM_T literal 67716 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%0Aiu6JlEaGQ%qgOOEui<}&vW6g`RqAUy*N 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 cJBrFmVQCe4XwueB7rr_ghPTUa-Fx Date: Tue, 20 Jun 2023 13:09:05 +0200 Subject: [PATCH 074/232] Add banner --- content/en/docs/howto7/_index.md | 5 +---- content/en/docs/refguide7/_index.md | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/content/en/docs/howto7/_index.md b/content/en/docs/howto7/_index.md index 4f0e00a4ab7..34ee4ecb1fa 100644 --- a/content/en/docs/howto7/_index.md +++ b/content/en/docs/howto7/_index.md @@ -9,16 +9,13 @@ description_list: true cascade: - space: "Mendix 7 How-tos" - mendix_version: 7 + - banner: "Mendix 7 is no longer supported unless you have Extended Support (for details, please contact Mendix Support). Mendix 7 documentation will remain available for customers with Extended Support until July, 2024." - old_content: true - hide_feedback: true - sitemap: priority: 0.1 --- -{{% alert color="info" %}} -Support for Mendix 7 will be available after the release of Mendix 10 for a maximum duration of one year. For details, see the [Extended Support](/developerportal/support/#extended-support) section in *Mendix Support*. -{{% /alert %}} - Browse the Mendix how-to's to find step-by-step guides that will teach you how to build and customize apps with Mendix. The *Mendix How-tos* are divided into the following categories: diff --git a/content/en/docs/refguide7/_index.md b/content/en/docs/refguide7/_index.md index 7c19e7f1fb8..e3c19db31b3 100644 --- a/content/en/docs/refguide7/_index.md +++ b/content/en/docs/refguide7/_index.md @@ -9,16 +9,13 @@ description_list: true cascade: - space: "Mendix 7 Reference Guide" - mendix_version: 7 + - banner: "Mendix 7 is no longer supported unless you have Extended Support (for details, please contact Mendix Support). Mendix 7 documentation will remain available for customers with Extended Support until July, 2024." - old_content: true - hide_feedback: true - sitemap: priority: 0.1 --- -{{% alert color="info" %}} -Support for Mendix 7 will be available after the release of Mendix 10 for a maximum duration of one year. For details, see the [Extended Support](/developerportal/support/#extended-support) section in *Mendix Support*. -{{% /alert %}} - The *Mendix Reference Guide* covers important topics on the [Desktop Modeler](/refguide7/desktop-modeler/), [Mendix Runtime](/refguide7/runtime/), and other components of the Mendix Platform. Before installing Mendix 7, please read [System Requirements](/refguide7/system-requirements/). If you have been using version 6 of the Desktop Modeler, we recommend reading [Moving from 6 to 7](/refguide7/moving-from-6-to-7/). From bc580fd0acc9aacf4c695175d664719c308ad998 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Tue, 20 Jun 2023 13:25:31 +0200 Subject: [PATCH 075/232] Rename file --- .../menus/view-menu/{data-hub-pane.md => integration-pane.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename content/en/docs/refguide/modeling/menus/view-menu/{data-hub-pane.md => integration-pane.md} (100%) diff --git a/content/en/docs/refguide/modeling/menus/view-menu/data-hub-pane.md b/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md similarity index 100% rename from content/en/docs/refguide/modeling/menus/view-menu/data-hub-pane.md rename to content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md From 15746979191e2682757692b8c3e381e5a80d1d28 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Tue, 20 Jun 2023 13:34:31 +0200 Subject: [PATCH 076/232] Change more links, add aliases --- .../docs/refguide/modeling/domain-model/entities/_index.md | 2 +- .../refguide/modeling/domain-model/external-entities.md | 4 ++-- .../refguide/modeling/integration/odata-services/_index.md | 2 +- .../odata-services/consumed-odata-services/_index.md | 2 +- .../consumed-odata-services/consumed-odata-service.md | 6 +++--- .../integration/odata-services/wrap-services-odata.md | 2 +- content/en/docs/refguide/modeling/menus/view-menu/_index.md | 2 +- .../refguide/modeling/menus/view-menu/integration-pane.md | 4 +++- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/content/en/docs/refguide/modeling/domain-model/entities/_index.md b/content/en/docs/refguide/modeling/domain-model/entities/_index.md index c5110852879..433110b34da 100644 --- a/content/en/docs/refguide/modeling/domain-model/entities/_index.md +++ b/content/en/docs/refguide/modeling/domain-model/entities/_index.md @@ -35,7 +35,7 @@ The entity type defines how the data is handled and there are two types: {{< figure src="/attachments/refguide/modeling/domain-model/entities/type-of-entities.jpg" >}} {{% alert color="info" %}} -You can also use data sources from other applications in your app through the [Data Hub](/refguide/data-hub-pane/) pane. These data sources are represented in the domain model as *external entities* which are displayed as purple entity containers in the domain model. +You can also use data sources from other applications in your app through the [Integration pane](/refguide/integration-pane/). These data sources are represented in the domain model as *external entities* which are displayed as purple entity containers in the domain model. For further information see [External Entities](/refguide/external-entities/). {{% /alert %}} diff --git a/content/en/docs/refguide/modeling/domain-model/external-entities.md b/content/en/docs/refguide/modeling/domain-model/external-entities.md index 71b3d4c43c9..da28ca12484 100644 --- a/content/en/docs/refguide/modeling/domain-model/external-entities.md +++ b/content/en/docs/refguide/modeling/domain-model/external-entities.md @@ -7,7 +7,7 @@ tags: ["domain model", "entity", "entities", "attribute", "external entities", " --- ## 1 Introduction -External entities can be added to the Domain Model through the [Integration pane](/refguide/data-hub-pane/). They are displayed as *purple* entity containers in the Domain Model. External entities represent the link to the datasets that are made available through the shared data sources registered in [Mendix Data Hub](/data-hub/). Data sources are collections of entity sets (that are referred to as datasets) are published in OData services. +External entities can be added to the Domain Model through the [Integration pane](/refguide/integration-pane/). They are displayed as *purple* entity containers in the Domain Model. External entities represent the link to the datasets that are made available through the shared data sources registered in [Mendix Data Hub](/data-hub/). Data sources are collections of entity sets (that are referred to as datasets) are published in OData services. Datasets are maintained and updated in the source application. You can integrate or consume these datasets through external entities in your app development, and any changes to the data in the originating app is automatically updated in the consuming apps. @@ -79,7 +79,7 @@ This tab displays the general properties of the external entity. The values that The [attributes](/refguide/attributes/) that have been exposed in the OData service for the external entity are listed here. All changes that are made to the attributes and the attribute list are applied to the local instance of the entity. As they are consumed, these changes will not affect the metadata of the consumed service that the entity is exposed in or the attributes of the entity in the originating app. -{{% alert color="info" %}}In the [Integration pane](/refguide/data-hub-pane/#association-attributes) the associations and attributes that are not supported in your Mendix model are shown as non-selectable (gray) and will not be included when you drag them into the domain model or be included in the entity properties. For more information see [Integration pane](/refguide/data-hub-pane/#association-attributes).{{% /alert %}} +{{% alert color="info" %}}In the [Integration pane](/refguide/integration-pane/#association-attributes) the associations and attributes that are not supported in your Mendix model are shown as non-selectable (gray) and will not be included when you drag them into the domain model or be included in the entity properties. For more information see [Integration pane](/refguide/integration-pane/#association-attributes).{{% /alert %}} The following operations can be done on the displayed attribute list: diff --git a/content/en/docs/refguide/modeling/integration/odata-services/_index.md b/content/en/docs/refguide/modeling/integration/odata-services/_index.md index dafeb3f6d0e..77cd8478418 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/_index.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/_index.md @@ -11,7 +11,7 @@ tags: ["odata services"] OData is a set of best practices for building REST APIs that standardizes many aspects of REST APIs. It describes how you should provide filtering, sorting, and pagination on your resources, as well as how you should provide nested data structures. Using OData best practices ensures that your APIs are compatible with tools like Excel and PowerBI out of the box (see [Expose Data to BI Tools Using OData](/howto/integration/exposing-data-to-bi-tools-using-odata/)), and also ensures that API clients can optimize payload size and minimize roundtrips for the best possible usage performance. -Published OData services are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for users deploying to the [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/) and made available in the Studio Pro [Integration pane](/refguide/data-hub-pane/). +Published OData services are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for users deploying to the [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/) and made available in the Studio Pro [Integration pane](/refguide/integration-pane/). To publish OData services, see: diff --git a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md index e683066d67d..44297598639 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md @@ -10,7 +10,7 @@ tags: ["studio pro"] Data can be published from an app for use by other apps through [published OData services](/refguide/published-odata-services/). Consumed OData services can be used to integrate external data sources in apps through [Mendix Data Hub](/data-hub/). -Mendix Data Hub enables integration of available data sources from different sources in an organization into your Mendix apps. OData services that are registered in the [Data Hub Catalog](/data-hub/data-hub-catalog/) expose entities that can be dragged and dropped into your domain model through the [Integration pane](/refguide/data-hub-pane/) as external entities. The OData service document that is added to your app provides the information for retrieving the metadata for the service and exposed entities. +Mendix Data Hub enables integration of available data sources from different sources in an organization into your Mendix apps. OData services that are registered in the [Data Hub Catalog](/data-hub/data-hub-catalog/) expose entities that can be dragged and dropped into your domain model through the [Integration pane](/refguide/integration-pane/) as external entities. The OData service document that is added to your app provides the information for retrieving the metadata for the service and exposed entities. For further details on the consumed OData service document and updating consumed OData services in your app, see [Consumed OData Service](/refguide/consumed-odata-service/). diff --git a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md index 610c264eb19..8ea1e78185f 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md @@ -9,7 +9,7 @@ aliases: ## 1 Introduction -When an external entity is used in an app module through the [Integration pane](/refguide/data-hub-pane/), a consumed OData service document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. +When an external entity is used in an app module through the [Integration pane](/refguide/integration-pane/), a consumed OData service document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. ## 2 Consumed OData Service screen @@ -124,7 +124,7 @@ When downloading the metadata from a URL, the server may request a username and This information is not stored, so if you download the metadata from the same server again, you will have to enter your username and password again. {{% /alert %}} -When you import the metadata, you can add external entities from the consumed OData service in the [Integration pane](/refguide/data-hub-pane/). +When you import the metadata, you can add external entities from the consumed OData service in the [Integration pane](/refguide/integration-pane/). ### 3.2 Properties @@ -242,5 +242,5 @@ To consume the service deployed to the **Acceptance environment**, follow these ## 5 Read More -* [Integration pane](/refguide/data-hub-pane/) +* [Integration pane](/refguide/integration-pane/) * [Consumed OData Services](/refguide/consumed-odata-services/) diff --git a/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md b/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md index 05c6144c474..d25c28182b0 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md @@ -34,7 +34,7 @@ OData is a set of best practices for building REST APIs that standardizes many a ### 2.2 Compatibility with Data Hub -Wrapping a service, API, or database in OData ensures compatibility with the [Mendix Data Hub](/data-hub/). Published OData services are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for licensed users on a [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/) and made available in the Studio Pro [Integration pane](/refguide/data-hub-pane/). +Wrapping a service, API, or database in OData ensures compatibility with the [Mendix Data Hub](/data-hub/). Published OData services are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for licensed users on a [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Data Hub Catalog](/data-hub/data-hub-catalog/) and made available in the Studio Pro [Integration pane](/refguide/integration-pane/). ## 3 Non-Persistable Entities as Published OData Resources {#npe-published-odata} diff --git a/content/en/docs/refguide/modeling/menus/view-menu/_index.md b/content/en/docs/refguide/modeling/menus/view-menu/_index.md index d11574d698e..ed9b3980b4d 100644 --- a/content/en/docs/refguide/modeling/menus/view-menu/_index.md +++ b/content/en/docs/refguide/modeling/menus/view-menu/_index.md @@ -71,7 +71,7 @@ The **Console** pane displays the output of the [Mendix Runtime](/refguide/runti ### 3.5 Data Hub {#data-hub} -The [Integration pane](/refguide/data-hub-pane/) enables you to browse the [Data Hub Catalog](/data-hub/data-hub-catalog/) and use registered data sources that are available for your organization in your app development. You can add [external entities](/refguide/external-entities/) to your app via this pane and see entities and data sources already consumed in your app. +The [Integration pane](/refguide/integration-pane/) enables you to browse the [Data Hub Catalog](/data-hub/data-hub-catalog/) and use registered data sources that are available for your organization in your app development. You can add [external entities](/refguide/external-entities/) to your app via this pane and see entities and data sources already consumed in your app. ### 3.6 Documentation diff --git a/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md b/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md index 69b71beef29..1cc23a73899 100644 --- a/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md +++ b/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md @@ -1,9 +1,11 @@ --- title: "Integration pane" -url: /refguide/data-hub-pane/ +url: /refguide/integration-pane/ weight: 30 description: "Describes the Integration pane in Mendix Studio Pro." tags: ["studio Pro", "data hub", "Integration pane", "data hub catalog"] +aliases: + - /refguide/data-hub-pane/ --- From 0eb36ffebd3f8e0cc14682ecebf6a2b926ec3458 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 20 Jun 2023 14:27:41 +0200 Subject: [PATCH 077/232] Add via Slack --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 3d274b0f83a..e2d8de78808 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -45,6 +45,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We added tooltips to the **Branch Line**, **Message**, and **On Disk** columns in the **Branch Lines** dialog box accessible via **Open App**. * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. +* We have renamed the **Data Hub** pane to the [Integration](/refguide/integration-pane/) pane. You can still use this pane to view available data sources and use them in your app. * We have updated the style for the context menus. * We added the ability to select the text in read-only drop-down controls. * We styled the **Select Module Role** dialog box to use different colors for modules. From 91ac290ed8740c39ac1a32cb2646a6e3a7232df4 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Tue, 20 Jun 2023 15:34:47 +0200 Subject: [PATCH 078/232] Update landing pages --- content/en/docs/appstore/_index.md | 22 +++++++++++++++- content/en/docs/catalog/_index.md | 25 +++++++++++++------ .../refguide/modeling/integration/_index.md | 19 ++++++++++++-- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/content/en/docs/appstore/_index.md b/content/en/docs/appstore/_index.md index 30aee5fe142..edcd89982c4 100644 --- a/content/en/docs/appstore/_index.md +++ b/content/en/docs/appstore/_index.md @@ -23,4 +23,24 @@ It also contains guidelines on [creating Marketplace content](/appstore/creating For details on the Studio Pro version required for use and when the component was published, please see the specific component page in the Mendix Marketplace. For more information, see the [Marketplace release notes](/releasenotes/marketplace/). -## 2 Guide Categories +## 2 Marketplace Guide and Mendix Connect + +[Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The following connectors and modules are part of the Mendix Connect ecosystem: + +* [Database](/appstore/connectors/database/) connnector +* [Excel](/appstore/connectors/email/) connector +* [Email](/appstore/connectors/email-connector/) connector +* [MQTT](/appstore/connectors/mqtt/) connector +* [Mendix Business Events](/appstore/modules/business-events/) module + +And our strategic partner connectors: + +* [AWS connectors](/appstore/aws-connectors/) +* [SAP connectors](/appstore/sap-connectors/) + +In addition to platform-supported connectors and modules, Mendix Connect functionalities include: + +* [Integration capabilities](#integration-capabilities) in Studio Pro [10.0](/releasenotes/studio-pro/10.0) +* The [Catalog](#catalog), used to register, manage, and govern data in your organization + +## 3 Guide Categories diff --git a/content/en/docs/catalog/_index.md b/content/en/docs/catalog/_index.md index 821531c2252..ea94c76e76e 100644 --- a/content/en/docs/catalog/_index.md +++ b/content/en/docs/catalog/_index.md @@ -28,7 +28,16 @@ If you deploy your Mendix apps in an alternative environment, like on-prem or pr {{% alert color="info" %}} The Catalog and [external entities](/refguide/external-entities/) are supported in Studio Pro [8.14](/releasenotes/studio-pro/8.14/) and above.{{% /alert %}} -## 2 Catalog Home {#catalog-home} +## 2 Catalog and Mendix Connect + +[Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The [Catalog](/mendix-connect/catalog/) is a part of the Mendix Connect ecosystem as a user-friendly way to view, share, and use data within your organization. + +In addition to the Catalog, Mendix Connect functionalities include: + +* [Integration capabilities](#integration-capabilities) in Studio Pro [10.0](/releasenotes/studio-pro/10.0) +* Platform-supported [Connectors and modules](#connectors-modules) available in the [Mendix Marketplace](/appstore/) + +## 3 Catalog Home {#catalog-home} From the Catalog [Home](https://catalog.mendix.com) screen, you can navigate to the following tabs: @@ -49,11 +58,11 @@ Data Hub is also integrated in Mendix Studio Pro to find and connect to shared d {{% alert color="info" %}} The Data Hub integration is available in Studio Pro version 8.14 and above. To use the latest functionality of Data Hub download the latest version of Studio Pro. {{% /alert %}} -## 3 Using Mendix Data Hub +## 4 Using Mendix Data Hub The functionality of the Data Hub reflects the process of sharing data in an organization through APIs from different systems in an enterprise. The sections below describe the processes involved. -### 3.1 Search – Finding Connectable Data Sources +### 4.1 Search – Finding Connectable Data Sources Users can find shared datasets by searching the Catalog. The [search](/catalog/search/) features include results that are project-relevant in order of most popular services, and results can be refined by using filters. Full details of the registered services are displayed to help in deciding on the suitability of the data associated with a registered dataset. @@ -63,13 +72,13 @@ The Catalog search functionality is integrated into Mendix Studio Pro through th For more details, see [How to Search for Registered Assets](/catalog/search/). -### 3.2 Consume – Using Registered Datasets +### 4.2 Consume – Using Registered Datasets Registered assets in the Catalog can be accessed in Mendix Studio Pro to [build apps](/refguide/modeling/). These external data sources are represented in the domain model as [external entities](/refguide/external-entities/) which can be used with local entities. For further information on consuming from the Catalog, see [How to Consume Registered Assets](/catalog/consume/). For details on using shared entities in Studio Pro, see [Data Hub Pane](/refguide/data-hub-pane/) in the *Studio Pro Guide*. -### 3.3 Register – Sharing Datasets +### 4.3 Register – Sharing Datasets If you want to make the data from your apps available for use by others, you can publish the datasets in an OData service and register it in the Data Hub. In a Mendix app, the datasets are the **Entity sets** for a defined **Entity**. Using this REST-based protocol, metadata contracts defining the structure and documentation of the datasets that are included are registered. Further details such as the location of the data associated with a registered dataset are also captured. For Mendix apps deploying to the Mendix Cloud, this information is captured during the deployment process. This information can also be collected while [registering a service without Mendix Cloud](/catalog/register/register-data/). @@ -79,11 +88,11 @@ OData services can be registered in the Data Hub in the following ways: * OData v4 services originating from non-Mendix sources can be registered manually. For further details, see [Register OData Resources in the Catalog](/catalog/register/register-data/). * Using the [Catalog API](/apidocs-mxsdk/apidocs/catalog-apis/) you can set up a registration pipeline to register data sources from your business application. -### 3.4 Curate – Maintaining Registered Assets +### 4.4 Curate – Maintaining Registered Assets You can add tags and descriptions, edit app owners, and toggle discoverability to ensure the right people find your service. For more details, see [How to Curate Registered Assets](/catalog/manage/curate/). -## 4 Information Available in the Catalog {#available-info} +## 5 Information Available in the Catalog {#available-info} In the Catalog, all the information for registered assets is displayed in the [Catalog search details](/catalog/manage/search/#search-details) screen. This information comes from the metadata in the OData service contract, and also from additional metadata that is added when registered assets are curated. Registered assets can be curated by owners, [Data Hub curators](/catalog/manage/user-roles/#curator), and [Mendix Admins](/catalog/manage/user-roles/#admin). @@ -99,6 +108,6 @@ The information that is registered for data sources and exposed datasets are as {{% alert color="info" %}}If significant changes are made in the service which would break any consuming apps, then good practice dictates that the service is deployed to a different endpoint with a major update in the version number. In this case the service will be listed twice for the two different endpoints. For more information see [Semantic numbering](/refguide/consumed-odata-service/#semantic) in *Consumed OData Service*. {{% /alert %}} -## Data Hub Administration +## 6 Data Hub Administration Mendix Admins can assign and manage **Curators**, **Owners**, and **External Users**, and control discoverability settings. For more information, see [Data Hub Administration](/developerportal/control-center/data-hub-admin/). diff --git a/content/en/docs/refguide/modeling/integration/_index.md b/content/en/docs/refguide/modeling/integration/_index.md index 77b36f681a9..650dfd011b4 100644 --- a/content/en/docs/refguide/modeling/integration/_index.md +++ b/content/en/docs/refguide/modeling/integration/_index.md @@ -13,6 +13,21 @@ tags: ["studio pro"] Integration with other applications (other Mendix apps, or applications built with different technology) can be done using REST, OData, SOAP/Web Services, or Business Events. Mendix can also import and export data from XML and JSON, and supports integrating with machine learning models. -Data integration capabilities in Studio pro is part of Mendix Connect. +Data integration capabilities in Studio pro is part of [Mendix Connect](#mendix-connect). -## Documents in This Category +## 2 Integration Capabilities and Mendix Connect {#mendix-connect} + +[Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The following published and consumed integration services in Studio Pro allow you connect and share data between and among apps using APIs: + +* [OData services](/refguide/integration/odata-services/) +Manage and share these services in your organization's Catalog +* [REST services](/refguide/integration/rest-services/) +* [Web services](/refguide/integration/web-services/) +* [Business event services](/refguide/business-event-services/) + +In addition to integration capabilities in Studio Pro, Mendix Connect functionalities include: + +* The [Catalog](#catalog), used to register, manage, and govern data in your organization +* Platform-supported [Connectors and modules](#connectors-modules) available in the [Mendix Marketplace](/appstore/) + +## 3 Documents in This Category From 99d135180c39c624fdf3214e0fb23bd5e027d809 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 20 Jun 2023 15:38:53 +0200 Subject: [PATCH 079/232] Update --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index e2d8de78808..1eeac2cad32 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -181,7 +181,7 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S ## 10.0.0 Betas {{% alert color="warning" %}} -The Beta program for 10.0 has ended, which means that the Beta versions of Studio Pro are no longer available for download. In addition, apps created in the Beta versions that are converted to 10.0.0 General Availability can no longer be opened in the Beta versions of Studio Pro. +The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 Beta versions are no longer available to download. In addition, apps created in the Studio Pro 10 Beta versions that are converted to version 10.0.0 General Availability can no longer be opened in the Beta versions. {{% /alert %}} * We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). From 5f93ab21469c2808d1802f107f530200fb79fb90 Mon Sep 17 00:00:00 2001 From: = Date: Tue, 20 Jun 2023 15:44:53 +0200 Subject: [PATCH 080/232] WC-1891 update docs --- .../installation/upgrading-from-9-to-10.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md index 9fd648a1dd0..1deebc41d89 100644 --- a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md +++ b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md @@ -66,6 +66,7 @@ Be sure to update these key widgets, resources, and actions: * [Nanoflow Commons](https://marketplace.mendix.com/link/component/109515) * [Community Commons](https://marketplace.mendix.com/link/component/170) * [Data Widgets](https://marketplace.mendix.com/link/component/116540) +* [Atlas Core](https://marketplace.mendix.com/link/component/117187) In general you should not remove and re-import modules unless this is recommended in the component's release notes. If you do remove and re-import a component, you may lose data or configuration related to the component. @@ -119,6 +120,25 @@ If you use the [Workflow Commons](/appstore/modules/workflow-commons/) module in User task pages that were generated in an earlier version of Studio Pro also need to be updated. The conditional visibility based on whether the current user is assigned is no longer supported. You will see a consistency error for any outcome button that is using the visibility expression. For each button, set the visibility to **Always**. +## 7.6 DOM Structure changes + +Studio Pro 10 introduce a DOM Structure changes of the web client to ensure compatibility with future versions of React. + +A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling which relies on direct child (`>`), sibling (`+`) or `nth-child` selectors. + +This changes might impact your current styling. + +If your application is currently using Atlas theme, this will be easily solved by upgrading [Atlas Core](https://marketplace.mendix.com/link/component/117187) to minimum version 3.11. +Otherwise, please adjust your css selectors accordingly. + +## 7.7 Moving away from Glyphicon + +In Studio Pro 10, Glyphicon is slowly being phased out. Although that the current selected glyphicon will still works, some of the widgets Studio Pro 10 used is no longer using glyphicon class name. + +If your application is currently using Atlas theme, this will be easily solved by upgrading [Atlas Core](https://marketplace.mendix.com/link/component/117187) to minimum version 3.11. + +The temporary work around for this is to add [Atlas icon fonts](https://github.com/mendix/atlas/raw/main/resources/mx-icon-set-filled-v1.2.2.zip) directly to your theme styling directory. + ## 8 Read More * [Studio Pro 10 Release Notes](/releasenotes/studio-pro/10.0/) From 90686da2cb458fb5af6c8896f7161ad9c9052a64 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Tue, 20 Jun 2023 16:13:00 +0200 Subject: [PATCH 081/232] Update upgrading-from-9-to-10.md --- .../installation/upgrading-from-9-to-10.md | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md index 1deebc41d89..5ba801a3b3b 100644 --- a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md +++ b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md @@ -62,11 +62,11 @@ Check if there is a newer version of your component available in the Marketplace Be sure to update these key widgets, resources, and actions: -* [Native Mobile Resources](https://marketplace.mendix.com/link/component/109513) -* [Nanoflow Commons](https://marketplace.mendix.com/link/component/109515) +* [Atlas Core](https://marketplace.mendix.com/link/component/117187) * [Community Commons](https://marketplace.mendix.com/link/component/170) * [Data Widgets](https://marketplace.mendix.com/link/component/116540) -* [Atlas Core](https://marketplace.mendix.com/link/component/117187) +* [Nanoflow Commons](https://marketplace.mendix.com/link/component/109515) +* [Native Mobile Resources](https://marketplace.mendix.com/link/component/109513) In general you should not remove and re-import modules unless this is recommended in the component's release notes. If you do remove and re-import a component, you may lose data or configuration related to the component. @@ -120,24 +120,21 @@ If you use the [Workflow Commons](/appstore/modules/workflow-commons/) module in User task pages that were generated in an earlier version of Studio Pro also need to be updated. The conditional visibility based on whether the current user is assigned is no longer supported. You will see a consistency error for any outcome button that is using the visibility expression. For each button, set the visibility to **Always**. -## 7.6 DOM Structure changes - -Studio Pro 10 introduce a DOM Structure changes of the web client to ensure compatibility with future versions of React. +## 7.6 DOM Structure Changes -A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling which relies on direct child (`>`), sibling (`+`) or `nth-child` selectors. +Studio Pro 10 introduces DOM structure changes to the web client to ensure compatibility with future versions of React. -This changes might impact your current styling. +A `div[data-widget-wrapper]` element is placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect the CSS styling that relies on direct child (`>`), sibling (`+`), or `nth-child` selectors. -If your application is currently using Atlas theme, this will be easily solved by upgrading [Atlas Core](https://marketplace.mendix.com/link/component/117187) to minimum version 3.11. -Otherwise, please adjust your css selectors accordingly. +These changes may impact your current styling. -## 7.7 Moving away from Glyphicon +If your application is currently using the Atlas theme, this is easily solved by upgrading [Atlas Core](https://marketplace.mendix.com/link/component/117187) to version 3.11 or above. Otherwise, please adjust your css selectors accordingly. -In Studio Pro 10, Glyphicon is slowly being phased out. Although that the current selected glyphicon will still works, some of the widgets Studio Pro 10 used is no longer using glyphicon class name. +## 7.7 Moving Away from Glyphicon -If your application is currently using Atlas theme, this will be easily solved by upgrading [Atlas Core](https://marketplace.mendix.com/link/component/117187) to minimum version 3.11. +In Studio Pro 10, the glyphicon is slowly being phased out. Although a currently selected glyphicon will still work, some of the widgets that Studio Pro 10 uses are no longer using a glyphicon class name. -The temporary work around for this is to add [Atlas icon fonts](https://github.com/mendix/atlas/raw/main/resources/mx-icon-set-filled-v1.2.2.zip) directly to your theme styling directory. +If your application is currently using the Atlas theme, this is easily solved by upgrading [Atlas Core](https://marketplace.mendix.com/link/component/117187) to version 3.11 or above. Otherwise, the temporary workaround for this is to add the [Atlas icon fonts](https://github.com/mendix/atlas/raw/main/resources/mx-icon-set-filled-v1.2.2.zip) directly to your theme styling directory. ## 8 Read More From 117fe0c99a56f6ccc7a9bf5d83bbe1934af0f39b Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Tue, 20 Jun 2023 16:22:31 +0200 Subject: [PATCH 082/232] Fix links and wording --- content/en/docs/appstore/_index.md | 6 +++--- content/en/docs/catalog/_index.md | 6 +++--- content/en/docs/refguide/modeling/integration/_index.md | 9 ++++----- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/content/en/docs/appstore/_index.md b/content/en/docs/appstore/_index.md index edcd89982c4..5ab76b3f6d1 100644 --- a/content/en/docs/appstore/_index.md +++ b/content/en/docs/appstore/_index.md @@ -23,7 +23,7 @@ It also contains guidelines on [creating Marketplace content](/appstore/creating For details on the Studio Pro version required for use and when the component was published, please see the specific component page in the Mendix Marketplace. For more information, see the [Marketplace release notes](/releasenotes/marketplace/). -## 2 Marketplace Guide and Mendix Connect +## 2 Marketplace and Mendix Connect {#marketplace-mx-connect} [Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The following connectors and modules are part of the Mendix Connect ecosystem: @@ -40,7 +40,7 @@ And our strategic partner connectors: In addition to platform-supported connectors and modules, Mendix Connect functionalities include: -* [Integration capabilities](#integration-capabilities) in Studio Pro [10.0](/releasenotes/studio-pro/10.0) -* The [Catalog](#catalog), used to register, manage, and govern data in your organization +* [Integration capabilities](/refguide/integration/#integration-mx-connect) in Studio Pro [10.0](/releasenotes/studio-pro/10.0) +* The [Catalog](/catalog/#catalog-mx-connect), used to register, manage, and govern data in your organization ## 3 Guide Categories diff --git a/content/en/docs/catalog/_index.md b/content/en/docs/catalog/_index.md index ea94c76e76e..048a87e95ee 100644 --- a/content/en/docs/catalog/_index.md +++ b/content/en/docs/catalog/_index.md @@ -28,14 +28,14 @@ If you deploy your Mendix apps in an alternative environment, like on-prem or pr {{% alert color="info" %}} The Catalog and [external entities](/refguide/external-entities/) are supported in Studio Pro [8.14](/releasenotes/studio-pro/8.14/) and above.{{% /alert %}} -## 2 Catalog and Mendix Connect +## 2 Catalog and Mendix Connect {#catalog-mx-connect} [Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The [Catalog](/mendix-connect/catalog/) is a part of the Mendix Connect ecosystem as a user-friendly way to view, share, and use data within your organization. In addition to the Catalog, Mendix Connect functionalities include: -* [Integration capabilities](#integration-capabilities) in Studio Pro [10.0](/releasenotes/studio-pro/10.0) -* Platform-supported [Connectors and modules](#connectors-modules) available in the [Mendix Marketplace](/appstore/) +* [Integration capabilities](/refguide/integration/#integration-mx-connect) in Studio Pro [10.0](/releasenotes/studio-pro/10.0) +* Platform-supported [connectors and modules](/appstore/#marketplace-mx-connect) available in the [Mendix Marketplace](/appstore/) ## 3 Catalog Home {#catalog-home} diff --git a/content/en/docs/refguide/modeling/integration/_index.md b/content/en/docs/refguide/modeling/integration/_index.md index 650dfd011b4..4f1703a40ca 100644 --- a/content/en/docs/refguide/modeling/integration/_index.md +++ b/content/en/docs/refguide/modeling/integration/_index.md @@ -15,19 +15,18 @@ Integration with other applications (other Mendix apps, or applications built wi Data integration capabilities in Studio pro is part of [Mendix Connect](#mendix-connect). -## 2 Integration Capabilities and Mendix Connect {#mendix-connect} +## 2 Integration and Mendix Connect {#integration-mx-connect} [Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The following published and consumed integration services in Studio Pro allow you connect and share data between and among apps using APIs: -* [OData services](/refguide/integration/odata-services/) -Manage and share these services in your organization's Catalog +* [OData services](/refguide/integration/odata-services/) (view and manage in your company's [Catalog](/catalog/)) * [REST services](/refguide/integration/rest-services/) * [Web services](/refguide/integration/web-services/) * [Business event services](/refguide/business-event-services/) In addition to integration capabilities in Studio Pro, Mendix Connect functionalities include: -* The [Catalog](#catalog), used to register, manage, and govern data in your organization -* Platform-supported [Connectors and modules](#connectors-modules) available in the [Mendix Marketplace](/appstore/) +* The [Catalog](/catalog/#catalog-mx-connect), used to register, manage, and govern data in your organization +* Platform-supported [connectors and modules](/appstore/#marketplace-mx-connect) available in the [Mendix Marketplace](/appstore/) ## 3 Documents in This Category From 4a79b50062474108578a991bb81d0df7f6209b34 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Tue, 20 Jun 2023 16:36:49 +0200 Subject: [PATCH 083/232] Fix links --- content/en/docs/appstore/_index.md | 7 ++++--- content/en/docs/catalog/_index.md | 4 ++-- content/en/docs/refguide/modeling/integration/_index.md | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/content/en/docs/appstore/_index.md b/content/en/docs/appstore/_index.md index 5ab76b3f6d1..8f133670d59 100644 --- a/content/en/docs/appstore/_index.md +++ b/content/en/docs/appstore/_index.md @@ -27,8 +27,9 @@ For details on the Studio Pro version required for use and when the component wa [Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The following connectors and modules are part of the Mendix Connect ecosystem: -* [Database](/appstore/connectors/database/) connnector -* [Excel](/appstore/connectors/email/) connector +* [Database](/appstore/connectors/database-connector/) connnector +* [Excel Importer](/appstore/modules/excel-importer/) module +* [Excel Exporter](/appstore/modules/excel-exporter/) module * [Email](/appstore/connectors/email-connector/) connector * [MQTT](/appstore/connectors/mqtt/) connector * [Mendix Business Events](/appstore/modules/business-events/) module @@ -40,7 +41,7 @@ And our strategic partner connectors: In addition to platform-supported connectors and modules, Mendix Connect functionalities include: -* [Integration capabilities](/refguide/integration/#integration-mx-connect) in Studio Pro [10.0](/releasenotes/studio-pro/10.0) +* [Integration capabilities](/refguide/integration/#integration-mx-connect) in Studio Pro [10.0](/releasenotes/studio-pro/10.0/) * The [Catalog](/catalog/#catalog-mx-connect), used to register, manage, and govern data in your organization ## 3 Guide Categories diff --git a/content/en/docs/catalog/_index.md b/content/en/docs/catalog/_index.md index 048a87e95ee..a00a6d70782 100644 --- a/content/en/docs/catalog/_index.md +++ b/content/en/docs/catalog/_index.md @@ -30,11 +30,11 @@ The Catalog and [external entities](/refguide/external-entities/) are supported ## 2 Catalog and Mendix Connect {#catalog-mx-connect} -[Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The [Catalog](/mendix-connect/catalog/) is a part of the Mendix Connect ecosystem as a user-friendly way to view, share, and use data within your organization. +[Mendix Connect](https://www.mendix.com/data-hub/) is a collection of functionalities available in the Mendix Platform that allow people in your organization to discover, understand, connect, and govern data securely. The [Catalog](/catalog/) is a part of the Mendix Connect ecosystem as a user-friendly way to view, share, and use data within your organization. In addition to the Catalog, Mendix Connect functionalities include: -* [Integration capabilities](/refguide/integration/#integration-mx-connect) in Studio Pro [10.0](/releasenotes/studio-pro/10.0) +* [Integration capabilities](/refguide/integration/#integration-mx-connect) in Studio Pro [10.0](/releasenotes/studio-pro/10.0/) * Platform-supported [connectors and modules](/appstore/#marketplace-mx-connect) available in the [Mendix Marketplace](/appstore/) ## 3 Catalog Home {#catalog-home} diff --git a/content/en/docs/refguide/modeling/integration/_index.md b/content/en/docs/refguide/modeling/integration/_index.md index 4f1703a40ca..e8ed4ea5e85 100644 --- a/content/en/docs/refguide/modeling/integration/_index.md +++ b/content/en/docs/refguide/modeling/integration/_index.md @@ -13,7 +13,7 @@ tags: ["studio pro"] Integration with other applications (other Mendix apps, or applications built with different technology) can be done using REST, OData, SOAP/Web Services, or Business Events. Mendix can also import and export data from XML and JSON, and supports integrating with machine learning models. -Data integration capabilities in Studio pro is part of [Mendix Connect](#mendix-connect). +Data integration capabilities in Studio pro is part of [Mendix Connect](#integration-mx-connect). ## 2 Integration and Mendix Connect {#integration-mx-connect} @@ -24,7 +24,7 @@ Data integration capabilities in Studio pro is part of [Mendix Connect](#mendix- * [Web services](/refguide/integration/web-services/) * [Business event services](/refguide/business-event-services/) -In addition to integration capabilities in Studio Pro, Mendix Connect functionalities include: +In addition to integration capabilities in Studio Pro [10](/releasenotes/studio-pro/10/), Mendix Connect functionalities include: * The [Catalog](/catalog/#catalog-mx-connect), used to register, manage, and govern data in your organization * Platform-supported [connectors and modules](/appstore/#marketplace-mx-connect) available in the [Mendix Marketplace](/appstore/) From 699e56cc360930424ce50ee8d9ab5fdc7bb44031 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Tue, 20 Jun 2023 17:02:23 +0200 Subject: [PATCH 084/232] Remove unnecessary note --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 1eeac2cad32..b58fcfc535d 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -48,7 +48,6 @@ For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix S * We have renamed the **Data Hub** pane to the [Integration](/refguide/integration-pane/) pane. You can still use this pane to view available data sources and use them in your app. * We have updated the style for the context menus. * We added the ability to select the text in read-only drop-down controls. -* We styled the **Select Module Role** dialog box to use different colors for modules. * We have made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested the types based on the most common patterns Mendix sees in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. * We modernized the **New Document** dialog box and the message definitions editor to support dark mode. * We added **Majority** and **Threshold** decision methods to workflow multi-user task. From dba1152a06d4a9c379bb2c3ac49c54238b95544b Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 08:32:54 +0200 Subject: [PATCH 085/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index b58fcfc535d..2ba125cb910 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -8,7 +8,7 @@ weight: 100 --- {{% alert color="info" %}} -For more information on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro 9 to 10](/refguide/upgrading-from-9-to-10/). +For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro 9 to 10](/refguide/upgrading-from-9-to-10/). {{% /alert %}} ## 10.0.0 General Availability {#1000} From 85bceb549fa465c986e3accd2af0284f40cf7206 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 09:14:09 +0200 Subject: [PATCH 086/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 2ba125cb910..e2031e38c2c 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -19,12 +19,12 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro ### New Features +* We renamed MxAssist Performance Bot to **Best Practice Bot**. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice. * [Page URLs](/refguide/page-properties/#url) got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. -* We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions that you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list that is currently being processed. +* We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list currently being processed. +* We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. * We added a new workflow activity and a related microflow activity. You can use the [Wait for notification](/refguide/wait-for-notification/) workflow activity to suspend a workflow's execution, and you can use the [Notify workflow](/refguide/notify-workflow/) microflow activity to send a notification to resume the workflow that has been suspended. -* We have added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. -* We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects that are cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. -* We renamed MxAssist Performance Bot to Best Practice Bot. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice . +* We added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. ### Improvements From 48af709fb3bb214e93a32140629d7d9844c30601 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 09:44:25 +0200 Subject: [PATCH 087/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 83 ++++++++++++------- 1 file changed, 53 insertions(+), 30 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index e2031e38c2c..627e3b4cccf 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -30,7 +30,7 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro #### Performance Improvements -* We improved the performance of editing published web service operations. Operations that expose large data structures no longer cause Studio Pro to become irresponsive upon opening the editing dialog box. (Tickets 179950, 183039) +* We improved the performance of editing published web service operations. Operations that expose large data structures no longer cause Studio Pro to become unresponsive upon opening the editing dialog box. (Tickets 179950, 183039) #### Other Improvements @@ -38,46 +38,69 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro {{% alert color="info" %}}This is based on an idea from Marius van der Knaap. Thank you, Marius!{{% /alert %}} -* We have reduced the number of cases in the client where a data source is reloaded, even if its container is hidden by conditional visibility at the same time. (Ticket 126149) +* We reduced the number of cases in the client where a data source is reloaded, even if its container is hidden by conditional visibility at the same time. (Ticket 126149) * We improved the export size of the model. It should now be about half the size in a lot of cases. (Ticket 174121) * We improved data encryption in mobile apps. (Ticket 181442) -* We added **Preferences** to the [Open App](/refguide/open-app-dialog/) dialog box. -* We added tooltips to the **Branch Line**, **Message**, and **On Disk** columns in the **Branch Lines** dialog box accessible via **Open App**. + +* We added a column to the [Open App](/refguide/open-app-dialog/) dialog box that displays the Mendix Studio Pro application **Version** (including for local apps that are stored on disk). +* We added a **Preferences** link to the **Open App** dialog box. +* We added tooltips to the **Branch Line**, **Message**, and **On Disk** columns in the **Branch Lines** dialog box that is accessible via **Open App**. + + * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. +* **New merge algorithm with fine-grained conflict resolution** is now the default and only option for conflict resolution in Studio Pro. Therefore, it was removed from the **New Features** tab of the **Preferences** dialog box. + * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. -* We have renamed the **Data Hub** pane to the [Integration](/refguide/integration-pane/) pane. You can still use this pane to view available data sources and use them in your app. -* We have updated the style for the context menus. -* We added the ability to select the text in read-only drop-down controls. -* We have made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested the types based on the most common patterns Mendix sees in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. -* We modernized the **New Document** dialog box and the message definitions editor to support dark mode. -* We added **Majority** and **Threshold** decision methods to workflow multi-user task. -* We reduced the number of default panes in the default layout of Studio Pro. -* We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. + + + +* The new **Properties** pane that was introduced in [9.23](/releasenotes/studio-pro/9.23/#new-features) is now the default and only option in Studio Pro. It gives you a good overview of what is going on while making it significantly easier to make changes. + + +* Cloning another branch of a Git app in which you already have a branch on disk now first makes a local copy and then downloads the latest version from the server (instead of completely downloading the branch from the server). As Git always downloads the entire history (whereas SVN only downloads the latest revision), making this local copy significantly speeds up working with branches for Git apps. + +* We renamed the **Data Hub** pane to the [Integration](/refguide/integration-pane/) pane. You can still use this pane to view available data sources and use them in your app. + +* We made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested types based on the most common patterns seen in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. + * We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. +* We added **Majority** and **Threshold** decision methods to workflow multi-user tasks. +* We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. + + * We added a new log node called **IDResolution**, which provides more details about certain actions being executed on the Mendix Runtime. + + * We removed the limitation that stopped you from automatically creating import and export mappings from message definitions with more than 100 attributes. * Data sources for the list view, data grid, and template grid can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. -* We aligned the horizontal indentation of the text in the column headers and cells in the data grid and tree controls. -* **New merge algorithm with fine-grained conflict resolution** is now the default and only option for conflict resolution in Studio Pro. Therefore, it was removed from the **New Features** tab of the **Preferences** dialog box. -* Cloning another branch of a Git app in which you already have a branch on disk now first makes a local copy and then downloads the latest version from the server (instead of completely downloading the branch from the server). As Git always downloads the entire history (whereas SVN only downloads the latest revision), making this local copy significantly speeds up working with branches for Git apps. -* The new **Properties** pane that was introduced in [9.23](/releasenotes/studio-pro/9.23/#new-features) is now the default and only option in Studio Pro. It gives you a good overview of what is going on while making it significantly easier to make changes. -* We added a column to the [Open App](/refguide/open-app-dialog/) dialog box that displays the Mendix Studio Pro application **Version** (including for local apps that are stored on disk). -* We updated the style for the **Open App** dialog box, the tab control, the alert control (which displays alerts about merge conflicts), and the selection in text fields. -* We updated the style for the following UI components: button, checkbox, checkbox list, date and time selector, drop-down menu, group box, link, radio button, splitter, stepper, label, text editor, and text field. -* We made it possible to use the scrollbars in disabled grids. -* Tree and grid control rows are now highlighted when you hover over them with the mouse. -* We updated colors for the tree and grid controls. -* We updated the colors used in dialog boxes. -* We updated the icons of message dialog boxes. -* We made the drop-shadow style of various UI components more consistent. + + + + + + +DESIGN * We updated the sign-in response pages to include the new Mendix logo. * We updated the login image shown on startup. * We included dark-mode support for the login dialog box shown on startup. -* We updated the colors of the microflow editor. -* We updated the style for controls residing in a toolbar. -* We updated the style for button controls. -* We updated the style for the breadcrumb, loading bar, scrollbar, and tooltip UI components. -* We added highlighting for when you hover over tree control rows. +* We updated the style for the **Open App** dialog box, the tab control, the alert control (which displays alerts about merge conflicts), and the selection in text fields. +* We modernized the **New Document** dialog box and the message definitions editor to support dark mode. +* We updated the style for context menus, controls residing in a toolbar, and button controls. +* We updated the style for the following UI components: breadcrumb, button, check box, check box list, date and time selector, drop-down menu, group box, link, loading bar, radio button, scrollbar, splitter, stepper, label, text editor, text field, and tooltip. +* We updated the colors used in the microflow editor, dialog boxes, and tree and grid controls. +* We made the drop-shadow style of various UI components more consistent. +* We updated the icons of message dialog boxes. +* Tree and grid control rows are now highlighted when you hover over them. +* We added the ability to select the text in read-only drop-down controls. +* We reduced the number of default panes in the default layout of Studio Pro. +* We aligned the horizontal indentation of the text in the column headers and cells in the data grid and tree controls. +* We made it possible to use the scrollbars in disabled grids. +DESIGN + + + + + * For pluggable widgets with a system property Label, **Show label** is now set to **Yes** by default. * Pluggable widgets with a database, XPath, or association data source can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. * Configuring pluggable widgets with association properties is now easier. When selecting an association, the selectable object data source is configured with a default database source. Switching from a database to an XPath data source keeps constraints and the selected entity path. From fd1f98fa013706112f718e092f1cf2831a2caff7 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 10:33:03 +0200 Subject: [PATCH 088/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 70 ++++++++++--------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 627e3b4cccf..0b29fa471ba 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -42,41 +42,43 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * We improved the export size of the model. It should now be about half the size in a lot of cases. (Ticket 174121) * We improved data encryption in mobile apps. (Ticket 181442) +* We added support for signing in using a macOS external browser. This requires configuration. For details, see the [Configuring Your Windows Virtual Machine for Mendix Studio Pro](/refguide/using-mendix-studio-pro-on-a-mac/#configuring) section of *Configuring Parallels*. + * We added a column to the [Open App](/refguide/open-app-dialog/) dialog box that displays the Mendix Studio Pro application **Version** (including for local apps that are stored on disk). * We added a **Preferences** link to the **Open App** dialog box. * We added tooltips to the **Branch Line**, **Message**, and **On Disk** columns in the **Branch Lines** dialog box that is accessible via **Open App**. - +* We updated the [Revert All Changes](/refguide/version-control-menu/#revert-all-changes) menu item to show the **Open App** dialog box if the app is closed after the operation (for example, when the changes include a version change). * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. * **New merge algorithm with fine-grained conflict resolution** is now the default and only option for conflict resolution in Studio Pro. Therefore, it was removed from the **New Features** tab of the **Preferences** dialog box. * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. - - * The new **Properties** pane that was introduced in [9.23](/releasenotes/studio-pro/9.23/#new-features) is now the default and only option in Studio Pro. It gives you a good overview of what is going on while making it significantly easier to make changes. - -* Cloning another branch of a Git app in which you already have a branch on disk now first makes a local copy and then downloads the latest version from the server (instead of completely downloading the branch from the server). As Git always downloads the entire history (whereas SVN only downloads the latest revision), making this local copy significantly speeds up working with branches for Git apps. - * We renamed the **Data Hub** pane to the [Integration](/refguide/integration-pane/) pane. You can still use this pane to view available data sources and use them in your app. +MISCELLANEOUS +* Cloning another branch of a Git app in which you already have a branch on disk now first makes a local copy and then downloads the latest version from the server (instead of completely downloading the branch from the server). As Git always downloads the entire history (whereas SVN only downloads the latest revision), making this local copy significantly speeds up working with branches for Git apps. * We made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested types based on the most common patterns seen in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. - -* We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. -* We added **Majority** and **Threshold** decision methods to workflow multi-user tasks. -* We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. - - * We added a new log node called **IDResolution**, which provides more details about certain actions being executed on the Mendix Runtime. - - * We removed the limitation that stopped you from automatically creating import and export mappings from message definitions with more than 100 attributes. * Data sources for the list view, data grid, and template grid can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. +* We improved the message that is shown if no suitable argument is available for a parameter mapping (for example, in the **Page settings** of a **Show a page** action). This now includes the expected type of the parameter. +MISCELLANEOUS - - +LOGIC +* We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. +* We added **Majority** and **Threshold** decision methods to workflow multi-user tasks. +* We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. +* We enhanced the [Lock workflow](/refguide/lock-workflow/) and [Unlock workflow](/refguide/unlock-workflow/) microflow activities by enabling the selection of the workflow definition (which is a Mendix Runtime workflow object), thus making the activity more reusable. +* When creating a new workflow, it is now possible to select a context entity through the creation dialog box instead of adding it afterwards. +* We added a button to the toolbar of the workflow editor that enables the export of a workflow to an image. +* We added a new way to convert between microflows and nanoflows by right-clicking the microflow or nanoflow in the **App Explorer**. For more information, see the alternative options specified in the [Converting a Microflow to a Nanoflow](/refguide/microflows/#convert-to-nanoflow) section of *Microflows* and the [Converting a Nanoflow to a Microflow](/refguide/nanoflows/#convert-to-microflow) section of *Nanoflows*. +* We improved the discoverability of exposing microflows as microflow or workflow actions by adding the **Expose as action** option to the context menu of the microflow editor. +* We added support for enumerations as an attribute type for [business events](/appstore/modules/business-events/). +LOGIC DESIGN @@ -98,30 +100,34 @@ DESIGN DESIGN - - - +PLUGGABLE WIDGETS * For pluggable widgets with a system property Label, **Show label** is now set to **Yes** by default. * Pluggable widgets with a database, XPath, or association data source can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. * Configuring pluggable widgets with association properties is now easier. When selecting an association, the selectable object data source is configured with a default database source. Switching from a database to an XPath data source keeps constraints and the selected entity path. -* We enhanced the [Lock workflow](/refguide/lock-workflow/) and [Unlock workflow](/refguide/unlock-workflow/) microflow activities by enabling the selection of the workflow definition (which is a Mendix Runtime workflow object), thus making the activity more reusable. -* When creating a new workflow, it is now possible to select a context entity through the creation dialog box instead of adding it afterwards. -* We added a button to the toolbar of the workflow editor that enables the export of a workflow to an image. +PLUGGABLE WIDGETS + + +BEST PRACTICE BOT * We extended the MxAssist Best Practice Bot recommendation [MXP003](/refguide/performance-best-practices/#mxp003) for a non-indexed attribute used in sorting to the same attribute types as for a non-indexed attribute used in XPath. -* We added a new recommendation [MXP016](/refguide/performance-best-practices/#mxp016) to Best Practice bot to find the key of an OData source that is missing an index. -* We added a **Category** column to the MxAssit Best Practice Bot pane. -* We added a button to filter MxAssist Best Practice Bot recommendations to documents that are not yet committed to version control. +* We added a new recommendation [MXP016](/refguide/performance-best-practices/#mxp016) to MxAssist Best Practice bot to find the key of an OData source that is missing an index. * We updated the MxAssist Best Practice Bot recommendation [MXP011](/refguide/performance-best-practices/#mxp011) to group recommendations together. There is one group for each stack of deeply nested views. +* We added a **Category** column to the MxAssit Best Practice Bot pane. +* We added a button to filter MxAssist Best Practice Bot recommendations for documents that are not yet committed to version control. * We updated MxAssist Logic Bot for when a Boolean decision is chosen (at the top level or in a loop) and both the true and false flows are created. -* We added a new way to convert between microflows and nanoflows by right-clicking the microflow or nanoflow in the **App Explorer**. For more information, see the alternative option specified in the [Converting a Microflow to a Nanoflow](/refguide/microflows/#convert-to-nanoflow) section in *Microflows* and in the [Converting a Nanoflow to a Microflow](/refguide/nanoflows/#convert-to-microflow) section in *Nanoflows*. -* We improved the discoverability of exposing microflows as microflow or workflow actions by adding the **Expose as action** option to the context menu of the microflow editor. -* We added support for enumerations as an attribute type for [business events](/appstore/modules/business-events/). +BEST PRACTICE BOT + +INTEGRATION +* We added F1 help support to the [Machine Learning Kit](/refguide/machine-learning-kit/) document and fixed an issue with its **Properties** pane. * We changed the default location for a published OData service to use lower-case. * We removed the **None** button that appeared when selecting an insert, update, or delete microflow for a published OData resource, because clicking it resulted in a validation error. -* We added {F1} help support to the MLKit document and fixed an issue with its **Properties** pane. -* We improved the message that is shown if no suitable argument is available for a parameter mapping (for example, in the **Page settings** of a **Show a page** action). This now includes the expected type of the parameter. -* We updated the [Revert All Changes](/refguide/version-control-menu/#revert-all-changes) menu item to show the **Open App** dialog box if the app is closed after the operation (for example, when the changes include a version change). -* We added support for signing in using a macOS external browser. This requires configuration. For details, see the [Configuring Your Windows Virtual Machine for Mendix Studio Pro](/refguide/using-mendix-studio-pro-on-a-mac/#configuring) section in *Configuring Parallels*. +INTEGRATION + + + + + + + * Previously, a single XPath query could result in multiple SQL queries to the database, and if an XPath query was run outside of a transaction (meaning, not in a microflow, but in a data grid, for example), these SQL queries were run concurrently. This is no longer the case. This simplifies debugging, logging, and tracing. * We added an option to the `mx check` command in the [mx command-line tool](/refguide/mx-command-line-tool/#check) to output the results to a JSON file. * We added the `IMxRuntimeRequest.getRootUrl` method to the [Mendix Runtime API](/apidocs-mxsdk/apidocs/runtime-api/). This method can be used to retrieve the root URL of the application. From 340e50a299312e14eb6deba0857e5f85f89176d2 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 11:41:10 +0200 Subject: [PATCH 089/232] Review RN --- .../en/docs/releasenotes/studio-pro/10/10.0.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 0b29fa471ba..ae85a3bf3fd 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -65,6 +65,11 @@ MISCELLANEOUS * We removed the limitation that stopped you from automatically creating import and export mappings from message definitions with more than 100 attributes. * Data sources for the list view, data grid, and template grid can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. * We improved the message that is shown if no suitable argument is available for a parameter mapping (for example, in the **Page settings** of a **Show a page** action). This now includes the expected type of the parameter. +* Previously, a single XPath query could result in multiple SQL queries to the database, and if an XPath query was run outside of a transaction (for example, not in a microflow but in a data grid), these SQL queries were run concurrently. This is no longer the case. This simplifies debugging, logging, and tracing. +* We added an option to the `mx check` command in the [mx command-line tool](/refguide/mx-command-line-tool/#check) to output results to a JSON file. +* We improved the naming generation in the JSON structure. +* In OQL, `Attribute = $Parameter` where the parameter is a collection containing only a `null` now checks that the attribute is `empty`. This now also works with the parameter on the left side. +* We added a private market option to the list of available target markets for Studio Pro. MISCELLANEOUS @@ -123,20 +128,13 @@ INTEGRATION INTEGRATION - - - - - -* Previously, a single XPath query could result in multiple SQL queries to the database, and if an XPath query was run outside of a transaction (meaning, not in a microflow, but in a data grid, for example), these SQL queries were run concurrently. This is no longer the case. This simplifies debugging, logging, and tracing. -* We added an option to the `mx check` command in the [mx command-line tool](/refguide/mx-command-line-tool/#check) to output the results to a JSON file. +RUNTIME * We added the `IMxRuntimeRequest.getRootUrl` method to the [Mendix Runtime API](/apidocs-mxsdk/apidocs/runtime-api/). This method can be used to retrieve the root URL of the application. * We added `getSslContext` to the `IHttpConfiguration` interface in the Mendix Runtime API. This gives the Java code access to the `SslContext` that should be used to call a service based on the Mendix Runtime settings. * We added default values for the `ProcessedTasksCleanupAge` and `ScheduledEventsCleanupAge` Mendix Runtime settings. The default value is now 365 days for existing apps with data and 7 days for new apps or apps with an empty database. Previously, the default values were empty and required an explicit Mendix Runtime setting configuration in order to perform cleanup. -* We improved the naming generation in the JSON structure. -* In OQL, `Attribute = $Parameter` where the parameter is a collection containing only a `null` now checks that the attribute is `empty`. This now also works with the parameter on the left side. * We introduced the new Mendix Runtime setting `StrictChangeBehaviour`. This setting is enabled by default. When this setting is enabled, trying to set an invalid value for an enum or a value for a calculated attribute will throw an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. -* We added a private market option to the list of available target markets for Studio Pro. +RUNTIME + ### Deprecations {#deprecations} From 54f99d9b9f99a943b6ac48d34f73b9a943953cf7 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 11:45:50 +0200 Subject: [PATCH 090/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 71 ++++++------------- 1 file changed, 22 insertions(+), 49 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index ae85a3bf3fd..76b560635ec 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -41,22 +41,38 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * We reduced the number of cases in the client where a data source is reloaded, even if its container is hidden by conditional visibility at the same time. (Ticket 126149) * We improved the export size of the model. It should now be about half the size in a lot of cases. (Ticket 174121) * We improved data encryption in mobile apps. (Ticket 181442) - * We added support for signing in using a macOS external browser. This requires configuration. For details, see the [Configuring Your Windows Virtual Machine for Mendix Studio Pro](/refguide/using-mendix-studio-pro-on-a-mac/#configuring) section of *Configuring Parallels*. - * We added a column to the [Open App](/refguide/open-app-dialog/) dialog box that displays the Mendix Studio Pro application **Version** (including for local apps that are stored on disk). * We added a **Preferences** link to the **Open App** dialog box. * We added tooltips to the **Branch Line**, **Message**, and **On Disk** columns in the **Branch Lines** dialog box that is accessible via **Open App**. * We updated the [Revert All Changes](/refguide/version-control-menu/#revert-all-changes) menu item to show the **Open App** dialog box if the app is closed after the operation (for example, when the changes include a version change). - * We extended the **Work Environment** tab in [Preferences](/refguide/preferences-dialog/) with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. * **New merge algorithm with fine-grained conflict resolution** is now the default and only option for conflict resolution in Studio Pro. Therefore, it was removed from the **New Features** tab of the **Preferences** dialog box. - * We made **Design mode** the [default editor](/refguide/preferences-dialog/#default-page-editor) for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. - * The new **Properties** pane that was introduced in [9.23](/releasenotes/studio-pro/9.23/#new-features) is now the default and only option in Studio Pro. It gives you a good overview of what is going on while making it significantly easier to make changes. - * We renamed the **Data Hub** pane to the [Integration](/refguide/integration-pane/) pane. You can still use this pane to view available data sources and use them in your app. +* We added F1 help support to the [Machine Learning Kit](/refguide/machine-learning-kit/) document and fixed an issue with its **Properties** pane. +* We changed the default location for a published OData service to use lower-case. +* We removed the **None** button that appeared when selecting an insert, update, or delete microflow for a published OData resource, because clicking it resulted in a validation error. +* We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. +* We added **Majority** and **Threshold** decision methods to workflow multi-user tasks. +* We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. +* We enhanced the [Lock workflow](/refguide/lock-workflow/) and [Unlock workflow](/refguide/unlock-workflow/) microflow activities by enabling the selection of the workflow definition (which is a Mendix Runtime workflow object), thus making the activity more reusable. +* When creating a new workflow, it is now possible to select a context entity through the creation dialog box instead of adding it afterwards. +* We added a button to the toolbar of the workflow editor that enables the export of a workflow to an image. +* We added a new way to convert between microflows and nanoflows by right-clicking the microflow or nanoflow in the **App Explorer**. For more information, see the alternative options specified in the [Converting a Microflow to a Nanoflow](/refguide/microflows/#convert-to-nanoflow) section of *Microflows* and the [Converting a Nanoflow to a Microflow](/refguide/nanoflows/#convert-to-microflow) section of *Nanoflows*. +* We improved the discoverability of exposing microflows as microflow or workflow actions by adding the **Expose as action** option to the context menu of the microflow editor. +* We added support for enumerations as an attribute type for [business events](/appstore/modules/business-events/). +* For pluggable widgets with a system property Label, **Show label** is now set to **Yes** by default. +* Pluggable widgets with a database, XPath, or association data source can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. +* Configuring pluggable widgets with association properties is now easier. When selecting an association, the selectable object data source is configured with a default database source. Switching from a database to an XPath data source keeps constraints and the selected entity path. +* We extended the MxAssist Best Practice Bot recommendation [MXP003](/refguide/performance-best-practices/#mxp003) for a non-indexed attribute used in sorting to the same attribute types as for a non-indexed attribute used in XPath. +* We added a new recommendation [MXP016](/refguide/performance-best-practices/#mxp016) to MxAssist Best Practice bot to find the key of an OData source that is missing an index. +* We updated the MxAssist Best Practice Bot recommendation [MXP011](/refguide/performance-best-practices/#mxp011) to group recommendations together. There is one group for each stack of deeply nested views. +* We added a **Category** column to the MxAssit Best Practice Bot pane. +* We added a button to filter MxAssist Best Practice Bot recommendations for documents that are not yet committed to version control. +* We updated MxAssist Logic Bot for when a Boolean decision is chosen (at the top level or in a loop) and both the true and false flows are created. + MISCELLANEOUS * Cloning another branch of a Git app in which you already have a branch on disk now first makes a local copy and then downloads the latest version from the server (instead of completely downloading the branch from the server). As Git always downloads the entire history (whereas SVN only downloads the latest revision), making this local copy significantly speeds up working with branches for Git apps. @@ -73,20 +89,6 @@ MISCELLANEOUS MISCELLANEOUS -LOGIC -* We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. -* We added **Majority** and **Threshold** decision methods to workflow multi-user tasks. -* We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. -* We enhanced the [Lock workflow](/refguide/lock-workflow/) and [Unlock workflow](/refguide/unlock-workflow/) microflow activities by enabling the selection of the workflow definition (which is a Mendix Runtime workflow object), thus making the activity more reusable. -* When creating a new workflow, it is now possible to select a context entity through the creation dialog box instead of adding it afterwards. -* We added a button to the toolbar of the workflow editor that enables the export of a workflow to an image. -* We added a new way to convert between microflows and nanoflows by right-clicking the microflow or nanoflow in the **App Explorer**. For more information, see the alternative options specified in the [Converting a Microflow to a Nanoflow](/refguide/microflows/#convert-to-nanoflow) section of *Microflows* and the [Converting a Nanoflow to a Microflow](/refguide/nanoflows/#convert-to-microflow) section of *Nanoflows*. -* We improved the discoverability of exposing microflows as microflow or workflow actions by adding the **Expose as action** option to the context menu of the microflow editor. -* We added support for enumerations as an attribute type for [business events](/appstore/modules/business-events/). -LOGIC - - -DESIGN * We updated the sign-in response pages to include the new Mendix logo. * We updated the login image shown on startup. * We included dark-mode support for the login dialog box shown on startup. @@ -102,39 +104,10 @@ DESIGN * We reduced the number of default panes in the default layout of Studio Pro. * We aligned the horizontal indentation of the text in the column headers and cells in the data grid and tree controls. * We made it possible to use the scrollbars in disabled grids. -DESIGN - - -PLUGGABLE WIDGETS -* For pluggable widgets with a system property Label, **Show label** is now set to **Yes** by default. -* Pluggable widgets with a database, XPath, or association data source can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. -* Configuring pluggable widgets with association properties is now easier. When selecting an association, the selectable object data source is configured with a default database source. Switching from a database to an XPath data source keeps constraints and the selected entity path. -PLUGGABLE WIDGETS - - -BEST PRACTICE BOT -* We extended the MxAssist Best Practice Bot recommendation [MXP003](/refguide/performance-best-practices/#mxp003) for a non-indexed attribute used in sorting to the same attribute types as for a non-indexed attribute used in XPath. -* We added a new recommendation [MXP016](/refguide/performance-best-practices/#mxp016) to MxAssist Best Practice bot to find the key of an OData source that is missing an index. -* We updated the MxAssist Best Practice Bot recommendation [MXP011](/refguide/performance-best-practices/#mxp011) to group recommendations together. There is one group for each stack of deeply nested views. -* We added a **Category** column to the MxAssit Best Practice Bot pane. -* We added a button to filter MxAssist Best Practice Bot recommendations for documents that are not yet committed to version control. -* We updated MxAssist Logic Bot for when a Boolean decision is chosen (at the top level or in a loop) and both the true and false flows are created. -BEST PRACTICE BOT - -INTEGRATION -* We added F1 help support to the [Machine Learning Kit](/refguide/machine-learning-kit/) document and fixed an issue with its **Properties** pane. -* We changed the default location for a published OData service to use lower-case. -* We removed the **None** button that appeared when selecting an insert, update, or delete microflow for a published OData resource, because clicking it resulted in a validation error. -INTEGRATION - - -RUNTIME * We added the `IMxRuntimeRequest.getRootUrl` method to the [Mendix Runtime API](/apidocs-mxsdk/apidocs/runtime-api/). This method can be used to retrieve the root URL of the application. * We added `getSslContext` to the `IHttpConfiguration` interface in the Mendix Runtime API. This gives the Java code access to the `SslContext` that should be used to call a service based on the Mendix Runtime settings. * We added default values for the `ProcessedTasksCleanupAge` and `ScheduledEventsCleanupAge` Mendix Runtime settings. The default value is now 365 days for existing apps with data and 7 days for new apps or apps with an empty database. Previously, the default values were empty and required an explicit Mendix Runtime setting configuration in order to perform cleanup. * We introduced the new Mendix Runtime setting `StrictChangeBehaviour`. This setting is enabled by default. When this setting is enabled, trying to set an invalid value for an enum or a value for a calculated attribute will throw an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. -RUNTIME - ### Deprecations {#deprecations} From ae2feaa6e6749b95e3d3b874920d6b52e051ff91 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 12:43:05 +0200 Subject: [PATCH 091/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 76b560635ec..0077e6f179f 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -72,9 +72,6 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * We added a **Category** column to the MxAssit Best Practice Bot pane. * We added a button to filter MxAssist Best Practice Bot recommendations for documents that are not yet committed to version control. * We updated MxAssist Logic Bot for when a Boolean decision is chosen (at the top level or in a loop) and both the true and false flows are created. - - -MISCELLANEOUS * Cloning another branch of a Git app in which you already have a branch on disk now first makes a local copy and then downloads the latest version from the server (instead of completely downloading the branch from the server). As Git always downloads the entire history (whereas SVN only downloads the latest revision), making this local copy significantly speeds up working with branches for Git apps. * We made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested types based on the most common patterns seen in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. * We added a new log node called **IDResolution**, which provides more details about certain actions being executed on the Mendix Runtime. @@ -86,9 +83,6 @@ MISCELLANEOUS * We improved the naming generation in the JSON structure. * In OQL, `Attribute = $Parameter` where the parameter is a collection containing only a `null` now checks that the attribute is `empty`. This now also works with the parameter on the left side. * We added a private market option to the list of available target markets for Studio Pro. -MISCELLANEOUS - - * We updated the sign-in response pages to include the new Mendix logo. * We updated the login image shown on startup. * We included dark-mode support for the login dialog box shown on startup. @@ -125,14 +119,18 @@ MISCELLANEOUS #### Various Breaking Changes +* The `parseDateTime\[UTC\]` microflow functions now use [strict parsing](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/DateFormat.html#setLenient(boolean)) by default. To revert to lenient parsing, set the `com.mendix.core.LenientDateTimeParsing` custom Mendix Runtime setting to `true`. (Ticket 169612) * When committing multiple objects, the order that **Before Commit** and **After Commit** events are executed may have changed. This order was already documented in [Event Handlers](/refguide/event-handlers/) to be unspecified, and it should not be relied on. * We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling that relies on direct child (`>`), sibling (`+`), or `nth-child` selectors. -* We updated the icons in Atlas and the widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. +* We updated the icons in Atlas and widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. +* We removed the deprecated reporting category widgets. Any reporting category widget in an existing app now triggers a consistency error. +* We removed the deprecated direct function calls from the Pluggable Widget API for [linked property values](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-list-values/#linked-values). +* To make it possible for a multi-user task to have multiple assignees, we renamed the **WorkflowUserTask_Assignee** association to **WorkflowUserTask_Assignees**, and this is a reference set from now on. * For published OData Services, Studio Pro now gives a consistency error when the exposed name of an attribute or association is the same as the exposed name of its entity, because that is not valid according to the OData standard. * The validation of exposed names in published OData services now follows the OData standard more closely, with 128 characters being the maximum length for OData version 4 services. +* We no longer support using DB2 as the database for applications. * We upgraded the SQL Server JDBC driver to version 12.2.0. Since version 10, the driver uses TLS encryption by default. You can turn off encryption by setting `DatabaseUseSsl` to `false` or by setting `encrypt=false` in `DatabaseJdbcUrl`. -* We removed the deprecated reporting category widgets. Any reporting category widget in an existing app now triggers a consistency error. -* We removed the deprecated direct function calls from the Pluggable Widget API for [linked property values](/apidocs-mxsdk/apidocs/pluggable-widgets-client-apis-list-values/#linked-values). +* An XPath constraint of the form `[$objectVariable/BooleanAttribute]` (where the microflow variable is not set) used to be ignored. Now, it is treated as `[false()]`. * In OQL, using a path with an association in the `ON` clause of an `OUTER JOIN` is no longer allowed. * In OQL, comparing an attribute to a collection parameter can only be done with the `IN` or `=` operators (as in, `Attribute IN $param`). * In OQL, clauses like `Attribute = $RangeParameter`, `Attribute > RANGEBEGIN($RangeParameter)`, and `Attribute < RANGEEND($RangeParameter)` with an infinite range (from `null` to `null`) used to be ignored. Now, they are treated as `true`. This makes a difference when the clause has `OR` with another clause. Similarly, `Attribute < RANGEBEGIN($RangeParameter)` with a range starting with `null` or `Attribute > RANGEEND($RangeParameter)` with a range ending with `null` are no longer ignored, but treated as `false`. @@ -144,17 +142,13 @@ MISCELLANEOUS * In Mendix [9.0](/releasenotes/studio-pro/9.0/), we removed support for Mendix Runtime uniqueness validation in preference of database uniqueness validation. There was still a custom setting to use the old behavior. This setting has now been removed. * We are more strict in the URL formats we accept at the Mendix Runtime server. We no longer allow empty path segments (meaning, `//`, as in `http://your.app//`), ambiguous path segments (`http://your.app/%2e%2e/path`), or UTF-16 encoding (`http://your.app/path%u2192`). * We upgraded `com.sun.xml.ws.jaxws-ri` from `2.3.6` to `4.0.1`. As a result, the `SOAPFaultException` that may be thrown by consumed web services is now in the `jakarta.xml.ws` namespace. -* We removed the deprecated metric types `statsd` and `logger`. Mendix now only supports Micrometer metrics. Correspondingly, the only valid value for the `com.mendix.metrics.Type` Mendix Runtime setting is `micrometer`. We also removed the following legacy StatsD runtime settings: `com.mendix.metrics.Host`, `com.mendix.metrics.Port`, `com.mendix.metrics.Items`, and `com.mendix.metrics.FlushTime`. You can use the `Metrics.Registries` Mendix Runtime setting to configure a StatsD registry instead. -* To make it possible for a multi-user task to have multiple assignees, we renamed the `WorkflowUserTask_Assignee` association to `WorkflowUserTask_Assignees`, and this is a reference set from now on. +* We removed the deprecated metric types `statsd` and `logger`. Mendix now only supports Micrometer metrics. Correspondingly, the only valid value for the `com.mendix.metrics.Type` Mendix Runtime setting is `micrometer`. We also removed the following legacy StatsD Runtime settings: `com.mendix.metrics.Host`, `com.mendix.metrics.Port`, `com.mendix.metrics.Items`, and `com.mendix.metrics.FlushTime`. You can use the `Metrics.Registries` Mendix Runtime setting to configure a StatsD registry instead. * We removed the request metric `mx.runtime.stats.handler.requests.[name]`, where `name` is the request handler name. This metric was replaced with the metric `mx.runtime.stats.handler_requests`, with the request handler name added as a tag. -* The `parseDateTime\[UTC\]` microflow functions now use [strict parsing](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/DateFormat.html#setLenient(boolean)) by default. To revert to lenient parsing, set the `com.mendix.core.LenientDateTimeParsing` custom Mendix Runtime setting to `true`. (Ticket 169612) * It is no longer possible to call `clear()` on the list returned by the `IDataTable.getRows()` API function. The list returned by `subList()` is no longer modifiable. * Instances of `IDataTable`, `IDataTableSchema`, and `IDataColumnSchame` no longer provide equality. As of now, `equals()` and `hashCode()` are based on object identity. -* An XPath constraint of the form `[$objectVariable/BooleanAttribute]` (where the microflow variable is not set) used to be ignored. Now, it is treated as `[false()]`. * We changed the MIME type returned for *.js* files from the legacy `application/javascript` to `text/javascript`. * We removed the deprecated error constants from `AdminException` and `IMxRuntime`. * We removed the deprecated `IActionRegistrator#bundleComponentLoaded` method. -* We no longer support using DB2 as the database for applications. #### Generated Code Changes {#generated-code-changes} From 2b318f99e5e27acd78a8e3ee82eeeff9d592fa3a Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 12:47:02 +0200 Subject: [PATCH 092/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 0077e6f179f..0a4ecb400bf 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -154,13 +154,12 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * The public constructors of generated constant and microflow proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. * Entity and list of entity parameters in Java actions are now initialized in the constructor, and the accompanying `__[FieldName]` field is generated as deprecated. To get access to the `IMendixObject` variant, call the `getMendixObject()` method on the field (or items in the list in case of a list). -* The `initialize(IContext, IMendixIdentifier)`, and `getGUID()`methods on generated entity proxies are no longer generated. +* The `initialize(IContext, IMendixIdentifier)` and `getGUID()`methods on generated entity proxies are no longer generated. * We introduced the Mendix Runtime setting `ObjectManagement.StrictChangeBehavior` (formerly known as `StrictChangeBehaviour`), which is enabled by default. When enabled, trying to set an invalid value for an enumeration or a value for a calculated attribute throws an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. We plan to remove this setting in Mendix version 11, after which, an exception will be raised when setting an invalid value. * We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. -* The public constructors of generated `Constant` and `Microflow` proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. +* The public constructors of the generated `Constant` and `Microflow` proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. * The fields in Java actions are now generated as final fields. * The `Entity` and `List of Entity` parameters in Java actions are now initialized in the constructor, and the accompanying `__[FieldName]` field will be generated as deprecated. To get access to the `IMendixObject` variant, call the `getMendixObject()` method on the field (or items in the list, in case of a list). -* The `initialize(IContext, IMendixIdentifier)` and `getGUID()` methods on generated entity proxies are no longer generated. * We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. ### Known Issues From 60f645a0fc4ddaf471073c629db229d0119613f7 Mon Sep 17 00:00:00 2001 From: Tim van der Voorn Date: Wed, 21 Jun 2023 13:01:03 +0200 Subject: [PATCH 093/232] Add majority and threshold decision methods to multi-user task --- .../workflow-elements/multi-user-task.md | 144 +++++++++++++++++- 1 file changed, 140 insertions(+), 4 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index ba18cbf293e..1e45e03ccc9 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -73,6 +73,10 @@ Specifies the microflow used to assign the multi-user task. This option is displ ### 2.5 Completion Condition Section {#completion-condition} +{{% alert color="info" %}} +The completion condition is evaluated after each user selects an outcome. When a user selects an outcome and this results in the task to be completed, the task will be removed from the inbox of the remaining users as outcomes will not change the final multi-user task outcome. +{{% /alert %}} + #### 2.5.1 Participant Input {#participant-input} This property determines the maximum number of targeted users that are required to select an outcome to complete a multi-user task. @@ -128,12 +132,13 @@ This outcome will be the final outcome of the multi-user task in the following c For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then consensus can never be reached and fallback outcome will be used as the final outcome to complete the task. -{{% alert color="info" %}} -The fallback outcome should not be an option a user can select on the task page. -{{% /alert %}} +* If the multi-user task is completed with a final outcome before all required users have completed their task: + + For example, when 5 users need to review a contract (`Approve`, `Reject`) and the first 2 users are not in agreement (one selects `Approve` and the other one selects `Reject`), this multi-user task will be completed with the **Fallback outcome**. The input from the other users will not change the final outcome anymore. The task will no longer appear in their inbox. + {{% alert color="info" %}} -The completion condition is evaluated after each user selects an outcome. Therefore,it is possible that a multi-user task completes with a final outcome before all required users have completed their task. For example, when 5 users need to review a contract (`Approve`, `Reject`) and the first 2 users are not in agreement (one selects `Approve` and the other one selects `Reject`), this multi-user task will be completed with the **Fallback outcome**. The input from the other users will not change the final outcome anymore. The task will no longer appear in their inbox. +The fallback outcome should not be an option a user can select on the task page. {{% /alert %}} ##### 2.5.2.2 Veto {#veto} @@ -174,6 +179,137 @@ This property defines the [veto](#veto) outcome. The completion condition is evaluated after each user selects an outcome. When one user completes the task by selecting the veto outcome, the multi-user task will be completed with the veto outcome. The task will be removed from the inbox of the remaining users. Their outcomes will not change the final multi-user task outcome. {{% /alert %}} +##### 2.5.2.3 Majority {#majority} + +Select this rule when a task should result in an outcome based on an absolute or relative majority number of votes. The number of required votes is defined as the result of the [participant input](#participant-input). + +###### 2.5.2.3.1 Majority type + +This property determines the majority type that will be applied when using the majority decision method. + +###### 2.5.2.3.1.1 More than half {#more-than-half} + +When one of the outcomes reaches more than 50% of all possible this votes (absolute majority), the task is competed with this outcome. + +###### 2.5.2.3.1.2 Most chosen {#most-chosen} + +When one of the outcomes gets the most votes (relative majority) and additional votes will not result in another outcome getting more votes, the task is competed with this outcome. + +###### 2.5.2.3.2 Fallback outcome {#majority-fallback-outcome} + +This outcome will be the final outcome of the multi-user task in the following cases: + +* If it is determined that none of the remaining votes will result in a majority. +* If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Participant input** section: + +For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then majority can never be reached and the fallback outcome will be used as the final outcome to complete the task. + +{{% alert color="info" %}} +A fallback outcome be both a selectable outcome and a fallback outcome at the same time. +{{% /alert %}} + +{{% alert color="info" %}} +When [more than half](#more-than-half) is selected as the **Majority type**, the [fallback outcome](#majority-fallback-outcome) is only required when there are 3 or more outcomes defined. +{{% /alert %}} + +{{% alert color="info" %}} +The completion condition is evaluated after each user selects an outcome. If a user selects an outcome and this results in a majority, the multi-user task will be completed with that outcome. The task will be removed from the inbox of the remaining users as their votes will not change the final multi-user task outcome. +{{% /alert %}} + +###### 2.5.2.3.3 Example + +The following example shows how you can use **Majority** as the **Decision method** and using [more than half](#more-than-half) or [most-chosen](#most-chosen) as the majority type: + +There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and fallback outcome C. 5 users have voted for outcome A, 4 users have voted for outcome B and 0 users voted for outcome C. This means that the task has 9 completed votes, and 1 vote is left to that will determine the outcome. + +| Outcomes | A | B | C | +|----------|-----|-----|-----| +| Votes | 5 | 4 | 0 | + +* In case the majority type is [more than half](#more-than-half), there is no absolute majority yet, as this would require more than half (6 votes) of the users to select the same outcome. In this example, when the next user votes for outcome A, the task will be completed with outcome A as this is the first outcome to receive the absolute majority of the available votes. In case the last user completes the task with outcome B or C, the task will be completed with the [fallback outcome](#majority-fallback-outcome) as there is no absolute majority possible. +* In case the majority type is [most-chosen](#most-chosen), when last user selects outcome A or C the task will be completed with outcome A, since it has most votes of all outcomes. If the user selects outcome B, the task completes with the [fallback outcome](#fallback-outcome) because both A and B have 5 votes. + +{{% alert color="info" %}} +* When there are 2 outcomes for a task, there is no difference between [more than half](#more-than-half) and [most-chosen](#most-chosen). + {{% /alert %}} + +You can refer to the following properties settings for this example: + +* **Targeted users**: The users that can perform the task +* **Participant input**: **All target users** +* **Decision method**: **Majority** +* **Majority type**: **More than half** or **Most chosen** +* **Fallback outcome**: An outcome users can select, but it will be selected automatically when there is no majority (in this example, `C`) +* **Outcomes**: `A`, `B`, `C` + +##### 2.5.2.4 Threshold {#threshold} + +Select this rule when a task should complete with an outcome when the number of votes for this outcome reaches the amount of votes set as the threshold value. The number of required votes is defined as the result of the [participant input](#participant-input). + +###### 2.5.2.4.1 Threshold type {#threshold-type} + +This property determines the threshold type that will be applied when using the threshold decision method. + +###### 2.5.2.4.1.1 Percentage + +Of the specified percentage of targeted users defined in the participant input section, a task will be completed with an outcome when it reaches the specified percentage of votes. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value. + +For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `50%`, a user task will complete with the outcome that gets 5 votes. + +###### 2.5.2.4.1.2 Absolute number + +Of the specified percentage of targeted users defined in the participant input section, a task will be completed with an outcome when it reaches the specified amount of votes. + +For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `5`, a user task will complete with the outcome that gets 5 votes. + +{{% alert color="info" %}} +A threshold of `51%` is the same as using **Majority** as the **Decision method** with [more than half](#more-than-half) as the **Majority type** +{{% /alert %}} + +{{% alert color="info" %}} +A threshold of `100%` is the same as using **Consensus** as the **Decision method** +{{% /alert %}} + +###### 2.5.2.4.2 Fallback outcome {#threshold-fallback-outcome} + +This outcome will be the final outcome of the multi-user task in the following cases: + +* If it is determined that it is not possible to reach the threshold with the remaining votes. +* If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Participant input** section: + +For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then the threshold can never be reached and the fallback outcome will be used as the final outcome to complete the task. + +{{% alert color="info" %}} +A fallback outcome be both a selectable outcome and a fallback outcome at the same time. +{{% /alert %}} + +{{% alert color="info" %}} +The completion condition is evaluated after each user selects an outcome. If a user selects an outcome and this results an outcome reaching the threshold, the multi-user task will be completed with that outcome. The task will be removed from the inbox of the remaining users as their votes will not change the final multi-user task outcome. +{{% /alert %}} + +###### 2.5.2.4.3 Example + +The following example shows how you can use **Threshold** as the **Decision method** using **Percentage** as the [threshold type](#threshold-type): + +There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and fallback outcome C and the threshold value is `60%`. 3 users have voted for outcome A, 4 users have voted for outcome B and 1 user voted for outcome C. This means that in total, 8 users have voted and there are a maximum of 2 votes to go to complete the task. + +| Outcomes | A | B | C | +|----------|-----|-----|-----| +| Votes | 3 | 5 | 1 | + +* In case the next user votes outcome A or C, the remaining votes will never reach threshold of `60%`. Therefore, the task will complete with the [fallback outcome](#threshold-fallback-outcome). +* In case the last two users vote for outcome B, the task is completed with outcome B as it was the first outcome to reach the threshold of `60%`. +* In case the 9th user votes for outcome B and the last user votes for either outcome A or C, none of the outcomes reaches the threshold of `60%`. Therefore, the task will complete with the [fallback outcome](#threshold-fallback-outcome). + +You can refer to the following properties settings for this example: + +* **Targeted users**: The users that can perform the task +* **Participant input**: **All target users** +* **Decision method**: **Threshold** +* **Threshold type**: **Percentage** +* **Fallback outcome**: An outcome users can select, but it will be selected automatically when there is no majority (in this example, `C`) +* **Outcomes**: `A`, `B`, `C` + ### 2.6 Outcomes Section {#outcomes} The outcomes property allows you to create new outcomes for the multi-user task. Outcomes are translated into different outgoing paths of the multi-user task and can be referred to by other elements, such as a button. For example, you have a process when you need to approve or reject a request. One button on a [task page](#task-page) can refer to the **Approve** outcome of the multi-user task, while another one can use the **Reject** outcome. From eb804d7d36b04c75fdf2514fabb6092de9051b28 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 13:03:51 +0200 Subject: [PATCH 094/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 0a4ecb400bf..2205b2c4bed 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -165,10 +165,10 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro ### Known Issues * The algorithm for detecting conflicts during the migration of workflows with active multi-user tasks is currently too rigid and will not allow a conflicted user task to be continued in certain cases. In a future release, we will provide better migration scenarios where workflows with conflicted multi-user tasks can be continued. These are the situations in which a multi-user task is marked as **Incompatible** without continue: - * The type of decision method (as in, **Consensus**, **Majority**, **Threshold**, or **Veto**) is changed - * A **Majority** decision method is changed from **More than half** to **Most voted** - * A **Threshold** decision method is changed from **Percentage** to **Absolute number** or vice versa - * The **Percentage** or **Amount** value for the **Threshold** decision method is lowered + * The type of decision method (as in, **Consensus**, **Majority**, **Threshold**, or **Veto**) is changed. + * A **Majority** decision method is changed from **More than half** to **Most voted**. + * A **Threshold** decision method is changed from **Percentage** to **Absolute number** or vice versa. + * The **Percentage** or **Amount** value for the **Threshold** decision method is lowered. ## 10.0.0 Betas From 3f3addb016130a9c314f0087fe02db4dd0212a2c Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 14:07:48 +0200 Subject: [PATCH 095/232] Restructure --- .../feature-release-calendar/_index.md | 93 ++++--------------- 1 file changed, 19 insertions(+), 74 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 04d5d3b39ab..481c50b3c27 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -1,7 +1,7 @@ --- -title: "Feature Release Calendar" +title: "Mendix Feature Release Calendar" url: /releasenotes/feature-release-calendar/ -tags: ["mendix world", "announcements", "features", "feature release", "products", "features and products", "calendar", "new"] +tags: ["announcements", "features", "feature release", "products", "features and products", "calendar", "new", "mendix 10", "mx10"] weight: 60 #notoc: true #layout: wide @@ -9,95 +9,40 @@ weight: 60 ## 1 Introduction -At Mendix World on September 8th, 2021, there were a number of announcements for features that Mendix is releasing. This document contains the calendar of expected release dates for these features. +[**ADD INTRO CONTENT, DIAGRAM, AND ALT TEXT**] -The new features were divided into these major announcements, which are described in the sections below: - -{{< figure src="/attachments/releasenotes/mx-world-2021/innovations.png" alt="Announcements are solutions platform, end-user services and studio, control center, next-level front-end, page bot and machine learning toolkit, studio pro experience, data hub 2.0, intelligent automation, and hybrid cloud automation." >}} +{{< figure src="/attachments/releasenotes/mx-world-2021/innovations.png" alt="Announcements are _______" >}} {{% alert color="info" %}} "GA" means General Availability for all users. A GA release is different than a Beta release. For more information, see [Beta Releases](/releasenotes/beta-features/). {{% /alert %}} -If you want to watch the keynote speech in which these announcements were made, you can find it at [Mendix World 2021](https://events.mendixworld.com/widget/mendix/world21/catalog/session/1624031940353001Xclf) — you will need to register or have already registered for Mendix World 2021 to see this. - -## 2 Solutions Platform +## 2 Continuous Collaboration -| Feature | Expected Release | +| Capability or Feature | Expected Release | | --- | --- | -| Consuming add-on modules | Released for Mendix Vendor Program on [Mar 29th, 2022](/releasenotes/studio-pro/9.12/#add-on) | -| Publishing add-on modules | Released for Mendix Vendor Program on [Mar 29th, 2022](/releasenotes/studio-pro/9.12/#add-on) | +| __ | __ | -## 3 End-User Services and Studio +## 3 Developer Experience -| Feature | Expected Release | +| Capability or Feature | Expected Release | | --- | --- | -| Studio expression editor | Released for GA on [May 19th, 2021](/releasenotes/studio/9.0-9.6/#expression-editor) | -| End-user services – App Switcher | Released for GA on [Jan 14th, 2022](/appstore/modules/app-switcher/) | -| Studio workflow templates | Released for GA | +| __ | __ | -## 4 Control Center +## 4 Composability -| Feature | Expected Release | +| Capability or Feature | Expected Release | | --- | --- | -| Platform user onboarding experience | Released for GA on [Oct 1st, 2021](/releasenotes/developer-portal/#oct1) | -| Dashboards with insights on platform employees and app activity | Released for GA in Apr 2022 | -| Overview of cloud environments | Released for GA on [Jun 9th, 2022](/releasenotes/developer-portal/#june-9th-2022) | +| __ | __ | -## 5 Next-Level Front-End +## 5 Multi-Cloud Deployment -| Feature | Expected Release | +| Capability or Feature | Expected Release | | --- | --- | -| Atlas UI 3.0 with full design system support | Released for GA on [Mar 31st, 2021](/releasenotes/studio-pro/9.0/) | -| Native mobile – nanoflow home page | Released for GA on [Jul 27th, 2021](/releasenotes/studio-pro/9.4/) | -| Native mobile – over the air (OTA) updates | Released for GA on [Oct 26th, 2021](/releasenotes/studio-pro/9.7/) | -| Native mobile – delete | Released for GA on [Oct 26th, 2021](/releasenotes/studio-pro/9.7/) | -| Data widgets – Gallery | Released for GA on [Nov 16th, 2021](https://marketplace.mendix.com/link/component/116540https://marketplace.mendix.com/link/component/116540) | -| Data widgets – Tree View | Released for GA on [Nov 16th, 2021](https://marketplace.mendix.com/link/component/116540https://marketplace.mendix.com/link/component/116540) | -| Styling editor in Studio Pro | Released for GA on [Dec 17th, 2021](/releasenotes/studio-pro/9.9/) | -| Multiple page parameters | Released for GA on [Sep 30th, 2022](/releasenotes/studio-pro/9.18/#mpp) | -| Native mobile – simplified monitoring | Released for GA on [Oct 14th, 2022](/releasenotes/studio-pro/9.18/#9181) | -| Native mobile – file and image background sync | GA: TBD | -| Data widgets – Tree Table | GA: TBD | -| Data widgets – Spread Sheet Grid | GA: TBD | - -## 6 Page Bot and Machine Learning Toolkit - -| Feature | Expected Release | -| --- | --- | -| MxAssist Logic Bot improvements | Released for GA on [Oct 26th, 2021](/releasenotes/studio-pro/9.7/#mx-assist-logic-bot) | -| MxAssist Performance Bot new best practices | Released for GA on [Oct 26th, 2021](/releasenotes/studio-pro/9.7/); [Nov 30th, 2021](/releasenotes/studio-pro/9.8/); [Dec 17th, 2021](/releasenotes/studio-pro/9.9/) | -| Validation Assist | Released for GA on Dec 20th, 2022 | -| Machine learning toolkit | Currently in Public Beta
GA: TBD | - -## 7 Studio Pro Experience - -| Feature | Expected Release | -| --- | --- | -| Studio Pro modernization | Released for GA on [Sep 28th, 2021](/releasenotes/studio-pro/9.6/#studio-pro-new-design) | -| Team Server Git (Mendix Cloud) | Released for GA on [Mar 29th, 2022](/releasenotes/studio-pro/9.12/#team-server-git) | -| BYO Git (Bring Your Own) | Released for GA on [Mar 28th, 2023](/releasenotes/studio-pro/9.24/#private-git) | -| Studio Pro dark mode | Currently in Public Beta
GA: TBD | - -## 8 Data Hub 2.0 - -| Feature | Expected Release | -| --- | --- | -| External entity create, update, and delete (AKA write) | Released for GA on [May 24th, 2022](/releasenotes/studio-pro/9.13/#new-features) | -| Connector Kit 2.0 (OData publish with microflows and Marketplace integration) | Released for GA on [Aug 31st, 2022](/releasenotes/studio-pro/9.17/#new-features) | -| Business events and event broker | Released for GA on [September 30th, 2022](/releasenotes/studio-pro/9.18/#other-new-features) | - -## 9 Intelligent Automation - -| Feature | Component | Expected Release | -| --- | --- | --- | -| Smart app services | MS Teams Connector |Released for GA on [May 2nd, 2022](https://marketplace.mendix.com/link/component/118391)| -| Workflow | | Released for GA on [Jan 25th, 2022](/releasenotes/studio-pro/9.10/#new-features) | +| __ | __ | -## 10 Hybrid Cloud Automation +## 6 Governance & Control -| Feature | Expected Release | +| Capability or Feature | Expected Release | | --- | --- | -| New Mendix Cloud regions – Shanghai, Sydney, Montreal | Released for GA in Aug, 2021 | -| Mendix for Private Cloud – automated installation and configuration of Mendix for Private Cloud on Kubernetes | Released for GA on [Sep 2nd, 2021](/releasenotes/developer-portal/mendix-for-private-cloud/#20210902) | -| Mendix for Private Cloud – built-in CI/CD | Released for GA on [Sep 27th, 2022](/releasenotes/developer-portal/mendix-for-private-cloud/#tekton) | +| __ | __ | From 8a63f06b54974ae87d7a86e4e4ac0bc82f807720 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Wed, 21 Jun 2023 15:12:45 +0200 Subject: [PATCH 096/232] Update _index.md --- content/en/docs/releasenotes/feature-release-calendar/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 481c50b3c27..27a4de22466 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -1,5 +1,5 @@ --- -title: "Mendix Feature Release Calendar" +title: "Mendix 10 Feature Release Calendar" url: /releasenotes/feature-release-calendar/ tags: ["announcements", "features", "feature release", "products", "features and products", "calendar", "new", "mendix 10", "mx10"] weight: 60 From 0edb3bee7fda1d40af0ef4e0eaa3eb2b77b72dee Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Wed, 21 Jun 2023 15:42:36 +0200 Subject: [PATCH 097/232] Adjust cards --- .../partials/landingpage/product-cards.html | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/layouts/partials/landingpage/product-cards.html b/layouts/partials/landingpage/product-cards.html index 52fccc326bf..bd49847175d 100644 --- a/layouts/partials/landingpage/product-cards.html +++ b/layouts/partials/landingpage/product-cards.html @@ -3,7 +3,7 @@
@@ -27,30 +27,30 @@ From 3ee59f131272982aeec67f0aba541a2bdcc88f83 Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Wed, 21 Jun 2023 16:41:06 +0200 Subject: [PATCH 099/232] Address some comments from Paul, and language and style review --- .../workflow-elements/multi-user-task.md | 74 ++++++++----------- 1 file changed, 30 insertions(+), 44 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index 1e45e03ccc9..ac1301f3252 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -81,21 +81,13 @@ The completion condition is evaluated after each user selects an outcome. When a This property determines the maximum number of targeted users that are required to select an outcome to complete a multi-user task. -##### 2.5.1.1 All +Possible options of participant input are described in the table below: -All targeted users should select an outcome to complete the multi-user task. - -##### 2.5.1.2 Absolute Number {#absolute-number} - -The specified amount of targeted users should select an outcome to complete the multi-user task. - -##### 2.5.1.3 Percentage - -The specified percentage of targeted users should select an outcome to complete the multi-user task. - -The result of applying the percentage will be rounded upwards to the nearest mathematical integer value. - -For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome to complete the multi-user task. +| Participant Input | Description | +| --- | --- | +| **All Target Users** | All targeted users should select an outcome to complete the multi-user task. | +| **Absolute Number** | The specified amount of targeted users should select an outcome to complete the multi-user task. | +| **Percentage** | The specified percentage of targeted users should select an outcome to complete the multi-user task. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value. For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome to complete the multi-user task. | #### 2.5.2 Decision Method @@ -161,7 +153,7 @@ You can refer to the following properties settings for the example above: * **Veto outcome**: `DoNotHire` * **Outcomes**: `Hire`, `DoNotHire` -Another example is when a group of five experts needs to decide whether a change request is `Minor` or `Major`. If any one of the five experts decides it is a major request, the change request will be `Major`. The input from the other four experts is not relevant anymore. If all five of them decide it is a minor change request, the final multi-user task outcome will be `Minor`. In this case, the outcome `Major` is the veto outcome. +Another example is when a group of five experts needs to decide whether a change request is `Minor` or `Major`. In this example, the outcome `Major` is the veto outcome. If any one of the five experts decides it is a major request, the change request will be `Major`. The input from the other four experts is not relevant anymore. If all five of them decide it is a minor change request, the final multi-user task outcome will be `Minor`. You can refer to the following properties settings for the second example above: @@ -181,19 +173,18 @@ The completion condition is evaluated after each user selects an outcome. When o ##### 2.5.2.3 Majority {#majority} -Select this rule when a task should result in an outcome based on an absolute or relative majority number of votes. The number of required votes is defined as the result of the [participant input](#participant-input). +Select this decision method when a task should result in an outcome based on an absolute or relative majority number of votes. The number of required votes is defined as the result of the [participant input](#participant-input). ###### 2.5.2.3.1 Majority type This property determines the majority type that will be applied when using the majority decision method. -###### 2.5.2.3.1.1 More than half {#more-than-half} - -When one of the outcomes reaches more than 50% of all possible this votes (absolute majority), the task is competed with this outcome. - -###### 2.5.2.3.1.2 Most chosen {#most-chosen} +Possible options of majority type are described in the table below: -When one of the outcomes gets the most votes (relative majority) and additional votes will not result in another outcome getting more votes, the task is competed with this outcome. +| Majority Type | Description | +| --- | --- | +| **More than half** | When one of the outcomes reaches more than 50% of all possible votes (absolute majority), the task is competed with this outcome. | +| **Most chosen** | When one of the outcomes gets the most votes (relative majority) and additional votes will not result in another outcome getting more votes, the task is competed with this outcome. | ###### 2.5.2.3.2 Fallback outcome {#majority-fallback-outcome} @@ -205,11 +196,11 @@ This outcome will be the final outcome of the multi-user task in the following c For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then majority can never be reached and the fallback outcome will be used as the final outcome to complete the task. {{% alert color="info" %}} -A fallback outcome be both a selectable outcome and a fallback outcome at the same time. +A fallback outcome can be both a selectable outcome and a fallback outcome at the same time. {{% /alert %}} {{% alert color="info" %}} -When [more than half](#more-than-half) is selected as the **Majority type**, the [fallback outcome](#majority-fallback-outcome) is only required when there are 3 or more outcomes defined. +When the **Majority type** is set to **More than half**, the fallback outcome is only required when there are 3 or more outcomes defined. {{% /alert %}} {{% alert color="info" %}} @@ -218,20 +209,20 @@ The completion condition is evaluated after each user selects an outcome. If a u ###### 2.5.2.3.3 Example -The following example shows how you can use **Majority** as the **Decision method** and using [more than half](#more-than-half) or [most-chosen](#most-chosen) as the majority type: +The following example shows how it works when the decision method is **Majority** and the majority type is **More than half** or **Most chosen**. -There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and fallback outcome C. 5 users have voted for outcome A, 4 users have voted for outcome B and 0 users voted for outcome C. This means that the task has 9 completed votes, and 1 vote is left to that will determine the outcome. +There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and C. 5 users have voted for outcome A, 4 users have voted for outcome B and 0 users voted for outcome C. This means that the task has 9 completed votes, and 1 vote is left to determine the final outcome of the task. | Outcomes | A | B | C | |----------|-----|-----|-----| | Votes | 5 | 4 | 0 | -* In case the majority type is [more than half](#more-than-half), there is no absolute majority yet, as this would require more than half (6 votes) of the users to select the same outcome. In this example, when the next user votes for outcome A, the task will be completed with outcome A as this is the first outcome to receive the absolute majority of the available votes. In case the last user completes the task with outcome B or C, the task will be completed with the [fallback outcome](#majority-fallback-outcome) as there is no absolute majority possible. -* In case the majority type is [most-chosen](#most-chosen), when last user selects outcome A or C the task will be completed with outcome A, since it has most votes of all outcomes. If the user selects outcome B, the task completes with the [fallback outcome](#fallback-outcome) because both A and B have 5 votes. +* In case the majority type is **More than half**, there is no absolute majority yet, as this would require more than half (6 votes) of the users to select the same outcome. In this example, when the next user votes for outcome A, the task will be completed with outcome A, as this is the first outcome to receive the absolute majority of the available votes. In case the last user completes the task with outcome B or C, the task will be completed with the fallback outcome, as there is no absolute majority possible. +* In case the majority type is **Most chosen**, when the last user selects outcome A or C, the task will be completed with outcome A, since it has most votes of all outcomes. If the user selects outcome B, the task completes with the fallback outcome because both A and B have 5 votes. {{% alert color="info" %}} -* When there are 2 outcomes for a task, there is no difference between [more than half](#more-than-half) and [most-chosen](#most-chosen). - {{% /alert %}} +When there are only 2 outcomes for a task, there is no difference between the majority type **More than half** and **Most chosen**. +{{% /alert %}} You can refer to the following properties settings for this example: @@ -244,30 +235,25 @@ You can refer to the following properties settings for this example: ##### 2.5.2.4 Threshold {#threshold} -Select this rule when a task should complete with an outcome when the number of votes for this outcome reaches the amount of votes set as the threshold value. The number of required votes is defined as the result of the [participant input](#participant-input). +Select this decision method when a task should complete with an outcome when the number of votes for this outcome reaches the amount of votes set as the threshold value. The number of required votes is defined as the result of the [participant input](#participant-input). ###### 2.5.2.4.1 Threshold type {#threshold-type} This property determines the threshold type that will be applied when using the threshold decision method. -###### 2.5.2.4.1.1 Percentage - -Of the specified percentage of targeted users defined in the participant input section, a task will be completed with an outcome when it reaches the specified percentage of votes. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value. +Possible options of threshold type are described in the table below: -For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `50%`, a user task will complete with the outcome that gets 5 votes. - -###### 2.5.2.4.1.2 Absolute number - -Of the specified percentage of targeted users defined in the participant input section, a task will be completed with an outcome when it reaches the specified amount of votes. - -For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `5`, a user task will complete with the outcome that gets 5 votes. +| Threshold Type | Description | +| --- | --- | +| **Percentage** | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified percentage of votes. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `50%`, a user task will complete with the outcome that gets 5 votes. | +| **Absolute number** | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified amount of votes.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `5`, a user task will complete with the outcome that gets 5 votes. | {{% alert color="info" %}} -A threshold of `51%` is the same as using **Majority** as the **Decision method** with [more than half](#more-than-half) as the **Majority type** +A threshold of `51%` is the same as using **Majority** as the **Decision method** with **More than half** as the **Majority type**. {{% /alert %}} {{% alert color="info" %}} -A threshold of `100%` is the same as using **Consensus** as the **Decision method** +A threshold of `100%` is the same as using **Consensus** as the **Decision method**. {{% /alert %}} ###### 2.5.2.4.2 Fallback outcome {#threshold-fallback-outcome} @@ -291,7 +277,7 @@ The completion condition is evaluated after each user selects an outcome. If a u The following example shows how you can use **Threshold** as the **Decision method** using **Percentage** as the [threshold type](#threshold-type): -There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and fallback outcome C and the threshold value is `60%`. 3 users have voted for outcome A, 4 users have voted for outcome B and 1 user voted for outcome C. This means that in total, 8 users have voted and there are a maximum of 2 votes to go to complete the task. +There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and C. The threshold value is `60%`. 3 users have voted for outcome A, 4 users have voted for outcome B, and 1 user voted for outcome C. This means that in total, 8 users have voted and there are a maximum of 2 votes to go to complete the task. | Outcomes | A | B | C | |----------|-----|-----|-----| From 0fab556fc808305cfc7a12d360012f55c986acd9 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Wed, 21 Jun 2023 17:55:20 +0200 Subject: [PATCH 100/232] Update instances of **Data hub** --- content/en/docs/catalog/consume/consume.md | 2 +- .../en/docs/catalog/integrate/share-data/_index.md | 8 ++++---- .../en/docs/catalog/integrate/write-data/_index.md | 6 +++--- .../modeling/domain-model/external-entities.md | 10 +++++----- .../consumed-odata-services/_index.md | 4 ++-- .../consumed-odata-service.md | 8 ++++---- .../modeling/menus/view-menu/integration-pane.md | 14 +++++++------- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/content/en/docs/catalog/consume/consume.md b/content/en/docs/catalog/consume/consume.md index c618abfede9..4403f20650b 100644 --- a/content/en/docs/catalog/consume/consume.md +++ b/content/en/docs/catalog/consume/consume.md @@ -30,7 +30,7 @@ It is good practice for publishers of a service to deprecate a service version i ### 2.2 Consumed External Entities -When you use an external entity from a published OData service through the **Data Hub** pane in Studio Pro, you are consuming the dataset from the service deployed to a specific environment. +When you use an external entity from a published OData service through the [Integration pane](/refguide/integration-pane/] in Studio Pro, you are consuming the dataset from the service deployed to a specific environment. When security is enabled for your app, you can define access rules for external entities just as you would for [persistable](/refguide/persistability/#persistable) and [non-persistable](/refguide/persistability/#non-persistable) entities. You can define access rules based on user roles (for more details, see [Security and Controlling Access to Information](/catalog/security/)). diff --git a/content/en/docs/catalog/integrate/share-data/_index.md b/content/en/docs/catalog/integrate/share-data/_index.md index 59902551c7c..6de2b88fd8c 100644 --- a/content/en/docs/catalog/integrate/share-data/_index.md +++ b/content/en/docs/catalog/integrate/share-data/_index.md @@ -133,16 +133,16 @@ You are going to create a second app and consume the **Customer** dataset from t To do this, follow the steps below: 1. In Mendix Studio Pro, create a new app using the **Blank** app template and call it *{yourname}CustomerActionsApp*. -2. Go to the domain model > **Data Hub** pane (if you do not see the **Data Hub** pane, click **View** > **Data Hub** to display it). +2. Go to the domain model > [Integration pane](/refguide/integration-pane/] (if you do not see the [Integration pane](/refguide/integration-pane/], click **View** > **Data Hub** to display it). 3. In the [Data Hub](/refguide/data-hub-pane/) pane, enter the search string *{yourname}*. -4. By default, search in the **Data Hub** pane only shows services in **Production** environments. Your app was deployed as a **Sandbox** app. Click the **Filter** icon next to the search and check **Show development environments**. +4. By default, search in the [Integration pane](/refguide/integration-pane/] only shows services in **Production** environments. Your app was deployed as a **Sandbox** app. Click the **Filter** icon next to the search and check **Show development environments**. {{< figure src="/attachments/data-hub/share-data/filter-icon.png" alt="Filter Icon" >}} The search results now include **{yourname}CustomerOData_service** from your Mendix Cloud **Sandbox** environment. -5. From **{yourname}CustomerODataService**, drag the **Customer** entity into the domain model. The consumed service and entity have green checkmarks in the **Data Hub** pane now. -6. This entity is different from the blue entity container from the first app. This purple colored entity is called an [external entity](/refguide/external-entities/). The name of the OData service it is exposed in is displayed above it. Click the information icon for the consumed service in the **Data Hub** pane to see further information about the service, and follow the link to **View in Catalog**. +5. From **{yourname}CustomerODataService**, drag the **Customer** entity into the domain model. The consumed service and entity have green checkmarks in the [Integration pane](/refguide/integration-pane/] now. +6. This entity is different from the blue entity container from the first app. This purple colored entity is called an [external entity](/refguide/external-entities/). The name of the OData service it is exposed in is displayed above it. Click the information icon for the consumed service in the [Integration pane](/refguide/integration-pane/] to see further information about the service, and follow the link to **View in Catalog**. 7. In the **App Explorer**, notice the service and location documents for your external entity. These documents specify the metadata for the service and provide the links for connecting to the shared data. 8. Right-click the entity and select **Generate overview pages** for this entity. In the **Generate pages** dialog box, for **Content layout** select **Atlas_Default(Atlas_Core)** and click **OK**. Accept the **Information** box by clicking **OK**. Overview pages for the new entity are added in the **OverviewPages** folder of **MyFirstModule**. 9. From the App Explorer, drag **Customer_Overview** into the empty **Auto-fill** container under the *Home* banner. diff --git a/content/en/docs/catalog/integrate/write-data/_index.md b/content/en/docs/catalog/integrate/write-data/_index.md index fe3bf71af66..9a794097059 100644 --- a/content/en/docs/catalog/integrate/write-data/_index.md +++ b/content/en/docs/catalog/integrate/write-data/_index.md @@ -57,14 +57,14 @@ Notice the highlighted **CRUD** letters next to the entity name in the search pa ## 5 Consuming OData Resources in Your Mendix App -Just like in the Catalog, you can see the **CRUD** capabilities of entities, attributes, and associations inside the **Data Hub** pane of Studio Pro. +Just like in the Catalog, you can see the **CRUD** capabilities of entities, attributes, and associations inside the [Integration pane](/refguide/integration-pane/] of Studio Pro. {{< figure src="/attachments/data-hub/write-data/crud-capabilities.png" alt="crud capabilities" >}} To consume an OData entity, do the following: -1. In the **Data Hub** pane, enter a search term in the search field. -2. Select your entity from the **Data Hub** pane. By default it shows only results published to the production environment. If you also want to see results from other environments, click the filter icon and check the **Show development environment** checkbox. +1. In the [Integration pane](/refguide/integration-pane/], enter a search term in the search field. +2. Select your entity from the [Integration pane](/refguide/integration-pane/]. By default it shows only results published to the production environment. If you also want to see results from other environments, click the filter icon and check the **Show development environment** checkbox. 3. Drag the entity into the domain model. Now you have an external entity in your domain model. Depending on the capabilities, for example the **CRUD** capabilities, you can generally use external entities to model your app as you would normally do, although there are some limitations. For more information on limitations, see the [External Entities Limitations](/refguide/external-entities/#limitations) section in *External Entities*. diff --git a/content/en/docs/refguide/modeling/domain-model/external-entities.md b/content/en/docs/refguide/modeling/domain-model/external-entities.md index f0a1f8c23c5..4d5fc1871eb 100644 --- a/content/en/docs/refguide/modeling/domain-model/external-entities.md +++ b/content/en/docs/refguide/modeling/domain-model/external-entities.md @@ -13,7 +13,7 @@ Datasets are maintained and updated in the source application. You can integrate External entities can be used with local entities. However, as the datasets are maintained in the source applications, not all properties can be changed in the consuming app. -To follow how to add external entities from the **Data Hub** pane, see [Adding External Entities](#adding-external-entities). +To follow how to add external entities from the [Integration pane](/refguide/integration-pane/], see [Adding External Entities](#adding-external-entities). {{% alert color="info" %}} A license is required to use Mendix Data Hub and connect to external data sources through consumed OData services in your apps. @@ -23,7 +23,7 @@ A license is required to use Mendix Data Hub and connect to external data source To add an external entity to your app model, follow these steps: -1. In the the Domain Model of you app model search in the **Data Hub** pane for the entity or data source that you want to use in your app. +1. In the the Domain Model of you app model search in the [Integration pane](/refguide/integration-pane/] for the entity or data source that you want to use in your app. {{% alert color="info" %}}In the [Catalog](/catalog/search/), an OData service may be registered multiple times with different version numbers or deployed to different environments, all exposing the entity (dataset) that you may want to use. Search the Catalog first and find the one most relevant to the requirements for your app.{{% /alert %}} @@ -41,12 +41,12 @@ When you drag an entity that is associated with an entity from the same service For further information, see [Consumed OData Service](/refguide/consumed-odata-service/). -The consumed entities of the current app are listed in the **Used in your App** section of the **Data Hub** pane: +The consumed entities of the current app are listed in the **Used in your App** section of the [Integration pane](/refguide/integration-pane/]: {{< figure src="/attachments/refguide/modeling/domain-model/external-entities/data-hub-app.png" alt=" Virtual Entity and OData Service files" >}} {{% alert color="info" %}} -When a new version of a consumed service becomes available in the Catalog, this will be indicated in the **Data Hub** pane by an update arrow next to the service name. For more information, see the [Updating or Switching a Consumed OData Service](/refguide/consumed-odata-service/#updating) section in *Consumed OData Service*. +When a new version of a consumed service becomes available in the Catalog, this will be indicated in the [Integration pane](/refguide/integration-pane/] by an update arrow next to the service name. For more information, see the [Updating or Switching a Consumed OData Service](/refguide/consumed-odata-service/#updating) section in *Consumed OData Service*. {{% /alert %}} You can make local changes to the properties of external entities that only affect how the data is used and presented in the consuming app. All other properties are defined in the source application and cannot be changed. When multiple external entities from the same OData service are used in a module or app, associations between the entities (made in the source app) will automatically be made in the local module. @@ -183,7 +183,7 @@ Learn more about adding authentication information to a consumed OData service: ## 4 External Entity Limitations {#limitations} -External entities are the endpoints that are defined in the published OData service from the originating app. The consumed OData service document displays the values from the service metadata when the external entity is used through the **Data Hub** pane. The datasets associated with the entities are maintained in the originating apps. +External entities are the endpoints that are defined in the published OData service from the originating app. The consumed OData service document displays the values from the service metadata when the external entity is used through the [Integration pane](/refguide/integration-pane/]. The datasets associated with the entities are maintained in the originating apps. External entities cannot be committed. Use the [Send External Object activity](/refguide/send-external-object/) to persist changes to external entities. This means the following: diff --git a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md index 4521a3677e0..b3996639ad3 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md @@ -41,9 +41,9 @@ You can create associations between local [persistable entities](/refguide/persi When an external entity is dragged into the domain model, the **Consumed OData** document that is added to the model displays the values of the metadata contract from the service endpoint. -In the **Data Hub** pane, the service and the entity are shown as consumed both in the search results pane and also in the **Used in your App** section. +In the [Integration pane](/refguide/integration-pane/], the service and the entity are shown as consumed both in the search results pane and also in the **Used in your App** section. -If the metadata contract at the specified service endpoint is different to the contract in the current app model, this is indicated in the **Data Hub** pane search results and the **Properties** pane for the service with an **Update** icon (a blue arrow). +If the metadata contract at the specified service endpoint is different to the contract in the current app model, this is indicated in the [Integration pane](/refguide/integration-pane/] search results and the **Properties** pane for the service with an **Update** icon (a blue arrow). This means that the consumed service has to be **Updated** to the new contract. If this is not done, then this will result in errors when data has to be retrieved from the endpoint based on an outdated contract. Changes in consumed OData service contracts is further described in [Updating or Switching a Consumed OData Service](/refguide/consumed-odata-service/#updating). diff --git a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md index 41f6a84c662..535379c3a02 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md @@ -26,7 +26,7 @@ The **Consumed OData Service** document contains the following information: {{% alert color="info" %}} Studio Pro will always show the **Update** option for the **Consumed OData Service** where you can check if an update is available. In the Data Hub search and **App** pane, when a different contract is detected at the service end-point, this will be indicated with an update arrow for the service. For further information on updating and switching services see the [Updating or Switching a Consumed OData service](#updating) section of this document. {{% /alert %}} - {{% alert color="info" %}}In the **Data Hub** pane, consumed services have an **Update** icon (a blue arrow) if they have an update available.{{% /alert %}} + {{% alert color="info" %}}In the [Integration pane](/refguide/integration-pane/], consumed services have an **Update** icon (a blue arrow) if they have an update available.{{% /alert %}} ### 2.1 Service URL {#service-url} @@ -196,7 +196,7 @@ See the [Limitations](/refguide/consumed-odata-services/#consumed-odata-service- ##### 4.3.1.1 Integration pane -In the **Data Hub** pane, in search results and in the **Used in your App** section an update arrow indicate if there is a different contract at the Catalog endpoint: +In the [Integration pane](/refguide/integration-pane/], in search results and in the **Used in your App** section an update arrow indicate if there is a different contract at the Catalog endpoint: {{< figure src="/attachments/refguide/modeling/integration/consumed-odata-services/consumed-odata-service/update-available.png" alt="update service app-pane" >}} @@ -220,7 +220,7 @@ In the example given in the [Consuming from Service Endpoints](#consume-service- #### 4.3.3 Switching Consumed Services -A published OData services that is deployed to multiple environments or is published with major service updates (and therefore deployed to a different endpoint) will be shown as separate items in the search results of the **Data Hub** pane. +A published OData services that is deployed to multiple environments or is published with major service updates (and therefore deployed to a different endpoint) will be shown as separate items in the search results of the [Integration pane](/refguide/integration-pane/]. In the following example, the consumed **Orders** version **1.0.0** deployed to **Test** environment is consumed in the app. However, the same service is deployed to the **Acceptance** environment: @@ -236,7 +236,7 @@ To consume the service deployed to the **Acceptance environment**, follow these {{< figure src="/attachments/refguide/modeling/integration/consumed-odata-services/consumed-odata-service/switch-environment.png" alt="major change environment" >}} -3. The consumed service is be consumed from the new selected environment. The information on the **Consumed OData Service** document will display the changed service details and the **Data Hub** pane now displays that you are consuming from the selected environment: +3. The consumed service is be consumed from the new selected environment. The information on the **Consumed OData Service** document will display the changed service details and the [Integration pane](/refguide/integration-pane/] now displays that you are consuming from the selected environment: {{< figure src="/attachments/refguide/modeling/integration/consumed-odata-services/consumed-odata-service/switch-new-environment.png" alt="major change environment dh pane" width="300" >}} diff --git a/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md b/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md index 7e71973b12a..5f534f24d90 100644 --- a/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md +++ b/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md @@ -10,11 +10,11 @@ aliases: ## 1 Introduction -Use the Integration pane in Studio Pro to use available data sources from the different applications in an organization into your Mendix apps. New apps can be created using shared datasets that are registered in the [Catalog](/catalog/). In Studio Pro, this is possible using the integrated functionality of Catalog through the **Data Hub** pane. +Use the Integration pane in Studio Pro to use available data sources from the different applications in an organization into your Mendix apps. New apps can be created using shared datasets that are registered in the [Catalog](/catalog/). In Studio Pro, this is possible using the integrated functionality of Catalog through the [Integration pane](/refguide/integration-pane/]. -You can search in the Catalog through the **Data Hub** pane to discover data sources that you can use in your app. Via this pane you can add the entities that are exposed in the registered OData services—called **Data Sources** in Data Hub—into your app's domain model. These entities are called [external entities](/refguide/external-entities/) and are different because they enable the connection to the data associated with the entities in the originating app. +You can search in the Catalog through the [Integration pane](/refguide/integration-pane/] to discover data sources that you can use in your app. Via this pane you can add the entities that are exposed in the registered OData services—called **Data Sources** in Data Hub—into your app's domain model. These entities are called [external entities](/refguide/external-entities/) and are different because they enable the connection to the data associated with the entities in the originating app. -To display the **Data Hub** pane, click **View** > **Data Hub**. +To display the [Integration pane](/refguide/integration-pane/], click **View** > **Data Hub**. {{% alert color="info" %}} In the Catalog, registered published services are referred to as *data sources*. Exposed entities will show the **Entity set** name and are called *datasets.* @@ -33,7 +33,7 @@ The following functionality is available in the pane: ### 2.2 Used in Your App Section {#used-in-app} -When you do not enter search text in the **Data Hub** pane, then **Used in your App** section is displayed. This shows the consumed services and the external entities used in the current app. The list of entities, associations, and attributes for the consumed services are shown as for the search results: +When you do not enter search text in the [Integration pane](/refguide/integration-pane/], then **Used in your App** section is displayed. This shows the consumed services and the external entities used in the current app. The list of entities, associations, and attributes for the consumed services are shown as for the search results: {{< figure src="/attachments/refguide/modeling/menus/view-menu/data-hub-pane/used-in-your-app.png" alt="User in Your App Section" >}} @@ -41,7 +41,7 @@ For more information on how to add entities to your app, see [Adding an External ## 3 Searching Catalog Sources {#search} -As you enter a search term, all the items in the Catalog satisfying the search string are listed in the search results. This includes words in the service, entity and attribute descriptions, which are not displayed in the **Data Hub** pane. For more information, see the [Selected Asset Details](/catalog/manage/search/#search-details) section in *Search in the Catalog*. +As you enter a search term, all the items in the Catalog satisfying the search string are listed in the search results. This includes words in the service, entity and attribute descriptions, which are not displayed in the [Integration pane](/refguide/integration-pane/]. For more information, see the [Selected Asset Details](/catalog/manage/search/#search-details) section in *Search in the Catalog*. You can drag the entity from the search results into your domain model and it will be added to your app and displayed as an [external entity](/refguide/external-entities/). @@ -67,7 +67,7 @@ When the **Show development environments** is checked, all subsequent searches r ## 4 Integration pane Information {#viewing} -The information that is displayed in the **Data Hub** pane either when you enter a search term or when you open the **Used in your App** section is described in the sections below. +The information that is displayed in the [Integration pane](/refguide/integration-pane/] either when you enter a search term or when you open the **Used in your App** section is described in the sections below. ### 4.1 Services @@ -134,7 +134,7 @@ Unsupported attributes are grayed out and are not included in your app. #### 4.2.4 CRUD Capabilities -If the entity, association, or attribute supports **C**reate, **R**ead, **U**pdate, or **D**elete capabilities and it is also supported by Studio Pro, then it is displayed in the **Data Hub** pane. +If the entity, association, or attribute supports **C**reate, **R**ead, **U**pdate, or **D**elete capabilities and it is also supported by Studio Pro, then it is displayed in the [Integration pane](/refguide/integration-pane/]. Entities and associations can have any of the CRUD capabilities, while attributes can only have create and update. For more information on CRUD capabilities, see [Write Data to Another App](/catalog/write-data/). ## 5 Read More From 9d91069f52cf9d29b4c714cc8c1aad5923a58214 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Wed, 21 Jun 2023 18:01:06 +0200 Subject: [PATCH 101/232] Fix SAP docs link --- content/en/docs/appstore/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/appstore/_index.md b/content/en/docs/appstore/_index.md index 8f133670d59..dfe8ab17e5f 100644 --- a/content/en/docs/appstore/_index.md +++ b/content/en/docs/appstore/_index.md @@ -37,7 +37,7 @@ For details on the Studio Pro version required for use and when the component wa And our strategic partner connectors: * [AWS connectors](/appstore/aws-connectors/) -* [SAP connectors](/appstore/sap-connectors/) +* [SAP connectors](/partners/sap/) In addition to platform-supported connectors and modules, Mendix Connect functionalities include: From 5e225290668a473a82759c11ba054f312c9bd920 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 07:44:12 +0200 Subject: [PATCH 102/232] Update --- .../feature-release-calendar/_index.md | 52 +++++++++++++++--- .../releasenotes/calendar/themes.png | Bin 0 -> 66068 bytes .../mx-world-2021/innovations.png | Bin 305261 -> 0 bytes 3 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 static/attachments/releasenotes/calendar/themes.png delete mode 100644 static/attachments/releasenotes/mx-world-2021/innovations.png diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 27a4de22466..bbff85bb25f 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -9,9 +9,13 @@ weight: 60 ## 1 Introduction -[**ADD INTRO CONTENT, DIAGRAM, AND ALT TEXT**] +[**ADD ALT TEXT**] -{{< figure src="/attachments/releasenotes/mx-world-2021/innovations.png" alt="Announcements are _______" >}} +At the Mendix 10 launch event on June 27th, 2023, there were a number of announcements for features that Mendix is releasing. This document contains the calendar of expected release dates for these features. + +The new features were divided into these major themes, which are described in the sections below: + +{{< figure src="/attachments/releasenotes/calendar/themes.png" alt="Announcements are _______" >}} {{% alert color="info" %}} "GA" means General Availability for all users. A GA release is different than a Beta release. For more information, see [Beta Releases](/releasenotes/beta-features/). @@ -21,28 +25,62 @@ weight: 60 | Capability or Feature | Expected Release | | --- | --- | -| __ | __ | +| Portfolio Management | GA June 27 | +| Jira Integration | Public beta June 22
GA Q4 2023 | +| App Insights | GA August 12th | +| Community Spaces | Beta June 2023
GA Q3 2023 | ## 3 Developer Experience | Capability or Feature | Expected Release | | --- | --- | -| __ | __ | +| Mac support | Public Beta 10.6 | +| Studio Pro redesign | GA 10.0 | +| Improved properties | GA 10.0 | +| Git version control (without SVN support) | GA 10.0 | +| Insights into commits by peers| GA 10.3 | +| Start from spreadsheet | GA 10.0 | +| Rich design properties | GA 10.3 | +| PDF generator | Public Beta 10.0 (and 9.18+)
GA 10.2 | +| Visual data filters | GA 10.3 | +| Custom icons support | GA 10.0 | +| Flexible page urls | GA 10.0 | +| Mendix Chat | GA 10.6 | +| Validation Bot | GA 10.0 | +| Best Practices Bot | GA 10.0 | +| Workflow enhancements (Multi User Task, Wait for Notification) | GA 10.0 | +| Mixed online and offline data | GA 10.6 | ## 4 Composability | Capability or Feature | Expected Release | | --- | --- | -| __ | __ | +| Mendix Connect - Database Connector | GA 10.2 | +| Mendix Connect - REST Connector | TBD | +| Mendix Connect - External Entities | GA 10.0 | +| Mendix Connect - External Actions | GA 10.x | +| Mendix Connect - Business Events & Event Broker | GA 10.0 | +| ML Kit | GA 10.0 | +| Studio Pro Extensibility | Private Beta 10.3 | +| Solutions Kit - Protected Modules | GA: 10.0 | +| Solutions Kit - Solution Lifecycle Management | GA: 10.0 | +| Solutions Kit - Adaptation Insights | Private beta: CQ4 2023 | ## 5 Multi-Cloud Deployment | Capability or Feature | Expected Release | | --- | --- | -| __ | __ | +| Multi-Region Fail-over | GA on July 1st, 2023 | +| WebHooks | Released for GA on June 15, 2023 | +| Pipelines | Public Beta: CQ4, 2023 | +| Mendix on AWS EKS | Released for GA in February 2023 | +| Private Mendix Platform | ## 6 Governance & Control | Capability or Feature | Expected Release | | --- | --- | -| __ | __ | +| Landscape Overview | Public Beta: Q3, 2023 | +| Dependency Governance Public Beta: CQ4, 2023 | +| Cloud Self Service | Release 1.0 as Private Beta: Released May 2023 | +| BYO IDP | Released for GA in June 2023 | \ No newline at end of file diff --git a/static/attachments/releasenotes/calendar/themes.png b/static/attachments/releasenotes/calendar/themes.png new file mode 100644 index 0000000000000000000000000000000000000000..7666fe5d1507cf6e394ad06c24f408a0a4e74134 GIT binary patch literal 66068 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≥Q1io$fio6uy@IXDWQ(@3Nn=tSD(V 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

dHycK=467mExdrY7uG^1jC)%&^ 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 z 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®HJAT<`w2Osy1-%S04|H}K1x~M>;KE3LPoFnt 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%0Dj-d$*~Iy2XEF4o;?Ax7)9stDj#e}@8H$;BQEZf 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 MgXyeEa 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 From 3e1b7b9ceaba586b1acee92c93da2bc040a1d300 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 08:00:55 +0200 Subject: [PATCH 103/232] Update --- .../feature-release-calendar/_index.md | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index bbff85bb25f..ffcba2774e5 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -25,31 +25,31 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Portfolio Management | GA June 27 | -| Jira Integration | Public beta June 22
GA Q4 2023 | -| App Insights | GA August 12th | -| Community Spaces | Beta June 2023
GA Q3 2023 | +| Portfolio Management | Released for GA [Jun 22, 2023](**ADD RN LINK**) | +| Jira Integration | Released for Public Beta [Jun 22, 2023](**ADD RN LINK**)
GA: Q4 2023 | +| App Insights | GA: Q3 2023 | +| Community Spaces | Released for Public Beta [Jun __, 2023](**VERIFY, ADD RN LINK**)
GA: Q3 2023 | ## 3 Developer Experience | Capability or Feature | Expected Release | | --- | --- | -| Mac support | Public Beta 10.6 | -| Studio Pro redesign | GA 10.0 | -| Improved properties | GA 10.0 | -| Git version control (without SVN support) | GA 10.0 | -| Insights into commits by peers| GA 10.3 | -| Start from spreadsheet | GA 10.0 | -| Rich design properties | GA 10.3 | -| PDF generator | Public Beta 10.0 (and 9.18+)
GA 10.2 | -| Visual data filters | GA 10.3 | -| Custom icons support | GA 10.0 | -| Flexible page urls | GA 10.0 | -| Mendix Chat | GA 10.6 | -| Validation Bot | GA 10.0 | -| Best Practices Bot | GA 10.0 | -| Workflow enhancements (Multi User Task, Wait for Notification) | GA 10.0 | -| Mixed online and offline data | GA 10.6 | +| Mac support | Public Beta: Q4 2023 | +| Studio Pro redesign | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Improved properties | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Git version control (without SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Insights into commits by peers| GA: Q3 2023 | +| Start from spreadsheet | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Rich design properties | GA: Q3 2023 | +| PDF generator | Released for Public Beta [Jun 27, 2023](/releasenotes/studio-pro/10.0/)
GA: Q3 2023 [**VERIFY FOR RN**] | +| Visual data filters | GA: Q3 2023 | +| Custom icons support | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Flexible page urls | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Mendix Chat | GA: Q4 2023 | +| Validation Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Best Practices Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Workflow enhancements (Multi User Task, Wait for Notification) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Mixed online and offline data | GA: Q4 2023 | ## 4 Composability @@ -61,7 +61,7 @@ The new features were divided into these major themes, which are described in th | Mendix Connect - External Actions | GA 10.x | | Mendix Connect - Business Events & Event Broker | GA 10.0 | | ML Kit | GA 10.0 | -| Studio Pro Extensibility | Private Beta 10.3 | +| Studio Pro Extensibility | Private Beta: Q3 2023 | | Solutions Kit - Protected Modules | GA: 10.0 | | Solutions Kit - Solution Lifecycle Management | GA: 10.0 | | Solutions Kit - Adaptation Insights | Private beta: CQ4 2023 | From 8c1597caec4e539f9ed0428bfbd479ea818ab043 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 08:47:24 +0200 Subject: [PATCH 104/232] Update --- .../feature-release-calendar/_index.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index ffcba2774e5..1dde602a0df 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -34,7 +34,7 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Mac support | Public Beta: Q4 2023 | +| Mac support | Public Beta: Q4 2023
GA: TBD | | Studio Pro redesign | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Improved properties | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Git version control (without SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | @@ -55,32 +55,32 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Mendix Connect - Database Connector | GA 10.2 | -| Mendix Connect - REST Connector | TBD | -| Mendix Connect - External Entities | GA 10.0 | -| Mendix Connect - External Actions | GA 10.x | -| Mendix Connect - Business Events & Event Broker | GA 10.0 | -| ML Kit | GA 10.0 | -| Studio Pro Extensibility | Private Beta: Q3 2023 | -| Solutions Kit - Protected Modules | GA: 10.0 | -| Solutions Kit - Solution Lifecycle Management | GA: 10.0 | -| Solutions Kit - Adaptation Insights | Private beta: CQ4 2023 | +| Mendix Connect - Database Connector | GA: Q3 2023 | +| Mendix Connect - REST Connector | GA: TBD | +| Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | +| Mendix Connect - External Actions | GA: TBD | +| Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | +| Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | +| Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | +| Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | +| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | +| Solutions Kit - Adaptation Insights | Private Beta: Q4 2023
GA: TBD | ## 5 Multi-Cloud Deployment | Capability or Feature | Expected Release | | --- | --- | -| Multi-Region Fail-over | GA on July 1st, 2023 | -| WebHooks | Released for GA on June 15, 2023 | -| Pipelines | Public Beta: CQ4, 2023 | -| Mendix on AWS EKS | Released for GA in February 2023 | -| Private Mendix Platform | +| Multi-Region Fail-over | GA: Q3 2023 | +| WebHooks | Released for GA [Jun 15, 2023](/releasenotes/developer-portal/mendix-cloud/#june-15th-2023) | +| Pipelines | Public Beta: Q4 2023
GA: TBD | +| Mendix on AWS EKS | Released for GA [Feb 8, 2023](/releasenotes/developer-portal/mendix-for-private-cloud/#february-8th-2023) | +| Private Mendix Platform | GA: TBD | ## 6 Governance & Control | Capability or Feature | Expected Release | | --- | --- | -| Landscape Overview | Public Beta: Q3, 2023 | -| Dependency Governance Public Beta: CQ4, 2023 | -| Cloud Self Service | Release 1.0 as Private Beta: Released May 2023 | -| BYO IDP | Released for GA in June 2023 | \ No newline at end of file +| Landscape Overview | Public Beta: Q3 2023
GA: TBD | +| Dependency Governance | Public Beta: Q4 2023
GA: TBD | +| Cloud Self-Service | Currently in Private Beta
GA: TBD | +| BYO IDP | Released for GA [Jun __, 2023](**ADD RN LINK**) | \ No newline at end of file From ed4f49a4c6833a73f9b8d79bc343b2ca1009c16a Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 09:05:04 +0200 Subject: [PATCH 105/232] Update via Slack --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 2205b2c4bed..d9ff6c5c005 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -176,7 +176,7 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 Beta versions are no longer available to download. In addition, apps created in the Studio Pro 10 Beta versions that are converted to version 10.0.0 General Availability can no longer be opened in the Beta versions. {{% /alert %}} -* We fixed [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716). +* We mitigated [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716) by updating third-party dependencies. This CVE does not pose any apparent risk for Mendix customers. * We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) and [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314) by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. * We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). * We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) From 91b0d97e48533ee15bafd0c4917ad7553659ab1a Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 09:07:15 +0200 Subject: [PATCH 106/232] Update --- content/en/docs/releasenotes/feature-release-calendar/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 1dde602a0df..5842a891744 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -74,7 +74,7 @@ The new features were divided into these major themes, which are described in th | WebHooks | Released for GA [Jun 15, 2023](/releasenotes/developer-portal/mendix-cloud/#june-15th-2023) | | Pipelines | Public Beta: Q4 2023
GA: TBD | | Mendix on AWS EKS | Released for GA [Feb 8, 2023](/releasenotes/developer-portal/mendix-for-private-cloud/#february-8th-2023) | -| Private Mendix Platform | GA: TBD | +| Private Mendix Platform | Currently in Private Beta
GA: Q4 2023 | ## 6 Governance & Control From 90ad24fd163afc5a681cbca2ed5d005f5a4b0a3d Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 09:22:29 +0200 Subject: [PATCH 107/232] Update --- .../en/docs/releasenotes/feature-release-calendar/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 5842a891744..2bbe7837fe3 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -15,7 +15,7 @@ At the Mendix 10 launch event on June 27th, 2023, there were a number of announc The new features were divided into these major themes, which are described in the sections below: -{{< figure src="/attachments/releasenotes/calendar/themes.png" alt="Announcements are _______" >}} +{{< figure src="/attachments/releasenotes/calendar/themes.png" alt="Themes are continuous collaboration, developer experience, composability, multi-cloud deployment, and governance and control." >}} {{% alert color="info" %}} "GA" means General Availability for all users. A GA release is different than a Beta release. For more information, see [Beta Releases](/releasenotes/beta-features/). @@ -76,7 +76,7 @@ The new features were divided into these major themes, which are described in th | Mendix on AWS EKS | Released for GA [Feb 8, 2023](/releasenotes/developer-portal/mendix-for-private-cloud/#february-8th-2023) | | Private Mendix Platform | Currently in Private Beta
GA: Q4 2023 | -## 6 Governance & Control +## 6 Governance and Control | Capability or Feature | Expected Release | | --- | --- | From 3fdb569fb832f1c60c41782d4edb6c8432d432b6 Mon Sep 17 00:00:00 2001 From: Mark van Ments Date: Thu, 22 Jun 2023 09:23:41 +0200 Subject: [PATCH 108/232] Typo --- .../docs/refguide/modeling/menus/file-menu/open-app-dialog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/refguide/modeling/menus/file-menu/open-app-dialog.md b/content/en/docs/refguide/modeling/menus/file-menu/open-app-dialog.md index daee6022975..b76309a3b2e 100644 --- a/content/en/docs/refguide/modeling/menus/file-menu/open-app-dialog.md +++ b/content/en/docs/refguide/modeling/menus/file-menu/open-app-dialog.md @@ -41,7 +41,7 @@ For opening an app you already have in a [Git On-Premises Version Control Server ### 2.4 Importing App Package {#import-app} -You can also import and app package and open it. Click **Import App Package** in the left sidebar. For more information on how to import an app package, see [Import App Package](/refguide/import-app-package-dialog/). +You can also import an app package and open it. Click **Import App Package** in the left sidebar. For more information on how to import an app package, see [Import App Package](/refguide/import-app-package-dialog/). ### 2.5 Preferences From 5e76925bbd7bbebe16c5653f6390cad8ad38c903 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 10:48:04 +0200 Subject: [PATCH 109/232] Update via Slack --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index d9ff6c5c005..83f2e02feb1 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -177,8 +177,7 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 {{% /alert %}} * We mitigated [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716) by updating third-party dependencies. This CVE does not pose any apparent risk for Mendix customers. -* We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017) and [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314) by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. -* We fixed [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547). +* We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017), [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547), and [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314) by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. * We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) * The `weekday-from-dateTime` XPath function and the `DATEPART(WEEKDAY, ...)` OQL function now return the documented values of (1 = Sunday, 7 = Saturday) for all supported databases. (Ticket 130641) * We fixed an issue where the debugger caused an error and disconnected after 30 seconds of inactivity. (Tickets 151937, 169696, 175161, 175542, 178553, 180332) From 2c9f6fae8db9978df86dfe9f90245d34ee678171 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 12:41:14 +0200 Subject: [PATCH 110/232] Adjust cards --- layouts/partials/landingpage/product-cards.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/layouts/partials/landingpage/product-cards.html b/layouts/partials/landingpage/product-cards.html index e67eb1b27d6..71b3a200f9e 100644 --- a/layouts/partials/landingpage/product-cards.html +++ b/layouts/partials/landingpage/product-cards.html @@ -40,17 +40,17 @@

- + From be5652f197b353b595c6e97572e4e76b220b2d2b Mon Sep 17 00:00:00 2001 From: Mark van Ments Date: Thu, 22 Jun 2023 12:46:10 +0200 Subject: [PATCH 111/232] More realistic app names --- .../file-menu/open-app-dialog/open-app.png | Bin 69836 -> 71398 bytes .../file-menu/open-app-dialog/select-app.png | Bin 73952 -> 76044 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/static/attachments/refguide/modeling/menus/file-menu/open-app-dialog/open-app.png b/static/attachments/refguide/modeling/menus/file-menu/open-app-dialog/open-app.png index 9ae7b2eed938908d83e38c5f93cf3fbefcc28e54..dce7ad49184a9c4d943436254ca15873c165c319 100644 GIT binary patch literal 71398 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ℜ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 U#1U*H3(^N=B^4wx?;3diFGw*{6951J literal 69836 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

~^Lo_tRqSP0 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

Latest Releases

From 7a3492ce19e8cd85292b5ec69e7fbe2c8793dd5f Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 10:55:32 +0200 Subject: [PATCH 135/232] Update --- content/en/docs/releasenotes/feature-release-calendar/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index bc7fd6c8da3..3f50859e5f0 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -57,7 +57,7 @@ The new features were divided into these major themes, which are described in th | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Mendix Connect - Database connector | GA: Q3 2023 [**VERIFY ALREADY IN GA - REFRAME/REMOVE**] | +| Mendix Connect - new database connector | GA: Q3 2023 | | Mendix Connect - REST connector | GA: Q4 2023 | | Studio Pro extensibility | Private Beta: Q3 2023
GA: TBD | | Solutions kit - adaptation insights | Private Beta: Q4 2023
GA: TBD | From 39a0129912ea4aa81198d8a403a72f3f247f0bca Mon Sep 17 00:00:00 2001 From: Yiyun Liao <110980413+Yiyun333@users.noreply.github.com> Date: Fri, 23 Jun 2023 11:10:36 +0200 Subject: [PATCH 136/232] Adjust notes for workflow multi-user task activity --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index ba363c3ecc2..6548d416aff 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -25,7 +25,7 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list currently being processed. * We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. * We added a new workflow activity and a related microflow activity. You can use the [Wait for notification](/refguide/wait-for-notification/) workflow activity to suspend a workflow's execution, and you can use the [Notify workflow](/refguide/notify-workflow/) microflow activity to send a notification to resume the workflow that has been suspended. -* We added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. +* We added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Decision methods can be **Consensus**, **Veto**, **Majority**, or **Threshold**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. ### Improvements @@ -55,8 +55,7 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * We added F1 help support to the [Machine Learning Kit](/refguide/machine-learning-kit/) document and fixed an issue with its **Properties** pane. * We changed the default location for a published OData service to use lower-case. * We removed the **None** button that appeared when selecting an insert, update, or delete microflow for a published OData resource, because clicking it resulted in a validation error. -* We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. -* We added **Majority** and **Threshold** decision methods to workflow multi-user tasks. +* We now set the variable name of an [Aggregate list](/refguide/aggregate-list/) activity to **Count** by default. * We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. * We enhanced the [Lock workflow](/refguide/lock-workflow/) and [Unlock workflow](/refguide/unlock-workflow/) microflow activities by enabling the selection of the workflow definition (which is a Mendix Runtime workflow object), thus making the activity more reusable. * When creating a new workflow, it is now possible to select a context entity through the creation dialog box instead of adding it afterwards. From 6fc4e55dc241385b4378e8721a6f66d473ed30fd Mon Sep 17 00:00:00 2001 From: Yiyun Liao <110980413+Yiyun333@users.noreply.github.com> Date: Fri, 23 Jun 2023 11:28:52 +0200 Subject: [PATCH 137/232] Change "Most voted" to "Most chosen" for the current UI --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 6548d416aff..9f61bc39f03 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -166,7 +166,7 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * The algorithm for detecting conflicts during the migration of workflows with active multi-user tasks is currently too rigid and will not allow a conflicted user task to be continued in certain cases. In a future release, we will provide better migration scenarios where workflows with conflicted multi-user tasks can be continued. These are the situations in which a multi-user task is marked as **Incompatible** without continue: * The type of decision method (as in, **Consensus**, **Majority**, **Threshold**, or **Veto**) is changed. - * A **Majority** decision method is changed from **More than half** to **Most voted**. + * A **Majority** decision method is changed from **More than half** to **Most chosen**. * A **Threshold** decision method is changed from **Percentage** to **Absolute number** or vice versa. * The **Percentage** or **Amount** value for the **Threshold** decision method is lowered. From f832a5df337a2c42f60fbc5f2a5b093226ae7c45 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Fri, 23 Jun 2023 11:54:14 +0200 Subject: [PATCH 138/232] Update _index.md --- .../en/docs/releasenotes/feature-release-calendar/_index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 3f50859e5f0..5dd00d75ba9 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -55,12 +55,12 @@ The new features were divided into these major themes, which are described in th | Mendix Connect - external entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | | Mendix Connect - business events and Mendix Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Solutions kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Solutions kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Solutions Kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Solutions Kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Mendix Connect - new database connector | GA: Q3 2023 | | Mendix Connect - REST connector | GA: Q4 2023 | | Studio Pro extensibility | Private Beta: Q3 2023
GA: TBD | -| Solutions kit - adaptation insights | Private Beta: Q4 2023
GA: TBD | +| Solutions Kit - adaptation insights | Private Beta: Q4 2023
GA: TBD | | Mendix Connect - external actions | GA: TBD | ## 5 Multi-Cloud Deployment From a308d0529c34a0bbbef7dd79db4d80b921d3498b Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 11:57:08 +0200 Subject: [PATCH 139/232] Add via Slack --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 9f61bc39f03..a3b2309e7ae 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -19,8 +19,9 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro ### New Features -* We renamed MxAssist Performance Bot to **Best Practice Bot**. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice. +* Mendix Solutions Kit is now released for GA. This release provides capabilities for protected add-on and solution [modules](/refguide/modules/) that allow you to have more control over what can be changed in the modules you distribute. In addition, this release includes solution lifecycle management, which enables creating and distributing [adaptable solutions](/appstore/creating-content/sol-adapt/) to customers so that the consumed solutions can easily be upgraded when you release the next version. * The [Machine Learning Kit](/refguide/machine-learning-kit/) is now released for GA. +* We renamed MxAssist Performance Bot to **Best Practice Bot**. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice. * [Page URLs](/refguide/page-properties/#url) got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. * We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list currently being processed. * We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. From 8b5c46ae0a1a32db71600144ac1070db94d2233b Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 12:13:44 +0200 Subject: [PATCH 140/232] Update --- .../docs/releasenotes/studio-pro/10/10.0.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index a3b2309e7ae..52f53a19ba6 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -220,7 +220,10 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 MISCELLANEOUS * We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. -* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. +* We aligned the behavior of aggregates in grids with attribute columns. +* We fixed an issue where a page parameter triggered a warning that it was unused if the only reference to that parameter was inside an XPath constraint. +* We fixed an issue where a page parameter did not trigger a warning that it was unused if the parameter mapping of an action or data source pointed to an object of the same entity as the parameter. +* We fixed an issue where creating a non-persistable entity led to errors when attributes were read-only. MISCELLANEOUS LOGIC @@ -234,12 +237,14 @@ LOGIC FRONT-END * We fixed an issue that triggered a consistency error on a text template of a pluggable widget inside a snippet with multiple parameters if the template had parameters based on an attribute. +* We fixed an issue where expressions in pluggable widgets were not updated correctly when renaming an element (like a module or an entity), which caused consistency errors. * We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. * We fixed a styling issue in disabled check box controls. * We fixed an issue that caused the warning pop-up window for the [inline snippet](/refguide/snippet-call/#inline-snippet) action to mention the same affected widget multiple times. * We fixed an issue that caused the inline snippet action to crash if the surrounding data widget was not configured. * We fixed an issue with text controls where the text was sometimes undesirably reverted. * We fixed an issue in the grid control where selecting multiple cells using Shift was inconsistent when clicking on the interactable control itself in the cell (meaning, the check box). +* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. FRONT-END ASSIST @@ -264,19 +269,13 @@ DESIGN * We fixed an issue with the border color of selected cells in the grid control. * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). +* We fixed an issue with the search field where multiselection did not work correctly with numeric attributes. DESIGN - -START -* We aligned the behavior of aggregates in grids with attribute columns. -* We fixed an issue where a page parameter triggered a warning that it was unused if the only reference to that parameter was inside an XPath constraint. -* We fixed an issue where a page parameter did not trigger a warning that it was unused if the parameter mapping of an action or data source pointed to an object of the same entity as the parameter. -* We fixed an issue with the search field where multiselection did not work correctly with numeric attributes. -* We fixed an exception in the XPath constraint editor that was thrown when the list of autocomplete suggestions was open and an erroneous character was being typed. -* We fixed an issue where expressions in pluggable widgets were not updated correctly when renaming an element (like a module or an entity), which caused consistency errors. -* We fixed an issue where creating a non-persistable entity led to errors when attributes were read-only. +RUNTIME/CODE * We fixed a Mendix Runtime error that occurred when a microflow was no longer being used in an app after doing a hot reload in Studio Pro. * We fixed an issue where the status of `ScheduledEventInformation` was `Completed` when the associated scheduled event failed. +* We fixed an exception in the XPath constraint editor that was thrown when the list of autocomplete suggestions was open and an erroneous character was being typed. * We fixed an issue in XPath constraint suggestions that gave incorrect suggestions when there were multiple predicates (meaning, expressions between the square brackets [`[`, `]`]). * We fixed an issue that occurred with PostgreSQL and Oracle databases where the `DATEDIFF` function in OQL calculated the difference in calendar weeks, which was inconsistent with other databases that calculate the difference in full weeks. * We fixed the issue where the `DATEDIFF` OQL function in Oracle threw an exception when calculating a difference in seconds. From d98015b4f2f281187f4b9a32fa7f0a2b08c043b0 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 13:15:13 +0200 Subject: [PATCH 141/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 54 ++++++------------- 1 file changed, 17 insertions(+), 37 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 52f53a19ba6..07e878ede5b 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -19,7 +19,7 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro ### New Features -* Mendix Solutions Kit is now released for GA. This release provides capabilities for protected add-on and solution [modules](/refguide/modules/) that allow you to have more control over what can be changed in the modules you distribute. In addition, this release includes solution lifecycle management, which enables creating and distributing [adaptable solutions](/appstore/creating-content/sol-adapt/) to customers so that the consumed solutions can easily be upgraded when you release the next version. +* Mendix Solutions Kit is now released for General Availability (GA). This release provides capabilities for protected add-on and solution [modules](/refguide/modules/) that allow you to have more control over what can be changed in the modules you distribute. In addition, this release includes solution lifecycle management, which enables creating and distributing [adaptable solutions](/appstore/creating-content/sol-adapt/) to customers so that the consumed solutions can easily be upgraded when you release the next version. * The [Machine Learning Kit](/refguide/machine-learning-kit/) is now released for GA. * We renamed MxAssist Performance Bot to **Best Practice Bot**. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice. * [Page URLs](/refguide/page-properties/#url) got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. @@ -217,62 +217,42 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 * We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) * We fixed an issue where clicking **Load more** on a list view triggered the on-click event on a surrounding widget. (Ticket 365439) * We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. - -MISCELLANEOUS -* We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. -* We aligned the behavior of aggregates in grids with attribute columns. -* We fixed an issue where a page parameter triggered a warning that it was unused if the only reference to that parameter was inside an XPath constraint. -* We fixed an issue where a page parameter did not trigger a warning that it was unused if the parameter mapping of an action or data source pointed to an object of the same entity as the parameter. -* We fixed an issue where creating a non-persistable entity led to errors when attributes were read-only. -MISCELLANEOUS - -LOGIC * We fixed the [Create object](/refguide/create-object/) activity so that it now produces a consistency error when committing an external object. * We fixed the possible race conditions between microflow actions on the same workflow instance. * We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. * We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. * We fixed an issue where the workflow user task on-state-change microflow did not run again when the state changed to failed due to a prior execution error in the same event-handling microflow. * We fixed an issue where the outcome selector dialog box for a completed workflow user task activity showed duplicate outcomes. -LOGIC - -FRONT-END -* We fixed an issue that triggered a consistency error on a text template of a pluggable widget inside a snippet with multiple parameters if the template had parameters based on an attribute. -* We fixed an issue where expressions in pluggable widgets were not updated correctly when renaming an element (like a module or an entity), which caused consistency errors. -* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. -* We fixed a styling issue in disabled check box controls. -* We fixed an issue that caused the warning pop-up window for the [inline snippet](/refguide/snippet-call/#inline-snippet) action to mention the same affected widget multiple times. -* We fixed an issue that caused the inline snippet action to crash if the surrounding data widget was not configured. -* We fixed an issue with text controls where the text was sometimes undesirably reverted. -* We fixed an issue in the grid control where selecting multiple cells using Shift was inconsistent when clicking on the interactable control itself in the cell (meaning, the check box). -* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. -FRONT-END - -ASSIST * We fixed an issue that occurred when the Machine Learning Kit mapping document was moved and the underlying ONNX file was not copied to the new location. * We fixed an issue where the ONNX file for an app using the Machine Learning Kit disappeared after deployment. * We fixed an issue where MxAssist Best Practice Bot did not skip disabled microflow actions. This did not cause any false positives, but it caused some best practices to output no results for some apps. * We fixed an issue where exporting recommendations from MxAssist Best Practice Bot included suppressed recommendations. -ASSIST - -INTEGRATION -* We fixed the missing line breaks in the **Metadata** property of the consumed OData services properties pane. * We fixed an issue in the OpenAPI contract of published OData services where the server URL contained a double slash. * We fixed an error that occurred in OData services when the user had no access to an entity's association and there was an attempt to change its value. Mendix Runtime used to produce a response with the status 500, and now this is an error response with the status 422. +* We fixed the missing line breaks in the **Metadata** property of the consumed OData services properties pane. * We fixed an issue that occurred when adding external entities to an app where the generation of enumerations caused an error. * We fixed an issue in published web services where editing an operation that had a parameter and/or a return type that had been removed caused an error. -INTEGRATION - -DESIGN +* We fixed an issue that triggered a consistency error on a text template of a pluggable widget inside a snippet with multiple parameters if the template had parameters based on an attribute. +* We fixed an issue where expressions in pluggable widgets were not updated correctly when renaming an element (like a module or an entity), which caused consistency errors. +* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. +* We fixed an issue that caused the warning pop-up window for the [inline snippet](/refguide/snippet-call/#inline-snippet) action to mention the same affected widget multiple times. +* We fixed an issue that caused the inline snippet action to crash if the surrounding data widget was not configured. +* We fixed a styling issue in disabled check box controls. +* We fixed an issue with text controls where the text was sometimes undesirably reverted. * We fixed an issue where the text editor control did not have a border in dark mode. * We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. -* We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. +* We fixed an issue in the grid control where selecting multiple cells using Shift was inconsistent when clicking on the interactable control itself in the cell (meaning, the check box). * We fixed an issue with the border color of selected cells in the grid control. +* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. +* We aligned the behavior of aggregates in grids with attribute columns. * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). * We fixed an issue with the search field where multiselection did not work correctly with numeric attributes. -DESIGN - -RUNTIME/CODE +* We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. +* We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. +* We fixed an issue where a page parameter triggered a warning that it was unused if the only reference to that parameter was inside an XPath constraint. +* We fixed an issue where a page parameter did not trigger a warning that it was unused if the parameter mapping of an action or data source pointed to an object of the same entity as the parameter. +* We fixed an issue where creating a non-persistable entity led to errors when attributes were read-only. * We fixed a Mendix Runtime error that occurred when a microflow was no longer being used in an app after doing a hot reload in Studio Pro. * We fixed an issue where the status of `ScheduledEventInformation` was `Completed` when the associated scheduled event failed. * We fixed an exception in the XPath constraint editor that was thrown when the list of autocomplete suggestions was open and an erroneous character was being typed. From a2f9c235f60f1fad1ded34ef4bb867a54383048b Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Fri, 23 Jun 2023 13:39:47 +0200 Subject: [PATCH 142/232] Add descriptions for the amount property setting --- .../workflows/workflow-elements/multi-user-task.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index 83140d22dcc..42a6f2300d8 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -86,8 +86,8 @@ Possible options of participant input are described in the table below: | Participant Input | Description | | --- | --- | | All target users | All targeted users should select an outcome to complete the multi-user task. | -| Absolute number | The specified amount of targeted users should select an outcome to complete the multi-user task. | -| Percentage | The specified percentage of targeted users should select an outcome to complete the multi-user task. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value.

For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome to complete the multi-user task. | +| Absolute number | The specified amount of targeted users who should select an outcome to complete the multi-user task.

**Amount**: The property that defines the absolute number. | +| Percentage | The specified percentage of targeted users who should select an outcome to complete the multi-user task. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value.

For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome to complete the multi-user task. | #### 2.5.2 Decision Method @@ -228,7 +228,7 @@ Possible options of threshold type are described in the table below: | Threshold Type | Description | | --- | --- | | Percentage | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified percentage of votes. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `50%`, the multi-user task will complete with the outcome that gets 5 votes. | -| Absolute number | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified amount of votes.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `5`, the multi-user task will complete with the outcome that gets 5 votes. | +| Absolute number | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified amount of votes.

**Amount**: The property that defines the absolute number.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `5`, the multi-user task will complete with the outcome that gets 5 votes. | {{% alert color="info" %}} A threshold of `51%` is the same as using **Majority** as the **Decision method** with **More than half** as the **Majority type**. From 8eeb40c10029924a2dbb7bc87372758946a4070a Mon Sep 17 00:00:00 2001 From: Konstantina Mameletzi <97295508+mameletzi@users.noreply.github.com> Date: Fri, 23 Jun 2023 14:24:39 +0200 Subject: [PATCH 143/232] Update mendix-profile.md --- .../community-tools/mendix-profile.md | 49 +++++++++++++------ 1 file changed, 34 insertions(+), 15 deletions(-) diff --git a/content/en/docs/developerportal/community-tools/mendix-profile.md b/content/en/docs/developerportal/community-tools/mendix-profile.md index ed001ff98ef..d70c442ea45 100644 --- a/content/en/docs/developerportal/community-tools/mendix-profile.md +++ b/content/en/docs/developerportal/community-tools/mendix-profile.md @@ -13,7 +13,7 @@ aliases: ## 1 Introduction -Your Mendix Profile is your main point of contact with members of the Mendix community. It displays your activities on the Mendix Platform and details about your background. +By default, any newly created account comes with its own profile. Your Mendix Profile is your main point of contact with members of the Mendix community. It displays your activities on the Mendix Platform and details about your background. To get more involved in the Mendix community, your profile is the best way to start. You can access your Mendix profile by clicking your picture in the upper-right corner of the Developer Portal and then selecting **See Your Profile**. @@ -214,9 +214,10 @@ You can also connect your social accounts via **Twitter URL** and **LinkedIn URL You can also choose to make your profile public (which will allow the Mendix community to view your profile) by clicking **Make Profile Public**. Be sure to do the following to make your profile public: * Add an avatar -* Enter a **Function** -* Confirm if you are looking for a **job**, a **project**, both, or neither -* Enter a **Summary** +* Enter a **Job Title** +* Enter a **Department** +* Enter **Country of Residence** +* Enter details **About You** * Add at least 1 **Skill** * Add at least 1 **Industry Experience** item @@ -224,29 +225,47 @@ You can also choose to make your profile public (which will allow the Mendix com To make your public profile private again, click **Make Profile Private**. {{% /alert %}} -### 10.2 Account +#### 10.1.1 Merge Profiles -By default, you are requested to change your password every 90 days. A Mendix Admin can change this password policy setting in [Control Center](/developerportal/control-center/#security). +If you own two (or more user accounts), the following scenarios are possible: -You can update your password via the [Request Password Change](https://login.mendix.com/mxid3/request-password-reset) button, which you can also reach using the **Forgot password?** link on the login screen. +* Platform Access with all user accounts. +* Platform access with one or some of the user accounts. +* No platform access with all user accounts. -Do you want to transfer information from your old Mendix account to a new one? You should prepare for the merge by adding your new account to the relevant apps of your old account. Mendix recommends doing this, because once the old account has been merged into the new account, you no longer have access to the apps of your old account. With your new account, you will need a new invitation to those apps to gain access. +Do you want to transfer information from one Mendix profile to another? -From your new account, then click **Transfer Account Data**. After sharing some information with us and entering the email address of your old account in the dialog box, click **Transfer Data** and the request will be sent. +Considering you have access to the platform with all your accounts, you are able to initiate a merge from any of them. However, the profile of the account you will initiate the merge from, is the one that will be kept and used as the target profile. -If you still have access to your old account, you can approve the merge yourself after clicking the link in the confirmation email that is sent to your old account when the merge is requested. Be sure you are logged in with your old account to see the merge request. Otherwise, you can wait for merge approval from Mendix Support. +If you only have access to the platform with one user account, then you are able to initiate the merge only from that account. You are able to confirm the merge only when a profile recovery email address has been configured for the profile which is associated to the user account you do not have access to anymore. If this is not the case, then you will need to submit a request to Mendix Support Team. -Your account data, earned points, achievements, credits, certifications, and Academy progress is then transferred to your new account. +Once two profiles are merged, all the accounts will be linked to the same profile, and you will still have access to all your accounts. -{{% alert color="info" %}} -With the merge, the accounts are only combined. The old account is not deactivated from the Mendix Platform. That should be done by a [Mendix Admin](/developerportal/control-center/#members). +From this page, click **Merge Profile**. After entering the email address of one of the accounts linked to the profile you want to transfer information from in the dialog box, click Next and you will be asked to choose an email address to receive a verification code. You should choose an email address you have access to. This step is needed to verify you are the owner of the Mendix profile you are trying to merge. + +After entering the verification code you received in the selected email address, click **Verify** and you will see an overview of the profile information that will be deleted and those that will be kept. You will see the earned points, achievements, credits, certifications, and Academy progress that will be merged to your target profile. + +{{% alert color="info" %}} +With the merge, the accounts of both profiles are kept. None of the accounts will be deactivated from the Mendix Platform. That should be done by a [Mendix Admin](/developerportal/control-center/#members). {{% /alert %}} +If you are sure you want to proceed with the merge, click Merge. You will be notified once the merge is completed. + +If you do not have access to any of the listed email addresses and you cannot log in with the Profile you want to merge, click **Create Support Request** to go to Mendix Support. Mendix Support Team will contact you to change the profile (**Recovery**) email. Once this is done, you will be able to **Merge Profile** yourself, following the above steps. + {{% alert color="warning" %}} -It is not possible to separate accounts after they have been merged. Double-check that your old and new account information is valid and in the correct order. +It is not possible to separate profiles after they have been merged. Double-check that both your profile information is valid. {{% /alert %}} -If you do not want to use Mendix anymore, you can remove your account from this page. Click the menu button next to **Request Password Change** and select **Delete Account**. All of your personal and identifiable information is then removed and deleted from our servers. +### 10.2 Account + +This page is an overview of all the accounts you own and are linked to your Mendix profile. You can see which account you are logged in with, the company associated with each user account, if Single Sign On is enabled and the status of each user account (Active or Deactivated) + +By default, you are requested to change your password every 90 days. A Mendix Admin can change this password policy setting in [Control Center](/developerportal/control-center/#security). + +You can update the password of each of your accounts via the [Change Password](https://login.mendix.com/mxid3/request-password-reset) button, which you can also reach using the **Forgot password?** link on the login screen. + +If you do not want to use an account anymore, you can remove it from this page. Click the menu button next to the account you want to delete and select **Forget this Account**. All of the account information is then removed and deleted from our servers. All the personal and identifiable information of your profile will be deleted when you delete all your accounts. ### 10.3 Notifications {#notifications} From ec8baeb9c637dcee3c93a493546acca1296f4a59 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 14:56:54 +0200 Subject: [PATCH 144/232] Remove already released --- .../en/docs/releasenotes/feature-release-calendar/_index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 5dd00d75ba9..82e2df79a73 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -52,8 +52,7 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Mendix Connect - external entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | -| Mendix Connect - business events and Mendix Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | +| Mendix Connect - business events and Mendix Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**LINK TO RN**] | | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions Kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions Kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | From 5c19938046cc35603a53428859c1b7a83fff17e3 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 15:33:49 +0200 Subject: [PATCH 145/232] Update --- .../en/docs/releasenotes/feature-release-calendar/_index.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 82e2df79a73..c6dcf1dc950 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -35,7 +35,7 @@ The new features were divided into these major themes, which are described in th | Studio Pro redesign | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Improved Properties pane | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Git version control (removal of SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Start from spreadsheet | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Start from spreadsheet | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**ADD RN**] | | Custom icons support | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Flexible page URLs | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | MxAssist Best Practice Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | @@ -52,7 +52,7 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Mendix Connect - business events and Mendix Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**LINK TO RN**] | +| Mendix Connect - business events and Mendix Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**ADD RN**] | | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions Kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions Kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | @@ -80,4 +80,3 @@ The new features were divided into these major themes, which are described in th | Cloud self-service | Currently in Private Beta
GA: TBD | | Landscape overview | Public Beta: Q3 2023
GA: TBD | | Dependency governance | Public Beta: Q4 2023
GA: TBD | - From 270531fbde5e286c3519a0f4ed227e79d8ba9db8 Mon Sep 17 00:00:00 2001 From: Luyao Zhang <83757403+Luyao-Zhang-1@users.noreply.github.com> Date: Fri, 23 Jun 2023 17:07:58 +0200 Subject: [PATCH 146/232] Fix broken link --- content/en/docs/developerportal/collaborate/jira-connector.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/developerportal/collaborate/jira-connector.md b/content/en/docs/developerportal/collaborate/jira-connector.md index e6818283601..48765b05e7c 100644 --- a/content/en/docs/developerportal/collaborate/jira-connector.md +++ b/content/en/docs/developerportal/collaborate/jira-connector.md @@ -6,7 +6,7 @@ description: "Describes how to connec Mendix apps in the Developer Portal to Jir tags: ["app", "jira", "project management", "scrum master", "general settings", Developer Portal", "Scrum Master"] --- -{{% alert color="warning" %}}This feature is in Beta. For more information on Beta products, see [Beta Releases](https://github.com/mendix/docs/blob/development/releasenotes/beta-features). {{% /alert %}} +{{% alert color="warning" %}}This feature is in Beta. For more information on Beta products, see [Beta Releases](/development/releasenotes/beta-features). {{% /alert %}} ## 1 Introduction From 508f6d9a1094eea296f4836c60f34b6a0ba41ca0 Mon Sep 17 00:00:00 2001 From: Luyao Zhang <83757403+Luyao-Zhang-1@users.noreply.github.com> Date: Fri, 23 Jun 2023 17:09:11 +0200 Subject: [PATCH 147/232] Update document-generation.md --- content/en/docs/appstore/modules/document-generation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/appstore/modules/document-generation.md b/content/en/docs/appstore/modules/document-generation.md index 13705d98124..03711f13497 100644 --- a/content/en/docs/appstore/modules/document-generation.md +++ b/content/en/docs/appstore/modules/document-generation.md @@ -8,7 +8,7 @@ tags: ["marketplace", "marketplace component", "document generation", "platform --- {{% alert color="warning" %}} -This module is currently in Public Beta and should be used for testing purposes only. +This module is currently in Public Beta and should be used for testing purposes only. For more information on Beta products, see [Beta Releases](/development/releasenotes/beta-features/). {{% /alert %}} ## 1 Introduction From a10cf658144b0ba17945dd8c74514d0b3d8978a5 Mon Sep 17 00:00:00 2001 From: Luyao Zhang Date: Fri, 23 Jun 2023 17:10:13 +0200 Subject: [PATCH 148/232] Update jira-connector.md --- content/en/docs/developerportal/collaborate/jira-connector.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/developerportal/collaborate/jira-connector.md b/content/en/docs/developerportal/collaborate/jira-connector.md index 48765b05e7c..9e68bed41f2 100644 --- a/content/en/docs/developerportal/collaborate/jira-connector.md +++ b/content/en/docs/developerportal/collaborate/jira-connector.md @@ -6,7 +6,7 @@ description: "Describes how to connec Mendix apps in the Developer Portal to Jir tags: ["app", "jira", "project management", "scrum master", "general settings", Developer Portal", "Scrum Master"] --- -{{% alert color="warning" %}}This feature is in Beta. For more information on Beta products, see [Beta Releases](/development/releasenotes/beta-features). {{% /alert %}} +{{% alert color="warning" %}}This feature is in Beta. For more information on Beta products, see [Beta Releases](/development/releasenotes/beta-features/). {{% /alert %}} ## 1 Introduction From ce40f4cd7648d511bf2588ef2f0fa374d967ad94 Mon Sep 17 00:00:00 2001 From: Luyao Zhang Date: Fri, 23 Jun 2023 17:13:25 +0200 Subject: [PATCH 149/232] Update document-generation.md --- content/en/docs/appstore/modules/document-generation.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/appstore/modules/document-generation.md b/content/en/docs/appstore/modules/document-generation.md index 03711f13497..5764c68cfb2 100644 --- a/content/en/docs/appstore/modules/document-generation.md +++ b/content/en/docs/appstore/modules/document-generation.md @@ -1,8 +1,8 @@ --- -title: "Document Generation" +title: "PDF Document Generation" url: /appstore/modules/document-generation/ category: "Modules" -description: "Describes the configuration and usage of the Document Generation module, which is available in the Mendix Marketplace." +description: "Describes the configuration and usage of the PDF Document Generation module, which is available in the Mendix Marketplace." tags: ["marketplace", "marketplace component", "document generation", "platform support"] #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- @@ -13,7 +13,7 @@ This module is currently in Public Beta and should be used for testing purposes ## 1 Introduction -The [Document Generation](https://marketplace.mendix.com/link/component/211553) module allows you to generate pixel-perfect PDF documents based on regular pages in your app. +The [PDF Document Generation](https://marketplace.mendix.com/link/component/211553) module allows you to generate pixel-perfect PDF documents based on regular pages in your app. This module uses the document generation service on the Mendix Cloud to convert any regular web page in your app into a PDF document. The result is similar to what you would get when using the "Save as PDF" feature in the print dialog box of your browser. @@ -81,7 +81,7 @@ You need to have Chrome or Chromium installed on your local machine. ##### 3.1.1 Chrome -The Document Generation module automatically tries to find the Chrome executable (*chrome.exe*) in the default installation paths. +The PDF Document Generation module automatically tries to find the Chrome executable (*chrome.exe*) in the default installation paths. If you have installed Chrome in a custom location, configure the path to the Chrome executable in the constant **CustomChromePath** in the **_UseMe** > **Configuration** folder. From 1753fbbe6582d7f63e0dd61a054ab1852a9cf861 Mon Sep 17 00:00:00 2001 From: Leonardo <64644634+leonardomendix@users.noreply.github.com> Date: Fri, 23 Jun 2023 17:47:49 +0200 Subject: [PATCH 150/232] Update upgrading-from-9-to-10.md Added MendixSSO as a suggestion to update. --- content/en/docs/refguide/installation/upgrading-from-9-to-10.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md index 9fd648a1dd0..d1f38ba1e79 100644 --- a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md +++ b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md @@ -66,6 +66,7 @@ Be sure to update these key widgets, resources, and actions: * [Nanoflow Commons](https://marketplace.mendix.com/link/component/109515) * [Community Commons](https://marketplace.mendix.com/link/component/170) * [Data Widgets](https://marketplace.mendix.com/link/component/116540) +* [MendixSSO](https://marketplace.mendix.com/link/component/111349) In general you should not remove and re-import modules unless this is recommended in the component's release notes. If you do remove and re-import a component, you may lose data or configuration related to the component. From 3759a7a923c88009f16cfdfa8e12d4b4c569caf9 Mon Sep 17 00:00:00 2001 From: Luyao Zhang Date: Fri, 23 Jun 2023 20:37:46 +0200 Subject: [PATCH 151/232] Fix links --- content/en/docs/appstore/modules/document-generation.md | 2 +- content/en/docs/developerportal/collaborate/jira-connector.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/appstore/modules/document-generation.md b/content/en/docs/appstore/modules/document-generation.md index 5764c68cfb2..a84d1a7a623 100644 --- a/content/en/docs/appstore/modules/document-generation.md +++ b/content/en/docs/appstore/modules/document-generation.md @@ -8,7 +8,7 @@ tags: ["marketplace", "marketplace component", "document generation", "platform --- {{% alert color="warning" %}} -This module is currently in Public Beta and should be used for testing purposes only. For more information on Beta products, see [Beta Releases](/development/releasenotes/beta-features/). +This module is currently in Public Beta and should be used for testing purposes only. For more information on Beta products, see [Beta Releases](/releasenotes/beta-features/). {{% /alert %}} ## 1 Introduction diff --git a/content/en/docs/developerportal/collaborate/jira-connector.md b/content/en/docs/developerportal/collaborate/jira-connector.md index 9e68bed41f2..6be1090650e 100644 --- a/content/en/docs/developerportal/collaborate/jira-connector.md +++ b/content/en/docs/developerportal/collaborate/jira-connector.md @@ -6,7 +6,7 @@ description: "Describes how to connec Mendix apps in the Developer Portal to Jir tags: ["app", "jira", "project management", "scrum master", "general settings", Developer Portal", "Scrum Master"] --- -{{% alert color="warning" %}}This feature is in Beta. For more information on Beta products, see [Beta Releases](/development/releasenotes/beta-features/). {{% /alert %}} +{{% alert color="warning" %}}This feature is in Beta. For more information on Beta products, see [Beta Releases](/releasenotes/beta-features/). {{% /alert %}} ## 1 Introduction From 2ba638203936cfd1a103c58181a4eda4f5eca5b5 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Sat, 24 Jun 2023 10:28:07 +0200 Subject: [PATCH 152/232] Update business-events.md --- content/en/docs/appstore/modules/business-events.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/appstore/modules/business-events.md b/content/en/docs/appstore/modules/business-events.md index 25ce375f817..df95071b10f 100644 --- a/content/en/docs/appstore/modules/business-events.md +++ b/content/en/docs/appstore/modules/business-events.md @@ -11,7 +11,7 @@ tags: ["marketplace", "marketplace component", "business events", "data broker", With [Mendix Business Events](https://marketplace.mendix.com/link/component/202649), applications can signal when something important happens, and can independently subscribe to these events if they want to be informed. Business events are like a mailing list to share event notifications between apps. The key difference between business events and traditional communication between apps, like REST or Web Services, is that there is no direct communication between the different apps. -To deliver these events reliably between your applications, an event broker is required. For apps running the Mendix cloud on licensed nodes, you'll need to purchase a license for a [Mendix Event Broker](#mendix-event-broker). +To deliver these events reliably between your applications, an event broker is required. For apps running the Mendix cloud on licensed nodes, you will need to purchase a license for a [Mendix Event Broker](#mendix-event-broker). {{% alert color="info" %}} Business events are supported in Studio Pro [9.18](/releasenotes/studio-pro/9.18/) and above, and currently can only be deployed to the [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/).{{% /alert %}} @@ -35,7 +35,7 @@ To use Mendix Business Events, you will need the following: ## 2 Licensing {#licensing} -The Mendix Business Events module itself does not require a license, but it depends on an event broker to deploy to production environments. You can purchase a [Mendix Event Broker License](#event-broker-license) for a broker to be set up for you. See the [Mendix Event Broker](https://marketplace.mendix.com/link/component/202907) platform service page for more details. +The Mendix Business Events module itself does not require a license, but it depends on an event broker to deploy to production environments. You can purchase a [Mendix Event Broker License](#event-broker-license) for a broker to be set up for you. See the [Mendix Event Broker](https://marketplace.mendix.com/link/component/202907) platform service page for more details. You can also run business events on [your own Kafka cluster](#byok). ## 3 Configuration @@ -302,7 +302,7 @@ There is a single Kafka broker for Free Apps that all your company Free Apps can Purchase a license to the Mendix Event Broker to deploy unlimited apps on production environments in the Mendix Cloud. Ask your Customer Success Manager or Account Manager to get in touch with us to purchase a license. See the [Mendix Event Broker](https://marketplace.mendix.com/link/component/202907) platform service page for more details. -Licenses for the Mendix Event Broker are available for all regions, but once selected, you can only run on a single region (no multi-region support). To learn more about how this broker works, see [Mendix Event Broker](#mendix-event-broker). +Licenses for the Mendix Event Broker are available for all regions, but once selected, you can only run on a single region (no multi-region support). To learn more about how this broker works, see [Mendix Event Broker](#mendix-event-broker). This license is available for all customers. You can also run business events on [your own Kafka cluster](#byok). #### 5.1.1 Enabling the Mendix Event Broker Service {#enable-mx-event-broker} @@ -380,7 +380,7 @@ If you are deploying an app to production that contains a published business eve 2. Transport the mda to an environment. 3. Restart the environment. -### 6.4 Apps Running Own Kafka Cluster (Bring Your Own Kafka) +### 6.4 Apps Running Own Kafka Cluster (Bring Your Own Kafka) {#byok} {{% alert color="info" %}} This deployment method is currently in [Beta](/releasenotes/beta-features/).{{% /alert %}} From cf0ed25fbc732b77e881661c6518fbe7a5cbff0d Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 26 Jun 2023 07:12:16 +0200 Subject: [PATCH 153/232] Update upgrading-from-9-to-10.md --- content/en/docs/refguide/installation/upgrading-from-9-to-10.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md index d1f38ba1e79..fd870aeeaa4 100644 --- a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md +++ b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md @@ -68,7 +68,7 @@ Be sure to update these key widgets, resources, and actions: * [Data Widgets](https://marketplace.mendix.com/link/component/116540) * [MendixSSO](https://marketplace.mendix.com/link/component/111349) -In general you should not remove and re-import modules unless this is recommended in the component's release notes. If you do remove and re-import a component, you may lose data or configuration related to the component. +In general, you should not remove and re-import modules unless this is recommended in the component's release notes. If you do remove and re-import a component, you may lose data or configuration related to the component. ## 6 Reviewing and Testing Your App From 5df08f781192004c808c938aedbb21f5a8e18ad7 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 26 Jun 2023 09:16:04 +0200 Subject: [PATCH 154/232] Remove already released --- content/en/docs/releasenotes/feature-release-calendar/_index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index c6dcf1dc950..5b5567a47ba 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -35,7 +35,6 @@ The new features were divided into these major themes, which are described in th | Studio Pro redesign | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Improved Properties pane | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Git version control (removal of SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Start from spreadsheet | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**ADD RN**] | | Custom icons support | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Flexible page URLs | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | MxAssist Best Practice Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | From b8b46b8d40c2e3fdce991368c4d8c56c91693f3e Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 26 Jun 2023 09:17:09 +0200 Subject: [PATCH 155/232] Update --- content/en/docs/releasenotes/feature-release-calendar/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 5b5567a47ba..1265dd3985b 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -51,7 +51,7 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Mendix Connect - business events and Mendix Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**ADD RN**] | +| Mendix Connect - business events and Mendix Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions Kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions Kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | From d2a71160a7a3931e2f441ef537e570216729f2a8 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 26 Jun 2023 09:18:12 +0200 Subject: [PATCH 156/232] Add via comment --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 07e878ede5b..0404dee1de4 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -21,6 +21,7 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * Mendix Solutions Kit is now released for General Availability (GA). This release provides capabilities for protected add-on and solution [modules](/refguide/modules/) that allow you to have more control over what can be changed in the modules you distribute. In addition, this release includes solution lifecycle management, which enables creating and distributing [adaptable solutions](/appstore/creating-content/sol-adapt/) to customers so that the consumed solutions can easily be upgraded when you release the next version. * The [Machine Learning Kit](/refguide/machine-learning-kit/) is now released for GA. +* A [Mendix Event Broker license](/appstore/modules/business-events/#event-broker-license) is now available for all customers. * We renamed MxAssist Performance Bot to **Best Practice Bot**. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice. * [Page URLs](/refguide/page-properties/#url) got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. * We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list currently being processed. From c4a3f83f36c1056502bca0985034d275cc9c795b Mon Sep 17 00:00:00 2001 From: mauritselzinga-mx <122016392+mauritselzinga-mx@users.noreply.github.com> Date: Mon, 26 Jun 2023 09:30:19 +0200 Subject: [PATCH 157/232] Update _index.md Added information for exporting documentation. This functionality exists for a while but documentation was never added. --- .../en/docs/refguide/modeling/app-explorer/app/_index.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/en/docs/refguide/modeling/app-explorer/app/_index.md b/content/en/docs/refguide/modeling/app-explorer/app/_index.md index 14b2dd339c2..27fc3cf4c13 100644 --- a/content/en/docs/refguide/modeling/app-explorer/app/_index.md +++ b/content/en/docs/refguide/modeling/app-explorer/app/_index.md @@ -36,6 +36,12 @@ System texts are texts like information and error messages that are produced by See [System Texts](/refguide/system-texts/). +## 6 Advanced + +### Export Documentation + +Right clicking on the app level allows you to export your documentation. This will export an HTML file with all documents in your app and their documentation. + ## 6 Read More * [Modules](/refguide/modules/) From 86559cc009228522394675d2c520d395f01b6c1d Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 26 Jun 2023 09:45:00 +0200 Subject: [PATCH 158/232] Update --- layouts/partials/landingpage/product-cards.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/layouts/partials/landingpage/product-cards.html b/layouts/partials/landingpage/product-cards.html index 71b3a200f9e..ba9a06ad2b8 100644 --- a/layouts/partials/landingpage/product-cards.html +++ b/layouts/partials/landingpage/product-cards.html @@ -48,9 +48,9 @@

+ + +

From 0133d85496442fd95e51edfa59a181d13a9c32f0 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 26 Jun 2023 09:55:27 +0200 Subject: [PATCH 159/232] Update _index.md --- .../modeling/app-explorer/app/_index.md | 28 +++++++++---------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/content/en/docs/refguide/modeling/app-explorer/app/_index.md b/content/en/docs/refguide/modeling/app-explorer/app/_index.md index 27fc3cf4c13..5eec608a2ff 100644 --- a/content/en/docs/refguide/modeling/app-explorer/app/_index.md +++ b/content/en/docs/refguide/modeling/app-explorer/app/_index.md @@ -2,7 +2,7 @@ title: "App" url: /refguide/app/ weight: 10 -tags: ["studio pro", "app"] +tags: ["studio pro", "app", "settings", "navigation", "system texts", "export documentation"] aliases: - /refguide/project/ #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. @@ -10,39 +10,37 @@ aliases: ## 1 Introduction -A Mendix app consists of app-level documents and a number of modules. Each module can contain many documents. At the app level, there are some settings and documents that apply to your app as a whole. For example, navigation is an app-level document; the menu bar is app-wide and can refer to functionality in all modules. Most documents, however, live at the level of a [module](/refguide/modules/). +A Mendix app consists of app-level documents and a number of modules. Each module can contain many documents. At the app level, there are some settings and documents that apply to your app as a whole. For example, navigation is an app-level document, and the menu bar is app-wide and can refer to functionality in all modules. However, most documents live at the level of a [module](/refguide/modules/). ## 2 Settings -App settings include the languages for the end-user, app directory and database and server settings. +Clicking **Settings** opens a dialog box with settings for the end-user languages, the app directory, and the database and server. -See [App Settings](/refguide/app-settings/). +For more information, see [App Settings](/refguide/app-settings/). ## 3 Security -At the app level you can change the security level, manage user roles and manage administrator and anonymous user access. +At the app level, you can change the **Security** level, manage user roles, and manage administrator and anonymous user access. -See [App Security](/refguide/app-security/). +For more information, see [App Security](/refguide/app-security/). ## 4 Navigation -In navigation you can configure the menu bar and navigation tree for your application. Also you can specify what the home page is, as in, the page you see right after signing in. +In **Navigation**, you can configure the menu bar and navigation tree for your app. You can also specify what the **Home page** is (meaning, the page you see right after signing in). -See [Navigation](/refguide/navigation/). +For more information, see [Navigation](/refguide/navigation/). ## 5 System Texts -System texts are texts like information and error messages that are produced by the server or the client. You can translate these texts so that they appear in the preferred language of the user. +**System texts** are texts like information and error messages that are produced by the server or the client. You can translate these texts so that they appear in the preferred language of the user. -See [System Texts](/refguide/system-texts/). +For more information, see [System Texts](/refguide/system-texts/). -## 6 Advanced +## 6 Export Documentation -### Export Documentation +Right-clicking the **App** allows you to export documentation. This exports an HTML file with all the documents in your app and their documentation. -Right clicking on the app level allows you to export your documentation. This will export an HTML file with all documents in your app and their documentation. - -## 6 Read More +## 7 Read More * [Modules](/refguide/modules/) * [Security](/refguide/security/) From b76a04bb6810661174fd9061aa4b99919f9e8aca Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 10:35:21 +0200 Subject: [PATCH 160/232] Update search.md --- content/en/docs/catalog/manage/search.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/catalog/manage/search.md b/content/en/docs/catalog/manage/search.md index a01dc2acbb4..1feecdbebc4 100644 --- a/content/en/docs/catalog/manage/search.md +++ b/content/en/docs/catalog/manage/search.md @@ -5,6 +5,7 @@ description: "Describes how to find data sources and datasets in the Catalog." tags: ["data hub", "Catalog", "data source", "dataset"] aliases: - /catalog/search/ + - /data-hub/data-hub-catalog/search --- ## 1 Introduction From 805baf2527af57144be2635fae1f486d8138a44c Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 10:37:01 +0200 Subject: [PATCH 161/232] Update security.md --- content/en/docs/catalog/manage/security.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/catalog/manage/security.md b/content/en/docs/catalog/manage/security.md index d6ca8afc133..31a359b3da5 100644 --- a/content/en/docs/catalog/manage/security.md +++ b/content/en/docs/catalog/manage/security.md @@ -5,6 +5,7 @@ description: "Describes security aspects around registered assets and access in tags: ["data hub", "Catalog", "security", "entity security", "dataset security","odata service security"] aliases: - /catalog/security/ + - /data-hub/data-hub-catalog/security/ --- ## 1 Introduction From 031b0baa190a3b6234770f55f2aa80baa565c065 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 10:37:43 +0200 Subject: [PATCH 162/232] Update user-roles.md --- content/en/docs/catalog/manage/user-roles.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/catalog/manage/user-roles.md b/content/en/docs/catalog/manage/user-roles.md index b082b28d496..c7f7f6f60a8 100644 --- a/content/en/docs/catalog/manage/user-roles.md +++ b/content/en/docs/catalog/manage/user-roles.md @@ -5,6 +5,8 @@ description: "Describes the user roles in the Catalog." tags: ["data hub", "Catalog", "curate", "user roles", "curator", "admin"] aliases: - /catalog/manage-data-sources/user-roles/ + - /data-hub/data-hub-catalog/user-roles/ + - /data-hub/data-hub-catalog/manage-data sources/user-roles/ --- ## 1 Introduction From 6cccb6a5b9487b5e2999fdfddbfb6b2710bbcb8f Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 10:38:36 +0200 Subject: [PATCH 163/232] Update curate.md --- content/en/docs/catalog/manage/curate.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/catalog/manage/curate.md b/content/en/docs/catalog/manage/curate.md index 6be1aa8910b..d4e4f55e764 100644 --- a/content/en/docs/catalog/manage/curate.md +++ b/content/en/docs/catalog/manage/curate.md @@ -5,6 +5,8 @@ description: "Describes how to curate and enhance data assets in Catalog, and ma tags: ["data hub", "Catalog", "curate", "description", "services", "tags"] aliases: - /catalog/curate/ + - /data-hub/data-hub-catalog/curate/ + - /data-hub/data-hub-catalog/manage-data-sources/curate/ --- ## 1 Introduction From 3a736fdd0bbbdfe55838930e3e6b71019f1af521 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 10:42:34 +0200 Subject: [PATCH 164/232] Update _index.md --- content/en/docs/catalog/manage/_index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/catalog/manage/_index.md b/content/en/docs/catalog/manage/_index.md index cccf488706e..474947e0229 100644 --- a/content/en/docs/catalog/manage/_index.md +++ b/content/en/docs/catalog/manage/_index.md @@ -4,6 +4,7 @@ url: /catalog/manage/ weight: 30 aliases: - /catalog/manage-data-sources/ + - /data-hub/data-hub-catalog/manage-data-sources/ --- ## 1 Introduction From 7ea5a97518516d5642b40d0e5afcc3eb77d66f85 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 10:47:25 +0200 Subject: [PATCH 165/232] Update _index.md --- content/en/docs/catalog/consume/_index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/catalog/consume/_index.md b/content/en/docs/catalog/consume/_index.md index 7cbf672ddb7..8669be51613 100644 --- a/content/en/docs/catalog/consume/_index.md +++ b/content/en/docs/catalog/consume/_index.md @@ -2,6 +2,8 @@ title: "Consume Data Sources" url: /catalog/consume/ weight: 20 +aliases: + - /data-hub/data-hub-catalog/consume-data-sources/ --- ## 1 Introduction From 4fda6847f294aa20c39d85d7ad57bd6550afbf94 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:14:41 +0200 Subject: [PATCH 166/232] Update _index.md --- content/en/docs/catalog/_index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/catalog/_index.md b/content/en/docs/catalog/_index.md index 821531c2252..d685e0ce193 100644 --- a/content/en/docs/catalog/_index.md +++ b/content/en/docs/catalog/_index.md @@ -12,6 +12,7 @@ tags: ["data hub", "Catalog", "data hub landscape", "external entities", "extern aliases: - /data-hub/data-catalog/index.html - /data-hub/ + - /data-hub/data-hub-catalog/ --- ## 1 Introduction From c85e909fd74c1fa073fc78ef9637d0e42096e367 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:15:31 +0200 Subject: [PATCH 167/232] Update consume.md --- content/en/docs/catalog/consume/consume.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/catalog/consume/consume.md b/content/en/docs/catalog/consume/consume.md index c618abfede9..16cc519583f 100644 --- a/content/en/docs/catalog/consume/consume.md +++ b/content/en/docs/catalog/consume/consume.md @@ -5,7 +5,7 @@ weight: 20 description: "Describes how to use shared data sources and datasets through Mendix Data Hub." tags: ["data hub", "Catalog", "consume", "external entities", "asset", "entities", data hub pane", "studio pro"] aliases: - - /catalog/consume/ + - /data-hub/data-hub-catalog/consume/ --- ## 1 Introduction From d3afa818dc4860e9a160669e8857051b918d69c6 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:15:54 +0200 Subject: [PATCH 168/232] Update _index.md --- content/en/docs/catalog/integrate/share-data/_index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/catalog/integrate/share-data/_index.md b/content/en/docs/catalog/integrate/share-data/_index.md index 59902551c7c..f58ffee955c 100644 --- a/content/en/docs/catalog/integrate/share-data/_index.md +++ b/content/en/docs/catalog/integrate/share-data/_index.md @@ -10,6 +10,7 @@ aliases: - /catalog/use-data-catalog - /data-hub/share-data/ - /catalog/#share-data + - /data-hub/data-hub-catalog/share-data/ #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- From 14ab94d5fc7595a86754173af913df8ff7ad9744 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:16:24 +0200 Subject: [PATCH 169/232] Update _index.md --- content/en/docs/catalog/integrate/write-data/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/catalog/integrate/write-data/_index.md b/content/en/docs/catalog/integrate/write-data/_index.md index fe3bf71af66..15629eeb926 100644 --- a/content/en/docs/catalog/integrate/write-data/_index.md +++ b/content/en/docs/catalog/integrate/write-data/_index.md @@ -5,7 +5,7 @@ description: "Describes how to add annotations to an OData service in Mendix Stu tags: ["Data Hub", "external entities", "published OData service" ,"how to","OData", "Catalog"] weight: 20 aliases: - - /catalog/write-data/ + - /data-hub/write-data/ --- ## 1 Introduction From 5ddef74b61aa5b6688b3f9909236a0ffd6679177 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:16:44 +0200 Subject: [PATCH 170/232] Update _index.md --- content/en/docs/catalog/integrate/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/catalog/integrate/_index.md b/content/en/docs/catalog/integrate/_index.md index 1a402682de6..04a9f9c383a 100644 --- a/content/en/docs/catalog/integrate/_index.md +++ b/content/en/docs/catalog/integrate/_index.md @@ -3,7 +3,7 @@ title: "Catalog and Studio Pro" url: /catalog/integrate-with-studio-pro/ weight: 60 aliases: - - /catalog/integrate/ + - /data-hub/data-hub-catalog/integrate/ --- ## 1 Introduction From 3b2579224c93decf811c4fc865f84488758ff65f Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:17:01 +0200 Subject: [PATCH 171/232] Update _index.md --- content/en/docs/catalog/manage/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/catalog/manage/_index.md b/content/en/docs/catalog/manage/_index.md index cccf488706e..2014af5374e 100644 --- a/content/en/docs/catalog/manage/_index.md +++ b/content/en/docs/catalog/manage/_index.md @@ -3,7 +3,7 @@ title: "Manage Data Sources" url: /catalog/manage/ weight: 30 aliases: - - /catalog/manage-data-sources/ + - /data-hub/data-hub-catalog/manage-data-sources/ --- ## 1 Introduction From b8e7afa80e8cb18a99a8ed27c4812cc1bb87ea12 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:17:26 +0200 Subject: [PATCH 172/232] Update curate.md --- content/en/docs/catalog/manage/curate.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/catalog/manage/curate.md b/content/en/docs/catalog/manage/curate.md index 6be1aa8910b..47d823869c4 100644 --- a/content/en/docs/catalog/manage/curate.md +++ b/content/en/docs/catalog/manage/curate.md @@ -4,7 +4,8 @@ url: /catalog/manage/curate/ description: "Describes how to curate and enhance data assets in Catalog, and make them easier to find and understand." tags: ["data hub", "Catalog", "curate", "description", "services", "tags"] aliases: - - /catalog/curate/ + - /data-hub/data-hub-catalog/curate/ + - /data-hub/data-hub-catalog/manage-data-sources/curate/ --- ## 1 Introduction From e0caf7f1dc20de75f740c93814084f56e349a9c4 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:17:52 +0200 Subject: [PATCH 173/232] Update landscape.md --- content/en/docs/catalog/manage/landscape.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/catalog/manage/landscape.md b/content/en/docs/catalog/manage/landscape.md index bc1ab38e724..c2ca2197fa2 100644 --- a/content/en/docs/catalog/manage/landscape.md +++ b/content/en/docs/catalog/manage/landscape.md @@ -6,6 +6,7 @@ tags: ["Catalog", "data hub", "external entities", "landscape", "published odata weight: 40 aliases: - /data-hub/data-hub-landscape/ + - /data-hub/data-hub-catalog/data-hub-landscape/ #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- @@ -85,4 +86,4 @@ Clicking a node will display details of the node in the **Metadata** pane. You c ### 2.6 Consumed Datasets -If you click the **Entity** icon on the consume line, the names of the datasets that are being consumed from the service will be shown in the right panel. \ No newline at end of file +If you click the **Entity** icon on the consume line, the names of the datasets that are being consumed from the service will be shown in the right panel. From 86954fc62d1f5559ccff018d8034d448454efb6c Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:18:23 +0200 Subject: [PATCH 174/232] Update search.md --- content/en/docs/catalog/manage/search.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/catalog/manage/search.md b/content/en/docs/catalog/manage/search.md index a01dc2acbb4..984f22483a0 100644 --- a/content/en/docs/catalog/manage/search.md +++ b/content/en/docs/catalog/manage/search.md @@ -4,7 +4,8 @@ url: /catalog/manage/search/ description: "Describes how to find data sources and datasets in the Catalog." tags: ["data hub", "Catalog", "data source", "dataset"] aliases: - - /catalog/search/ + - /data-hub/data-hub-catalog/search/ + - /data-hub/data-hub-catalog/manage-data-sources/search/ --- ## 1 Introduction From 339ad5fd64508a71019c1710069f0d8d417443ff Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:18:55 +0200 Subject: [PATCH 175/232] Update security.md --- content/en/docs/catalog/manage/security.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/en/docs/catalog/manage/security.md b/content/en/docs/catalog/manage/security.md index d6ca8afc133..8638a542f94 100644 --- a/content/en/docs/catalog/manage/security.md +++ b/content/en/docs/catalog/manage/security.md @@ -4,7 +4,8 @@ url: /catalog/manage/security/ description: "Describes security aspects around registered assets and access in Mendix Data Hub." tags: ["data hub", "Catalog", "security", "entity security", "dataset security","odata service security"] aliases: - - /catalog/security/ + - /data-hub/data-hub-catalog/security/ + - /data-hub/data-hub-catalog/manage-data-sources/security/ --- ## 1 Introduction From 0b99dc31d3d431fa6d699aff6750022a9ce33b36 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 12:19:32 +0200 Subject: [PATCH 176/232] Update user-roles.md --- content/en/docs/catalog/manage/user-roles.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/content/en/docs/catalog/manage/user-roles.md b/content/en/docs/catalog/manage/user-roles.md index b082b28d496..51e14479fb4 100644 --- a/content/en/docs/catalog/manage/user-roles.md +++ b/content/en/docs/catalog/manage/user-roles.md @@ -5,6 +5,8 @@ description: "Describes the user roles in the Catalog." tags: ["data hub", "Catalog", "curate", "user roles", "curator", "admin"] aliases: - /catalog/manage-data-sources/user-roles/ + - /data-hub/data-hub-catalog/user-roles/ + - /data-hub/data-hub-catalog/manage-data-sources/user-roles/ --- ## 1 Introduction From 73f4e3decd1dc44510abee5cbff95bfbe12a4178 Mon Sep 17 00:00:00 2001 From: Luyao Zhang <83757403+Luyao-Zhang-1@users.noreply.github.com> Date: Mon, 26 Jun 2023 12:24:27 +0200 Subject: [PATCH 177/232] Correct module link --- content/en/docs/appstore/modules/mendix-feedback.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/appstore/modules/mendix-feedback.md b/content/en/docs/appstore/modules/mendix-feedback.md index 6e11fcfdec1..ffa2e752dee 100644 --- a/content/en/docs/appstore/modules/mendix-feedback.md +++ b/content/en/docs/appstore/modules/mendix-feedback.md @@ -28,7 +28,7 @@ In case of any questions, contact [Mendix Support](https://support.mendix.com/hc ## 1 Introduction -The [Mendix Feedback](https://marketplace.mendix.com/link/component/199/) module allows end-users of your application to directly submit feedback into your app. The module contains a feedback widget along with other files. The feedback module is fully integrated with the [Feedback](/developerportal/collaborate/feedback/) page in the Developer Portal, where you can review feedback and convert it into [user stories](/developerportal/collaborate/stories/) to improve your app. +The [Mendix Feedback](https://marketplace.mendix.com/link/component/205506) module allows end-users of your application to directly submit feedback into your app. The module contains a feedback widget along with other files. The feedback module is fully integrated with the [Feedback](/developerportal/collaborate/feedback/) page in the Developer Portal, where you can review feedback and convert it into [user stories](/developerportal/collaborate/stories/) to improve your app. {{< figure src="/attachments/appstore/modules/mendix-feedback/feedback-in-app.png" >}} From ba4c045b0a22c4c42c9008699962ef38a5d94b49 Mon Sep 17 00:00:00 2001 From: ModelingServices Date: Mon, 26 Jun 2023 10:42:53 +0000 Subject: [PATCH 178/232] Add release notes for Mendix 10.0.0 --- .../metamodel/metamodel-10/metamodel-10.0.md | 98 +++++++++++-------- .../releasenotes/sdk/model-sdk/model-sdk-4.md | 7 ++ 2 files changed, 62 insertions(+), 43 deletions(-) diff --git a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md index 18154f14c6e..e58cd48d74a 100644 --- a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md +++ b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md @@ -1,116 +1,128 @@ --- title: "10.0" -url: /releasenotes/sdk/metamodel-10.0/ -weight: 100 +parent: "metamodel-10" --- -## 10.0.0 Beta 2 - -**Release date: May 25th, 2023** +## 10.0.0 ### Microflows #### AggregateListAction (Element) - -* We introduced the `expression`, `useExpression`, `reduceReturnDataType`, and `reduceInitialValueExpression` properties. +* We introduced the `expression` property. +* We introduced the `useExpression` property. +* We introduced the `reduceReturnDataType` property. +* We introduced the `reduceInitialValueExpression` property. #### RestOperationCallAction (Element) +* We introduced this element. Info: "Calling a REST operation action" -* We introduced this element for calling a REST operation action. - -#### ClearFromClientAction, NotifyWorkflowAction (Elements) - -* We introduced these elements. +#### ClearFromClientAction (Element) +* We introduced this element. #### LockWorkflowAction (Element) - -* We introduced the `workflowSelection` property. * We deleted the `workflow` property. +* We introduced the `workflowSelection` property. #### UnlockWorkflowAction (Element) - -* We introduced the `workflowSelection` property. * We deleted the `workflow` property. +* We introduced the `workflowSelection` property. + +#### NotifyWorkflowAction (Element) +* We introduced this element. ### Projects #### ModuleSettings (ModelUnit) - -* We introduced the `solutionIdentifier` and `jarDependencies` properties. +* We introduced the `solutionIdentifier` property. +* We introduced the `jarDependencies` property. +* We introduced the `basedOnVersion` property. ### Settings #### RuntimeSettings (Element) - * We changed the default value of the `bcryptCost` property. #### WebUIProjectSettingsPart (Element) - * We deleted the `enableDownloadResources` property. ### DatabaseConnector #### ConnectionString (Element) - -* We introduced this element for using a text to define the connection string. +* We introduced this element. Info: "Using a text to define the connection string" #### ConnectionParts (Element) - -* We introduced this element for using parts to define the connection string. +* We introduced this element. Info: "Using parts to define the connection string" ### Rest #### PublishedODataMicroflow (Element) - -* We introduced the `parameters` property for the parameters of the microflow. +* We introduced the `parameters` property. Info: "The parameters of this microflow" #### PublishedODataMicroflowParameter (Element) - -* We introduced this element for a microflow parameter published in an OData service. +* We introduced this element. Info: "A microflow parameter published in an OData service" #### ConsumedODataService (ModelUnit) - -* We introduced this model unit. +* We introduced this modelunit. ### CustomWidgets #### CustomWidgetType (Element) - * We deleted the `phoneGapEnabled` property. ### Navigation #### NavigationDocument (ModelUnit) - -* We deleted the `reports` and `reportParameters` properties. +* We deleted the `reports` property. +* We deleted the `reportParameters` property. ### Pages #### Page (ModelUnit) - * We introduced the `urlSegments` property. -#### UrlSegment, ParameterAttributeUrlSegment, ParameterIdUrlSegment, StaticUrlSegment (Elements) +#### UrlSegment (Element) +* We introduced this element. -* We introduced these elements. +#### ParameterAttributeUrlSegment (Element) +* We introduced this element. -#### EntityPathSource (Element) +#### ParameterIdUrlSegment (Element) +* We introduced this element. +#### StaticUrlSegment (Element) +* We introduced this element. + +#### EntityPathSource (Element) * We introduced the `sourceVariable` property. #### RetrievalQueryParameter (Element) - -* We introduced the `types` property. * We deleted the `type` property. +* We introduced the `types` property. ### Reports #### ReportParameter (Element) - -* We deleted the `parameterTypeRuntime` and `reportId` properties. +* We deleted the `parameterTypeRuntime` property. +* We deleted the `reportId` property. ### Workflows -#### WaitForNotificationActivity, WorkflowDefinitionSelection, WorkflowDefinitionNameSelection, WorkflowDefinitionObjectSelection (Elements) +#### WaitForNotificationActivity (Element) +* We introduced this element. + +#### MajorityCompletionCriteria (Element) +* We introduced this element. + +#### ThresholdCompletionCriteria (Element) +* We introduced this element. + +#### WorkflowDefinitionSelection (Element) +* We introduced this element. + +#### WorkflowDefinitionNameSelection (Element) +* We introduced this element. + +#### WorkflowDefinitionObjectSelection (Element) +* We introduced this element. -* We introduced these elements. +This page has been generated automatically. diff --git a/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md b/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md index 1ec37847390..3655d5a9bce 100644 --- a/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md +++ b/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md @@ -4,6 +4,13 @@ url: /releasenotes/sdk/model-sdk-4/ weight: 97 #When updating, remember to update the Latest Mendix Releases file --- +## 4.76.0 {#476} + +**Release date: June 19th, 2023** + +* We added support for Mendix [10.0.0](../studio-pro/10). +* We added support for Mendix Metamodel [10.0.0](metamodel-10.0). + ## 4.75.0 (Beta 2 Version) {#475} **Release date: May 25th, 2023** From 6b10775d522616e1bb4a742baff45851d8ec79c6 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 26 Jun 2023 12:52:14 +0200 Subject: [PATCH 179/232] Update model-sdk-4.md --- .../en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md b/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md index 3655d5a9bce..80129b8aac2 100644 --- a/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md +++ b/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md @@ -4,21 +4,22 @@ url: /releasenotes/sdk/model-sdk-4/ weight: 97 #When updating, remember to update the Latest Mendix Releases file --- + ## 4.76.0 {#476} **Release date: June 19th, 2023** -* We added support for Mendix [10.0.0](../studio-pro/10). -* We added support for Mendix Metamodel [10.0.0](metamodel-10.0). +* We added support for Mendix [10.0.0 GA](/releasenotes/studio-pro/10.0). +* We added support for Mendix Metamodel [10.0.0 GA](/releasenotes/sdk/metamodel-10.0/). -## 4.75.0 (Beta 2 Version) {#475} +## 4.75.0 {#475} **Release date: May 25th, 2023** * We added support for Mendix [10.0.0 Beta 2](/releasenotes/studio-pro/10.0/). * We added support for Mendix Metamodel [10.0.0 Beta 2](/releasenotes/sdk/metamodel-10.0/). -## 4.74.0 (Beta 1 Version) {#474} +## 4.74.0 {#474} **Release date: April 24th, 2023** From eb694dd201b2102538d18e6d5611ec63b15a41a1 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 26 Jun 2023 12:56:31 +0200 Subject: [PATCH 180/232] Update metamodel-10.0.md --- .../metamodel/metamodel-10/metamodel-10.0.md | 75 +++++++++++++------ 1 file changed, 51 insertions(+), 24 deletions(-) diff --git a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md index e58cd48d74a..a1ff87539e5 100644 --- a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md +++ b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md @@ -1,6 +1,7 @@ --- title: "10.0" -parent: "metamodel-10" +url: /releasenotes/sdk/metamodel-10.0/ +weight: 100 --- ## 10.0.0 @@ -8,118 +9,144 @@ parent: "metamodel-10" ### Microflows #### AggregateListAction (Element) -* We introduced the `expression` property. -* We introduced the `useExpression` property. -* We introduced the `reduceReturnDataType` property. -* We introduced the `reduceInitialValueExpression` property. + +* We introduced the `expression`, `useExpression`, `reduceReturnDataType`, and `reduceInitialValueExpression` properties. #### RestOperationCallAction (Element) -* We introduced this element. Info: "Calling a REST operation action" -#### ClearFromClientAction (Element) -* We introduced this element. +* We introduced this element for calling a REST operation action. + +#### ClearFromClientAction, NotifyWorkflowAction (Elements) + +* We introduced these elements. #### LockWorkflowAction (Element) + +* We introduced the `workflowSelection` property. * We deleted the `workflow` property. -* We introduced the `workflowSelection` property. #### UnlockWorkflowAction (Element) -* We deleted the `workflow` property. -* We introduced the `workflowSelection` property. -#### NotifyWorkflowAction (Element) -* We introduced this element. +* We introduced the `workflowSelection` property. +* We deleted the `workflow` property. ### Projects #### ModuleSettings (ModelUnit) -* We introduced the `solutionIdentifier` property. -* We introduced the `jarDependencies` property. -* We introduced the `basedOnVersion` property. + +* We introduced the `solutionIdentifier`, `jarDependencies`, and `basedOnVersion` properties. ### Settings #### RuntimeSettings (Element) + * We changed the default value of the `bcryptCost` property. #### WebUIProjectSettingsPart (Element) + * We deleted the `enableDownloadResources` property. ### DatabaseConnector #### ConnectionString (Element) -* We introduced this element. Info: "Using a text to define the connection string" + +* We introduced this element for using a text to define the connection string. #### ConnectionParts (Element) -* We introduced this element. Info: "Using parts to define the connection string" + +* We introduced this element for using parts to define the connection string. ### Rest #### PublishedODataMicroflow (Element) -* We introduced the `parameters` property. Info: "The parameters of this microflow" + +* We introduced the `parameters` property for the parameters of the microflow. #### PublishedODataMicroflowParameter (Element) -* We introduced this element. Info: "A microflow parameter published in an OData service" + +* We introduced this element for a microflow parameter published in an OData service. #### ConsumedODataService (ModelUnit) -* We introduced this modelunit. + +* We introduced this model unit. ### CustomWidgets #### CustomWidgetType (Element) + * We deleted the `phoneGapEnabled` property. ### Navigation #### NavigationDocument (ModelUnit) -* We deleted the `reports` property. -* We deleted the `reportParameters` property. + +* We deleted the `reports` and `reportParameters` properties. ### Pages #### Page (ModelUnit) -* We introduced the `urlSegments` property. + +* We introduced the `urlSegments` property. + + + + + + + #### UrlSegment (Element) + * We introduced this element. #### ParameterAttributeUrlSegment (Element) + * We introduced this element. #### ParameterIdUrlSegment (Element) + * We introduced this element. #### StaticUrlSegment (Element) + * We introduced this element. #### EntityPathSource (Element) + * We introduced the `sourceVariable` property. #### RetrievalQueryParameter (Element) + * We deleted the `type` property. * We introduced the `types` property. ### Reports #### ReportParameter (Element) + * We deleted the `parameterTypeRuntime` property. * We deleted the `reportId` property. ### Workflows #### WaitForNotificationActivity (Element) + * We introduced this element. #### MajorityCompletionCriteria (Element) + * We introduced this element. #### ThresholdCompletionCriteria (Element) + * We introduced this element. #### WorkflowDefinitionSelection (Element) + * We introduced this element. #### WorkflowDefinitionNameSelection (Element) + * We introduced this element. #### WorkflowDefinitionObjectSelection (Element) From bb1fb63b6a6aea49b31ec184df85e7fde3de7ff2 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Mon, 26 Jun 2023 13:15:14 +0200 Subject: [PATCH 181/232] Fix capitalization and links --- content/en/docs/catalog/consume/consume.md | 2 +- .../catalog/integrate/share-data/_index.md | 8 +++---- .../catalog/integrate/write-data/_index.md | 6 ++--- .../modeling/domain-model/entities/_index.md | 2 +- .../domain-model/external-entities.md | 16 +++++++------- .../integration/odata-services/_index.md | 2 +- .../consumed-odata-services/_index.md | 8 +++---- .../consumed-odata-service.md | 16 +++++++------- .../odata-services/wrap-services-odata.md | 4 ++-- .../modeling/menus/view-menu/_index.md | 2 +- .../menus/view-menu/integration-pane.md | 22 +++++++++---------- 11 files changed, 44 insertions(+), 44 deletions(-) diff --git a/content/en/docs/catalog/consume/consume.md b/content/en/docs/catalog/consume/consume.md index 4403f20650b..bbcc040770a 100644 --- a/content/en/docs/catalog/consume/consume.md +++ b/content/en/docs/catalog/consume/consume.md @@ -30,7 +30,7 @@ It is good practice for publishers of a service to deprecate a service version i ### 2.2 Consumed External Entities -When you use an external entity from a published OData service through the [Integration pane](/refguide/integration-pane/] in Studio Pro, you are consuming the dataset from the service deployed to a specific environment. +When you use an external entity from a published OData service through the [Integration Pane](/refguide/integration-pane/) in Studio Pro, you are consuming the dataset from the service deployed to a specific environment. When security is enabled for your app, you can define access rules for external entities just as you would for [persistable](/refguide/persistability/#persistable) and [non-persistable](/refguide/persistability/#non-persistable) entities. You can define access rules based on user roles (for more details, see [Security and Controlling Access to Information](/catalog/security/)). diff --git a/content/en/docs/catalog/integrate/share-data/_index.md b/content/en/docs/catalog/integrate/share-data/_index.md index 6de2b88fd8c..81ff1760f86 100644 --- a/content/en/docs/catalog/integrate/share-data/_index.md +++ b/content/en/docs/catalog/integrate/share-data/_index.md @@ -133,16 +133,16 @@ You are going to create a second app and consume the **Customer** dataset from t To do this, follow the steps below: 1. In Mendix Studio Pro, create a new app using the **Blank** app template and call it *{yourname}CustomerActionsApp*. -2. Go to the domain model > [Integration pane](/refguide/integration-pane/] (if you do not see the [Integration pane](/refguide/integration-pane/], click **View** > **Data Hub** to display it). +2. Go to the domain model > [Integration Pane](/refguide/integration-pane/) (if you do not see the [Integration Pane](/refguide/integration-pane/), click **View** > **Data Hub** to display it). 3. In the [Data Hub](/refguide/data-hub-pane/) pane, enter the search string *{yourname}*. -4. By default, search in the [Integration pane](/refguide/integration-pane/] only shows services in **Production** environments. Your app was deployed as a **Sandbox** app. Click the **Filter** icon next to the search and check **Show development environments**. +4. By default, search in the [Integration Pane](/refguide/integration-pane/) only shows services in **Production** environments. Your app was deployed as a **Sandbox** app. Click the **Filter** icon next to the search and check **Show development environments**. {{< figure src="/attachments/data-hub/share-data/filter-icon.png" alt="Filter Icon" >}} The search results now include **{yourname}CustomerOData_service** from your Mendix Cloud **Sandbox** environment. -5. From **{yourname}CustomerODataService**, drag the **Customer** entity into the domain model. The consumed service and entity have green checkmarks in the [Integration pane](/refguide/integration-pane/] now. -6. This entity is different from the blue entity container from the first app. This purple colored entity is called an [external entity](/refguide/external-entities/). The name of the OData service it is exposed in is displayed above it. Click the information icon for the consumed service in the [Integration pane](/refguide/integration-pane/] to see further information about the service, and follow the link to **View in Catalog**. +5. From **{yourname}CustomerODataService**, drag the **Customer** entity into the domain model. The consumed service and entity have green checkmarks in the [Integration Pane](/refguide/integration-pane/) now. +6. This entity is different from the blue entity container from the first app. This purple colored entity is called an [external entity](/refguide/external-entities/). The name of the OData service it is exposed in is displayed above it. Click the information icon for the consumed service in the [Integration Pane](/refguide/integration-pane/) to see further information about the service, and follow the link to **View in Catalog**. 7. In the **App Explorer**, notice the service and location documents for your external entity. These documents specify the metadata for the service and provide the links for connecting to the shared data. 8. Right-click the entity and select **Generate overview pages** for this entity. In the **Generate pages** dialog box, for **Content layout** select **Atlas_Default(Atlas_Core)** and click **OK**. Accept the **Information** box by clicking **OK**. Overview pages for the new entity are added in the **OverviewPages** folder of **MyFirstModule**. 9. From the App Explorer, drag **Customer_Overview** into the empty **Auto-fill** container under the *Home* banner. diff --git a/content/en/docs/catalog/integrate/write-data/_index.md b/content/en/docs/catalog/integrate/write-data/_index.md index 9a794097059..a34c6781dce 100644 --- a/content/en/docs/catalog/integrate/write-data/_index.md +++ b/content/en/docs/catalog/integrate/write-data/_index.md @@ -57,14 +57,14 @@ Notice the highlighted **CRUD** letters next to the entity name in the search pa ## 5 Consuming OData Resources in Your Mendix App -Just like in the Catalog, you can see the **CRUD** capabilities of entities, attributes, and associations inside the [Integration pane](/refguide/integration-pane/] of Studio Pro. +Just like in the Catalog, you can see the **CRUD** capabilities of entities, attributes, and associations inside the [Integration Pane](/refguide/integration-pane/) of Studio Pro. {{< figure src="/attachments/data-hub/write-data/crud-capabilities.png" alt="crud capabilities" >}} To consume an OData entity, do the following: -1. In the [Integration pane](/refguide/integration-pane/], enter a search term in the search field. -2. Select your entity from the [Integration pane](/refguide/integration-pane/]. By default it shows only results published to the production environment. If you also want to see results from other environments, click the filter icon and check the **Show development environment** checkbox. +1. In the [Integration Pane](/refguide/integration-pane/), enter a search term in the search field. +2. Select your entity from the [Integration Pane](/refguide/integration-pane/). By default it shows only results published to the production environment. If you also want to see results from other environments, click the filter icon and check the **Show development environment** checkbox. 3. Drag the entity into the domain model. Now you have an external entity in your domain model. Depending on the capabilities, for example the **CRUD** capabilities, you can generally use external entities to model your app as you would normally do, although there are some limitations. For more information on limitations, see the [External Entities Limitations](/refguide/external-entities/#limitations) section in *External Entities*. diff --git a/content/en/docs/refguide/modeling/domain-model/entities/_index.md b/content/en/docs/refguide/modeling/domain-model/entities/_index.md index 433110b34da..2fda6bd5244 100644 --- a/content/en/docs/refguide/modeling/domain-model/entities/_index.md +++ b/content/en/docs/refguide/modeling/domain-model/entities/_index.md @@ -35,7 +35,7 @@ The entity type defines how the data is handled and there are two types: {{< figure src="/attachments/refguide/modeling/domain-model/entities/type-of-entities.jpg" >}} {{% alert color="info" %}} -You can also use data sources from other applications in your app through the [Integration pane](/refguide/integration-pane/). These data sources are represented in the domain model as *external entities* which are displayed as purple entity containers in the domain model. +You can also use data sources from other applications in your app through the [Integration Pane](/refguide/integration-pane/). These data sources are represented in the domain model as *external entities* which are displayed as purple entity containers in the domain model. For further information see [External Entities](/refguide/external-entities/). {{% /alert %}} diff --git a/content/en/docs/refguide/modeling/domain-model/external-entities.md b/content/en/docs/refguide/modeling/domain-model/external-entities.md index 4d5fc1871eb..0a0d5857b08 100644 --- a/content/en/docs/refguide/modeling/domain-model/external-entities.md +++ b/content/en/docs/refguide/modeling/domain-model/external-entities.md @@ -7,13 +7,13 @@ tags: ["domain model", "entity", "entities", "attribute", "external entities", " --- ## 1 Introduction -External entities can be added to the Domain Model through the [Integration pane](/refguide/integration-pane/). They are displayed as *purple* entity containers in the Domain Model. External entities represent the link to the datasets that are made available through the shared data sources registered in [Mendix Data Hub](/data-hub/). Data sources are collections of entity sets (that are referred to as datasets) are published in OData services. +External entities can be added to the Domain Model through the [Integration Pane](/refguide/integration-pane/). They are displayed as *purple* entity containers in the Domain Model. External entities represent the link to the datasets that are made available through the shared data sources registered in [Mendix Data Hub](/data-hub/). Data sources are collections of entity sets (that are referred to as datasets) are published in OData services. Datasets are maintained and updated in the source application. You can integrate or consume these datasets through external entities in your app development, and any changes to the data in the originating app is automatically updated in the consuming apps. External entities can be used with local entities. However, as the datasets are maintained in the source applications, not all properties can be changed in the consuming app. -To follow how to add external entities from the [Integration pane](/refguide/integration-pane/], see [Adding External Entities](#adding-external-entities). +To follow how to add external entities from the [Integration Pane](/refguide/integration-pane/), see [Adding External Entities](#adding-external-entities). {{% alert color="info" %}} A license is required to use Mendix Data Hub and connect to external data sources through consumed OData services in your apps. @@ -23,7 +23,7 @@ A license is required to use Mendix Data Hub and connect to external data source To add an external entity to your app model, follow these steps: -1. In the the Domain Model of you app model search in the [Integration pane](/refguide/integration-pane/] for the entity or data source that you want to use in your app. +1. In the the Domain Model of you app model search in the [Integration Pane](/refguide/integration-pane/) for the entity or data source that you want to use in your app. {{% alert color="info" %}}In the [Catalog](/catalog/search/), an OData service may be registered multiple times with different version numbers or deployed to different environments, all exposing the entity (dataset) that you may want to use. Search the Catalog first and find the one most relevant to the requirements for your app.{{% /alert %}} @@ -41,12 +41,12 @@ When you drag an entity that is associated with an entity from the same service For further information, see [Consumed OData Service](/refguide/consumed-odata-service/). -The consumed entities of the current app are listed in the **Used in your App** section of the [Integration pane](/refguide/integration-pane/]: +The consumed entities of the current app are listed in the **Used in your App** section of the [Integration Pane](/refguide/integration-pane/): {{< figure src="/attachments/refguide/modeling/domain-model/external-entities/data-hub-app.png" alt=" Virtual Entity and OData Service files" >}} {{% alert color="info" %}} -When a new version of a consumed service becomes available in the Catalog, this will be indicated in the [Integration pane](/refguide/integration-pane/] by an update arrow next to the service name. For more information, see the [Updating or Switching a Consumed OData Service](/refguide/consumed-odata-service/#updating) section in *Consumed OData Service*. +When a new version of a consumed service becomes available in the Catalog, this will be indicated in the [Integration Pane](/refguide/integration-pane/) by an update arrow next to the service name. For more information, see the [Updating or Switching a Consumed OData Service](/refguide/consumed-odata-service/#updating) section in *Consumed OData Service*. {{% /alert %}} You can make local changes to the properties of external entities that only affect how the data is used and presented in the consuming app. All other properties are defined in the source application and cannot be changed. When multiple external entities from the same OData service are used in a module or app, associations between the entities (made in the source app) will automatically be made in the local module. @@ -79,7 +79,7 @@ This tab displays the general properties of the external entity. The values that The [attributes](/refguide/attributes/) that have been exposed in the OData service for the external entity are listed here. All changes that are made to the attributes and the attribute list are applied to the local instance of the entity. As they are consumed, these changes will not affect the metadata of the consumed service that the entity is exposed in or the attributes of the entity in the originating app. -{{% alert color="info" %}}In the [Integration pane](/refguide/integration-pane/#association-attributes) the associations and attributes that are not supported in your Mendix model are shown as non-selectable (gray) and will not be included when you drag them into the domain model or be included in the entity properties. For more information see [Integration pane](/refguide/integration-pane/#association-attributes).{{% /alert %}} +{{% alert color="info" %}}In the [Integration Pane](/refguide/integration-pane/#association-attributes) the associations and attributes that are not supported in your Mendix model are shown as non-selectable (gray) and will not be included when you drag them into the domain model or be included in the entity properties. For more information see [Integration Pane](/refguide/integration-pane/#association-attributes).{{% /alert %}} The following operations can be done on the displayed attribute list: @@ -171,7 +171,7 @@ For details on the types of authentication methods and how to set them up, see t ### 3.2 Consuming External Entities with Authentication -When an external entity is used in an app module through the Integration pane, a [consumed OData service](/refguide/consumed-odata-service/) document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. +When an external entity is used in an app module through the Integration Pane, a [consumed OData service](/refguide/consumed-odata-service/) document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. If the service you are consuming requires authentication, you will need to add authentication credentials. Consumers of an OData service in an external entity can contact the owner of the data source to check the required authentication method and credentials. @@ -183,7 +183,7 @@ Learn more about adding authentication information to a consumed OData service: ## 4 External Entity Limitations {#limitations} -External entities are the endpoints that are defined in the published OData service from the originating app. The consumed OData service document displays the values from the service metadata when the external entity is used through the [Integration pane](/refguide/integration-pane/]. The datasets associated with the entities are maintained in the originating apps. +External entities are the endpoints that are defined in the published OData service from the originating app. The consumed OData service document displays the values from the service metadata when the external entity is used through the [Integration Pane](/refguide/integration-pane/). The datasets associated with the entities are maintained in the originating apps. External entities cannot be committed. Use the [Send External Object activity](/refguide/send-external-object/) to persist changes to external entities. This means the following: diff --git a/content/en/docs/refguide/modeling/integration/odata-services/_index.md b/content/en/docs/refguide/modeling/integration/odata-services/_index.md index 870b003bbfb..1a5ddd6335d 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/_index.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/_index.md @@ -11,7 +11,7 @@ tags: ["odata services"] OData is a set of best practices for building REST APIs that standardizes many aspects of REST APIs. It describes how you should provide filtering, sorting, and pagination on your resources, as well as how you should provide nested data structures. Using OData best practices ensures that your APIs are compatible with tools like Excel and PowerBI out of the box (see [Expose Data to BI Tools Using OData](/howto/integration/exposing-data-to-bi-tools-using-odata/)), and also ensures that API clients can optimize payload size and minimize roundtrips for the best possible usage performance. -Published OData services are registered automatically in the [Catalog](/catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for users deploying to the [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Catalog](/catalog/) and made available in the Studio Pro [Integration pane](/refguide/integration-pane/). +Published OData services are registered automatically in the [Catalog](/catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for users deploying to the [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Catalog](/catalog/) and made available in the Studio Pro [Integration Pane](/refguide/integration-pane/). To publish OData services, see: diff --git a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md index b3996639ad3..625149125db 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/_index.md @@ -8,9 +8,9 @@ tags: ["studio pro"] ## 1 Introduction -Data can be published from an app for use by other apps through [published OData services](/refguide/published-odata-services/). Consumed OData services can be used to integrate external data sources in apps through the [Integration pane](/refguide/integration-pane/). +Data can be published from an app for use by other apps through [published OData services](/refguide/published-odata-services/). Consumed OData services can be used to integrate external data sources in apps through the [Integration Pane](/refguide/integration-pane/). -OData services that are registered in the [Catalog](/catalog/) expose entities that can be dragged and dropped into your domain model through the [Integration pane](/refguide/integration-pane/) as external entities. The OData service document that is added to your app provides the information for retrieving the metadata for the service and exposed entities. +OData services that are registered in the [Catalog](/catalog/) expose entities that can be dragged and dropped into your domain model through the [Integration Pane](/refguide/integration-pane/) as external entities. The OData service document that is added to your app provides the information for retrieving the metadata for the service and exposed entities. For further details on the consumed OData service document and updating consumed OData services in your app, see [Consumed OData Service](/refguide/consumed-odata-service/). @@ -41,9 +41,9 @@ You can create associations between local [persistable entities](/refguide/persi When an external entity is dragged into the domain model, the **Consumed OData** document that is added to the model displays the values of the metadata contract from the service endpoint. -In the [Integration pane](/refguide/integration-pane/], the service and the entity are shown as consumed both in the search results pane and also in the **Used in your App** section. +In the [Integration Pane](/refguide/integration-pane/), the service and the entity are shown as consumed both in the search results pane and also in the **Used in your App** section. -If the metadata contract at the specified service endpoint is different to the contract in the current app model, this is indicated in the [Integration pane](/refguide/integration-pane/] search results and the **Properties** pane for the service with an **Update** icon (a blue arrow). +If the metadata contract at the specified service endpoint is different to the contract in the current app model, this is indicated in the [Integration Pane](/refguide/integration-pane/) search results and the **Properties** pane for the service with an **Update** icon (a blue arrow). This means that the consumed service has to be **Updated** to the new contract. If this is not done, then this will result in errors when data has to be retrieved from the endpoint based on an outdated contract. Changes in consumed OData service contracts is further described in [Updating or Switching a Consumed OData Service](/refguide/consumed-odata-service/#updating). diff --git a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md index 535379c3a02..e2b7e6f3ed4 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/consumed-odata-services/consumed-odata-service.md @@ -9,7 +9,7 @@ aliases: ## 1 Introduction -When an external entity is used in an app module through the [Integration pane](/refguide/integration-pane/), a consumed OData service document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. +When an external entity is used in an app module through the [Integration Pane](/refguide/integration-pane/), a consumed OData service document is added specifying the details of the consumed service. This is the API to the publishing app and the data associated with the entity. ## 2 Consumed OData Service screen @@ -26,7 +26,7 @@ The **Consumed OData Service** document contains the following information: {{% alert color="info" %}} Studio Pro will always show the **Update** option for the **Consumed OData Service** where you can check if an update is available. In the Data Hub search and **App** pane, when a different contract is detected at the service end-point, this will be indicated with an update arrow for the service. For further information on updating and switching services see the [Updating or Switching a Consumed OData service](#updating) section of this document. {{% /alert %}} - {{% alert color="info" %}}In the [Integration pane](/refguide/integration-pane/], consumed services have an **Update** icon (a blue arrow) if they have an update available.{{% /alert %}} + {{% alert color="info" %}}In the [Integration Pane](/refguide/integration-pane/), consumed services have an **Update** icon (a blue arrow) if they have an update available.{{% /alert %}} ### 2.1 Service URL {#service-url} @@ -124,7 +124,7 @@ When downloading the metadata from a URL, the server may request a username and This information is not stored, so if you download the metadata from the same server again, you will have to enter your username and password again. {{% /alert %}} -When you import the metadata, you can add external entities from the consumed OData service in the [Integration pane](/refguide/integration-pane/). +When you import the metadata, you can add external entities from the consumed OData service in the [Integration Pane](/refguide/integration-pane/). ### 3.2 Properties @@ -194,9 +194,9 @@ The **Update** option is available when Studio Pro detects that that the contrac See the [Limitations](/refguide/consumed-odata-services/#consumed-odata-service-limitations) section of *Consumed OData Services* to read about known update limitations. -##### 4.3.1.1 Integration pane +##### 4.3.1.1 Integration Pane -In the [Integration pane](/refguide/integration-pane/], in search results and in the **Used in your App** section an update arrow indicate if there is a different contract at the Catalog endpoint: +In the [Integration Pane](/refguide/integration-pane/), in search results and in the **Used in your App** section an update arrow indicate if there is a different contract at the Catalog endpoint: {{< figure src="/attachments/refguide/modeling/integration/consumed-odata-services/consumed-odata-service/update-available.png" alt="update service app-pane" >}} @@ -220,7 +220,7 @@ In the example given in the [Consuming from Service Endpoints](#consume-service- #### 4.3.3 Switching Consumed Services -A published OData services that is deployed to multiple environments or is published with major service updates (and therefore deployed to a different endpoint) will be shown as separate items in the search results of the [Integration pane](/refguide/integration-pane/]. +A published OData services that is deployed to multiple environments or is published with major service updates (and therefore deployed to a different endpoint) will be shown as separate items in the search results of the [Integration Pane](/refguide/integration-pane/). In the following example, the consumed **Orders** version **1.0.0** deployed to **Test** environment is consumed in the app. However, the same service is deployed to the **Acceptance** environment: @@ -236,11 +236,11 @@ To consume the service deployed to the **Acceptance environment**, follow these {{< figure src="/attachments/refguide/modeling/integration/consumed-odata-services/consumed-odata-service/switch-environment.png" alt="major change environment" >}} -3. The consumed service is be consumed from the new selected environment. The information on the **Consumed OData Service** document will display the changed service details and the [Integration pane](/refguide/integration-pane/] now displays that you are consuming from the selected environment: +3. The consumed service is be consumed from the new selected environment. The information on the **Consumed OData Service** document will display the changed service details and the [Integration Pane](/refguide/integration-pane/) now displays that you are consuming from the selected environment: {{< figure src="/attachments/refguide/modeling/integration/consumed-odata-services/consumed-odata-service/switch-new-environment.png" alt="major change environment dh pane" width="300" >}} ## 5 Read More -* [Integration pane](/refguide/integration-pane/) +* [Integration Pane](/refguide/integration-pane/) * [Consumed OData Services](/refguide/consumed-odata-services/) diff --git a/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md b/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md index b722a392421..c52824f03bd 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/wrap-services-odata.md @@ -34,7 +34,7 @@ OData is a set of best practices for building REST APIs that standardizes many a ### 2.2 Compatibility with Data Hub -Wrapping a service, API, or database in OData ensures compatibility with the [Catalog](/catalog/). Published OData services are registered automatically in the [Catalog](/catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for licensed users on a [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Catalog](/catalog/) and made available in the Studio Pro [Integration pane](/refguide/integration-pane/). +Wrapping a service, API, or database in OData ensures compatibility with the [Catalog](/catalog/). Published OData services are registered automatically in the [Catalog](/catalog/), making them easily usable in other Mendix apps. Discovering and using OData resources in [external entities](/refguide/external-entities/) is made easy for licensed users on a [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), as [published OData Services](/refguide/published-odata-services/) are registered automatically in the [Catalog](/catalog/) and made available in the Studio Pro [Integration Pane](/refguide/integration-pane/). ## 3 Non-Persistable Entities as Published OData Resources {#npe-published-odata} @@ -175,7 +175,7 @@ Set up a connector module that communicates to the Twitter API with OData by fol {{< figure src="/attachments/refguide/modeling/integration/wrap-services-odata/query-followers-microflow.png" alt="Microflow for querying followers." >}} 6. Export the metadata file of the published OData service to be used in the client module. To do so, open the service and go to **Settings**, and click **Export** next to the **Metadata** field. - Since you are working in local development environment and not deploying locally, your published resource will not automatically be available in the Catalog or the Integration pane. See [Register Data Sources without the Mendix Cloud](/catalog/data-sources-without-mendix-cloud/) to understand how to work with external entities and the Catalog for local deployments. + Since you are working in local development environment and not deploying locally, your published resource will not automatically be available in the Catalog or the Integration Pane. See [Register Data Sources without the Mendix Cloud](/catalog/data-sources-without-mendix-cloud/) to understand how to work with external entities and the Catalog for local deployments. #### 7.1.3 Building the Client diff --git a/content/en/docs/refguide/modeling/menus/view-menu/_index.md b/content/en/docs/refguide/modeling/menus/view-menu/_index.md index 573c70bc0fd..65f14a2379d 100644 --- a/content/en/docs/refguide/modeling/menus/view-menu/_index.md +++ b/content/en/docs/refguide/modeling/menus/view-menu/_index.md @@ -71,7 +71,7 @@ The **Console** pane displays the output of the [Mendix Runtime](/refguide/runti ### 3.5 Data Hub {#data-hub} -The [Integration pane](/refguide/integration-pane/) enables you to browse the [Catalog](/catalog/) and use registered data sources that are available for your organization in your app development. You can add [external entities](/refguide/external-entities/) to your app via this pane and see entities and data sources already consumed in your app. +The [Integration Pane](/refguide/integration-pane/) enables you to browse the [Catalog](/catalog/) and use registered data sources that are available for your organization in your app development. You can add [external entities](/refguide/external-entities/) to your app via this pane and see entities and data sources already consumed in your app. ### 3.6 Documentation diff --git a/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md b/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md index 5f534f24d90..78e3fed3f99 100644 --- a/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md +++ b/content/en/docs/refguide/modeling/menus/view-menu/integration-pane.md @@ -1,20 +1,20 @@ --- -title: "Integration pane" +title: "Integration Pane" url: /refguide/integration-pane/ weight: 30 -description: "Describes the Integration pane in Mendix Studio Pro." -tags: ["studio Pro", "data hub", "Integration pane", "data hub catalog"] +description: "Describes the Integration Pane in Mendix Studio Pro." +tags: ["studio Pro", "data hub", "Integration Pane", "data hub catalog"] aliases: - /refguide/data-hub-pane/ --- ## 1 Introduction -Use the Integration pane in Studio Pro to use available data sources from the different applications in an organization into your Mendix apps. New apps can be created using shared datasets that are registered in the [Catalog](/catalog/). In Studio Pro, this is possible using the integrated functionality of Catalog through the [Integration pane](/refguide/integration-pane/]. +Use the Integration Pane in Studio Pro to use available data sources from the different applications in an organization into your Mendix apps. New apps can be created using shared datasets that are registered in the [Catalog](/catalog/). In Studio Pro, this is possible using the integrated functionality of Catalog through the [Integration Pane](/refguide/integration-pane/). -You can search in the Catalog through the [Integration pane](/refguide/integration-pane/] to discover data sources that you can use in your app. Via this pane you can add the entities that are exposed in the registered OData services—called **Data Sources** in Data Hub—into your app's domain model. These entities are called [external entities](/refguide/external-entities/) and are different because they enable the connection to the data associated with the entities in the originating app. +You can search in the Catalog through the [Integration Pane](/refguide/integration-pane/) to discover data sources that you can use in your app. Via this pane you can add the entities that are exposed in the registered OData services—called **Data Sources** in Data Hub—into your app's domain model. These entities are called [external entities](/refguide/external-entities/) and are different because they enable the connection to the data associated with the entities in the originating app. -To display the [Integration pane](/refguide/integration-pane/], click **View** > **Data Hub**. +To display the [Integration Pane](/refguide/integration-pane/), click **View** > **Data Hub**. {{% alert color="info" %}} In the Catalog, registered published services are referred to as *data sources*. Exposed entities will show the **Entity set** name and are called *datasets.* @@ -33,7 +33,7 @@ The following functionality is available in the pane: ### 2.2 Used in Your App Section {#used-in-app} -When you do not enter search text in the [Integration pane](/refguide/integration-pane/], then **Used in your App** section is displayed. This shows the consumed services and the external entities used in the current app. The list of entities, associations, and attributes for the consumed services are shown as for the search results: +When you do not enter search text in the [Integration Pane](/refguide/integration-pane/), then **Used in your App** section is displayed. This shows the consumed services and the external entities used in the current app. The list of entities, associations, and attributes for the consumed services are shown as for the search results: {{< figure src="/attachments/refguide/modeling/menus/view-menu/data-hub-pane/used-in-your-app.png" alt="User in Your App Section" >}} @@ -41,7 +41,7 @@ For more information on how to add entities to your app, see [Adding an External ## 3 Searching Catalog Sources {#search} -As you enter a search term, all the items in the Catalog satisfying the search string are listed in the search results. This includes words in the service, entity and attribute descriptions, which are not displayed in the [Integration pane](/refguide/integration-pane/]. For more information, see the [Selected Asset Details](/catalog/manage/search/#search-details) section in *Search in the Catalog*. +As you enter a search term, all the items in the Catalog satisfying the search string are listed in the search results. This includes words in the service, entity and attribute descriptions, which are not displayed in the [Integration Pane](/refguide/integration-pane/). For more information, see the [Selected Asset Details](/catalog/manage/search/#search-details) section in *Search in the Catalog*. You can drag the entity from the search results into your domain model and it will be added to your app and displayed as an [external entity](/refguide/external-entities/). @@ -65,9 +65,9 @@ By default, the search is performed on assets in the **Production** environment. When the **Show development environments** is checked, all subsequent searches results will also include those in non-production environments. {{% /alert %}} -## 4 Integration pane Information {#viewing} +## 4 Integration Pane Information {#viewing} -The information that is displayed in the [Integration pane](/refguide/integration-pane/] either when you enter a search term or when you open the **Used in your App** section is described in the sections below. +The information that is displayed in the [Integration Pane](/refguide/integration-pane/) either when you enter a search term or when you open the **Used in your App** section is described in the sections below. ### 4.1 Services @@ -134,7 +134,7 @@ Unsupported attributes are grayed out and are not included in your app. #### 4.2.4 CRUD Capabilities -If the entity, association, or attribute supports **C**reate, **R**ead, **U**pdate, or **D**elete capabilities and it is also supported by Studio Pro, then it is displayed in the [Integration pane](/refguide/integration-pane/]. +If the entity, association, or attribute supports **C**reate, **R**ead, **U**pdate, or **D**elete capabilities and it is also supported by Studio Pro, then it is displayed in the [Integration Pane](/refguide/integration-pane/). Entities and associations can have any of the CRUD capabilities, while attributes can only have create and update. For more information on CRUD capabilities, see [Write Data to Another App](/catalog/write-data/). ## 5 Read More From 7b74962702190a6bf776b97c07bf99b1a9fe15a1 Mon Sep 17 00:00:00 2001 From: Konstantina Mameletzi <97295508+mameletzi@users.noreply.github.com> Date: Mon, 26 Jun 2023 13:42:32 +0200 Subject: [PATCH 182/232] Update mendix-profile.md --- .../community-tools/mendix-profile.md | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/content/en/docs/developerportal/community-tools/mendix-profile.md b/content/en/docs/developerportal/community-tools/mendix-profile.md index d70c442ea45..36fd936b740 100644 --- a/content/en/docs/developerportal/community-tools/mendix-profile.md +++ b/content/en/docs/developerportal/community-tools/mendix-profile.md @@ -227,19 +227,34 @@ To make your public profile private again, click **Make Profile Private**. #### 10.1.1 Merge Profiles -If you own two (or more user accounts), the following scenarios are possible: +If you own two (or more user accounts) it is recommended to merge the profiles of these user accounts with each other. It saves you from maintenance of multiple profiles and your community contributions will be stored with the one profile you’re actively using, leading to one stronger profile instead of keeping track of your progress scattered in multiple Mendix profiles in the Platform. The **Merge Profile** process will merge information associated to the to be merged profiles, resulting in a single profile with 2 (or more) user accounts related to it. -* Platform Access with all user accounts. -* Platform access with one or some of the user accounts. -* No platform access with all user accounts. +##### The merge process {#merge-process} -Do you want to transfer information from one Mendix profile to another? +Prerequisites for the profile merge actions: -Considering you have access to the platform with all your accounts, you are able to initiate a merge from any of them. However, the profile of the account you will initiate the merge from, is the one that will be kept and used as the target profile. +* Two (or more) user accounts +* Platform Access with at least one of these user accounts. +* Ability to receive emails for the to-be-merge user profiles. (This can be the login email address or profile email address) -If you only have access to the platform with one user account, then you are able to initiate the merge only from that account. You are able to confirm the merge only when a profile recovery email address has been configured for the profile which is associated to the user account you do not have access to anymore. If this is not the case, then you will need to submit a request to Mendix Support Team. +Before you start with a new profile merge action it is important to understand what scenarios are possible and what it means for the profile merge process. +The following starting scenarios are possible: -Once two profiles are merged, all the accounts will be linked to the same profile, and you will still have access to all your accounts. +* **All user accounts give you access to the Mendix Platform** - Considering you have access to the platform with all your user accounts, you are able to initiate a merge having signed in with any of them. For the other profile a confirmation email message is sent to allow for the merge action to start (for details on what information will end up in the merge result profile, see the [Result of merge process](https://docs.mendix.com/developerportal/community-tools/mendix-profile/#merge-profile-result) section below) +* **One of the user accounts gives you access to the Mendix Platform** - Considering you have access to only one of the user accounts, the profile merge process can only be initiated from that account. Furthermore, it means the user account you signed in with will determine what profile information will end up in the merge result profile for the properties where the system can’t determine which information should be kept (for details on on what information will end up in the merge result profile, see the [Result of merge process](https://docs.mendix.com/developerportal/community-tools/mendix-profile/#merge-profile-result) section below) +For the other profile a confirmation email message is sent to allow for the merge action to start. +* **None of the user accounts gives you access to the Mendix Platform** - You should own at least one user account that gives access to the Mendix Platform. + +##### Result of the merge process {#merge-profile-result} +The result of the profile merge process is the profile information of the merged profiles resulting into one profile. Information that can be added to the profile will all be associated with the resulting profile. However, in the situation where there is conflicting data for the two to-be-merged profiles, the system will use the profile data of the user account the user is signed in with. The following data can conflict, but can be easily updated after the merge process: + +* Full name +* Avatar image +* Job title +* Country of residence +* About you +* Twitter URL +* LinkedIn URL From this page, click **Merge Profile**. After entering the email address of one of the accounts linked to the profile you want to transfer information from in the dialog box, click Next and you will be asked to choose an email address to receive a verification code. You should choose an email address you have access to. This step is needed to verify you are the owner of the Mendix profile you are trying to merge. From e7740588be12433559177add2890b2656f1a33a3 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 26 Jun 2023 13:43:04 +0200 Subject: [PATCH 183/232] Update metamodel-10.0.md --- .../metamodel/metamodel-10/metamodel-10.0.md | 53 +++---------------- 1 file changed, 6 insertions(+), 47 deletions(-) diff --git a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md index a1ff87539e5..94428d45341 100644 --- a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md +++ b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md @@ -88,28 +88,9 @@ weight: 100 * We introduced the `urlSegments` property. +#### UrlSegment, ParameterAttributeUrlSegment, ParameterIdUrlSegment, StaticUrlSegment (Elements) - - - - - - -#### UrlSegment (Element) - -* We introduced this element. - -#### ParameterAttributeUrlSegment (Element) - -* We introduced this element. - -#### ParameterIdUrlSegment (Element) - -* We introduced this element. - -#### StaticUrlSegment (Element) - -* We introduced this element. +* We introduced these elements. #### EntityPathSource (Element) @@ -117,39 +98,17 @@ weight: 100 #### RetrievalQueryParameter (Element) +* We introduced the `types` property. * We deleted the `type` property. -* We introduced the `types` property. ### Reports #### ReportParameter (Element) -* We deleted the `parameterTypeRuntime` property. -* We deleted the `reportId` property. +* We deleted the `parameterTypeRuntime` and `reportId` properties. ### Workflows -#### WaitForNotificationActivity (Element) - -* We introduced this element. - -#### MajorityCompletionCriteria (Element) - -* We introduced this element. - -#### ThresholdCompletionCriteria (Element) - -* We introduced this element. - -#### WorkflowDefinitionSelection (Element) - -* We introduced this element. - -#### WorkflowDefinitionNameSelection (Element) - -* We introduced this element. - -#### WorkflowDefinitionObjectSelection (Element) -* We introduced this element. +#### WaitForNotificationActivity, MajorityCompletionCriteria, ThresholdCompletionCriteria, WorkflowDefinitionSelection, WorkflowDefinitionNameSelection, WorkflowDefinitionObjectSelection (Elements) -This page has been generated automatically. +* We introduced these elements. From 13afc8e7e6241915fb296dd366337e403c4b828e Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 26 Jun 2023 13:48:03 +0200 Subject: [PATCH 184/232] Update latest-releases.html --- layouts/partials/landingpage/latest-releases.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/layouts/partials/landingpage/latest-releases.html b/layouts/partials/landingpage/latest-releases.html index a0a705fd5eb..fb84892e3e9 100644 --- a/layouts/partials/landingpage/latest-releases.html +++ b/layouts/partials/landingpage/latest-releases.html @@ -21,10 +21,10 @@

May 25th, 2023

- -

May 25th, 2023

+ +

Jun 19th, 2023

- -

May 25th, 2023

+ +

Jun 19th, 2023

From e9a77d562d49073c5ada12e9fd2189669ffdcefc Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 26 Jun 2023 13:48:35 +0200 Subject: [PATCH 185/232] Update metamodel-10.0.md --- .../releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md index 94428d45341..275615ec372 100644 --- a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md +++ b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.0.md @@ -4,7 +4,9 @@ url: /releasenotes/sdk/metamodel-10.0/ weight: 100 --- -## 10.0.0 +## 10.0.0 GA + +**Release date: June 19th, 2023** ### Microflows From 374ecf3933f37f8f953d0f5db651a3627d97b1e4 Mon Sep 17 00:00:00 2001 From: Adam Dupaski Date: Mon, 26 Jun 2023 14:01:46 +0200 Subject: [PATCH 186/232] Update model-sdk-4.md --- content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md b/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md index 80129b8aac2..548badba6c0 100644 --- a/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md +++ b/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md @@ -9,7 +9,7 @@ weight: 97 **Release date: June 19th, 2023** -* We added support for Mendix [10.0.0 GA](/releasenotes/studio-pro/10.0). +* We added support for Mendix [10.0.0 GA](/releasenotes/studio-pro/10.0/). * We added support for Mendix Metamodel [10.0.0 GA](/releasenotes/sdk/metamodel-10.0/). ## 4.75.0 {#475} From c4b64b740afe524aee261fe440d2fdd355805e71 Mon Sep 17 00:00:00 2001 From: dennisreep Date: Mon, 26 Jun 2023 14:07:15 +0200 Subject: [PATCH 187/232] Separate was misspelled as Seperate. listview-seperated is still misspelled. --- content/en/docs/howto/front-end/styles.md | 2 +- content/en/docs/howto7/front-end/styles.md | 2 +- content/en/docs/howto8/front-end/styles.md | 2 +- content/en/docs/howto9/front-end/styles.md | 2 +- .../modeling/pages/data-widgets/data-sources/xpath-source.md | 2 +- .../moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/content/en/docs/howto/front-end/styles.md b/content/en/docs/howto/front-end/styles.md index abdb8b9a216..dedf6768736 100644 --- a/content/en/docs/howto/front-end/styles.md +++ b/content/en/docs/howto/front-end/styles.md @@ -130,7 +130,7 @@ Change the way items appear in a list: * `listview-lined`: list view widget with only a bordered bottom in a list view item * `listview-striped`: list view widget with striped listview items -* `listview-seperated`: list view widget with list view items seperated +* `listview-seperated`: list view widget with list view items separated * `listview-stylingless`: list view widget without spacing and background ## 8 Alerts diff --git a/content/en/docs/howto7/front-end/styles.md b/content/en/docs/howto7/front-end/styles.md index 05f9c0368b9..055f1687422 100644 --- a/content/en/docs/howto7/front-end/styles.md +++ b/content/en/docs/howto7/front-end/styles.md @@ -130,7 +130,7 @@ Change the way items appear in a list: * `listview-lined`: list view widget with only a bordered bottom in a list view item * `listview-striped`: list view widget with striped listview items -* `listview-seperated`: list view widget with list view items seperated +* `listview-seperated`: list view widget with list view items separated * `listview-stylingless`: list view widget without spacing and background ## 8 Alerts diff --git a/content/en/docs/howto8/front-end/styles.md b/content/en/docs/howto8/front-end/styles.md index 463722cd629..093c610c7ba 100644 --- a/content/en/docs/howto8/front-end/styles.md +++ b/content/en/docs/howto8/front-end/styles.md @@ -130,7 +130,7 @@ Change the way items appear in a list: * `listview-lined`: list view widget with only a bordered bottom in a list view item * `listview-striped`: list view widget with striped listview items -* `listview-seperated`: list view widget with list view items seperated +* `listview-seperated`: list view widget with list view items separated * `listview-stylingless`: list view widget without spacing and background ## 8 Alerts diff --git a/content/en/docs/howto9/front-end/styles.md b/content/en/docs/howto9/front-end/styles.md index ced5213462f..f4996c506b8 100644 --- a/content/en/docs/howto9/front-end/styles.md +++ b/content/en/docs/howto9/front-end/styles.md @@ -130,7 +130,7 @@ Change the way items appear in a list: * `listview-lined`: list view widget with only a bordered bottom in a list view item * `listview-striped`: list view widget with striped listview items -* `listview-seperated`: list view widget with list view items seperated +* `listview-seperated`: list view widget with list view items separated * `listview-stylingless`: list view widget without spacing and background ## 8 Alerts diff --git a/content/en/docs/refguide/modeling/pages/data-widgets/data-sources/xpath-source.md b/content/en/docs/refguide/modeling/pages/data-widgets/data-sources/xpath-source.md index dd6aaead153..7c3046bfcf3 100644 --- a/content/en/docs/refguide/modeling/pages/data-widgets/data-sources/xpath-source.md +++ b/content/en/docs/refguide/modeling/pages/data-widgets/data-sources/xpath-source.md @@ -75,7 +75,7 @@ The feature to use objects and attributes can be used for [List view](/refguide/ #### 2.4.1 Known Errors -Currently, Studio Pro does not support database retreivals using XPath constraints that walk through both regular databases and [external entities](/refguide/external-entities/). This results in the `Mixed source retrieval is currently not supported` error. If you experience this error, use Data Grid 2 instead of Data Grid, then disable sorting and remove the option to search on external entity attributes. +Currently, Studio Pro does not support database retrievals using XPath constraints that walk through both regular databases and [external entities](/refguide/external-entities/). This results in the `Mixed source retrieval is currently not supported` error. If you experience this error, use Data Grid 2 instead of Data Grid, then disable sorting and remove the option to search on external entity attributes. ## 3 Read More diff --git a/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md b/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md index 21c3a22c504..48c10f4f40b 100644 --- a/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md +++ b/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/_index.md @@ -45,7 +45,7 @@ To upgrade your theme directory to Atlas 3 specifications, please complete the f ### 2.2 Migrating UI Content {#upgrade-ui-content} -**Atlas 3** distributes the UI content previously found in the Atlas_UI_Resources, in 3 seperate modules: **Atlas Core**, **Atlas Web Content** and **Atlas Native Content**. +**Atlas 3** distributes the UI content previously found in the Atlas_UI_Resources, in 3 separate modules: **Atlas Core**, **Atlas Web Content** and **Atlas Native Content**. * [Atlas Core](https://marketplace.mendix.com/link/component/117187) - Contains Atlas core styling and layouts * [Atlas Web Content](https://marketplace.mendix.com/link/component/117183) - Contains Atlas's web page templates and building blocks From 17ecb8cca0b2de72e9b480bd47394101efe02e82 Mon Sep 17 00:00:00 2001 From: dennisreep Date: Mon, 26 Jun 2023 14:21:59 +0200 Subject: [PATCH 188/232] Occurrence was misspelled as Occurence --- .../rg-one-find/rg-one-find-element-by-css.md | 6 +++--- .../rg-one-find/rg-one-find-element-by-id.md | 6 +++--- .../rg-one-find/rg-one-find-element-by-sizzle.md | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-css.md b/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-css.md index c7dc8966014..db6a91e3ec3 100644 --- a/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-css.md +++ b/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-css.md @@ -5,11 +5,11 @@ url: /appstore/partner-solutions/ats/rg-one-find-element-by-css/ ## 1 Description -Find a web element by CSS. Occurence lets you specify which element to fetch from the result-list, starting at 1 for the first element (defaults to the first element). +Find a web element by CSS. Occurrence lets you specify which element to fetch from the result-list, starting at 1 for the first element (defaults to the first element). ## 2 Usage -Provide the CSS selector which matches the elements you want to find. This action will find all matching elements from the DOM and save them as a result-list. If you want, to get another element instead of the first element of the result-list, provide an index as input for the Occurence. +Provide the CSS selector which matches the elements you want to find. This action will find all matching elements from the DOM and save them as a result-list. If you want, to get another element instead of the first element of the result-list, provide an index as input for the Occurrence. Optionally restrict the search to a specified SearchContext element. ## 3 Input Parameters @@ -18,7 +18,7 @@ Name | Datatype | Required | Description ---- | -------- | ------- |--------------- CSS Selector | String | yes | CSS selector which matches the elements you want to find Search Context | WebElement | no | Limit the search to the given WebElement -Occurence | Integer | no | Index of the result-list value you want to get (defaults to the first element) +Occurrence | Integer | no | Index of the result-list value you want to get (defaults to the first element) ## 4 Return Value diff --git a/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-id.md b/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-id.md index d835b19c9fc..de57d852ada 100644 --- a/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-id.md +++ b/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-id.md @@ -5,11 +5,11 @@ url: /appstore/partner-solutions/ats/rg-one-find-element-by-id/ ## 1 Description -Find a web element by ID. Occurence lets you specify which element to fetch from the result-list, starting at 1 for the first element (defaults to the first element). +Find a web element by ID. Occurrence lets you specify which element to fetch from the result-list, starting at 1 for the first element (defaults to the first element). ## 2 Usage -Provide the ID of the element you want to find. This action will find all elements from the DOM with that ID and save them as a result-list. If you want, to get another element instead of the first element of the result-list, provide an index as input for the Occurence. +Provide the ID of the element you want to find. This action will find all elements from the DOM with that ID and save them as a result-list. If you want, to get another element instead of the first element of the result-list, provide an index as input for the Occurrence. Optionally restrict the search to a specified SearchContext element. ## 3 Input Parameters @@ -18,7 +18,7 @@ Name | Datatype | Required | Description ---- | -------- | ------- |--------------- ID| String | yes | The ID of the element you want to get Search Context | WebElement | no | Limit the search to the given WebElement -Occurence | Integer | no | Index of the result-list value you want to get (defaults to the first element) +Occurrence | Integer | no | Index of the result-list value you want to get (defaults to the first element) ## 4 Return Value diff --git a/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-sizzle.md b/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-sizzle.md index ab74cbd0209..8db3b57629f 100644 --- a/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-sizzle.md +++ b/content/en/docs/appstore/partner-solutions/ats/rg-ats/v1/test-dev/std-actions/selenium-actions/rg-one-find/rg-one-find-element-by-sizzle.md @@ -5,11 +5,11 @@ url: /appstore/partner-solutions/ats/rg-one-find-element-by-sizzle/ ## 1 Description -Find a web element by Sizzle. Occurence lets you specify which element to fetch from the result-list, starting at 1 for the first element (defaults to the first element). +Find a web element by Sizzle. Occurrence lets you specify which element to fetch from the result-list, starting at 1 for the first element (defaults to the first element). ## 2 Usage -Provide the Sizzle selector which matches the elements you want to find. This action will find all matching elements from the DOM and save them as a result-list. If you want, to get another element instead of the first element of the result-list, provide an index as input for the Occurence. +Provide the Sizzle selector which matches the elements you want to find. This action will find all matching elements from the DOM and save them as a result-list. If you want, to get another element instead of the first element of the result-list, provide an index as input for the Occurrence. Optionally restrict the search to a specified SearchContext element. ## 3 Input Parameters @@ -18,7 +18,7 @@ Name | Datatype | Required | Description ---- | -------- | ------- |--------------- Sizzle Selector | String | yes | Sizzle selector which matches the elements you want to find Search Context | WebElement | no | Limit the search to the given WebElement -Occurence | Integer | no | Index of the result-list value you want to get (defaults to the first element) +Occurrence | Integer | no | Index of the result-list value you want to get (defaults to the first element) ## 4 Return Value From 57bea5eb1f18d9aa0c1ba0aeb0dd28c61ba83746 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Mon, 26 Jun 2023 14:24:12 +0200 Subject: [PATCH 189/232] Update --- layouts/partials/landingpage/product-cards.html | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/layouts/partials/landingpage/product-cards.html b/layouts/partials/landingpage/product-cards.html index ba9a06ad2b8..2102be29422 100644 --- a/layouts/partials/landingpage/product-cards.html +++ b/layouts/partials/landingpage/product-cards.html @@ -3,7 +3,7 @@

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 b{3)g?xnuXpee5t~f**^?h-N?3e*3=xv}j;@ literal 73952 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 Ofjv@wnE&AE%l`uj4sM_T From 256e725d08391d3a66665678cb1517f18cfb9239 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 13:14:21 +0200 Subject: [PATCH 112/232] Update --- .../releasenotes/feature-release-calendar/_index.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 2bbe7837fe3..bf70851851e 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -9,8 +9,6 @@ weight: 60 ## 1 Introduction -[**ADD ALT TEXT**] - At the Mendix 10 launch event on June 27th, 2023, there were a number of announcements for features that Mendix is releasing. This document contains the calendar of expected release dates for these features. The new features were divided into these major themes, which are described in the sections below: @@ -25,10 +23,10 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Portfolio Management | Released for GA [Jun 22, 2023](**ADD RN LINK**) | -| Jira Integration | Released for Public Beta [Jun 22, 2023](**ADD RN LINK**)
GA: Q4 2023 | +| Portfolio Management | Released for GA [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023) | +| Jira Integration | Released for Public Beta [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023)
GA: Q4 2023 | | App Insights | GA: Q3 2023 | -| Community Spaces | Released for Public Beta [Jun __, 2023](**VERIFY, ADD RN LINK**)
GA: Q3 2023 | +| Community Spaces | Released for Public Beta [Jun __, 2023](**ADD RN LINK**)
GA: Q3 2023 [**VERIFY, WHAT IS THIS?**] | ## 3 Developer Experience @@ -83,4 +81,4 @@ The new features were divided into these major themes, which are described in th | Landscape Overview | Public Beta: Q3 2023
GA: TBD | | Dependency Governance | Public Beta: Q4 2023
GA: TBD | | Cloud Self-Service | Currently in Private Beta
GA: TBD | -| BYO IDP | Released for GA [Jun __, 2023](**ADD RN LINK**) | \ No newline at end of file +| BYO IDP | Released for GA [Jun __, 2023](**ADD RN LINK**) [**LINK**] | \ No newline at end of file From 1932152ece4b0acce6cdf959eed4575adab4ac00 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 13:26:52 +0200 Subject: [PATCH 113/232] Update --- .../releasenotes/feature-release-calendar/_index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index bf70851851e..0aa89eb8027 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -34,18 +34,18 @@ The new features were divided into these major themes, which are described in th | --- | --- | | Mac support | Public Beta: Q4 2023
GA: TBD | | Studio Pro redesign | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Improved properties | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Git version control (without SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Improved Properties pane | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Git version control (without SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | | Insights into commits by peers| GA: Q3 2023 | | Start from spreadsheet | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Rich design properties | GA: Q3 2023 | -| PDF generator | Released for Public Beta [Jun 27, 2023](/releasenotes/studio-pro/10.0/)
GA: Q3 2023 [**VERIFY FOR RN**] | +| PDF Document Generation module | Released for Public Beta [May 31, 2023](/appstore/modules/document-generation/)
GA: Q3 2023 | | Visual data filters | GA: Q3 2023 | | Custom icons support | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Flexible page urls | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Mendix Chat | GA: Q4 2023 | -| Validation Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Best Practices Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Validation Assist | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | +| MxAssist Best Practice Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Workflow enhancements (Multi User Task, Wait for Notification) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Mixed online and offline data | GA: Q4 2023 | From fe84c7bc7779f092fc0bdbc83eefa838b981b0b7 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 14:53:57 +0200 Subject: [PATCH 114/232] Update --- .../feature-release-calendar/_index.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 0aa89eb8027..d2ae8b3d4d4 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -42,11 +42,10 @@ The new features were divided into these major themes, which are described in th | PDF Document Generation module | Released for Public Beta [May 31, 2023](/appstore/modules/document-generation/)
GA: Q3 2023 | | Visual data filters | GA: Q3 2023 | | Custom icons support | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Flexible page urls | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Flexible page URLs | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Mendix Chat | GA: Q4 2023 | -| Validation Assist | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | | MxAssist Best Practice Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Workflow enhancements (Multi User Task, Wait for Notification) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Workflow enhancements (multi-user tasks, Wait for notification activity) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Mixed online and offline data | GA: Q4 2023 | ## 4 Composability @@ -55,13 +54,13 @@ The new features were divided into these major themes, which are described in th | --- | --- | | Mendix Connect - Database Connector | GA: Q3 2023 | | Mendix Connect - REST Connector | GA: TBD | -| Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | +| Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | | Mendix Connect - External Actions | GA: TBD | -| Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | -| Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | +| Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | +| Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | | Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | -| Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | -| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR RN**] | +| Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | +| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | | Solutions Kit - Adaptation Insights | Private Beta: Q4 2023
GA: TBD | ## 5 Multi-Cloud Deployment From 0144b5193530de822c47c26e7cd93fb2cca3dd35 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 15:04:17 +0200 Subject: [PATCH 115/232] Order by date and release type --- .../feature-release-calendar/_index.md | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index d2ae8b3d4d4..ac992fa02ec 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -25,59 +25,60 @@ The new features were divided into these major themes, which are described in th | --- | --- | | Portfolio Management | Released for GA [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023) | | Jira Integration | Released for Public Beta [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023)
GA: Q4 2023 | -| App Insights | GA: Q3 2023 | | Community Spaces | Released for Public Beta [Jun __, 2023](**ADD RN LINK**)
GA: Q3 2023 [**VERIFY, WHAT IS THIS?**] | +| App Insights | GA: Q3 2023 | ## 3 Developer Experience | Capability or Feature | Expected Release | | --- | --- | -| Mac support | Public Beta: Q4 2023
GA: TBD | | Studio Pro redesign | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Improved Properties pane | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Git version control (without SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | -| Insights into commits by peers| GA: Q3 2023 | | Start from spreadsheet | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Rich design properties | GA: Q3 2023 | -| PDF Document Generation module | Released for Public Beta [May 31, 2023](/appstore/modules/document-generation/)
GA: Q3 2023 | -| Visual data filters | GA: Q3 2023 | | Custom icons support | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Flexible page URLs | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Mendix Chat | GA: Q4 2023 | | MxAssist Best Practice Bot | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Workflow enhancements (multi-user tasks, Wait for notification activity) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| PDF Document Generation module | Released for Public Beta [May 31, 2023](/appstore/modules/document-generation/)
GA: Q3 2023 | +| Insights into commits by peers| GA: Q3 2023 | +| Rich design properties | GA: Q3 2023 | +| Visual data filters | GA: Q3 2023 | +| Mendix Chat | GA: Q4 2023 | | Mixed online and offline data | GA: Q4 2023 | +| Mac support | Public Beta: Q4 2023
GA: TBD | ## 4 Composability | Capability or Feature | Expected Release | | --- | --- | -| Mendix Connect - Database Connector | GA: Q3 2023 | -| Mendix Connect - REST Connector | GA: TBD | | Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | -| Mendix Connect - External Actions | GA: TBD | | Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | -| Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | | Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | -| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | +| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**D**] | +| Mendix Connect - Database Connector | GA: Q3 2023 | +| Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | | Solutions Kit - Adaptation Insights | Private Beta: Q4 2023
GA: TBD | +| Mendix Connect - External Actions | GA: TBD | +| Mendix Connect - REST Connector | GA: TBD | ## 5 Multi-Cloud Deployment | Capability or Feature | Expected Release | | --- | --- | -| Multi-Region Fail-over | GA: Q3 2023 | -| WebHooks | Released for GA [Jun 15, 2023](/releasenotes/developer-portal/mendix-cloud/#june-15th-2023) | -| Pipelines | Public Beta: Q4 2023
GA: TBD | | Mendix on AWS EKS | Released for GA [Feb 8, 2023](/releasenotes/developer-portal/mendix-for-private-cloud/#february-8th-2023) | +| WebHooks | Released for GA [Jun 15, 2023](/releasenotes/developer-portal/mendix-cloud/#june-15th-2023) | +| Multi-Region Fail-over | GA: Q3 2023 | | Private Mendix Platform | Currently in Private Beta
GA: Q4 2023 | +| Pipelines | Public Beta: Q4 2023
GA: TBD | ## 6 Governance and Control | Capability or Feature | Expected Release | | --- | --- | +| BYO IDP | Released for GA [Jun __, 2023](**ADD RN LINK**) [**VERIFY FOR DATE AND RN**] | +| Cloud Self-Service | Currently in Private Beta
GA: TBD | | Landscape Overview | Public Beta: Q3 2023
GA: TBD | | Dependency Governance | Public Beta: Q4 2023
GA: TBD | -| Cloud Self-Service | Currently in Private Beta
GA: TBD | -| BYO IDP | Released for GA [Jun __, 2023](**ADD RN LINK**) [**LINK**] | \ No newline at end of file + From 21c4bd3bc19f147bcff9d01d1d4980fb22556359 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 15:09:53 +0200 Subject: [PATCH 116/232] Update --- content/en/docs/releasenotes/feature-release-calendar/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index ac992fa02ec..ef7b6ac1555 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -58,10 +58,10 @@ The new features were divided into these major themes, which are described in th | Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | | Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**D**] | | Mendix Connect - Database Connector | GA: Q3 2023 | +| Mendix Connect - REST Connector | GA: Q4 2023 | | Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | | Solutions Kit - Adaptation Insights | Private Beta: Q4 2023
GA: TBD | | Mendix Connect - External Actions | GA: TBD | -| Mendix Connect - REST Connector | GA: TBD | ## 5 Multi-Cloud Deployment From f2b16684bc247bc90660a3ab761c70a517ec907e Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 15:34:59 +0200 Subject: [PATCH 117/232] Update --- .../releasenotes/feature-release-calendar/_index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index ef7b6ac1555..806832fa919 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -52,11 +52,11 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | -| Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | -| Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | +| Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REMOVE**] | +| Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REMOVE**] | +| Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**WILL GO GA - NEED TO ADD NOTE**] | | Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | -| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**D**] | +| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | | Mendix Connect - Database Connector | GA: Q3 2023 | | Mendix Connect - REST Connector | GA: Q4 2023 | | Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | @@ -77,7 +77,7 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| BYO IDP | Released for GA [Jun __, 2023](**ADD RN LINK**) [**VERIFY FOR DATE AND RN**] | +| BYO IDP | Released for GA [Jun __, 2023](ADD RN LINK) [**VERIFY FOR DATE AND RN**] | | Cloud Self-Service | Currently in Private Beta
GA: TBD | | Landscape Overview | Public Beta: Q3 2023
GA: TBD | | Dependency Governance | Public Beta: Q4 2023
GA: TBD | From 41f721928cc7e757e4aa1ce2c50aafef9922969b Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 15:48:27 +0200 Subject: [PATCH 118/232] Update --- .../docs/releasenotes/feature-release-calendar/_index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 806832fa919..69914c0c829 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -52,11 +52,11 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REMOVE**] | -| Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REMOVE**] | +| Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | +| Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**WILL GO GA - NEED TO ADD NOTE**] | -| Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | -| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | +| Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | +| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | | Mendix Connect - Database Connector | GA: Q3 2023 | | Mendix Connect - REST Connector | GA: Q4 2023 | | Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | From 7f570572eb2d496e8acd1a934d943049327ac2e1 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 16:20:57 +0200 Subject: [PATCH 119/232] Update --- .../en/docs/releasenotes/feature-release-calendar/_index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 69914c0c829..96901c8b80a 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -55,12 +55,12 @@ The new features were divided into these major themes, which are described in th | Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | | Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**WILL GO GA - NEED TO ADD NOTE**] | -| Solutions Kit - Protected Modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | -| Solutions Kit - Solution Lifecycle Management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | +| Solutions kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY RELEASE NOTE ADDED**] | +| Solutions kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY RELEASE NOTE ADDED**] | | Mendix Connect - Database Connector | GA: Q3 2023 | | Mendix Connect - REST Connector | GA: Q4 2023 | | Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | -| Solutions Kit - Adaptation Insights | Private Beta: Q4 2023
GA: TBD | +| Solutions kit - Adaptation Insights | Private Beta: Q4 2023
GA: TBD | | Mendix Connect - External Actions | GA: TBD | ## 5 Multi-Cloud Deployment From 498fcf347aba0457ea401a09c8a66a0d9c5a2e74 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 16:44:10 +0200 Subject: [PATCH 120/232] Update --- .../releasenotes/feature-release-calendar/_index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 96901c8b80a..165ff54d40d 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -25,7 +25,7 @@ The new features were divided into these major themes, which are described in th | --- | --- | | Portfolio Management | Released for GA [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023) | | Jira Integration | Released for Public Beta [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023)
GA: Q4 2023 | -| Community Spaces | Released for Public Beta [Jun __, 2023](**ADD RN LINK**)
GA: Q3 2023 [**VERIFY, WHAT IS THIS?**] | +| Community Spaces | Released for Public Beta [Jun __, 2023](**ADD RN LINK**)
GA: Q3 2023 [**VERIFY FOR DATE AND RN; WHAT IS THIS?**] | | App Insights | GA: Q3 2023 | ## 3 Developer Experience @@ -54,9 +54,9 @@ The new features were divided into these major themes, which are described in th | --- | --- | | Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | | Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | -| Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**WILL GO GA - NEED TO ADD NOTE**] | -| Solutions kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY RELEASE NOTE ADDED**] | -| Solutions kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY RELEASE NOTE ADDED**] | +| Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Solutions kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | +| Solutions kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Mendix Connect - Database Connector | GA: Q3 2023 | | Mendix Connect - REST Connector | GA: Q4 2023 | | Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | @@ -77,7 +77,7 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| BYO IDP | Released for GA [Jun __, 2023](ADD RN LINK) [**VERIFY FOR DATE AND RN**] | +| BYO IDP | Released for GA [May 16, 2023](/releasenotes/developer-portal/#byoidp) [**VERIFY RN LINK**] | | Cloud Self-Service | Currently in Private Beta
GA: TBD | | Landscape Overview | Public Beta: Q3 2023
GA: TBD | | Dependency Governance | Public Beta: Q4 2023
GA: TBD | From 1fe36a27a666c0b515303e1d0d6dac1561f95912 Mon Sep 17 00:00:00 2001 From: katarzyna-koltun-mx <108737161+katarzyna-koltun-mx@users.noreply.github.com> Date: Thu, 22 Jun 2023 16:46:10 +0200 Subject: [PATCH 121/232] Update aws-s3-connector.md --- content/en/docs/appstore/connectors/aws/aws-s3-connector.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/content/en/docs/appstore/connectors/aws/aws-s3-connector.md b/content/en/docs/appstore/connectors/aws/aws-s3-connector.md index 94657d37cd2..84545972972 100644 --- a/content/en/docs/appstore/connectors/aws/aws-s3-connector.md +++ b/content/en/docs/appstore/connectors/aws/aws-s3-connector.md @@ -29,9 +29,11 @@ The Amazon S3 connector requires the [AWS Authentication connector version 2.1 o This connector is available as a free download from the Mendix Marketplace, but the AWS service to which is connects may incur a usage cost. For more information, refer to AWS documentation. -Depending on your use case, your deployment environment, and the type of app that you want to build, you may also need a license for your Mendix app. For more information, refer to [Licensing Apps](/developerportal/deploy/licensing-apps-outside-mxcloud/). +{{% alert color="info" %}} +Most AWS services provide a free tier that allows easy access to most services. To find out if this service is included in the free tier, see [AWS Free Tier](https://aws.amazon.com/free/). To calculate the potential cost of using an AWS service outside of the free tier, use the [AWS Cost calculator](https://calculator.aws/). +{{% /alert %}} -Using AWS services +Depending on your use case, your deployment environment, and the type of app that you want to build, you may also need a license for your Mendix app. For more information, refer to [Licensing Apps](/developerportal/deploy/licensing-apps-outside-mxcloud/). ## 2 Installation From 729a5244aafa48981c0171f65c219ed8606cd5b6 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 17:11:52 +0200 Subject: [PATCH 122/232] Review RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 83f2e02feb1..083dd75c57a 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -179,7 +179,7 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 * We mitigated [CVE-2022-34716](https://www.cve.org/CVERecord?id=CVE-2022-34716) by updating third-party dependencies. This CVE does not pose any apparent risk for Mendix customers. * We mitigated [CVE-2023-29017](https://www.cve.org/CVERecord?id=CVE-2023-29017), [CVE-2023-30547](https://www.cve.org/CVERecord?id=CVE-2023-30547), and [CVE-2023-32314](https://www.cve.org/CVERecord?id=CVE-2023-32314) by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. * We fixed an issue where a pluggable widget with a [widgets](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#widgets) property linked to a data source and an [image](/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#image) property configured as a dynamic image was rendering incorrect data. (Ticket 117735) -* The `weekday-from-dateTime` XPath function and the `DATEPART(WEEKDAY, ...)` OQL function now return the documented values of (1 = Sunday, 7 = Saturday) for all supported databases. (Ticket 130641) +* The `weekday-from-dateTime` XPath function and the `DATEPART(WEEKDAY, ...)` OQL function now return the documented values of `(1 = Sunday, 7 = Saturday)` for all supported databases. (Ticket 130641) * We fixed an issue where the debugger caused an error and disconnected after 30 seconds of inactivity. (Tickets 151937, 169696, 175161, 175542, 178553, 180332) * We fixed an issue where it was possible to add a path after a non-object variable, which led to issues in a running app. (Tickets 171893, 172495) * We fixed a memory leak that occurred when opening pages. This caused issues after opening thousands of pages. (Ticket 172126) @@ -188,7 +188,7 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 * We adjusted consumed OData services to use query options in the request body when the given service is configured to do so and pagination with `@nextLink` takes place. (Ticket 176976) * We fixed an issue in the domain model editor where an element outside the boundaries of the current view was not scrolled to when there was navigation via [Go to options](/refguide/go-to-option/). (Ticket 178829) * We fixed an issue where an object validation was removed incorrectly. (Ticket 180011) -* We fixed an issue where the language-sensitive parts on pages were not fully updated when you changed the language via the [Language Selector](/appstore/widgets/language-selector/) widget. (Tickets 180130, 180670, 180824, 181274, 181713, 181974) +* We fixed an issue where the language-sensitive parts of pages were not fully updated when you changed the language via the [Language Selector](/appstore/widgets/language-selector/) widget. (Tickets 180130, 180670, 180824, 181274, 181713, 181974) * We fixed an issue that occurred when opening multiple modal pop-up windows at the same time and it was not possible to focus widgets in the pop-up widget that was on top. (Ticket 180137) * We fixed an issue where a domain-level validation message could not be translated. You can now use the `mendix.lib.Validations.field_issue` system text to translate and change this message. (Tickets 180448, 181175) * We fixed an issue where objects were garbage-collected for pages with multiple page parameters. (Ticket 180470) @@ -209,12 +209,14 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 * We fixed the colors of the term `empty` and the symbol `-` in the XPath constraint editor. (Ticket 183998). * We fixed an issue where no error message was shown when an update of a Mendix Marketplace module failed. (Ticket 183507) * We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) -* We fixed an issue with dojo widgets that was causing custom icon collections not to work. (Ticket 183996) +* We fixed an issue with dojo widgets that caused custom icon collections not to work. (Ticket 183996) * We fixed an issue in published REST services where publishing two REST services on the same location caused a consistency error. (This was not a problem where services did not publish resources and operations that resulted in the same operation URL.) (Tickets 185087, 185423) * We fixed an issue in published REST services and published OData services that use a combination of custom authentication and another authentication type. When the custom authentication does not authenticate the user but a subsequent authentication type does, the operation was previously unable to read the body of the request. (Ticket 185790) * We fixed the issue where the **Documentation** pane did not show the documentation corresponding to the selected element in certain conditions. (Ticket 185876) * We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) * We fixed an issue where clicking **Load more** on a list view triggered the on-click event on a surrounding widget. (Ticket 365439) + +* We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. * We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. * We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. * We fixed a styling issue in disabled check box controls. @@ -228,7 +230,6 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 * We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). -* We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. * We fixed the missing line breaks in the **Metadata** property of the consumed OData services properties pane. * We fixed an issue in the OpenAPI contract of published OData services where the server URL contained a double slash. * We fixed an error that occurred in OData services when the user had no access to an entity's association and there was an attempt to change its value. Mendix Runtime used to produce a response with the status 500, and now this is an error response with the status 422. From 31a8b8661e6da910fae2a84a9721f8c47d87352c Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Thu, 22 Jun 2023 17:14:31 +0200 Subject: [PATCH 123/232] More language, content, and style review --- .../workflow-elements/multi-user-task.md | 121 ++++++++---------- 1 file changed, 55 insertions(+), 66 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index ac1301f3252..536b0c2061d 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -58,7 +58,7 @@ Possible options of this property are described in the table below: | Option | Description | | --- | --- | | XPath | Allows you to filter users who should be assigned to the multi-user task. For example, you can assign a certain task only to users with the Manager user role. You can use attributes of the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | -| Microflow | Allows you to assign the multi-user task to certain users. Using microflow you can check, for example, which users have the right to approve multi-user tasks and are currently not on vacation and assign the task only to users who passed the check.
The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | +| Microflow | Allows you to assign the multi-user task to certain users. Using microflow you can check, for example, which users have the right to approve multi-user tasks and are currently not on vacation and assign the task only to users who passed the check.

The return type of the microflow should be the **User Entity** set in [App Settings](/refguide/app-settings/#workflows). | | No assignment | Allows you to not assign the multi-user task to certain users immediately. This can be useful when you, for example, want the multi-user task to be created but have an administrator assign it to certain users later. | In case **Target users using** (an XPath or a microflow) results in an empty list of users (0 users), the workflow fails. For more information on how to handle this kind of issues, see the [Operation](/refguide/change-workflow-state/#operation) section in *Change Workflow State*. @@ -74,7 +74,7 @@ Specifies the microflow used to assign the multi-user task. This option is displ ### 2.5 Completion Condition Section {#completion-condition} {{% alert color="info" %}} -The completion condition is evaluated after each user selects an outcome. When a user selects an outcome and this results in the task to be completed, the task will be removed from the inbox of the remaining users as outcomes will not change the final multi-user task outcome. +The completion condition is evaluated after each user selects an outcome. When a user selects an outcome and this results in the multi-user task to be completed, this multi-user task will be removed from the inbox of the remaining users, as their votes will not change the final outcome of the multi-user task. {{% /alert %}} #### 2.5.1 Participant Input {#participant-input} @@ -85,21 +85,38 @@ Possible options of participant input are described in the table below: | Participant Input | Description | | --- | --- | -| **All Target Users** | All targeted users should select an outcome to complete the multi-user task. | -| **Absolute Number** | The specified amount of targeted users should select an outcome to complete the multi-user task. | -| **Percentage** | The specified percentage of targeted users should select an outcome to complete the multi-user task. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value. For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome to complete the multi-user task. | +| All target users | All targeted users should select an outcome to complete the multi-user task. | +| Absolute number | The specified amount of targeted users should select an outcome to complete the multi-user task. | +| Percentage | The specified percentage of targeted users should select an outcome to complete the multi-user task. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value.

For example, when there are 19 targeted users and the **Percentage** is set to `50%`, then 10 users need to select an outcome to complete the multi-user task. | #### 2.5.2 Decision Method With this property, you specify how the outcomes of the individual users are aggregated into a single multi-user task outcome. This aggregated outcome is used as the final outcome to complete the multi-user task. +{{% alert color="warning" %}} +If the number of [targeted users](#users) is less than the absolute number specified in the **Participant input** section, it is impossible to complete the multi-suer task and the workflow will fail. +{{% /alert %}} + ##### 2.5.2.1 Consensus -Select this rule when all users should be in agreement with the provided outcome. That is, they should all select the same outcome. There has to be consensus. When there is no consensus, the multi-user task will complete with the selected [fallback outcome](#fallback-outcome). +Select this decision method when all users should be in agreement with the provided outcome. That is, they should all select the same outcome. There has to be consensus. When there is no consensus, the multi-user task will complete with the the fallback outcome. + +###### 2.5.2.1.1 Fallback Outcome {#fallback-outcome} + +This outcome will be the final outcome of the multi-user task in the following cases: + +* If any of the users during consensus decision method selects a different outcome from the rest of the users. +* If the multi-user task is completed with a final outcome before all required users have completed their task: + + For example, when 5 users need to review a contract (`Approve`, `Reject`) and the first 2 users are not in agreement (one selects `Approve` and the other one selects `Reject`), this multi-user task will be completed with the **Fallback outcome**. The input from the other users will not change the final outcome anymore. The task will no longer appear in their inbox. + +{{% alert color="info" %}} +The fallback outcome should not be an option a user can select on the task page. +{{% /alert %}} -###### 2.5.2.1.1 Example +###### 2.5.2.1.2 Example -The following example shows how you can use **Consensus** as the **Decision method**: +The following example shows how it works when the decision method is **Consensus**: Out of a group of two or more users, two users need to perform the same task: to approve or reject a request. Their decisions are represented by the task outcomes. When the **Decision method** is set to **Consensus**: @@ -115,40 +132,30 @@ You can refer to the following properties settings for this example: * **Fallback outcome**: An outcome users can select but it will be selected automatically when there is no consensus (in this example, `NoConsensus`) * **Outcomes**: `Approve`, `Reject`, `NoConsensus` -###### 2.5.2.1.2 Fallback Outcome {#fallback-outcome} - -This outcome will be the final outcome of the multi-user task in the following cases: - -* If any of the users during consensus decision method selects a different outcome from the rest of the users -* If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Participant input** section: - - For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then consensus can never be reached and fallback outcome will be used as the final outcome to complete the task. - -* If the multi-user task is completed with a final outcome before all required users have completed their task: +##### 2.5.2.2 Veto {#veto} - For example, when 5 users need to review a contract (`Approve`, `Reject`) and the first 2 users are not in agreement (one selects `Approve` and the other one selects `Reject`), this multi-user task will be completed with the **Fallback outcome**. The input from the other users will not change the final outcome anymore. The task will no longer appear in their inbox. +Veto decision method requires two outcomes, one of which is the veto outcome. If anyone selects the veto outcome, then the multi-user task will be completed with the veto outcome. +For a multi-user task to complete with the non-veto outcome, all users defined in property **Participant input** need to complete their task by selecting the non-veto outcome. {{% alert color="info" %}} -The fallback outcome should not be an option a user can select on the task page. +The completion condition is evaluated after each user selects an outcome. When one user completes the task by selecting the veto outcome, the multi-user task will be completed with the veto outcome. The task will be removed from the inbox of the remaining users, as their votes will not change the final outcome of the multi-user task. {{% /alert %}} -##### 2.5.2.2 Veto {#veto} - -Veto decision method requires two outcomes, one of which is the veto outcome. If anyone selects the veto outcome, then the multi-user task will be completed with the veto outcome. +###### 2.5.2.2.1 Veto Outcome -For a multi-user task to complete with the non-veto outcome, all users, as defined in property **Participant input**, need to complete their task by selecting the non-veto outcome. +This property defines the [veto](#veto) outcome. -###### 2.5.2.2.1 Examples +###### 2.5.2.2.2 Examples -Two examples are provided here to show how you can use **Veto** as the **Decision method**. +Two examples are provided here to show how it works when the decision method is **Veto**. One example is when a whole team needs to make a joint decision during a hiring process: `Hire` or `DoNotHire`. The candidate receives an offer if the whole team agrees that this person should be hired. When one team member decides the person should not be hired (veto), the outcome of the multi-user task will be `DoNotHire`. As soon as someone decides this is not the right candidate, the rest do not have to make a decision anymore, as their decisions cannot influence the final outcome. You can refer to the following properties settings for the example above: -* **Targeted users**: All users that need to decide during the hiring process (the whole team) -* **Participant input**: **All** targeted users +* **Targeted users**: The users that can perform the task (the whole team) +* **Participant input**: **All target users** * **Decision method**: **Veto** * **Veto outcome**: `DoNotHire` * **Outcomes**: `Hire`, `DoNotHire` @@ -163,19 +170,15 @@ You can refer to the following properties settings for the second example above: * **Veto outcome**: `Major` * **Outcomes**: `Minor`, `Major` -###### 2.5.2.2.2 Veto Outcome +##### 2.5.2.3 Majority {#majority} -This property defines the [veto](#veto) outcome. +Select this decision method when a task should result in an outcome based on an absolute or relative majority number of votes. The number of required votes is defined as the result of the [participant input](#participant-input). {{% alert color="info" %}} -The completion condition is evaluated after each user selects an outcome. When one user completes the task by selecting the veto outcome, the multi-user task will be completed with the veto outcome. The task will be removed from the inbox of the remaining users. Their outcomes will not change the final multi-user task outcome. +The completion condition is evaluated after each user selects an outcome. If a user selects an outcome and this results in a majority, the multi-user task will be completed with that outcome. The task will be removed from the inbox of the remaining users, as their votes will not change the final outcome of the multi-user task. {{% /alert %}} -##### 2.5.2.3 Majority {#majority} - -Select this decision method when a task should result in an outcome based on an absolute or relative majority number of votes. The number of required votes is defined as the result of the [participant input](#participant-input). - -###### 2.5.2.3.1 Majority type +###### 2.5.2.3.1 Majority Type This property determines the majority type that will be applied when using the majority decision method. @@ -183,28 +186,19 @@ Possible options of majority type are described in the table below: | Majority Type | Description | | --- | --- | -| **More than half** | When one of the outcomes reaches more than 50% of all possible votes (absolute majority), the task is competed with this outcome. | -| **Most chosen** | When one of the outcomes gets the most votes (relative majority) and additional votes will not result in another outcome getting more votes, the task is competed with this outcome. | - -###### 2.5.2.3.2 Fallback outcome {#majority-fallback-outcome} +| More than half | When one of the outcomes reaches more than 50% of all possible votes (absolute majority), the task is competed with this outcome. | +| Most chosen | As soon as one of the outcomes gets most of the votes (relative majority), the task is completed with this outcome. Adding additional votes will not change the final outcome. Currently, it is also not possible to add additional votes after the task is completed. | -This outcome will be the final outcome of the multi-user task in the following cases: - -* If it is determined that none of the remaining votes will result in a majority. -* If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Participant input** section: +###### 2.5.2.3.2 Fallback Outcome {#majority-fallback-outcome} -For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then majority can never be reached and the fallback outcome will be used as the final outcome to complete the task. +This outcome will be the final outcome of the multi-user task if it is determined that none of the remaining votes will result in a majority. {{% alert color="info" %}} A fallback outcome can be both a selectable outcome and a fallback outcome at the same time. {{% /alert %}} {{% alert color="info" %}} -When the **Majority type** is set to **More than half**, the fallback outcome is only required when there are 3 or more outcomes defined. -{{% /alert %}} - -{{% alert color="info" %}} -The completion condition is evaluated after each user selects an outcome. If a user selects an outcome and this results in a majority, the multi-user task will be completed with that outcome. The task will be removed from the inbox of the remaining users as their votes will not change the final multi-user task outcome. +When the **Majority type** is set to **More than half**, the fallback outcome is only required when there are 2 or more outcomes defined. {{% /alert %}} ###### 2.5.2.3.3 Example @@ -237,7 +231,11 @@ You can refer to the following properties settings for this example: Select this decision method when a task should complete with an outcome when the number of votes for this outcome reaches the amount of votes set as the threshold value. The number of required votes is defined as the result of the [participant input](#participant-input). -###### 2.5.2.4.1 Threshold type {#threshold-type} +{{% alert color="info" %}} +The completion condition is evaluated after each user selects an outcome. If a user selects an outcome and this results an outcome reaching the threshold, the multi-user task will be completed with that outcome. The task will be removed from the inbox of the remaining users, as their votes will not change the final outcome of the multi-user task. +{{% /alert %}} + +###### 2.5.2.4.1 Threshold Type {#threshold-type} This property determines the threshold type that will be applied when using the threshold decision method. @@ -245,8 +243,8 @@ Possible options of threshold type are described in the table below: | Threshold Type | Description | | --- | --- | -| **Percentage** | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified percentage of votes. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `50%`, a user task will complete with the outcome that gets 5 votes. | -| **Absolute number** | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified amount of votes.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `5`, a user task will complete with the outcome that gets 5 votes. | +| Percentage | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified percentage of votes. The result of applying the percentage will be rounded upwards to the nearest mathematical integer value.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `50%`, the multi-user task will complete with the outcome that gets 5 votes. | +| Absolute number | Of the specified users defined in the participant input section, a task will be completed with an outcome when it reaches the specified amount of votes.

For example, when the [participant input](#participant-input) results in 10 target users and the threshold value is set to `5`, the multi-user task will complete with the outcome that gets 5 votes. | {{% alert color="info" %}} A threshold of `51%` is the same as using **Majority** as the **Decision method** with **More than half** as the **Majority type**. @@ -256,26 +254,17 @@ A threshold of `51%` is the same as using **Majority** as the **Decision method* A threshold of `100%` is the same as using **Consensus** as the **Decision method**. {{% /alert %}} -###### 2.5.2.4.2 Fallback outcome {#threshold-fallback-outcome} - -This outcome will be the final outcome of the multi-user task in the following cases: - -* If it is determined that it is not possible to reach the threshold with the remaining votes. -* If the number of [targeted users](#users) is less than the [absolute number](#absolute-number) specified in the **Participant input** section: - -For example, if the targeted user count is `10` and you set the absolute number to `20` as the **Participant input**, then the threshold can never be reached and the fallback outcome will be used as the final outcome to complete the task. +###### 2.5.2.4.2 Fallback Outcome {#threshold-fallback-outcome} -{{% alert color="info" %}} -A fallback outcome be both a selectable outcome and a fallback outcome at the same time. -{{% /alert %}} +This outcome will be the final outcome of the multi-user task if it is determined that it is not possible to reach the threshold with the remaining votes. {{% alert color="info" %}} -The completion condition is evaluated after each user selects an outcome. If a user selects an outcome and this results an outcome reaching the threshold, the multi-user task will be completed with that outcome. The task will be removed from the inbox of the remaining users as their votes will not change the final multi-user task outcome. +A fallback outcome can be both a selectable outcome and a fallback outcome at the same time. {{% /alert %}} ###### 2.5.2.4.3 Example -The following example shows how you can use **Threshold** as the **Decision method** using **Percentage** as the [threshold type](#threshold-type): +The following example shows how it works when the decision method is **Threshold** and the threshold type is **Percentage**. There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and C. The threshold value is `60%`. 3 users have voted for outcome A, 4 users have voted for outcome B, and 1 user voted for outcome C. This means that in total, 8 users have voted and there are a maximum of 2 votes to go to complete the task. From f5dcc5508f93cbaecb3efdf853db388ac17103f4 Mon Sep 17 00:00:00 2001 From: Johanna Hemminger Date: Thu, 22 Jun 2023 17:21:58 +0200 Subject: [PATCH 124/232] Add ML Kit RN --- content/en/docs/releasenotes/studio-pro/10/10.0.md | 1 + 1 file changed, 1 insertion(+) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 083dd75c57a..76c7ba2bf40 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -25,6 +25,7 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro * We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. * We added a new workflow activity and a related microflow activity. You can use the [Wait for notification](/refguide/wait-for-notification/) workflow activity to suspend a workflow's execution, and you can use the [Notify workflow](/refguide/notify-workflow/) microflow activity to send a notification to resume the workflow that has been suspended. * We added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. +* The [Machine Learning Kit](/refguide/machine-learning-kit/) is now released for GA. ### Improvements From 32ea1f08037b93bb3d696d7f48406df9f9fd2c32 Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Thu, 22 Jun 2023 17:22:02 +0200 Subject: [PATCH 125/232] Small fixes --- .../workflows/workflow-elements/multi-user-task.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index 536b0c2061d..94bbe19416a 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -94,12 +94,12 @@ Possible options of participant input are described in the table below: With this property, you specify how the outcomes of the individual users are aggregated into a single multi-user task outcome. This aggregated outcome is used as the final outcome to complete the multi-user task. {{% alert color="warning" %}} -If the number of [targeted users](#users) is less than the absolute number specified in the **Participant input** section, it is impossible to complete the multi-suer task and the workflow will fail. +If the number of [targeted users](#users) is less than the absolute number specified in the **Participant input** section, it is impossible to complete the multi-user task and the workflow will fail. {{% /alert %}} ##### 2.5.2.1 Consensus -Select this decision method when all users should be in agreement with the provided outcome. That is, they should all select the same outcome. There has to be consensus. When there is no consensus, the multi-user task will complete with the the fallback outcome. +Select this decision method when all required users should be in agreement with the provided outcome. That is, they should all select the same outcome. There has to be consensus. When there is no consensus, the multi-user task will complete with the the fallback outcome. ###### 2.5.2.1.1 Fallback Outcome {#fallback-outcome} From cd1f1f39076609775f40efc8d2cecbddf73730b9 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 17:27:07 +0200 Subject: [PATCH 126/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 44 ++++++++++++++----- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index 083dd75c57a..02470a813c2 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -215,27 +215,49 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 * We fixed the issue where the **Documentation** pane did not show the documentation corresponding to the selected element in certain conditions. (Ticket 185876) * We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) * We fixed an issue where clicking **Load more** on a list view triggered the on-click event on a surrounding widget. (Ticket 365439) - * We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. + + * We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. +* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. + + +LOGIC +* We fixed the [Create object](/refguide/create-object/) activity so that it now produces a consistency error when committing an external object. +* We fixed the possible race conditions between microflow actions on the same workflow instance. * We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. +* We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. +* We fixed an issue where the workflow user task on-state-change microflow did not run again when the state changed to failed due to a prior execution error in the same event-handling microflow. +* We fixed an issue where the outcome selector dialog box for a completed workflow user task activity showed duplicate outcomes. +LOGIC + +FRONT-END +* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. * We fixed a styling issue in disabled check box controls. +FRONT-END + +INTEGRATION +* We fixed the missing line breaks in the **Metadata** property of the consumed OData services properties pane. +* We fixed an issue in the OpenAPI contract of published OData services where the server URL contained a double slash. +* We fixed an error that occurred in OData services when the user had no access to an entity's association and there was an attempt to change its value. Mendix Runtime used to produce a response with the status 500, and now this is an error response with the status 422. +INTEGRATION + +DESIGN * We fixed an issue where the text editor control did not have a border in dark mode. * We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. * We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. * We fixed an issue with the border color of selected cells in the grid control. -* We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. -* We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. -* We fixed the possible race conditions between microflow actions on the same workflow instance. -* We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). -* We fixed the missing line breaks in the **Metadata** property of the consumed OData services properties pane. -* We fixed an issue in the OpenAPI contract of published OData services where the server URL contained a double slash. -* We fixed an error that occurred in OData services when the user had no access to an entity's association and there was an attempt to change its value. Mendix Runtime used to produce a response with the status 500, and now this is an error response with the status 422. -* We fixed an issue where the workflow user task on-state-change microflow did not run again when the state changed to failed due to a prior execution error in the same event-handling microflow. -* We fixed an issue where the outcome selector dialog box for a completed workflow user task activity showed duplicate outcomes. -* We fixed the [Create object](/refguide/create-object/) activity so that it now produces a consistency error when committing an external object. +DESIGN + + + + + + + + * We fixed an issue that occurred when adding external entities to an app where the generation of enumerations caused an error. * We fixed an issue that occurred when the ML Kit mapping document was moved and the underlying ONNX file was not copied to the new location. * We fixed an issue where the ONNX file for an app using the [ML Kit](/refguide/machine-learning-kit/) disappeared after deployment. From f8b6f8abe7e684a60f3bb738c1e1979c9a12f6e2 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 17:32:39 +0200 Subject: [PATCH 127/232] Review RN --- .../docs/releasenotes/studio-pro/10/10.0.md | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/content/en/docs/releasenotes/studio-pro/10/10.0.md b/content/en/docs/releasenotes/studio-pro/10/10.0.md index d32880a45e9..ba363c3ecc2 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.0.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.0.md @@ -20,12 +20,12 @@ For details on upgrading to Studio Pro 10, see [Upgrading from Mendix Studio Pro ### New Features * We renamed MxAssist Performance Bot to **Best Practice Bot**. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice. +* The [Machine Learning Kit](/refguide/machine-learning-kit/) is now released for GA. * [Page URLs](/refguide/page-properties/#url) got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. * We added new options to the [Aggregate list](/refguide/aggregate-list/) activity. **All** and **Any** are new aggregation functions you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list currently being processed. * We introduced a new nanoflow activity called [Clear from device](/refguide/clear-from-device/) that can be used to clear the objects of an entity from the device database. Objects cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. * We added a new workflow activity and a related microflow activity. You can use the [Wait for notification](/refguide/wait-for-notification/) workflow activity to suspend a workflow's execution, and you can use the [Notify workflow](/refguide/notify-workflow/) microflow activity to send a notification to resume the workflow that has been suspended. * We added support for workflow [multi-user tasks](/refguide/multi-user-task/). It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Consolidated completion criteria can be **Consensus** or **Veto**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. -* The [Machine Learning Kit](/refguide/machine-learning-kit/) is now released for GA. ### Improvements @@ -218,10 +218,10 @@ The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 * We fixed an issue where clicking **Load more** on a list view triggered the on-click event on a surrounding widget. (Ticket 365439) * We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. - +MISCELLANEOUS * We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. * We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. - +MISCELLANEOUS LOGIC * We fixed the [Create object](/refguide/create-object/) activity so that it now produces a consistency error when committing an external object. @@ -233,14 +233,28 @@ LOGIC LOGIC FRONT-END +* We fixed an issue that triggered a consistency error on a text template of a pluggable widget inside a snippet with multiple parameters if the template had parameters based on an attribute. * We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. * We fixed a styling issue in disabled check box controls. +* We fixed an issue that caused the warning pop-up window for the [inline snippet](/refguide/snippet-call/#inline-snippet) action to mention the same affected widget multiple times. +* We fixed an issue that caused the inline snippet action to crash if the surrounding data widget was not configured. +* We fixed an issue with text controls where the text was sometimes undesirably reverted. +* We fixed an issue in the grid control where selecting multiple cells using Shift was inconsistent when clicking on the interactable control itself in the cell (meaning, the check box). FRONT-END +ASSIST +* We fixed an issue that occurred when the Machine Learning Kit mapping document was moved and the underlying ONNX file was not copied to the new location. +* We fixed an issue where the ONNX file for an app using the Machine Learning Kit disappeared after deployment. +* We fixed an issue where MxAssist Best Practice Bot did not skip disabled microflow actions. This did not cause any false positives, but it caused some best practices to output no results for some apps. +* We fixed an issue where exporting recommendations from MxAssist Best Practice Bot included suppressed recommendations. +ASSIST + INTEGRATION * We fixed the missing line breaks in the **Metadata** property of the consumed OData services properties pane. * We fixed an issue in the OpenAPI contract of published OData services where the server URL contained a double slash. * We fixed an error that occurred in OData services when the user had no access to an entity's association and there was an attempt to change its value. Mendix Runtime used to produce a response with the status 500, and now this is an error response with the status 422. +* We fixed an issue that occurred when adding external entities to an app where the generation of enumerations caused an error. +* We fixed an issue in published web services where editing an operation that had a parameter and/or a return type that had been removed caused an error. INTEGRATION DESIGN @@ -253,23 +267,7 @@ DESIGN DESIGN - - - - - - -* We fixed an issue that occurred when adding external entities to an app where the generation of enumerations caused an error. -* We fixed an issue that occurred when the ML Kit mapping document was moved and the underlying ONNX file was not copied to the new location. -* We fixed an issue where the ONNX file for an app using the [ML Kit](/refguide/machine-learning-kit/) disappeared after deployment. -* We fixed an issue in published web services where editing an operation that had a parameter and/or a return type that had been removed caused an error. -* We fixed an issue where MxAssist Best Practice Bot did not skip disabled microflow actions. This did not cause any false positives, but it caused some best practices to output no results for some apps. -* We fixed an issue where exporting recommendations from MxAssist Best Practice Bot was including suppressed recommendations. -* We fixed an issue that triggered a consistency error on a text template of a pluggable widget inside a snippet with multiple parameters if the template had parameters based on an attribute. -* We fixed an issue that caused the warning pop-up window for the [inline snippet](/refguide/snippet-call/#inline-snippet) action to mention the same affected widget multiple times. -* We fixed an issue that caused the inline snippet action to crash if the surrounding data widget was not configured. -* We fixed an issue with text controls where the text was sometimes undesirably reverted. -* We fixed an issue in the grid control where selecting multiple cells using Shift was inconsistent when clicking on the interactable control itself in the cell (meaning, the check box). +START * We aligned the behavior of aggregates in grids with attribute columns. * We fixed an issue where a page parameter triggered a warning that it was unused if the only reference to that parameter was inside an XPath constraint. * We fixed an issue where a page parameter did not trigger a warning that it was unused if the parameter mapping of an action or data source pointed to an object of the same entity as the parameter. From 2cbc66778e7adce622385f431bc2b2bd0c26e115 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Thu, 22 Jun 2023 17:33:23 +0200 Subject: [PATCH 128/232] Review RN --- content/en/docs/releasenotes/feature-release-calendar/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 165ff54d40d..7ae88de051e 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -34,7 +34,7 @@ The new features were divided into these major themes, which are described in th | --- | --- | | Studio Pro redesign | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Improved Properties pane | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Git version control (without SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY FOR DATE AND RN**] | +| Git version control (removal of SVN support) | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Start from spreadsheet | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Custom icons support | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Flexible page URLs | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | From 60793e50bb0aea0dd1bf0dda0d141adc81cd47c8 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 07:21:23 +0200 Subject: [PATCH 129/232] Update --- .../en/docs/releasenotes/feature-release-calendar/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 7ae88de051e..8d897c9c4cf 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -2,7 +2,7 @@ title: "Mendix 10 Feature Release Calendar" url: /releasenotes/feature-release-calendar/ tags: ["announcements", "features", "feature release", "products", "features and products", "calendar", "new", "mendix 10", "mx10"] -weight: 60 +weight: 4 #notoc: true #layout: wide --- @@ -25,7 +25,7 @@ The new features were divided into these major themes, which are described in th | --- | --- | | Portfolio Management | Released for GA [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023) | | Jira Integration | Released for Public Beta [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023)
GA: Q4 2023 | -| Community Spaces | Released for Public Beta [Jun __, 2023](**ADD RN LINK**)
GA: Q3 2023 [**VERIFY FOR DATE AND RN; WHAT IS THIS?**] | +| Community Spaces | Currently in Private Beta
GA: Q3 2023 | | App Insights | GA: Q3 2023 | ## 3 Developer Experience From b7e9e40012816a4219d514f099fc83549bde4f67 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 07:28:12 +0200 Subject: [PATCH 130/232] Update --- .../docs/releasenotes/feature-release-calendar/_index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index 8d897c9c4cf..bcc8ed6a0aa 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -24,9 +24,9 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | | Portfolio Management | Released for GA [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023) | -| Jira Integration | Released for Public Beta [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023)
GA: Q4 2023 | -| Community Spaces | Currently in Private Beta
GA: Q3 2023 | -| App Insights | GA: Q3 2023 | +| App Insights | Released for Public Beta [Dec 13, 2022](/releasenotes/developer-portal/#december-13th-2022)
GA: Q3 2023 | +| Community spaces | Currently in Private Beta
GA: Q3 2023 | +| Jira integration | Released for Public Beta [Jun 22, 2023](/releasenotes/developer-portal/#june-22nd-2023)
GA: Q4 2023 | ## 3 Developer Experience @@ -77,7 +77,7 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| BYO IDP | Released for GA [May 16, 2023](/releasenotes/developer-portal/#byoidp) [**VERIFY RN LINK**] | +| BYO IDP | Released for GA [May 16, 2023](/releasenotes/developer-portal/#byoidp) | | Cloud Self-Service | Currently in Private Beta
GA: TBD | | Landscape Overview | Public Beta: Q3 2023
GA: TBD | | Dependency Governance | Public Beta: Q4 2023
GA: TBD | From a1184c544cf50bed7d315af0952c2d5d1fde7c93 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 07:42:37 +0200 Subject: [PATCH 131/232] Update --- .../feature-release-calendar/_index.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/content/en/docs/releasenotes/feature-release-calendar/_index.md b/content/en/docs/releasenotes/feature-release-calendar/_index.md index bcc8ed6a0aa..bc7fd6c8da3 100644 --- a/content/en/docs/releasenotes/feature-release-calendar/_index.md +++ b/content/en/docs/releasenotes/feature-release-calendar/_index.md @@ -52,24 +52,24 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | -| Mendix Connect - External Entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | -| Mendix Connect - Business Events & Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | +| Mendix Connect - external entities | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | +| Mendix Connect - business events and Mendix Event Broker | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) [**VERIFY TO REFRAME/REMOVE**] | | Machine Learning Kit | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions kit - protected modules | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | | Solutions kit - solution lifecycle management | Released for GA [Jun 27, 2023](/releasenotes/studio-pro/10.0/) | -| Mendix Connect - Database Connector | GA: Q3 2023 | -| Mendix Connect - REST Connector | GA: Q4 2023 | -| Studio Pro Extensibility | Private Beta: Q3 2023
GA: TBD | -| Solutions kit - Adaptation Insights | Private Beta: Q4 2023
GA: TBD | -| Mendix Connect - External Actions | GA: TBD | +| Mendix Connect - Database connector | GA: Q3 2023 [**VERIFY ALREADY IN GA - REFRAME/REMOVE**] | +| Mendix Connect - REST connector | GA: Q4 2023 | +| Studio Pro extensibility | Private Beta: Q3 2023
GA: TBD | +| Solutions kit - adaptation insights | Private Beta: Q4 2023
GA: TBD | +| Mendix Connect - external actions | GA: TBD | ## 5 Multi-Cloud Deployment | Capability or Feature | Expected Release | | --- | --- | | Mendix on AWS EKS | Released for GA [Feb 8, 2023](/releasenotes/developer-portal/mendix-for-private-cloud/#february-8th-2023) | -| WebHooks | Released for GA [Jun 15, 2023](/releasenotes/developer-portal/mendix-cloud/#june-15th-2023) | -| Multi-Region Fail-over | GA: Q3 2023 | +| Webhooks | Released for GA [Jun 15, 2023](/releasenotes/developer-portal/mendix-cloud/#june-15th-2023) | +| Multi-region failover | GA: Q3 2023 | | Private Mendix Platform | Currently in Private Beta
GA: Q4 2023 | | Pipelines | Public Beta: Q4 2023
GA: TBD | @@ -78,7 +78,7 @@ The new features were divided into these major themes, which are described in th | Capability or Feature | Expected Release | | --- | --- | | BYO IDP | Released for GA [May 16, 2023](/releasenotes/developer-portal/#byoidp) | -| Cloud Self-Service | Currently in Private Beta
GA: TBD | -| Landscape Overview | Public Beta: Q3 2023
GA: TBD | -| Dependency Governance | Public Beta: Q4 2023
GA: TBD | +| Cloud self-service | Currently in Private Beta
GA: TBD | +| Landscape overview | Public Beta: Q3 2023
GA: TBD | +| Dependency governance | Public Beta: Q4 2023
GA: TBD | From 6503c3d15822a22114e0a4a322fbf07a1c2c0d9b Mon Sep 17 00:00:00 2001 From: = Date: Fri, 23 Jun 2023 09:58:43 +0200 Subject: [PATCH 132/232] update links for atlas icons from .zip to .mpk --- content/en/docs/refguide/installation/upgrading-from-9-to-10.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md index 5ba801a3b3b..95ac89157d7 100644 --- a/content/en/docs/refguide/installation/upgrading-from-9-to-10.md +++ b/content/en/docs/refguide/installation/upgrading-from-9-to-10.md @@ -134,7 +134,7 @@ If your application is currently using the Atlas theme, this is easily solved by In Studio Pro 10, the glyphicon is slowly being phased out. Although a currently selected glyphicon will still work, some of the widgets that Studio Pro 10 uses are no longer using a glyphicon class name. -If your application is currently using the Atlas theme, this is easily solved by upgrading [Atlas Core](https://marketplace.mendix.com/link/component/117187) to version 3.11 or above. Otherwise, the temporary workaround for this is to add the [Atlas icon fonts](https://github.com/mendix/atlas/raw/main/resources/mx-icon-set-filled-v1.2.2.zip) directly to your theme styling directory. +If your application is currently using the Atlas theme, this is easily solved by upgrading [Atlas Core](https://marketplace.mendix.com/link/component/117187) to version 3.11 or above. Otherwise, a possible workaround for this is to manually add the [Atlas icons module](https://github.com/mendix/atlas/raw/main/resources/Atlas_Icons.mpk) to your app. ## 8 Read More From 03dfba26ea1991220b259b84ca5eda13607d34b1 Mon Sep 17 00:00:00 2001 From: "AzureAD\\YiyunLiao" Date: Fri, 23 Jun 2023 10:06:56 +0200 Subject: [PATCH 133/232] Adjust notes after verification with Tim --- .../workflow-elements/multi-user-task.md | 30 ++++--------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index 94bbe19416a..83140d22dcc 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -97,6 +97,10 @@ With this property, you specify how the outcomes of the individual users are agg If the number of [targeted users](#users) is less than the absolute number specified in the **Participant input** section, it is impossible to complete the multi-user task and the workflow will fail. {{% /alert %}} +{{% alert color="info" %}} +A fallback outcome can be both a selectable outcome and a fallback outcome at the same time. +{{% /alert %}} + ##### 2.5.2.1 Consensus Select this decision method when all required users should be in agreement with the provided outcome. That is, they should all select the same outcome. There has to be consensus. When there is no consensus, the multi-user task will complete with the the fallback outcome. @@ -110,10 +114,6 @@ This outcome will be the final outcome of the multi-user task in the following c For example, when 5 users need to review a contract (`Approve`, `Reject`) and the first 2 users are not in agreement (one selects `Approve` and the other one selects `Reject`), this multi-user task will be completed with the **Fallback outcome**. The input from the other users will not change the final outcome anymore. The task will no longer appear in their inbox. -{{% alert color="info" %}} -The fallback outcome should not be an option a user can select on the task page. -{{% /alert %}} - ###### 2.5.2.1.2 Example The following example shows how it works when the decision method is **Consensus**: @@ -138,10 +138,6 @@ Veto decision method requires two outcomes, one of which is the veto outcome. If For a multi-user task to complete with the non-veto outcome, all users defined in property **Participant input** need to complete their task by selecting the non-veto outcome. -{{% alert color="info" %}} -The completion condition is evaluated after each user selects an outcome. When one user completes the task by selecting the veto outcome, the multi-user task will be completed with the veto outcome. The task will be removed from the inbox of the remaining users, as their votes will not change the final outcome of the multi-user task. -{{% /alert %}} - ###### 2.5.2.2.1 Veto Outcome This property defines the [veto](#veto) outcome. @@ -174,10 +170,6 @@ You can refer to the following properties settings for the second example above: Select this decision method when a task should result in an outcome based on an absolute or relative majority number of votes. The number of required votes is defined as the result of the [participant input](#participant-input). -{{% alert color="info" %}} -The completion condition is evaluated after each user selects an outcome. If a user selects an outcome and this results in a majority, the multi-user task will be completed with that outcome. The task will be removed from the inbox of the remaining users, as their votes will not change the final outcome of the multi-user task. -{{% /alert %}} - ###### 2.5.2.3.1 Majority Type This property determines the majority type that will be applied when using the majority decision method. @@ -193,10 +185,6 @@ Possible options of majority type are described in the table below: This outcome will be the final outcome of the multi-user task if it is determined that none of the remaining votes will result in a majority. -{{% alert color="info" %}} -A fallback outcome can be both a selectable outcome and a fallback outcome at the same time. -{{% /alert %}} - {{% alert color="info" %}} When the **Majority type** is set to **More than half**, the fallback outcome is only required when there are 2 or more outcomes defined. {{% /alert %}} @@ -205,7 +193,7 @@ When the **Majority type** is set to **More than half**, the fallback outcome is The following example shows how it works when the decision method is **Majority** and the majority type is **More than half** or **Most chosen**. -There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and C. 5 users have voted for outcome A, 4 users have voted for outcome B and 0 users voted for outcome C. This means that the task has 9 completed votes, and 1 vote is left to determine the final outcome of the task. +There are 50 targeted users and 10 required votes from users. The possible outcomes are A, B and C. 5 users have voted for outcome A, 4 users have voted for outcome B, and 0 users voted for outcome C. This means that the task has 9 completed votes, and 1 vote is left to determine the final outcome of the task. | Outcomes | A | B | C | |----------|-----|-----|-----| @@ -231,10 +219,6 @@ You can refer to the following properties settings for this example: Select this decision method when a task should complete with an outcome when the number of votes for this outcome reaches the amount of votes set as the threshold value. The number of required votes is defined as the result of the [participant input](#participant-input). -{{% alert color="info" %}} -The completion condition is evaluated after each user selects an outcome. If a user selects an outcome and this results an outcome reaching the threshold, the multi-user task will be completed with that outcome. The task will be removed from the inbox of the remaining users, as their votes will not change the final outcome of the multi-user task. -{{% /alert %}} - ###### 2.5.2.4.1 Threshold Type {#threshold-type} This property determines the threshold type that will be applied when using the threshold decision method. @@ -258,10 +242,6 @@ A threshold of `100%` is the same as using **Consensus** as the **Decision metho This outcome will be the final outcome of the multi-user task if it is determined that it is not possible to reach the threshold with the remaining votes. -{{% alert color="info" %}} -A fallback outcome can be both a selectable outcome and a fallback outcome at the same time. -{{% /alert %}} - ###### 2.5.2.4.3 Example The following example shows how it works when the decision method is **Threshold** and the threshold type is **Percentage**. From f0156d7742f558d95938f687eb809f9282401447 Mon Sep 17 00:00:00 2001 From: adam-dupaski Date: Fri, 23 Jun 2023 10:19:23 +0200 Subject: [PATCH 134/232] Update --- .../partials/landingpage/latest-releases.html | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/layouts/partials/landingpage/latest-releases.html b/layouts/partials/landingpage/latest-releases.html index 9bb4fd09c9d..aa4ab62c772 100644 --- a/layouts/partials/landingpage/latest-releases.html +++ b/layouts/partials/landingpage/latest-releases.html @@ -2,29 +2,32 @@