Skip to content

Commit 20f3bc4

Browse files
committed
Fix hashes
1 parent cc999d3 commit 20f3bc4

3 files changed

Lines changed: 68 additions & 66 deletions

File tree

content/en/docs/refguide/modeling/best-practices/dev-best-practices/app-setup.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,35 @@ no_list: false
77
description_list: true
88
---
99

10-
### Introduction
10+
## Introduction
1111

1212
There are a few key things to consider when setting up your app. The subsections below will flag these considerations for your attention, as well as provide you with some examples and best practices to steer your app in the right direction.
1313

14-
### App Development Language
14+
## App Development Language
1515

1616
You first decision will be choosing your application development language. The language that will be used to develop the app should be determined upfront. This way you have one language for modules, entities, microflows, pages, and any other elements. The typically preferred language for development is English.
1717

1818
There are some reasons, however, why certain parts of an application may use another language. The main reason to make an exception would be within the domain model of an integration module. For example, when the source data model is in another language already.
1919

2020
For more information, see [Translating Your App Content](/refguide/translate-your-app-content/).
2121

22-
### App Name
22+
## App Name
2323

2424
Every app is named when created. Make sure you use a logical name that allows you to easily identify the application. You will probably create more apps in the future, and will want to be able to recognize this app.
2525

2626
We recommend omitting dates and Mendix version numbers from app names, since that information can be captured and extracted in a different way.
2727

28-
### Configurations
28+
## Configurations
2929

3030
Every app has at least one configuration, but it may have many. Every app starts with a single configuration called **default**. When you work with multiple people on an application it is beneficial to create multiple configurations. When doing so, Mendix recommends using relevant names for those configurations, like the name of the developer or the app's purpose, like **Test** or **Acceptance**. Beware that the database passwords defined in the configuration will be visible to other team members, so be careful with using personal passwords you'd like to keep secret.
3131

32-
### User Roles
32+
## User Roles
3333

3434
The [user roles](/refguide/user-roles/) should have logical names that reflect the different types of users that will use the application. The user roles are singular and use an UpperCamelCase notation, like **FunctionalAdministrator**. User roles are mostly defined in English, but there is an option to name these in a different language, since the user role is visible in the front end.
3535

3636
Each user role should correspond to only one module role per module. In other words, a user role should not map to multiple module roles within the same module. This helps to keep the number of applicable module roles for a user to a minimum, which reduces complexity in understanding the security model and reduces the performance impact of complex security rules.
3737

38-
### Passwords and Other Secrets
38+
## Passwords and Other Secrets
3939

