From 66dc1a7cc385a89f24cf1ebf7b2a7402e7e2482e Mon Sep 17 00:00:00 2001 From: Dmitrii Bakun Date: Wed, 7 Oct 2026 15:56:53 +0200 Subject: [PATCH 1/2] WOR-3087 - Update documentations --- .../app/app-settings/workflow-tab.md | 2 + .../workflows/workflow-groups.md | 89 +++++++++++++++++- .../workflow-groups-config-runtime.png | Bin 0 -> 9857 bytes .../workflow-groups-config.png | Bin 20499 -> 28346 bytes 4 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 static/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config-runtime.png diff --git a/content/en/docs/refguide/modeling/app-explorer/app/app-settings/workflow-tab.md b/content/en/docs/refguide/modeling/app-explorer/app/app-settings/workflow-tab.md index 4232751f49f..b0026efd80e 100644 --- a/content/en/docs/refguide/modeling/app-explorer/app/app-settings/workflow-tab.md +++ b/content/en/docs/refguide/modeling/app-explorer/app/app-settings/workflow-tab.md @@ -17,6 +17,8 @@ Configure workflow-specific settings for your app in the Workflow tab. **Workflow group(s)** defines groups of users for [user task targeting](/refguide/user-task/#workflow-group). When users are added or removed from the group, the targeted users of a user task change accordingly. For more information, see [Workflow Groups](/refguide/workflow-groups/). +**Group definition** defines where workflow groups are created and managed. When set to **Studio Pro** (default), groups are defined in this tab and synchronized to the database on deployment. When set to **Runtime**, groups are created and deleted in the running app, without redeployment. For more information, see the [Group Definition](/refguide/workflow-groups/#group-definition) section in *Workflow Groups*. + ### Optimization This section allows you to configure the maximum number of workflow and microflow threads that can be executed simultaneously by the Runtime. This is an advanced setting that gives developers control over app performance. Change these settings when you face performance issues on executing workflow instances or workflow-initiated microflows. The two values in this field indicate the amount of threads that process the queues containing workflow instances or workflow-initiated microflows. For more information, see the [Workflow Instance Threads](#workflow-instance-threads) and [Microflow Threads](#microflow-threads) sections below. diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-groups.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-groups.md index a8081192a77..bb93068eee4 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-groups.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-groups.md @@ -20,25 +20,58 @@ To configure workflow groups, open **App** > **Settings** and select the **Workf {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config.png" >}} -A Workflow group can be defined with the following properties: +### Group Definition {#group-definition} + +{{% alert color="info" %}} +The **Group definition** setting was introduced in Studio Pro 11.16.0. In earlier versions, workflow groups are always defined in Studio Pro. +{{% /alert %}} + +The **Group definition** setting determines where workflow groups are created and managed. It has the following options: + +* **Studio Pro** (default) – Workflow groups are defined in the app settings in Studio Pro and are synchronized to the database when the app is (re)deployed. For more information, see [Defining Groups in Studio Pro](#studio-pro-groups). +* **Runtime** – Workflow groups are created and deleted by administrators in the running app, for example, by using the [Workflow Commons](/appstore/modules/workflow-commons/) module. Adding or removing a group does not require a redeployment. In this mode, groups are not defined in Studio Pro. For more information, see [Managing Groups at Runtime](#runtime-groups). + +When you change this setting, Studio Pro asks you to confirm the change, because it can affect existing groups and XPath constraints. For more information, see [Changing the Group Definition](#changing-group-definition). + +### Defining Groups in Studio Pro {#studio-pro-groups} + +When **Group definition** is set to **Studio Pro**, a workflow group can be defined with the following properties: * **Name**: The name of the group. It must be unique. The name can only contain letters, digits and underscores, and cannot start with a digit. * **Documentation**: A description of the group. The description can contain any free-form text. +### Managing Groups at Runtime {#runtime-groups} + +When **Group definition** is set to **Runtime**, the list of workflow groups is not shown in the app settings: + +{{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config-runtime.png" >}} + +Instead, administrators create, edit, and delete workflow groups in the running app. This is useful when the set of groups is not known at design time, or when it changes frequently and you do not want to redeploy the app for every change. + +In this mode, the app does not synchronize workflow groups on (re)deployment: groups that exist in the database are neither updated nor removed on start-up. + +The [Workflow Commons](/appstore/modules/workflow-commons/) module provides default pages to manage workflow groups at runtime. You can also build your own pages and microflows that create, change, and delete **System.WorkflowGroup** objects. + ## The System.WorkflowGroup Entity -The **System.WorkflowGroup** entity represents the defined workflow groups in the database. It has the following attributes and association: +The **System.WorkflowGroup** entity represents the workflow groups in the database. It has the following attributes and association: * **Name**: The name of the workflow group. * **Description**: The description of the workflow group. * **WorkflowGroup_User**: The users that are part of the workflow group. The multiplicity is a many-to-many association. -Each defined workflow group corresponds to one **System.WorkflowGroup** object. +Each workflow group corresponds to one **System.WorkflowGroup** object. -The **Name** attribute of the **System.WorkflowGroup** object matches the **Name** property of the workflow group, and the **Description** attribute matches the **Documentation** property of the workflow group. +When **Group definition** is set to **Studio Pro**, the **Name** attribute of the **System.WorkflowGroup** object matches the **Name** property of the workflow group, and the **Description** attribute matches the **Documentation** property of the workflow group. + +When **Group definition** is set to **Runtime**, **System.WorkflowGroup** objects are created, changed, and deleted in the running app. ### Synchronization +{{% alert color="info" %}} +Synchronization only applies when **Group definition** is set to **Studio Pro**. When it is set to **Runtime**, workflow groups are not synchronized. +{{% /alert %}} + Changes to workflow group properties are automatically synchronized to the database, when the app is (re)deployed. When the properties (that is, the name and the documentation) of an existing workflow group are changed, the attributes of the corresponding object in the database are also updated. {{% alert color="warning" %}} @@ -57,12 +90,58 @@ This is done by setting the **WorkflowGroup_User** association between the **Sys ## Using Workflow Groups in XPath +### XPath Tokens + +{{% alert color="info" %}} +XPath tokens for workflow groups are only available when **Group definition** is set to **Studio Pro**. +{{% /alert %}} + For each workflow group that is defined in app settings, an XPath token is defined, which you can use to select the group. For instance, to select a workflow group called *Managers*, you can use the following XPath constraint: ```[ id = '[%WorkflowGroup_Managers%]' ]``` -Mendix does not recommend to use the following, because it will NOT be updated automatically when a workflow group is renamed: +Mendix does not recommend to use the following when **Group definition** is set to **Studio Pro**, because it will NOT be updated automatically when a workflow group is renamed: ```[ Name = 'Managers' ]``` + +### Selecting Groups in Runtime Mode {#selecting-groups-in-runtime-mode} + +When **Group definition** is set to **Runtime**, workflow groups are not known at design time, so no XPath tokens are defined for them. Using a workflow group token, such as `[%WorkflowGroup_Managers%]`, results in a consistency error. + +Instead, select the group by its **Name** attribute: + +```[ Name = 'Managers' ]``` + +For XPath constraints in [user task targeting](/refguide/user-task/#workflow-group), Studio Pro offers a quick fix for this consistency error: right-click the error in the **Errors** pane and select **Convert group targeting to attribute targeting**. This replaces each token comparison, such as `id = '[%WorkflowGroup_Managers%]'`, with the corresponding comparison on the **Name** attribute, such as `Name = 'Managers'`. + +{{% alert color="warning" %}} +Selecting a group by name depends on the group name in the database. If an administrator renames or deletes the group at runtime, the XPath constraint no longer selects it. +{{% /alert %}} + +## Changing the Group Definition {#changing-group-definition} + +You can change the **Group definition** setting at any time, but the change has consequences for existing groups and XPath constraints. Studio Pro shows a confirmation dialog that describes these consequences before applying the change. + +### From Studio Pro to Runtime + +When you switch from **Studio Pro** to **Runtime**, the following happens: + +* The workflow groups defined in the app settings are removed from the model. +* The existing **System.WorkflowGroup** objects in the database, including their user memberships, are preserved. However, Studio Pro no longer manages them: they are not updated or removed on (re)deployment, and must be managed at runtime from then on. +* XPath constraints that use workflow group tokens, such as `[%WorkflowGroup_Managers%]`, result in consistency errors. Replace them with constraints on the **Name** attribute, as described in [Selecting Groups in Runtime Mode](#selecting-groups-in-runtime-mode). + +If no workflow groups are defined in the app settings, Studio Pro switches to **Runtime** without asking for confirmation. + +### From Runtime to Studio Pro + +When you switch from **Runtime** to **Studio Pro**, Studio Pro manages the workflow groups again, and they are synchronized on the next (re)deployment. + +{{% alert color="warning" %}} +On the next deployment, every workflow group in the database that is not defined in the app settings in Studio Pro is permanently deleted, including all its user memberships. This cannot be undone. + +To preserve an existing group, define it in the app settings in Studio Pro before you deploy. The **Name** of the group in Studio Pro must exactly match the **Name** attribute of the group in the database. + +Mendix strongly recommends testing this change in a non-production environment before you deploy it to production. +{{% /alert %}} diff --git a/static/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config-runtime.png b/static/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config-runtime.png new file mode 100644 index 0000000000000000000000000000000000000000..681c59d2e022586ec637f1dba6c2a06b7f0ecc58 GIT binary patch literal 9857 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 BT!a7s literal 0 HcmV?d00001 diff --git a/static/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config.png b/static/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config.png index d1a8fa8d17d77f8c08a90d4687ea42ee9f21cfa3..37ef9274f192704fc01863bd2a6e6a2db290b675 100644 GIT binary patch literal 28346 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 F{14)%w+sLP literal 20499 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 From 4771da88fda4e3093c25f31779945581e85b7e66 Mon Sep 17 00:00:00 2001 From: Olufunke Moronfolu Date: Tue, 20 Oct 2026 15:00:18 +0200 Subject: [PATCH 2/2] 11.16. Workflow groups updates --- .../app/app-settings/workflow-tab.md | 2 +- .../workflows/workflow-groups.md | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/content/en/docs/refguide/modeling/app-explorer/app/app-settings/workflow-tab.md b/content/en/docs/refguide/modeling/app-explorer/app/app-settings/workflow-tab.md index b0026efd80e..cfa2fbf3317 100644 --- a/content/en/docs/refguide/modeling/app-explorer/app/app-settings/workflow-tab.md +++ b/content/en/docs/refguide/modeling/app-explorer/app/app-settings/workflow-tab.md @@ -17,7 +17,7 @@ Configure workflow-specific settings for your app in the Workflow tab. **Workflow group(s)** defines groups of users for [user task targeting](/refguide/user-task/#workflow-group). When users are added or removed from the group, the targeted users of a user task change accordingly. For more information, see [Workflow Groups](/refguide/workflow-groups/). -**Group definition** defines where workflow groups are created and managed. When set to **Studio Pro** (default), groups are defined in this tab and synchronized to the database on deployment. When set to **Runtime**, groups are created and deleted in the running app, without redeployment. For more information, see the [Group Definition](/refguide/workflow-groups/#group-definition) section in *Workflow Groups*. +**Group definition** defines where workflow groups are created and managed. When set to **Studio Pro** (default), groups are defined in this tab and synchronized to the database on deployment. When set to **Runtime**, administrators create and delete groups in the running app without redeployment. For more information, see the [Group Definition](/refguide/workflow-groups/#group-definition) section in *Workflow Groups*. ### Optimization diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-groups.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-groups.md index bb93068eee4..025fd6f6b21 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-groups.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-groups.md @@ -2,6 +2,8 @@ title: "Workflow Groups" url: /refguide/workflow-groups/ weight: 40 +description: "Describes how to define and manage workflow groups." + --- ## Introduction @@ -18,7 +20,7 @@ The advantage of targeting users through groups is that it is a dynamic concept: To configure workflow groups, open **App** > **Settings** and select the **Workflow** tab: -{{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config.png" >}} +{{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config.png" alt="The Workflow tab of the App Settings dialog with Group definition set to Studio Pro and a Managers group listed in the workflow groups table">}} ### Group Definition {#group-definition} @@ -31,7 +33,7 @@ The **Group definition** setting determines where workflow groups are created an * **Studio Pro** (default) – Workflow groups are defined in the app settings in Studio Pro and are synchronized to the database when the app is (re)deployed. For more information, see [Defining Groups in Studio Pro](#studio-pro-groups). * **Runtime** – Workflow groups are created and deleted by administrators in the running app, for example, by using the [Workflow Commons](/appstore/modules/workflow-commons/) module. Adding or removing a group does not require a redeployment. In this mode, groups are not defined in Studio Pro. For more information, see [Managing Groups at Runtime](#runtime-groups). -When you change this setting, Studio Pro asks you to confirm the change, because it can affect existing groups and XPath constraints. For more information, see [Changing the Group Definition](#changing-group-definition). +When you change this setting, Studio Pro asks you to confirm the change because it can affect existing groups and XPath constraints. For more information, see [Changing the Group Definition](#changing-group-definition). ### Defining Groups in Studio Pro {#studio-pro-groups} @@ -44,11 +46,11 @@ When **Group definition** is set to **Studio Pro**, a workflow group can be defi When **Group definition** is set to **Runtime**, the list of workflow groups is not shown in the app settings: -{{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config-runtime.png" >}} +{{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-groups/workflow-groups-config-runtime.png" alt="The Workflow tab of the App Settings dialog with Group definition set to Runtime and no workflow groups table">}} Instead, administrators create, edit, and delete workflow groups in the running app. This is useful when the set of groups is not known at design time, or when it changes frequently and you do not want to redeploy the app for every change. -In this mode, the app does not synchronize workflow groups on (re)deployment: groups that exist in the database are neither updated nor removed on start-up. +In this mode, the app does not synchronize workflow groups on (re)deployment. Groups in the database are neither updated nor removed on start-up. The [Workflow Commons](/appstore/modules/workflow-commons/) module provides default pages to manage workflow groups at runtime. You can also build your own pages and microflows that create, change, and delete **System.WorkflowGroup** objects. @@ -64,7 +66,7 @@ Each workflow group corresponds to one **System.WorkflowGroup** object. When **Group definition** is set to **Studio Pro**, the **Name** attribute of the **System.WorkflowGroup** object matches the **Name** property of the workflow group, and the **Description** attribute matches the **Documentation** property of the workflow group. -When **Group definition** is set to **Runtime**, **System.WorkflowGroup** objects are created, changed, and deleted in the running app. +When **Group definition** is set to **Runtime**, administrators create, change, and delete **System.WorkflowGroup** objects in the running app. ### Synchronization @@ -102,7 +104,7 @@ For instance, to select a workflow group called *Managers*, you can use the foll ```[ id = '[%WorkflowGroup_Managers%]' ]``` -Mendix does not recommend to use the following when **Group definition** is set to **Studio Pro**, because it will NOT be updated automatically when a workflow group is renamed: +Mendix recommends against using the following when **Group definition** is set to **Studio Pro**, because it will NOT be updated automatically when a workflow group is renamed: ```[ Name = 'Managers' ]``` @@ -114,7 +116,7 @@ Instead, select the group by its **Name** attribute: ```[ Name = 'Managers' ]``` -For XPath constraints in [user task targeting](/refguide/user-task/#workflow-group), Studio Pro offers a quick fix for this consistency error: right-click the error in the **Errors** pane and select **Convert group targeting to attribute targeting**. This replaces each token comparison, such as `id = '[%WorkflowGroup_Managers%]'`, with the corresponding comparison on the **Name** attribute, such as `Name = 'Managers'`. +For XPath constraints in [user task targeting](/refguide/user-task/#workflow-group), Studio Pro offers a quick fix for this consistency error. Right-click the error in the **Errors** pane and select **Convert group targeting to attribute targeting**. This replaces each token comparison, such as `id = '[%WorkflowGroup_Managers%]'`, with the corresponding comparison on the **Name** attribute, such as `Name = 'Managers'`. {{% alert color="warning" %}} Selecting a group by name depends on the group name in the database. If an administrator renames or deletes the group at runtime, the XPath constraint no longer selects it. @@ -129,14 +131,14 @@ You can change the **Group definition** setting at any time, but the change has When you switch from **Studio Pro** to **Runtime**, the following happens: * The workflow groups defined in the app settings are removed from the model. -* The existing **System.WorkflowGroup** objects in the database, including their user memberships, are preserved. However, Studio Pro no longer manages them: they are not updated or removed on (re)deployment, and must be managed at runtime from then on. +* The existing **System.WorkflowGroup** objects in the database, including their user memberships, are preserved. Studio Pro no longer manages them. They are not updated or removed on (re)deployment, and you must manage them at runtime. * XPath constraints that use workflow group tokens, such as `[%WorkflowGroup_Managers%]`, result in consistency errors. Replace them with constraints on the **Name** attribute, as described in [Selecting Groups in Runtime Mode](#selecting-groups-in-runtime-mode). If no workflow groups are defined in the app settings, Studio Pro switches to **Runtime** without asking for confirmation. ### From Runtime to Studio Pro -When you switch from **Runtime** to **Studio Pro**, Studio Pro manages the workflow groups again, and they are synchronized on the next (re)deployment. +When you switch from **Runtime** to **Studio Pro**, Studio Pro manages the workflow groups again and synchronizes them on the next (re)deployment. {{% alert color="warning" %}} On the next deployment, every workflow group in the database that is not defined in the app settings in Studio Pro is permanently deleted, including all its user memberships. This cannot be undone.