4040
Always store secret information in a safe place. A safe place is the database. Use the [Encryption](https://marketplace.mendix.com/link/component/1011) module to encrypt, store, retrieve, and decrypt the information.
4141

content/en/docs/refguide/modeling/best-practices/dev-best-practices/general-guidelines.md

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ no_list: false
77
description_list: true
88
---
99

10-
## General Guidelines and Best Practices
10+
## Introduction
1111

12-
### Application
12+
This document provides general miscellaneous best practices for setting up microflows, warnings, and other commonly used elements in Mendix apps. If you know the basics of Mendix, try implementing these bits of advice to raise your app to the next level.
1313

14-
#### Project Size
14+
## App Size
1515

1616
Mendix apps are best built in a way that they are easily scalable through a microservice architecture. They are ideally designed for a single purpose, focusing each app on a distinct business domain to keep functionality clear and manageable.
1717

@@ -24,61 +24,61 @@ To ensure maintainability and performance, it is recommended to keep your app wi
2424

2525
Staying within these limits helps maintain optimal performance in Studio Pro, while ensuring your app remains manageable and scalable over time. If your app exceeds these limits, consider breaking your app into smaller services to improve maintainability and performance.
2626

27-
Applications exceeding these guidelines may still function, depending on your system. However, Mendix cannot provide support for performance issues in oversized projects.
27+
Applications exceeding these guidelines may still function, depending on your system. However, Mendix cannot provide support for performance issues in oversized apps.
2828

2929
{{% alert color="info" %}}
30-
Project size impacts IDE performance. Choose a development strategy that aligns with your system's capabilities and Mendix's recommended guidelines.
30+
App size impacts IDE performance. Choose a development strategy that aligns with your system's capabilities and Mendix's recommended guidelines.
3131
{{% /alert %}}
3232

33-
### Model SDK
33+
## Model SDK
3434

3535
The Mendix Model SDK enforces a strict limit of 20,000 units per working copy.
3636

3737
A unit represents a single document or element found in the app explorer. This limit helps ensure stable performance and efficient resource handling when working with large Mendix applications and models through the SDK. When building solutions or automation using the Model SDK, ensure that working copies do not exceed the 20,000-unit threshold to avoid errors or incomplete processing.
3838

39-
### Domain Models
39+
## Domain Models
4040

41-
#### Attributes {#attributes}
41+
### Attributes {#attributes}
4242

4343
Using calculated (virtual) attributes is discouraged. These introduce a performance risk since they need to be calculated every time the object is used, regardless of whether the attribute itself is used.
4444

45-
#### Inheritance {#inheritance}
45+
### Inheritance {#inheritance}
4646

4747
When using inheritance (specialization/generalization), it is recommended to use no more than two levels for performance reasons.
4848

49-
#### Delete Behavior
49+
### Delete Behavior
5050

5151
[Delete behavior](/refguide/configuring-a-domain-model/#delete-behavior) must be specified where possible. Delete behavior must, however, never be relied upon when deleting large amounts of data. For performance reasons it is better to explicitly delete dependent objects when doing batch deletes.
5252

53-
#### Event Handlers
53+
### Event Handlers
5454

5555
[Event handlers](/refguide/event-handlers/) on domain entities must be used with a lot of caution. They can quickly result in complex and possibly unexpected behavior when several of them are applied to a single entity. It is often best to make the execution of microflows more explicit by using sub-microflows that are called manually, for example, just before committing an object.
5656

57-
### Microflows {#microflow-dev-best-practices}
57+
## Microflows {#microflow-dev-best-practices}
5858

59-
#### Size {#size}
59+
### Size {#size}
6060

6161
The size of a microflow should not exceed 25 elements. An element is any block that Studio Pro allows in a microflow (loops, action activities, decisions, etc.). In some cases exceeding this limit is acceptable; this can occur, for instance, for validation or data copying flows.
6262

6363
Split microflows up into logical, functional elements. If a microflow has more than twenty-five elements, split the microflow up by creating a sub-microflow for a part of it. For example, by separating presentation logic from business logic.
6464

6565
Certain cases (such as validation checks) may require this rule to be ignored to produce an understandable result.
6666

67-
#### Documentation and Annotations {#documentation-and-annotations}
67+
### Documentation and Annotations {#documentation-and-annotations}
6868

6969
All complex microflows (more than ten activities or more than two decisions) should have an [annotation](/refguide/annotations/) describing the purpose of the microflow, expected parameters, and return values. This annotation should be placed at the start, so it is visible when the microflow is opened. This will assist other developers in quickly understanding the general purpose of a microflow, without having to read through it entirely.
7070

7171
Complex, non-standard or integration-related sections in microflows should also have an accompanying annotation. Examples of these are web service calls, custom loops, and Java calls.
7272

73-
#### Readability
73+
### Readability
7474

7575
The normal flow in a microflow should be aligned from left to right to ensure readability. Exceptions to the normal flow may branch out vertically: downwards is preferred, upwards if the downwards direction is already used.
7676

7777
Avoid crossing of lines of the links between the microflow elements.
7878

7979
If you decide to color code the different activities in your app, be sure to align within your team on their meaning.
8080

81-
#### Complexity
81+
### Complexity
8282

8383
Nested `if` statements in a single microflow expression are not recommended. If multiple checks depend on one another, this should be represented by multiple decisions in the microflow, so that the complexity is not hidden away in the expressions. You can use `and` and `or` operators to produce complex expressions if necessary.
8484

@@ -94,21 +94,21 @@ Event triggers on input fields must be kept as simple as possible, since they ar
9494

9595
The number of parameters for a microflow should be kept to a minimum to facilitate reusability. The more parameters a microflow has, the more difficult it is to determine what should be put into the parameters to make the microflow run correctly.
9696

97-
#### Error Handling and Logging
97+
### Error Handling and Logging
9898

9999
Use microflow [error handling](/refguide/error-handling-in-microflows/) for all integration and Java calls. Make sure to determine the correct rollback behavior. Always log the error that occurred, even if the process can continue, this is essential for later analysis of the error.
100100

101101
Complex processes and important business logic (like workflow processing or validations) must include debug and trace [logging](/refguide/logging/). Logging actions must write the current state and progress of the process and must include a request ID or other identifying information. The log node should be the name of the module. This will greatly assist error analysis.
102102

103-
#### Validating Inputs in Microflows
103+
### Validating Inputs in Microflows
104104

105105
When microflows are invoked from the client side, it is important to validate the inputs. By having validations, you prevent incorrect, inappropriate, or potentially harmful data from being used in your microflows. This protects your application against security vulnerabilities. The following presents the best practices regarding the integrity and validation of inputs in your microflows.
106106

107-
##### Implementing Validation Checks
107+
#### Implementing Validation Checks
108108

109109
Adding validation checks is vital for ensuring that input data conforms to the expected data type, format, range, or other application-specific constraints. For instance, if a numeric input is expected within a defined range, validation checks should confirm that the input is indeed numeric and falls within the specified range.
110110

111-
##### Managing Unexpected Values
111+
#### Managing Unexpected Values
112112

113113
When building microflows, it is important to account for the potential occurrence of unexpected values. These could be empty values, or values outside the expected range or format. It is also important to ensure that read-only attributes only contain expected values.
114114

@@ -120,39 +120,39 @@ We also recommend avoiding storing intermediary values in attributes (such as, *
120120

121121
Microflows should incorporate mechanisms to detect unexpected values and respond suitably – this might involve returning an error message to the end-user or executing a fallback operation.
122122

123-
##### Updating Validation Logic Regularly
123+
#### Updating Validation Logic Regularly
124124

125125
As the application evolves, the validation logic within microflows should be updated accordingly to reflect changes in business logic or data models. This regular review and update of validation checks ensures that microflows remain secure and function correctly over time.
126126

127127
By prioritizing the validation of inputs in microflows, you not only enhance the security of your application, but also ensure a more predictable and stable user experience. This practice underscores the development of reliable and robust applications.
128128

129-
### Warnings
129+
## Warnings
130130

131131
No warnings should be visible in Studio Pro, unless explicitly documented with a reason. Warnings can indicate many issues, including maintainability and security risks, which must be resolved.
132132

133-
### Excluded and Unused Documents
133+
## Excluded and Unused Documents
134134

135135
Excluded documents are documents that are in a project but excluded from deployment. These documents can be kept in your app for reference, but Studio Pro will act as if they do not exist.
136136

137137
Unused documents are documents that are still being considered while being deployed that can be used if you want to replace a document with another document.
138138

139139
Unused and excluded documents should be removed from the model when they are no longer needed. When a version of the application is prepared for a release, all these items should be cleaned up. Make sure to check whether items that appear unused are not actually called from a Java action before removing them. Studio Pro provides the possibility to mark such items as used to override warnings about this.
140140

141-
### XPath
141+
## XPath
142142

143143
[XPath](/refguide/xpath/) constraints in any part of the model should be kept as simple as possible. As a general rule, XPaths must not appear when the **Find advanced > XPath** option in Studio Pro is used with all options enabled.
144144

145-
### Security
145+
## Security
146146

147147
The [security](/howto/security/) overview in Studio Pro must not show any incomplete (yellow) parts. All entity, microflow, and page access must be configured completely.
148148

149149
Assigning default rights to new members when defining entity access is NOT recommended. This will ensure that access is only granted after a conscious decision.
150150

151-
### Mendix Version
151+
## Mendix Version
152152

153153
Apps should keep up with new Mendix releases as much as possible.
154154

155-
### Marketplace Content
155+
## Marketplace Content
156156

157157
When introducing a new [Mendix Marketplace](https://marketplace.mendix.com/) component to an app, carefully consider the support level of the component. Using components that are community supported introduces a maintainability and upgrade risk.
158158

0 commit comments

Comments
 (0)