From fb6eab47f317e4f8c4d41c0b1f409ad2b28b95ad Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 13:02:06 +0200 Subject: [PATCH 01/41] Fix documentation copy typos --- .../installation/full/tomcat/configuration.md | 8 ++++---- docs/documentation/introduction/architecture.md | 2 +- .../jta-transaction-integration.md | 2 +- .../data-formats/configuring-spin-integration.md | 2 +- docs/documentation/user-guide/dmn-engine/embed.md | 4 ++-- .../user-guide/process-engine/authorization-service.md | 8 ++++---- .../process-engine/history/history-configuration.md | 2 +- docs/documentation/user-guide/process-engine/scripting.md | 8 ++++---- .../user-guide/process-engine/the-job-executor.md | 8 ++++---- .../documentation/user-guide/task-forms/jsf-task-forms.md | 4 ++-- 10 files changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/documentation/installation/full/tomcat/configuration.md b/docs/documentation/installation/full/tomcat/configuration.md index 3184a3a5..001ed50f 100644 --- a/docs/documentation/installation/full/tomcat/configuration.md +++ b/docs/documentation/installation/full/tomcat/configuration.md @@ -82,9 +82,9 @@ See our user guide for complete documentation on the [LDAP Identity Provider Plu ### HAL Resource Caching -If you use LDAP as Indentity Provider, you should consider [activating caching](../../../reference/rest/overview/hal.md#caching-of-hal-relations) of -Users and Groups in the Operaton webapplication. In order to activate this, add the following -configuration to the `web.xml` file of Operaton webapplication +If you use LDAP as Identity Provider, you should consider [activating caching](../../../reference/rest/overview/hal.md#caching-of-hal-relations) of +Users and Groups in the Operaton web application. In order to activate this, add the following +configuration to the `web.xml` file of Operaton web application (`operaton-webapp-tomcat-$PLATFORM_VERSION.war/WEB-INF/web.xml`): ```xml @@ -284,4 +284,4 @@ You can change the default behavior by adding configuration parameters to the se ``` Please also see the detailed overview about the -[HTTP Header Security configuration settings](../../../webapps/shared-options/header-security.md#how-to-configure). \ No newline at end of file +[HTTP Header Security configuration settings](../../../webapps/shared-options/header-security.md#how-to-configure). diff --git a/docs/documentation/introduction/architecture.md b/docs/documentation/introduction/architecture.md index f608613a..a5b5842c 100644 --- a/docs/documentation/introduction/architecture.md +++ b/docs/documentation/introduction/architecture.md @@ -76,7 +76,7 @@ If neither of the above approaches are implemented in a cluster setup, connectio The process engine [job executor](../user-guide/process-engine/the-job-executor.md) is also clustered and runs on each node. This way, there is no single point of failure as far as the process engine is concerned. The job executor can run in both [homogeneous and heterogeneous clusters](../user-guide/process-engine/the-job-executor.md#cluster-setups). :::note[Time zones] -The are some limitations on [time zone usage in a cluster](../user-guide/process-engine/time-zones.md#cluster-setup). +There are some limitations on [time zone usage in a cluster](../user-guide/process-engine/time-zones.md#cluster-setup). ::: diff --git a/docs/documentation/user-guide/cdi-java-ee-integration/jta-transaction-integration.md b/docs/documentation/user-guide/cdi-java-ee-integration/jta-transaction-integration.md index 7f1de545..f27df147 100644 --- a/docs/documentation/user-guide/cdi-java-ee-integration/jta-transaction-integration.md +++ b/docs/documentation/user-guide/cdi-java-ee-integration/jta-transaction-integration.md @@ -32,7 +32,7 @@ To achieve JTA transaction integration on these containers, users should use the ## Shared Process Engine -The shared process engine distributions for Java EE and Jakarta EE Application Servers (Wildfly, JBoss EAP, IBM WebSphere Application Server, Oracle WebLogic Application Server) +The shared process engine distributions for Java EE and Jakarta EE Application Servers (WildFly, JBoss EAP, IBM WebSphere Application Server, Oracle WebLogic Application Server) provide JTA or Jakarta Transactions integration out of the box. ## Example diff --git a/docs/documentation/user-guide/data-formats/configuring-spin-integration.md b/docs/documentation/user-guide/data-formats/configuring-spin-integration.md index 54ffa41b..7c950822 100644 --- a/docs/documentation/user-guide/data-formats/configuring-spin-integration.md +++ b/docs/documentation/user-guide/data-formats/configuring-spin-integration.md @@ -97,7 +97,7 @@ If you use a shared process engine, Spin is usually installed as a shared librar Depending on the type of application server, `operaton-engine-plugin-spin` should be used with either `operaton-spin-core` or `operaton-spin-dataformat-all`. In the pre-packaged distributions, the following artifacts are used: * Tomcat: `operaton-spin-dataformat-all` is provided in Tomcat's shared library path. Using `operaton-spin-dataformat-all` avoids classpath pollution with Spin's dependencies. For example, this ensures that applications are not forced to use Spin's version of Jackson. -* Wildfly: `operaton-spin-core` (along with `operaton-spin-dataformat-json-jackson` and `operaton-spin-dataformat-xml-dom`) are deployed as modules. Thanks to Wildfly's module system, classpath pollution is not an issue. Whenever a process application is deployed, it receives an implicit module dependency to `operaton-spin-core`. +* WildFly: `operaton-spin-core` (along with `operaton-spin-dataformat-json-jackson` and `operaton-spin-dataformat-xml-dom`) are deployed as modules. Thanks to WildFly's module system, classpath pollution is not an issue. Whenever a process application is deployed, it receives an implicit module dependency to `operaton-spin-core`. If you want to program against the Spin APIs in your process application, you need to declare a dependency to Spin in your application. As Spin is provided by the application server, the following is important: diff --git a/docs/documentation/user-guide/dmn-engine/embed.md b/docs/documentation/user-guide/dmn-engine/embed.md index a45ca0b5..a959cc66 100644 --- a/docs/documentation/user-guide/dmn-engine/embed.md +++ b/docs/documentation/user-guide/dmn-engine/embed.md @@ -50,7 +50,7 @@ This section gives more insights of embedded DMN engine configuration. In case y ### Decision Table Evaluation Listeners -The DMN engine configuration allows you add a custom decision table [evaluation listener](https://docs.operaton.org/reference/latest/javadoc/org/operaton/bpm/dmn/engine/delegate/DmnDecisionTableEvaluationListener.html). +The DMN engine configuration allows you to add a custom decision table [evaluation listener](https://docs.operaton.org/reference/latest/javadoc/org/operaton/bpm/dmn/engine/delegate/DmnDecisionTableEvaluationListener.html). A decision table evaluation listener is notified after a decision table has been evaluated. It receives an evaluation event which contains the result of the evaluation. You can decide if the listener should be notified before or after the default listeners. ```java @@ -87,7 +87,7 @@ configuration.setEngineMetricCollector(metricCollector); ``` ### Decision Evaluation Listeners -The DMN engine configuration allows you add a custom [decision evaluation listener](https://docs.operaton.org/reference/latest/javadoc/org/operaton/bpm/dmn/engine/delegate/DmnDecisionEvaluationListener.html). A decision evaluation listener is +The DMN engine configuration allows you to add a custom [decision evaluation listener](https://docs.operaton.org/reference/latest/javadoc/org/operaton/bpm/dmn/engine/delegate/DmnDecisionEvaluationListener.html). A decision evaluation listener is notified after a decision with all the required decisions has been evaluated. It receives an evaluation event which contains the result of the evaluation. You can decide if the listener should be notified before or after the default listeners. diff --git a/docs/documentation/user-guide/process-engine/authorization-service.md b/docs/documentation/user-guide/process-engine/authorization-service.md index 774bc3be..a006c8d9 100644 --- a/docs/documentation/user-guide/process-engine/authorization-service.md +++ b/docs/documentation/user-guide/process-engine/authorization-service.md @@ -20,7 +20,7 @@ Not every Operaton setup needs to enable authorization. In many scenarios, Opera Situations in which authorization is required: -* Operaton Rest API is made accessible to users who should not have full access, even after authentication. +* Operaton REST API is made accessible to users who should not have full access, even after authentication. * Operaton Webapplication is made accessible to users who should not have full access, even after authentication. * Other situations in which an untrusted user can directly construct the queries and commands executed on the process engine. @@ -35,7 +35,7 @@ Assume that you have the following authorization requirement: *As a regular user If the engine is embedded into a Java application, the application can easily ensure this by restricting the task query on the `assignee` property. The application can guarantee this since the Operaton API is not directly exposed to the user. -By contrast, if the Operaton Rest API is directly exposed over the network to a Javascript application, then a malicious user, once authenticated, can send a request to the server querying all tasks, even the ones that are not assigned to this user. In this case, authorization needs to be turned on to ensure the user only sees the tasks which he is authorized to see, regardless of the query parameters. +By contrast, if the Operaton REST API is directly exposed over the network to a JavaScript application, then a malicious user, once authenticated, can send a request to the server querying all tasks, even the ones that are not assigned to this user. In this case, authorization needs to be turned on to ensure the user only sees the tasks which he is authorized to see, regardless of the query parameters. ## Basic Principles @@ -862,7 +862,7 @@ Operaton has no explicit concept of "administrator" beyond it being a user who h When downloading the Operaton distribution, the invoice example application creates a group with id `operaton-admin` and grants all authorizations on all resources to this group. -In absense of the demo application, this task is performed by the [Operaton Admin Web Application](../../webapps/admin/user-management.md#initial-user-setup). If the Operaton webapplication is started for the first time and no user exists in the database, it asks you to perform the "initial setup". In this process, the `operaton-admin` group is created and granted all permissions on all resources. +In absence of the demo application, this task is performed by the [Operaton Admin Web Application](../../webapps/admin/user-management.md#initial-user-setup). If the Operaton web application is started for the first time and no user exists in the database, it asks you to perform the "initial setup". In this process, the `operaton-admin` group is created and granted all permissions on all resources. :::note[LDAP] The group "operaton-admin" is not created when using LDAP (since LDAP is only accessed in a read-only way). Also see the below section on the administrator authorization plugin. @@ -893,7 +893,7 @@ The following is an example of how to configure the administrator authorization The plugin will make sure that administrator authorizations (ALL permissions) are granted on all resources whenever the process engine is started. :::note - It is not necessary to configure all LDAP users and groups which should have administrator authorization. It is usually enough to configure a single user and use that user to log into the webapplication and create additional authorizations using the User Interface. + It is not necessary to configure all LDAP users and groups which should have administrator authorization. It is usually enough to configure a single user and use that user to log into the web application and create additional authorizations using the User Interface. ::: Complete list of configuration properties: diff --git a/docs/documentation/user-guide/process-engine/history/history-configuration.md b/docs/documentation/user-guide/process-engine/history/history-configuration.md index 780db8ef..400565f0 100644 --- a/docs/documentation/user-guide/process-engine/history/history-configuration.md +++ b/docs/documentation/user-guide/process-engine/history/history-configuration.md @@ -51,7 +51,7 @@ ProcessEngine processEngine = ProcessEngineConfiguration .buildProcessEngine(); ``` -It can also be set using Spring XML or a deployment descriptor (bpm-platform.xml, processes.xml). When using the Operaton Wildfly Subsystem, the property can be set through Wildfly configuration (standalone.xml, domain.xml). +It can also be set using Spring XML or a deployment descriptor (bpm-platform.xml, processes.xml). When using the Operaton WildFly Subsystem, the property can be set through WildFly configuration (standalone.xml, domain.xml). ```xml audit diff --git a/docs/documentation/user-guide/process-engine/scripting.md b/docs/documentation/user-guide/process-engine/scripting.md index 2c4d79c3..5c2857fa 100644 --- a/docs/documentation/user-guide/process-engine/scripting.md +++ b/docs/documentation/user-guide/process-engine/scripting.md @@ -300,7 +300,7 @@ By default, compilation of scripts is enabled. If you need to disable script com If the process engine configuration flag named `enableFetchScriptEngineFromProcessApplication` is set to true, it is also possible to load Script Engines from the classpath of the process application. For that, the Script Engine can be packaged as a library within the process application. It is also possible to install the Script Engine globally. -In case the Script Engine module should be installed globally and Wildfly is used, it is necessary to add a module dependency to the Script Engine. This can be done by adding a `jboss-deployment-structure.xml` to the process application, e.g.,: +In case the Script Engine module should be installed globally and WildFly is used, it is necessary to add a module dependency to the Script Engine. This can be done by adding a `jboss-deployment-structure.xml` to the process application, e.g.,: ```xml @@ -327,7 +327,7 @@ We provide the following default configurations for supported script engines bef GraalVM JavaScript - Configured to allow host acces and host class lookup by setting polyglot.js.allowHostAccess and + Configured to allow host access and host class lookup by setting polyglot.js.allowHostAccess and polyglot.js.allowHostClassLookup to true. @@ -364,8 +364,8 @@ Consult the development guides of the script engine you want to configure for fu Note that the supported options can differ between versions of the script engine. You can set system properties either programmatically through `System.setProperty(parameter, value)` or as JVM arguments, -for example upon application start on command line via `-Dparameter=value`. Most application servers like Wildfly, -Tomcat, Websphere, and Weblogic support providing JVM arguments via environment variables `JAVA_OPTS` or `JAVA_OPTIONS`. +for example upon application start on command line via `-Dparameter=value`. Most application servers like WildFly, +Tomcat, WebSphere, and WebLogic support providing JVM arguments via environment variables `JAVA_OPTS` or `JAVA_OPTIONS`. Consult your application server's documentation to learn how to pass on JVM arguments. Operaton Run supports setting JVM arguments via the `JAVA_OPTS` environment variable as well. diff --git a/docs/documentation/user-guide/process-engine/the-job-executor.md b/docs/documentation/user-guide/process-engine/the-job-executor.md index 1b1eeab0..29f9dd92 100644 --- a/docs/documentation/user-guide/process-engine/the-job-executor.md +++ b/docs/documentation/user-guide/process-engine/the-job-executor.md @@ -648,16 +648,16 @@ When running Operaton in a cluster, there is a distinction between *homogeneous* ![Example img](/img/documentation/user-guide/process-engine/homogeneous-cluster.png)Homogeneous Cluster -In the *heterogeneous* case, this is not given, meaning that some process applications are only deployed to a part of the nodes. +In the *heterogeneous* case, this is not given, meaning that some process applications are only deployed to a part of the nodes. -![Example img](/img/documentation/user-guide/process-engine/heterogeneous-cluster.png)Heterogenous Cluster +![Example img](/img/documentation/user-guide/process-engine/heterogeneous-cluster.png)Heterogeneous Cluster ### Job Execution in Heterogeneous Clusters -A heterogeneous cluster setup as described above poses additional challenges to the job executor. Both platforms declare the same engine, i.e. they run against the same database. This means that jobs will be inserted into the same table. However, in the default configuration the job acquisition thread of node 1 will lock any executable jobs of that table and submit them to the local job execution pool. This means that jobs created in the context of process application B (so on node 2) may be executed on node 1 and vice versa. As the job execution may involve classes that are part of B's deployment, you are likely going to see a `ClassNotFoundExeception` or any of the likes. +A heterogeneous cluster setup as described above poses additional challenges to the job executor. Both platforms declare the same engine, i.e. they run against the same database. This means that jobs will be inserted into the same table. However, in the default configuration the job acquisition thread of node 1 will lock any executable jobs of that table and submit them to the local job execution pool. This means that jobs created in the context of process application B (so on node 2) may be executed on node 1 and vice versa. As the job execution may involve classes that are part of B's deployment, you are likely going to see a `ClassNotFoundException` or any of the likes. -To prevent the job acquisition on node 1 from picking jobs that *belong* to node 2, the process engine can be configured as *deployment aware*, by the setting following property in the process engine configuration: +To prevent the job acquisition on node 1 from picking jobs that *belong* to node 2, the process engine can be configured as *deployment aware* by setting the following property in the process engine configuration: ```xml diff --git a/docs/documentation/user-guide/task-forms/jsf-task-forms.md b/docs/documentation/user-guide/task-forms/jsf-task-forms.md index 07d26003..ce1027df 100644 --- a/docs/documentation/user-guide/task-forms/jsf-task-forms.md +++ b/docs/documentation/user-guide/task-forms/jsf-task-forms.md @@ -236,7 +236,7 @@ We use [Twitter Bootstrap](http://getbootstrap.com/) in our tasklist - so best a ![Example img](/img/documentation/user-guide/task-forms/tasklist-forms-layouted-start.png)Tasklist Start Forms layouted -To include CSS and Javascript libraries in your project you can add them to your maven project as dependencies. +To include CSS and JavaScript libraries in your project you can add them to your Maven project as dependencies. ```xml @@ -263,7 +263,7 @@ To use them, add tags like the following ones to your JSF page. If you have seve - + ``` From e7f294b9c79635aa4f05fc72c833796ce438641c Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 13:05:00 +0200 Subject: [PATCH 02/41] Normalize remaining copy terms --- docs/documentation/reference/rest/overview/embeddability.md | 2 +- docs/documentation/webapps/admin/user-management.md | 2 +- docs/documentation/webapps/shared-options/cookie-security.md | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/documentation/reference/rest/overview/embeddability.md b/docs/documentation/reference/rest/overview/embeddability.md index e208daa0..c4d378d1 100644 --- a/docs/documentation/reference/rest/overview/embeddability.md +++ b/docs/documentation/reference/rest/overview/embeddability.md @@ -73,7 +73,7 @@ The configuration class `JacksonConfigurator` is required to correctly configure You may also have to add the following Jackson providers: `com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider`, `org.operaton.bpm.engine.rest.exception.JsonMappingExceptionHandler` and `org.operaton.bpm.engine.rest.exception.JsonParseExceptionHandler`. Depending on the runtime environment, this may not be necessary. -On Wildfly, these should be automatically added as an implicit module dependency. +On WildFly, these should be automatically added as an implicit module dependency. For proper exception responses of the format as described in the [Introduction](../../../reference/rest/overview/index.md), it is necessary to include `RestExceptionHandler`. `ProcessEngineExceptionHandler` is used to translate any exception thrown by the diff --git a/docs/documentation/webapps/admin/user-management.md b/docs/documentation/webapps/admin/user-management.md index e95270ac..3f600668 100644 --- a/docs/documentation/webapps/admin/user-management.md +++ b/docs/documentation/webapps/admin/user-management.md @@ -33,7 +33,7 @@ You can also access the My Profile menu from any of the web applications by clic ![Example img](/img/documentation/webapps/admin/admin-initial-user-setup.png)Initial User Setup -If no administrator account is configured, a setup screen will be shown on first access of a process engine through Cockpit or Tasklist . This screen allows you to configure an initial user account with administrator rights. +If no administrator account is configured, a setup screen will be shown on first access of a process engine through Cockpit or Tasklist. This screen allows you to configure an initial user account with administrator rights. Administrator users are not global but per engine. Thus, you will need to set up an admin user for each separate engine. If you installed the default Operaton webapps and demo content, Operaton was configured with several demo users. The default admin user can be accessed with the following credentials: diff --git a/docs/documentation/webapps/shared-options/cookie-security.md b/docs/documentation/webapps/shared-options/cookie-security.md index 5ea334ba..4bc0a32f 100644 --- a/docs/documentation/webapps/shared-options/cookie-security.md +++ b/docs/documentation/webapps/shared-options/cookie-security.md @@ -63,7 +63,7 @@ In the following [pre-packaged distributions](../../installation/full/index.md), * WildFly * IBM WebSphere -* Oracle Weblogic +* Oracle WebLogic For all other distributions, the SameSite flag is enabled by default. @@ -99,7 +99,7 @@ The following table shows the default configuration of the Web applications. \* The SameSite property is not supported for IBM WebSphere and disabled by default for both cookies. -The Session Cookie also has no SameSite attribute by default on WildFly and Oracle Weblogic. +The Session Cookie also has no SameSite attribute by default on WildFly and Oracle WebLogic. :::note[SameSite & Firefox] Firefox prevents sending the Cookie to the server for all subsequent requests until the next restart ... From 078fd5ce2185633123e92a14cae7b30f2c0f44ef Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 13:09:38 +0200 Subject: [PATCH 03/41] Fix additional documentation typos --- docs/documentation/installation/database-schema.md | 4 ++-- docs/documentation/reference/bpmn20/tasks/user-task.md | 4 ++-- .../reference/cmmn11/concepts/entry-exit-criteria.md | 2 +- docs/documentation/reference/cmmn11/concepts/plan-items.md | 2 +- .../reference/cmmn11/markers/repetition-rule.md | 6 +++--- docs/documentation/reference/cmmn11/milestone.md | 2 +- docs/documentation/reference/spin/json/01-reading-json.md | 2 +- docs/documentation/reference/spin/xml/01-reading-xml.md | 2 +- .../user-guide/process-engine/authorization-service.md | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/documentation/installation/database-schema.md b/docs/documentation/installation/database-schema.md index 5ec2cfbb..85120197 100644 --- a/docs/documentation/installation/database-schema.md +++ b/docs/documentation/installation/database-schema.md @@ -22,7 +22,7 @@ Operaton supports the following ways of installing the database schema: * Use the provided SQL scripts with the tools related to your database for a fully manual installation and update. A manual procedure allows you to fully control the SQL statements that are executed on your database instance and to adjust those statements to your needs if necessary. :::note[Isolation level] -READ COMMITED is the required isolation level for database systems to run Operaton with. +READ COMMITTED is the required isolation level for database systems to run Operaton with. You may have to change the default setting on your database when installing Operaton. For more information see the documentation on [isolation levels](../user-guide/process-engine/database/database-configuration.md#isolation-level-configuration). ::: @@ -171,4 +171,4 @@ If you need to apply multiple minor versions, you MUST execute the database alte ### Patch level update -Patch level updates will be delivered once applicable patches are issued, since no such updates have been needed so far. \ No newline at end of file +Patch level updates will be delivered once applicable patches are issued, since no such updates have been needed so far. diff --git a/docs/documentation/reference/bpmn20/tasks/user-task.md b/docs/documentation/reference/bpmn20/tasks/user-task.md index 6e0f25f4..a48f03ca 100644 --- a/docs/documentation/reference/bpmn20/tasks/user-task.md +++ b/docs/documentation/reference/bpmn20/tasks/user-task.md @@ -166,7 +166,7 @@ This is exactly the same as using a potentialOwner construct as defined above. N ### Assignment based on Data and Service Logic -In the above examples, constant values such as `kermit` or `management` are used. But what if the exact name of an assignee or a candidate group is not known at design time? And what if the assignee is not a constant value but depends on data such as _"The person who started the process"_? Maybe the assigment logic is also more complex and needs to access an external data source such as LDAP to implement a lookup such as _"The manager of the employee who started the process"_. +In the above examples, constant values such as `kermit` or `management` are used. But what if the exact name of an assignee or a candidate group is not known at design time? And what if the assignee is not a constant value but depends on data such as _"The person who started the process"_? Maybe the assignment logic is also more complex and needs to access an external data source such as LDAP to implement a lookup such as _"The manager of the employee who started the process"_. Such things can be implemented using assignment expressions or task listeners. @@ -321,7 +321,7 @@ The variables are optional. They will be passed to the execution if the escalati ## Completion -Complete is part of the [task lifecycle](../../../webapps/tasklist/task-lifecycle.md) operation along with create, set candidate, assign, etc. (allow available via Java API). Complete a task by passing variables, optionally the process variables can be retrieved:: +Complete is part of the [task lifecycle](../../../webapps/tasklist/task-lifecycle.md) operation along with create, set candidate, assign, etc. (also available via Java API). Complete a task by passing variables; optionally, the process variables can be retrieved: ```java taskService.complete(taskId, variables); diff --git a/docs/documentation/reference/cmmn11/concepts/entry-exit-criteria.md b/docs/documentation/reference/cmmn11/concepts/entry-exit-criteria.md index cd88c726..f0a2d5b6 100644 --- a/docs/documentation/reference/cmmn11/concepts/entry-exit-criteria.md +++ b/docs/documentation/reference/cmmn11/concepts/entry-exit-criteria.md @@ -33,7 +33,7 @@ Similar changes in the state of a case instance may be driven by events occurrin - + ``` Similarly, `PlanItem_HumanTask_1` with an exit criterion looks as follows: diff --git a/docs/documentation/reference/cmmn11/concepts/plan-items.md b/docs/documentation/reference/cmmn11/concepts/plan-items.md index 836a0180..8cc2430e 100644 --- a/docs/documentation/reference/cmmn11/concepts/plan-items.md +++ b/docs/documentation/reference/cmmn11/concepts/plan-items.md @@ -25,7 +25,7 @@ As an example, consider the following fragment of a case definition: - + ``` This model contains one plan item definition, namely the `humanTask` element. This definition is referenced by two plan items, `PlanItem_HumanTask_1` and `PlanItem_HumanTask_2`. When a new case of this model is created, there will be two human task instances, one for each plan item. The plan item definition is the single point at which the human task is configured. Thus, the assignee specification by the attribute `operaton:assignee="kermit"` is valid for both plan items. diff --git a/docs/documentation/reference/cmmn11/markers/repetition-rule.md b/docs/documentation/reference/cmmn11/markers/repetition-rule.md index a037d6fa..3f127719 100644 --- a/docs/documentation/reference/cmmn11/markers/repetition-rule.md +++ b/docs/documentation/reference/cmmn11/markers/repetition-rule.md @@ -82,7 +82,7 @@ The corresponding XML representation could look like this: - + ``` This case contains a human task *A*. Task *A* has a repetition rule indicating that the task is repeatable as long as the variable `score` is less than `50`. @@ -122,7 +122,7 @@ The transition in which the repetition rule is evaluated can be changed by an Op - + ``` This means that the repetition rule is evaluated in the transition `disable`. So, whenever an instance of the defined human task gets disabled, the repetition rule is evaluated and if this rule evaluates to `true`, a new instance is created. As a consequence, the repetition rule is not evaluated when an instance transitions in state `COMPLETED` anymore. @@ -172,7 +172,7 @@ The corresponding XML representation could look like this: - + ``` This case contains two human tasks *A* and *B* that are connected by a sentry. Task *B* gets `ENABLED` if any conditions are fulfilled and task *A* gets `ENABLED` if an instance of `B` completes. Furthermore both tasks are repeatable as long as the variable `score` is less than `50`. diff --git a/docs/documentation/reference/cmmn11/milestone.md b/docs/documentation/reference/cmmn11/milestone.md index 5235b037..f4ae4dcb 100644 --- a/docs/documentation/reference/cmmn11/milestone.md +++ b/docs/documentation/reference/cmmn11/milestone.md @@ -41,7 +41,7 @@ When referenced in a case plan, a milestone gets completed as soon as its entry - + ``` In this case, the milestone will complete as soon as as the human task completes. diff --git a/docs/documentation/reference/spin/json/01-reading-json.md b/docs/documentation/reference/spin/json/01-reading-json.md index f891b8db..7c73b6d3 100644 --- a/docs/documentation/reference/spin/json/01-reading-json.md +++ b/docs/documentation/reference/spin/json/01-reading-json.md @@ -23,7 +23,7 @@ import static org.operaton.spin.DataFormats.*; SpinJsonNode json = S("{\"customer\": \"Kermit\"}", json()); ``` -The second paramter `json()` hints Spin to use the JSON data format for parsing the JSON. +The second parameter `json()` hints Spin to use the JSON data format for parsing the JSON. Alternatively, you can directly use the `JSON(...)` function: diff --git a/docs/documentation/reference/spin/xml/01-reading-xml.md b/docs/documentation/reference/spin/xml/01-reading-xml.md index 32589041..755b9b8b 100644 --- a/docs/documentation/reference/spin/xml/01-reading-xml.md +++ b/docs/documentation/reference/spin/xml/01-reading-xml.md @@ -22,7 +22,7 @@ import static org.operaton.spin.DataFormats.*; SpinXmlElement xml = S("", xml()); ``` -The second paramter `xml()` hints Spin to use the XML data format for parsing the XML. +The second parameter `xml()` hints Spin to use the XML data format for parsing the XML. Alternatively, you can directly use the `XML(...)` function: diff --git a/docs/documentation/user-guide/process-engine/authorization-service.md b/docs/documentation/user-guide/process-engine/authorization-service.md index a006c8d9..9012f3e1 100644 --- a/docs/documentation/user-guide/process-engine/authorization-service.md +++ b/docs/documentation/user-guide/process-engine/authorization-service.md @@ -958,7 +958,7 @@ auth.setResource("filter"); auth.setResourceId("2313"); // a resource can also be a process definition auth.setResource(Resources.PROCESS_INSTANCE); -// the process defintion key is the resource id +// the process definition key is the resource id auth.setResourceId("invoice"); // finally the permissions to access that resource can be assigned: From 021a6c152454d9d31188e175e436ad57800384f9 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 13:13:08 +0200 Subject: [PATCH 04/41] Fix minor documentation copy issues --- .../process-engine/database/database-configuration.md | 2 +- docs/documentation/user-guide/process-engine/time-zones.md | 2 +- docs/documentation/webapps/cockpit/batch/batch-operation.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/documentation/user-guide/process-engine/database/database-configuration.md b/docs/documentation/user-guide/process-engine/database/database-configuration.md index 2d836a90..4fe8a1fc 100644 --- a/docs/documentation/user-guide/process-engine/database/database-configuration.md +++ b/docs/documentation/user-guide/process-engine/database/database-configuration.md @@ -4,7 +4,7 @@ title: 'Database Configuration' sidebar_position: 20 menu: main: - identifier: "user-guide-process-engine-database-configuraton" + identifier: "user-guide-process-engine-database-configuration" parent: "user-guide-process-engine-database" --- diff --git a/docs/documentation/user-guide/process-engine/time-zones.md b/docs/documentation/user-guide/process-engine/time-zones.md index e41253e1..81b324ad 100644 --- a/docs/documentation/user-guide/process-engine/time-zones.md +++ b/docs/documentation/user-guide/process-engine/time-zones.md @@ -36,4 +36,4 @@ It is possible to use the Operaton Web Applications in different timezones. All In case the process engine is running in a [cluster](../../introduction/architecture.md#clustering-model), all cluster nodes must run in one and the same time zone. In case cluster nodes exist in different time zones, -correct behaviour when operating with DateTime values can not be guaranteed. \ No newline at end of file +correct behaviour when operating with DateTime values cannot be guaranteed. diff --git a/docs/documentation/webapps/cockpit/batch/batch-operation.md b/docs/documentation/webapps/cockpit/batch/batch-operation.md index 4efa1471..ca456d25 100644 --- a/docs/documentation/webapps/cockpit/batch/batch-operation.md +++ b/docs/documentation/webapps/cockpit/batch/batch-operation.md @@ -31,7 +31,7 @@ It is possible to execute the following batch operations: - Set a Removal Time to Historic Batches. - Correlate Message. -After selecting the operation, fields may appear with additional data that is either optional or required to perform the operation. When canceling running process instances, you can optionally select to skip custom listeners and provide a cancelation reason. +After selecting the operation, fields may appear with additional data that is either optional or required to perform the operation. When canceling running process instances, you can optionally select to skip custom listeners and provide a cancelation reason. Next, you can define the instances affected by the batch operation. Initially, all instances are displayed. You can use the filter bar above the list of instances to filter the displayed instances. You can select specific instances or click on the **Query** radio button to select all instances matching the filter. From 8f2eda8beddf4293f99a3bb2d3576fdc43aceb55 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 13:16:55 +0200 Subject: [PATCH 05/41] Polish additional copy wording --- .../reference/bpmn20/subprocesses/transaction-subprocess.md | 2 +- .../user-guide/model-api/bpmn-model-api/delegation-code.md | 2 +- .../user-guide/process-engine/process-instance-restart.md | 4 ++-- .../user-guide/process-engine/the-job-executor.md | 4 ++-- docs/documentation/webapps/cockpit/bpmn/dashboard.md | 3 +-- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md b/docs/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md index bf919847..e5dfd9c4 100644 --- a/docs/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md +++ b/docs/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md @@ -63,7 +63,7 @@ To sum it up: while ACID transactions offer a generic solution to such problems The BPMN specification requires that the process engine reacts to events issued by the underlying transaction protocol and, in case a transaction is canceled, if a cancel event occurs, in the underlying protocol. As an embeddable engine, the Operaton engine currently does not support this. (For some ramifications of this, see the paragraph on consistency below.) ::: -Consistency on top of ACID transactions and optimistic concurrency: A BPMN transaction guarantees consistency in the sense that either all activities compete successfully, or, if some activity cannot be performed, the effects of all other successful activities are compensated. So either way, we end up in a consistent state. However, it is important to recognize that in Operaton, the consistency model for BPMN transactions is superposed on top of the consistency model for process execution. The Operaton engine executes processes in a transactional way. Concurrency is addressed using optimistic locking. In the engine BPMN error, cancel and compensation events are built on top of the same ACID transactions and optimistic locking. For example, a cancel end event can only trigger compensation if it is actually reached. It is not reached if some undeclared exception is thrown by a service task before. The effects of a compensation handler can not be committed if some other participant in the underlying ACID transaction sets the transaction to the state rollback-only. Also, when two concurrent executions reach a cancel end event, compensation might be triggered twice and fail with an optimistic locking exception. All of this is to say that when implementing BPMN transactions in the core engine, the same set of rules apply as when implementing "ordinary" processes and subprocesses. So, to effectively guarantee consistency, it is important to implement processes in a way that takes the optimistic, transactional execution model into consideration. For further information, see the documentation on [optimistic locking](../../../user-guide/process-engine/transactions-in-processes.md#optimistic-locking). +Consistency on top of ACID transactions and optimistic concurrency: A BPMN transaction guarantees consistency in the sense that either all activities complete successfully, or, if some activity cannot be performed, the effects of all other successful activities are compensated. So either way, we end up in a consistent state. However, it is important to recognize that in Operaton, the consistency model for BPMN transactions is superposed on top of the consistency model for process execution. The Operaton engine executes processes in a transactional way. Concurrency is addressed using optimistic locking. In the engine BPMN error, cancel and compensation events are built on top of the same ACID transactions and optimistic locking. For example, a cancel end event can only trigger compensation if it is actually reached. It is not reached if some undeclared exception is thrown by a service task before. The effects of a compensation handler cannot be committed if some other participant in the underlying ACID transaction sets the transaction to the state rollback-only. Also, when two concurrent executions reach a cancel end event, compensation might be triggered twice and fail with an optimistic locking exception. All of this is to say that when implementing BPMN transactions in the core engine, the same set of rules apply as when implementing "ordinary" processes and subprocesses. So, to effectively guarantee consistency, it is important to implement processes in a way that takes the optimistic, transactional execution model into consideration. For further information, see the documentation on [optimistic locking](../../../user-guide/process-engine/transactions-in-processes.md#optimistic-locking). ## Operaton Extensions diff --git a/docs/documentation/user-guide/model-api/bpmn-model-api/delegation-code.md b/docs/documentation/user-guide/model-api/bpmn-model-api/delegation-code.md index 42007e36..031befde 100644 --- a/docs/documentation/user-guide/model-api/bpmn-model-api/delegation-code.md +++ b/docs/documentation/user-guide/model-api/bpmn-model-api/delegation-code.md @@ -35,7 +35,7 @@ public class ExampleServiceTask implements JavaDelegate { If your class implements the `org.operaton.bpm.engine.delegate.ExecutionListener` interface, you can access the BPMN model instance and the current flow element. As an Execution Listener can be added to several elements like process, events, tasks, gateways -and sequence flows, it can not be guaranteed which type the flow element will be. +and sequence flows, it cannot be guaranteed which type the flow element will be. ```java public class ExampleExecutionListener implements ExecutionListener { diff --git a/docs/documentation/user-guide/process-engine/process-instance-restart.md b/docs/documentation/user-guide/process-engine/process-instance-restart.md index a3ce7555..3d440fde 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-restart.md +++ b/docs/documentation/user-guide/process-engine/process-instance-restart.md @@ -158,7 +158,7 @@ runtimeService.restartProcessInstances(processDefinition.getId()) ``` -The initial set of variables can not be set if the historic process instance has no unique start activity. In that case, no variables are taken over. +The initial set of variables cannot be set if the historic process instance has no unique start activity. In that case, no variables are taken over. ### Omitting the Business Key of a Historic Process Instance @@ -240,4 +240,4 @@ If a restart job fails, it is retried by the job executor and, if no retries are left, an incident is created. In this case, manual action is necessary to complete the batch restart: The job's retries can be incremented or the job can be deleted. Deletion cancels restart of the specific instance but -does not affect the batch beyond that. \ No newline at end of file +does not affect the batch beyond that. diff --git a/docs/documentation/user-guide/process-engine/the-job-executor.md b/docs/documentation/user-guide/process-engine/the-job-executor.md index 29f9dd92..534083ee 100644 --- a/docs/documentation/user-guide/process-engine/the-job-executor.md +++ b/docs/documentation/user-guide/process-engine/the-job-executor.md @@ -374,7 +374,7 @@ To prevent this, you can specify a priority range for the job executor by settin To avoid job starvation, make sure to have no gaps between Job Executor priority ranges. If, for example, Job Executor A has a priority range of 0 to 100 and Job Executor B executes jobs from priority 200 to `Long.MAX_VALUE` any job that receives a priority of 101 to 199 will never be executed. Job starvation can also occur with `batch jobs` and `history cleanup jobs` as both types of jobs also receive priorities (default: `0`). You can configure them via their respective properties: `batchJobPriority` and `historyCleanupJobPriority`. -This feature is particularly useful if you want to separate multiple types of jobs from each other. For example, short-running, urgent jobs with high priority and long-running jobs that are not urgent but should finish eventually. Setting up a Job Executor priority range for both types will ensure that long-running jobs can not block urgent ones. +This feature is particularly useful if you want to separate multiple types of jobs from each other. For example, short-running, urgent jobs with high priority and long-running jobs that are not urgent but should finish eventually. Setting up a Job Executor priority range for both types will ensure that long-running jobs cannot block urgent ones. ### Backoff Strategy The Job Executor uses a backoff strategy to avoid acquisition conflicts in clusters and to reduce the database load when no jobs are due. The second point may result in a delay between job creation and job execution as the job acquisition by default doubles the delay to the next acquisition run. @@ -525,7 +525,7 @@ Here is an example of a global process engine configuration: ``` -The retry times would be three and the behaviour for this example would be the following: +The retry sequence contains three retry times and the behaviour for this example would be the following: * A job fails for the first time: the job will be retried in 10 minutes (PT10M is applied). * A job fails for the second time: the job will be retried in 17 minutes (PT17M is applied). diff --git a/docs/documentation/webapps/cockpit/bpmn/dashboard.md b/docs/documentation/webapps/cockpit/bpmn/dashboard.md index 84556566..a1f6490c 100644 --- a/docs/documentation/webapps/cockpit/bpmn/dashboard.md +++ b/docs/documentation/webapps/cockpit/bpmn/dashboard.md @@ -52,7 +52,7 @@ To add additional columns to the details of the search results, click on the 'Ad Furthermore, you can copy a link to the current search query to your clipboard by clicking on the button and you can save search queries to your local browser storage by clicking on the button and inserting a name in the drop down menu that appears. You can then retrieve the search query by clicking on the button and selecting the chosen name in the drop down menu. -You can always either search for process instances or for incidents. When you add a parameter for an incident search, you can not add a second parameter which would search for a process instance and vice versa. +You can always either search for process instances or for incidents. When you add a parameter for an incident search, you cannot add a second parameter which would search for a process instance and vice versa. You can perform batch operation on process instances matching search criteria by clicking "Batch operation" button. @@ -144,4 +144,3 @@ start editing by clicking on the value. You can expand the value in a modal dial Each process definition in the dashboard has a delete action. This action allows to delete all versions of a process definition. When proceeding with this action, you can always choose to enable/disable skipping custom listeners. However, if the process definition has process instances running, enabling the cascading flag becomes mandatory. - From 1681cf17358b8b03a9132ad23220faae29ace88a Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 13:31:04 +0200 Subject: [PATCH 06/41] Fix process engine copy wording --- .../user-guide/process-engine/process-engine-api.md | 2 +- .../user-guide/process-engine/transactions-in-processes.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/documentation/user-guide/process-engine/process-engine-api.md b/docs/documentation/user-guide/process-engine/process-engine-api.md index 704e9329..77c6fc2e 100644 --- a/docs/documentation/user-guide/process-engine/process-engine-api.md +++ b/docs/documentation/user-guide/process-engine/process-engine-api.md @@ -247,7 +247,7 @@ The Java Query API is exposed as REST service as well, see the [REST documentati ### Native Queries -Sometimes you need more powerful queries, e.g., queries using an OR operator or restrictions you can not express using the Query API. For these cases, we introduced native queries, which allow you to write your own SQL queries. The return type is defined by the Query object you use and the data is mapped into the correct objects, e.g., Task, ProcessInstance, Execution, etc. Since the query will be fired at the database you have to use table and column names as they are defined in the [database schema](../process-engine/database/database-schema.md). This requires some knowledge about the internal data structure and it is recommended to use native queries with care. The table names can be retrieved via the API to keep the dependency as small as possible. +Sometimes you need more powerful queries, e.g., queries using an OR operator or restrictions you cannot express using the Query API. For these cases, we introduced native queries, which allow you to write your own SQL queries. The return type is defined by the Query object you use and the data is mapped into the correct objects, e.g., Task, ProcessInstance, Execution, etc. Since the query will be fired at the database you have to use table and column names as they are defined in the [database schema](../process-engine/database/database-schema.md). This requires some knowledge about the internal data structure and it is recommended to use native queries with care. The table names can be retrieved via the API to keep the dependency as small as possible. ```java List tasks = taskService.createNativeTaskQuery() diff --git a/docs/documentation/user-guide/process-engine/transactions-in-processes.md b/docs/documentation/user-guide/process-engine/transactions-in-processes.md index 5d047ead..9697dbcd 100644 --- a/docs/documentation/user-guide/process-engine/transactions-in-processes.md +++ b/docs/documentation/user-guide/process-engine/transactions-in-processes.md @@ -36,7 +36,7 @@ Keep in mind that [Asynchronous Continuations](#asynchronous-continuations) can ## Transaction Boundaries -The transition from one such stable state to another stable state is always part of a single transaction, meaning that it succeeds as a whole or is rolled back on any kind of exception occuring during its execution. This is illustrated in the following example: +The transition from one such stable state to another stable state is always part of a single transaction, meaning that it succeeds as a whole or is rolled back on any kind of exception occurring during its execution. This is illustrated in the following example: ![Example img](/img/documentation/user-guide/process-engine/transactions-1.png)Transaction Boundaries From 2fef0ba9d3a9617f54b1b51f27202a8fe3058792 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 13:40:34 +0200 Subject: [PATCH 07/41] Fix BPMN example label typo --- .../reference/bpmn20/events/bpmn/event-conditional.bpmn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn b/docs/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn index 6e64c468..372522ef 100644 --- a/docs/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn +++ b/docs/documentation/reference/bpmn20/events/bpmn/event-conditional.bpmn @@ -2,7 +2,7 @@ - + SequenceFlow_1wjobn4 From dd716846f14e2b1fcef9b3589db8f628235d2cb5 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 14:16:36 +0200 Subject: [PATCH 08/41] Fix additional documentation copy issues --- docs/documentation/reference/bpmn20/tasks/script-task.md | 2 +- .../reference/dmn/decision-table/hit-policy.md | 4 ++-- docs/documentation/reference/rest/overview/variables.md | 6 +++--- .../user-guide/quarkus-integration/configuration.md | 8 ++++---- docs/documentation/webapps/cockpit/deployment-view.md | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/documentation/reference/bpmn20/tasks/script-task.md b/docs/documentation/reference/bpmn20/tasks/script-task.md index 25eae336..377db0f6 100644 --- a/docs/documentation/reference/bpmn20/tasks/script-task.md +++ b/docs/documentation/reference/bpmn20/tasks/script-task.md @@ -27,7 +27,7 @@ A Script Task is defined by specifying the script and the scriptFormat. ``` The value of the scriptFormat attribute must be a name that is compatible with JSR-223 (Scripting -for the Java Platform). If you want to use a (JSR-223 compatible) scripting engine, you need to to +for the Java Platform). If you want to use a (JSR-223 compatible) scripting engine, you need to add the corresponding jar to the classpath and use the appropriate name. The script source code has to be added as the text content of the `script` child element. diff --git a/docs/documentation/reference/dmn/decision-table/hit-policy.md b/docs/documentation/reference/dmn/decision-table/hit-policy.md index b9898b63..12bab6e6 100644 --- a/docs/documentation/reference/dmn/decision-table/hit-policy.md +++ b/docs/documentation/reference/dmn/decision-table/hit-policy.md @@ -92,9 +92,9 @@ is violated. See the following example: ![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-any.png)Hit Policy Any" class="no-lightbox -This is a decision table for the leave application. If the applier +This is a decision table for the leave application. If the applicant has no vacation days left or is currently in the probation period, the application will be refused. -Otherwise the application is applied. +Otherwise the application is approved. ### First Hit Policy diff --git a/docs/documentation/reference/rest/overview/variables.md b/docs/documentation/reference/rest/overview/variables.md index fd3a6249..ef63708f 100644 --- a/docs/documentation/reference/rest/overview/variables.md +++ b/docs/documentation/reference/rest/overview/variables.md @@ -34,9 +34,9 @@ In the REST API, the type names start with a capital letter, i.e., `String` inst Object Values are instances of (non primitive) Java types. When working with the REST API, it is generally advisable to work with the serialized value of a variable. In that case the value is -retrieved from the database and directly returned in the http response. If the client you are -building is not a Java Applications by itself, make sure you use a text-based -[serialization dataformat](../../../user-guide/process-engine/variables.md#object-value-serialization) (such as XML or JSON). +retrieved from the database and directly returned in the HTTP response. If the client you are +building is not a Java application itself, make sure you use a text-based +[serialization data format](../../../user-guide/process-engine/variables.md#object-value-serialization) (such as XML or JSON). :::note To retrieve the serialized form of a variable, use the `deserializeValues=false` GET parameter. diff --git a/docs/documentation/user-guide/quarkus-integration/configuration.md b/docs/documentation/user-guide/quarkus-integration/configuration.md index 41ae1cae..a8e1fb51 100644 --- a/docs/documentation/user-guide/quarkus-integration/configuration.md +++ b/docs/documentation/user-guide/quarkus-integration/configuration.md @@ -93,7 +93,7 @@ Quarkus allows to configure a Quarkus application via a [MicroProfile Config][mp configuring a Quarkus application in the [Quarkus configuration][quarkus-config] page. The Operaton Quarkus extension docs use the `application.properties` format in the examples, but you can use any supported Quarkus config source. -You can set any process engine configuration properties under the `quarkus.camunda` prefix. The +You can set any process engine configuration properties under the `quarkus.operaton` prefix. The [Process Engine Configuration Properties][engine-properties] page documents all the available properties. Please convert any property names from `camelCase` to the `kebab-case` format, like in the following example: @@ -163,11 +163,11 @@ the Quarkus-specific properties in the following table: Data Source - quarkus.camunda + quarkus.operaton .datasource Specifies which Quarkus datasource to use. If not defined, the primary Quarkus datasource will be used. - For configuring a Quarkus Datasource, have a look on the + For configuring a Quarkus Datasource, have a look at the Quarkus Datasource page. <default> @@ -199,7 +199,7 @@ A datasource is required to run the Operaton process engine. ### Choose from multiple datasources When multiple datasources are available in your application, you can choose the one the Engine Extension -should use by its name via the `camunda.datasource` configuration property. Consider the example configuration below: +should use by its name via the `quarkus.operaton.datasource` configuration property. Consider the example configuration below: ```properties quarkus.datasource.engine-datasource.db-kind=oracle diff --git a/docs/documentation/webapps/cockpit/deployment-view.md b/docs/documentation/webapps/cockpit/deployment-view.md index 883d0e9a..07d543b6 100644 --- a/docs/documentation/webapps/cockpit/deployment-view.md +++ b/docs/documentation/webapps/cockpit/deployment-view.md @@ -30,7 +30,7 @@ To delete a deployment, hover over the deployment and click on the deletion ico You can redeploy an existing deployment to increase the version of all definitions contained in the deployment and therefore overwrite any changes that happened to the definition since the initial deployment. To do so, click on the redeploy icon that appears when hovering over a deployment. All contained resources in this deployment will then be redeployed. For every contained process, case, or decision definition a new version will be created. This new version will then be the latest version of all definitions with the same key. -You can also only redeploy a single resource within the deployment: Navigate to the resource and click the Redeploybutton to only redeploy this single resource. This is only possible for resources which contain definitions. +You can also redeploy only a single resource within the deployment: Navigate to the resource and click the Redeploy button to redeploy this single resource. This is only possible for resources which contain definitions. ## Create Deployment From 73e5521713fb0a2a12d44e81fb27281b8c5bf963 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 14:25:06 +0200 Subject: [PATCH 09/41] Fix cancellation wording --- .../bpmn20/events/bpmn/event-message-throwing.bpmn | 4 ++-- .../bpmn20/events/bpmn/event-message.bpmn | 4 ++-- .../user-guide/process-engine/bpmn/example2.bpmn | 4 ++-- .../process-instance-modification.md | 14 +++++++------- .../webapps/cockpit/batch/batch-operation.md | 2 +- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn b/docs/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn index 33154794..0fb62bf7 100644 --- a/docs/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn +++ b/docs/documentation/reference/bpmn20/events/bpmn/event-message-throwing.bpmn @@ -49,7 +49,7 @@ SequenceFlow_5 - + @@ -170,4 +170,4 @@ - \ No newline at end of file + diff --git a/docs/documentation/reference/bpmn20/events/bpmn/event-message.bpmn b/docs/documentation/reference/bpmn20/events/bpmn/event-message.bpmn index 34bb0a9d..8c06a8bf 100644 --- a/docs/documentation/reference/bpmn20/events/bpmn/event-message.bpmn +++ b/docs/documentation/reference/bpmn20/events/bpmn/event-message.bpmn @@ -21,7 +21,7 @@ SequenceFlow_5 - + SequenceFlow_5 SequenceFlow_6 @@ -113,4 +113,4 @@ - \ No newline at end of file + diff --git a/docs/documentation/user-guide/process-engine/bpmn/example2.bpmn b/docs/documentation/user-guide/process-engine/bpmn/example2.bpmn index 7ae0ede9..9f7cd448 100644 --- a/docs/documentation/user-guide/process-engine/bpmn/example2.bpmn +++ b/docs/documentation/user-guide/process-engine/bpmn/example2.bpmn @@ -60,7 +60,7 @@ - + SequenceFlow_1 @@ -236,4 +236,4 @@ - \ No newline at end of file + diff --git a/docs/documentation/user-guide/process-engine/process-instance-modification.md b/docs/documentation/user-guide/process-engine/process-instance-modification.md index 978e9477..c034ea4d 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-modification.md +++ b/docs/documentation/user-guide/process-engine/process-instance-modification.md @@ -237,7 +237,7 @@ ProcessInstance processInstance = ...; ActivityInstance activityInstance = runtimeService.getActivityInstance(processInstance.getId()); ``` -`ActivityInstance` is a recursive data structure where the activity instance returned by the above method call represents the process instance. The IDs of `ActivityInstance` objects can be used for [cancelation of specific instances](#cancel-an-activity-instance) or for [ancestor selection during instantiation](#ancestor-selection-for-instantiation). +`ActivityInstance` is a recursive data structure where the activity instance returned by the above method call represents the process instance. The IDs of `ActivityInstance` objects can be used for [cancellation of specific instances](#cancel-an-activity-instance) or for [ancestor selection during instantiation](#ancestor-selection-for-instantiation). The interface `ActivityInstance` has methods `getChildActivityInstances` and `getChildTransitionInstances` to drill down in the activity instance tree. For example, assume that the activities *Assess Credit Worthiness* and *Register Application* are active. Then the activity instance tree looks as follows: @@ -291,7 +291,7 @@ Apart from instantiating these parent scopes, the engine also ensures to registe
-Starting the activity *Assess Credit Worthiness* also registers an event subscription for the message boundary event *Cancelation Notice Received* such that it is possible to cancel the sub process this way. +Starting the activity *Assess Credit Worthiness* also registers an event subscription for the message boundary event *Cancellation Notice Received* such that it is possible to cancel the sub process this way. ### Ancestor Selection for Instantiation @@ -354,7 +354,7 @@ ProcessInstance The sub process was started a second time. -### Cancelation Propagation +### Cancellation Propagation Canceling an activity instance propagates to parent activity instances that do not contain other activity instances. This behavior ensures that the process instance is not left in an execution state that makes no sense. This means, when a single activity is active in a sub process and that activity instance is canceled, the sub process is canceled as well. Consider the following activity instance tree: @@ -381,7 +381,7 @@ ProcessInstance Decline Loan Application ``` -The following modification operation succeeds although the process instance has no active activity instance directly after the cancelation instruction has been executed: +The following modification operation succeeds although the process instance has no active activity instance directly after the cancellation instruction has been executed: ```java ProcessInstance processInstance = ...; @@ -402,7 +402,7 @@ ProcessInstance Assess Credit Worthiness ``` -Assume you have the task of canceling the instance of *Assess Credit Worthiness* and starting the activity *Register Application*. There are two orderings for these two instructions: Either the cancelation is performed first, or the instantiation is performed first. In the former case, the code looks as follows: +Assume you have the task of canceling the instance of *Assess Credit Worthiness* and starting the activity *Register Application*. There are two orderings for these two instructions: Either the cancellation is performed first, or the instantiation is performed first. In the former case, the code looks as follows: ```java ProcessInstance processInstance = ...; @@ -412,7 +412,7 @@ runtimeService.createProcessInstanceModification(processInstance.getId()) .execute(); ``` -Due to [cancelation propagation](#cancelation-propagation), the sub process instance is canceled when the cancelation instruction is executed only to be re-instantiated when the instantiation instruction is executed. This means, after the modification has been executed, there is a different instance of the *Evaluate Loan Application* sub process. Any entities associated with the previous instance have been removed, such as variables or event subscriptions. +Due to [cancellation propagation](#cancellation-propagation), the sub process instance is canceled when the cancellation instruction is executed only to be re-instantiated when the instantiation instruction is executed. This means, after the modification has been executed, there is a different instance of the *Evaluate Loan Application* sub process. Any entities associated with the previous instance have been removed, such as variables or event subscriptions. In contrast, consider the case where the instantiation is performed first: @@ -424,7 +424,7 @@ runtimeService.createProcessInstanceModification(processInstance.getId()) .execute(); ``` -Due to the [default ancestor selection](#ancestor-selection-for-instantiation) during instantiation and the fact that cancelation does not propagate to the sub process instance in this case, the sub process instance is the same after modification as it was before. Related entities like variables and event subscriptions are preserved. +Due to the [default ancestor selection](#ancestor-selection-for-instantiation) during instantiation and the fact that cancellation does not propagate to the sub process instance in this case, the sub process instance is the same after modification as it was before. Related entities like variables and event subscriptions are preserved. ### Start Activities with Interrupting/Canceling Semantics diff --git a/docs/documentation/webapps/cockpit/batch/batch-operation.md b/docs/documentation/webapps/cockpit/batch/batch-operation.md index ca456d25..58edd317 100644 --- a/docs/documentation/webapps/cockpit/batch/batch-operation.md +++ b/docs/documentation/webapps/cockpit/batch/batch-operation.md @@ -31,7 +31,7 @@ It is possible to execute the following batch operations: - Set a Removal Time to Historic Batches. - Correlate Message. -After selecting the operation, fields may appear with additional data that is either optional or required to perform the operation. When canceling running process instances, you can optionally select to skip custom listeners and provide a cancelation reason. +After selecting the operation, fields may appear with additional data that is either optional or required to perform the operation. When canceling running process instances, you can optionally select to skip custom listeners and provide a cancellation reason. Next, you can define the instances affected by the batch operation. Initially, all instances are displayed. You can use the filter bar above the list of instances to filter the displayed instances. You can select specific instances or click on the **Query** radio button to select all instances matching the filter. From c0ece076ae8998bd1a3448ac752fc26c17ff2c8b Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 14:28:11 +0200 Subject: [PATCH 10/41] Fix Spring archive log file wording --- docs/get-started/archive/spring/embedded-process-engine.md | 4 ++-- docs/get-started/archive/spring/service-task.md | 2 +- docs/get-started/archive/spring/shared-process-engine.md | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/get-started/archive/spring/embedded-process-engine.md b/docs/get-started/archive/spring/embedded-process-engine.md index 2d4efd2f..17d8a77c 100644 --- a/docs/get-started/archive/spring/embedded-process-engine.md +++ b/docs/get-started/archive/spring/embedded-process-engine.md @@ -110,7 +110,7 @@ public class LoanApplicationContext { This bootstraps a process engine with an in-memory H2 database and makes the engine as well as its API services available as Spring beans. -After you added the beans to the application context, perform a full Maven build and redeploy the application. In the logfile of the Apache Tomcat server you should be able to see the initialization of the process-engine: +After you added the beans to the application context, perform a full Maven build and redeploy the application. In the log file of the Apache Tomcat server you should be able to see the initialization of the process-engine:
 INFO org.operaton.commons.logging.BaseLogger.logInfo
@@ -133,4 +133,4 @@ INFO org.operaton.commons.logging.BaseLogger.logInfo
 ENGINE-03065 Creating historyLevel property in database for level: HistoryLevelAudit(name=audit, id=2)
 INFO org.operaton.commons.logging.BaseLogger.logInfo
 ENGINE-00001 Process Engine engine created.
-
\ No newline at end of file + diff --git a/docs/get-started/archive/spring/service-task.md b/docs/get-started/archive/spring/service-task.md index 4996769b..ee4de2b0 100644 --- a/docs/get-started/archive/spring/service-task.md +++ b/docs/get-started/archive/spring/service-task.md @@ -151,7 +151,7 @@ public class LoanApplicationContext { } ``` -If you redeploy the application, you should see the following message in the logfile, meaning that the service task was executed. +If you redeploy the application, you should see the following message in the log file, meaning that the service task was executed.
 INFO org.operaton.commons.logging.BaseLogger.logInfo
diff --git a/docs/get-started/archive/spring/shared-process-engine.md b/docs/get-started/archive/spring/shared-process-engine.md
index a0bff933..9638a453 100644
--- a/docs/get-started/archive/spring/shared-process-engine.md
+++ b/docs/get-started/archive/spring/shared-process-engine.md
@@ -138,7 +138,7 @@ If you like, you can also remove the class itself as it is not used anymore.
 After Maven build and redeploy, process definitions will be automatically deployed. Then you
 can go to Tasklist, login with `demo/demo` credentials, click on `Start process` and start
 the `Loan approval` process.
-You will see in Tomcat logfile:
+You will see this in the Tomcat log file:
 
 Spring Bean invoked
-
\ No newline at end of file +
From 77bbb5e4bc4799896666746a6dd98d944ed230f7 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 14:44:15 +0200 Subject: [PATCH 11/41] Fix JSF task form wording --- docs/documentation/user-guide/task-forms/jsf-task-forms.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/user-guide/task-forms/jsf-task-forms.md b/docs/documentation/user-guide/task-forms/jsf-task-forms.md index ce1027df..28b5bafd 100644 --- a/docs/documentation/user-guide/task-forms/jsf-task-forms.md +++ b/docs/documentation/user-guide/task-forms/jsf-task-forms.md @@ -124,7 +124,7 @@ In the forms you can access your own CDI beans as usual and also access the Oper
- Process variable x (given in in the start form): + Process variable x (given in the start form): From 8d771bdb68a691d4d52eb98230f3c841ee832a61 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 15:12:03 +0200 Subject: [PATCH 12/41] Fix additional documentation wording --- .../installation/full/tomcat/configuration.md | 2 +- .../reference/bpmn20/tasks/script-task.md | 2 +- .../reference/bpmn20/tasks/user-task.md | 2 +- .../reference/cmmn11/milestone.md | 2 +- .../reference/dmn/decision-table/hit-policy.md | 6 +++--- .../jta-transaction-integration.md | 2 +- .../process-engine/authorization-service.md | 6 +++--- .../database/database-configuration.md | 6 +++--- .../process-engine/process-engine-api.md | 18 +++++++++--------- .../process-instance-modification.md | 8 ++++---- .../process-engine/process-instance-restart.md | 2 +- .../process-engine/the-job-executor.md | 8 ++++---- .../quarkus-integration/configuration.md | 2 +- .../webapps/admin/user-management.md | 2 +- .../webapps/cockpit/bpmn/dashboard.md | 2 +- .../webapps/shared-options/cookie-security.md | 2 +- 16 files changed, 36 insertions(+), 36 deletions(-) diff --git a/docs/documentation/installation/full/tomcat/configuration.md b/docs/documentation/installation/full/tomcat/configuration.md index 001ed50f..95d4fee3 100644 --- a/docs/documentation/installation/full/tomcat/configuration.md +++ b/docs/documentation/installation/full/tomcat/configuration.md @@ -11,7 +11,7 @@ This page explains how to configure the full distribution for Tomcat Application ### LDAP -In order to setup LDAP for the Tomcat distribution, you have to perform the following steps: +In order to set up LDAP for the Tomcat distribution, you have to perform the following steps: ### Add the LDAP Library diff --git a/docs/documentation/reference/bpmn20/tasks/script-task.md b/docs/documentation/reference/bpmn20/tasks/script-task.md index 377db0f6..d061bfef 100644 --- a/docs/documentation/reference/bpmn20/tasks/script-task.md +++ b/docs/documentation/reference/bpmn20/tasks/script-task.md @@ -71,7 +71,7 @@ It's also possible to set process variables in a script. Variables can be set by ### Enabling auto-storing of Script Variables -By setting the property `autoStoreScriptVariables` to `true` in the process engine configuration, the process engine will automatically store all _global_ script variables as process variables. This was the default behavior in Operaton.0 and 7.1 but it only reliably works for the Groovy scripting language (see the [Set autoStoreScriptVariables][autostore-variables] section of the [Migration Guide](../../../update/index.md) for more information). +By setting the property `autoStoreScriptVariables` to `true` in the process engine configuration, the process engine will automatically store all _global_ script variables as process variables. This was the default behavior in Camunda 7.0 and 7.1 but it only reliably works for the Groovy scripting language (see the [Set autoStoreScriptVariables][autostore-variables] section of the [Migration Guide](../../../update/index.md) for more information). To use this feature, you have to diff --git a/docs/documentation/reference/bpmn20/tasks/user-task.md b/docs/documentation/reference/bpmn20/tasks/user-task.md index a48f03ca..ee457f11 100644 --- a/docs/documentation/reference/bpmn20/tasks/user-task.md +++ b/docs/documentation/reference/bpmn20/tasks/user-task.md @@ -307,7 +307,7 @@ The error message and variables are optional. They can provide additional inform See the documentation for [Catching Escalation Events](../events/escalation-events.md#catching-escalation-events). -Reporting an escalation during user task execution can be achieved via `TaskService#handleEscalation`. The user task should be active to do so. The `escalationCode` is compulsory to invoke the escalation, this code identifies a predefined escalation. If the given `escalationCode` does not exist an Process Engine Exception will be thrown. See the following example: +Reporting an escalation during user task execution can be achieved via `TaskService#handleEscalation`. The user task should be active to do so. The `escalationCode` is compulsory to invoke the escalation, this code identifies a predefined escalation. If the given `escalationCode` does not exist, a Process Engine Exception will be thrown. See the following example: ```java taskService.handleEscalation( diff --git a/docs/documentation/reference/cmmn11/milestone.md b/docs/documentation/reference/cmmn11/milestone.md index f4ae4dcb..8344a904 100644 --- a/docs/documentation/reference/cmmn11/milestone.md +++ b/docs/documentation/reference/cmmn11/milestone.md @@ -44,7 +44,7 @@ When referenced in a case plan, a milestone gets completed as soon as its entry ``` -In this case, the milestone will complete as soon as as the human task completes. +In this case, the milestone will complete as soon as the human task completes. A milestone cannot have exit criteria. diff --git a/docs/documentation/reference/dmn/decision-table/hit-policy.md b/docs/documentation/reference/dmn/decision-table/hit-policy.md index 12bab6e6..57e6d0d1 100644 --- a/docs/documentation/reference/dmn/decision-table/hit-policy.md +++ b/docs/documentation/reference/dmn/decision-table/hit-policy.md @@ -192,12 +192,12 @@ The MAX aggregator can be used to return the largest output value of all satisfi ![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-collect-max.png)Hit Policy Collect MAX" class="no-lightbox This decision table represents the decision for the amount of pocket money for a child. -Depending of the age, the amount grows. For example, an input of 9 will satisfy the first and second rules. -The output of the second rule is larger then the output of the first rule, so the output +Depending on the age, the amount grows. For example, an input of 9 will satisfy the first and second rules. +The output of the second rule is larger than the output of the first rule, so the output will be 5. A child at the age of 9 will get 5 as pocket money. #### COUNT aggregator -The COUNT aggregator can be use to return the count of satisfied rules. +The COUNT aggregator can be used to return the count of satisfied rules. ![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-collect-count.png)Hit Policy Collect COUNT" class="no-lightbox diff --git a/docs/documentation/user-guide/cdi-java-ee-integration/jta-transaction-integration.md b/docs/documentation/user-guide/cdi-java-ee-integration/jta-transaction-integration.md index f27df147..5255b5e3 100644 --- a/docs/documentation/user-guide/cdi-java-ee-integration/jta-transaction-integration.md +++ b/docs/documentation/user-guide/cdi-java-ee-integration/jta-transaction-integration.md @@ -60,7 +60,7 @@ public class MyBean { ## Using JTA transaction integration with WebSphere Liberty -Operaton allows to mark a transaction as "rollback only" by calling `UserTransaction#setRollbackOnly()`. +Operaton allows you to mark a transaction as "rollback only" by calling `UserTransaction#setRollbackOnly()`. If this code is executed within an Operaton job, the job is marked as failed, and can be retried. WebSphere Liberty doesn't support this behavior of Operaton. When calling `UserTransaction#setRollbackOnly()` diff --git a/docs/documentation/user-guide/process-engine/authorization-service.md b/docs/documentation/user-guide/process-engine/authorization-service.md index 9012f3e1..4ebade8d 100644 --- a/docs/documentation/user-guide/process-engine/authorization-service.md +++ b/docs/documentation/user-guide/process-engine/authorization-service.md @@ -21,13 +21,13 @@ Not every Operaton setup needs to enable authorization. In many scenarios, Opera Situations in which authorization is required: * Operaton REST API is made accessible to users who should not have full access, even after authentication. -* Operaton Webapplication is made accessible to users who should not have full access, even after authentication. +* The Operaton web application is made accessible to users who should not have full access, even after authentication. * Other situations in which an untrusted user can directly construct the queries and commands executed on the process engine. Situations in which authorization is *not* required * An application completely controls the API methods invoked on the process engine. -* Operaton Webapplication is made accessible to users who can have full access after authentication. +* The Operaton web application is made accessible to users who can have full access after authentication. **Example** @@ -998,7 +998,7 @@ authorizationService.saveAuthorization(authProcessInstance); ``` ## Operaton Admin Webapp -The Operaton Admin Webapplication provides an out of the box [UI for configuring Authorizations](../../webapps/admin/authorization-management.md). +The Operaton Admin web application provides an out-of-the-box [UI for configuring Authorizations](../../webapps/admin/authorization-management.md). ## Performance Considerations diff --git a/docs/documentation/user-guide/process-engine/database/database-configuration.md b/docs/documentation/user-guide/process-engine/database/database-configuration.md index 4fe8a1fc..4aee3999 100644 --- a/docs/documentation/user-guide/process-engine/database/database-configuration.md +++ b/docs/documentation/user-guide/process-engine/database/database-configuration.md @@ -63,12 +63,12 @@ Alternatively, a `javax.sql.DataSource` implementation can be used (e.g., DBCP f ... ``` -Note that Operaton does not ship with a library that allows to define such a data source. So you have to make sure that the libraries (e.g., from DBCP) are on your classpath. +Note that Operaton does not ship with a library that lets you define such a data source. So you have to make sure that the libraries (e.g., from DBCP) are on your classpath. The following properties can be set, regardless of whether you are using the JDBC or data source approach: * `databaseType`: It's normally not necessary to specify this property as it is automatically analyzed from the database connection meta data. Should only be specified in case automatic detection fails. Possible values: \{h2, mysql, oracle, postgres, mssql, db2, mariadb\}. This setting will determine which create/drop scripts and queries will be used. See the 'supported databases' section for an overview of which types are supported. -* `databaseSchemaUpdate`: Allows to set the strategy to handle the database schema on process engine boot and shutdown. +* `databaseSchemaUpdate`: Sets the strategy to handle the database schema on process engine boot and shutdown. * `true` (default): Upon building the process engine, a check is performed whether the Operaton tables exist in the database. If they don't exist, they are created. It must be ensured that the version of the DB schema matches the version of the process engine library, unless performing a Rolling Update. Updates of the database schema have to be done manually as described in the [Update and Migration Guide](../../../update/index.md). * `false`: Does not perform any checks and assumes that the Operaton table exist in the database. It must be ensured that the version of the DB schema matches the version of the process engine library, unless performing a Rolling Update. Updates of the database schema have to be done manually as described in the [Update and Migration Guide](../../../update/index.md). * `create-drop`: Creates the schema when the process engine is being created and drops the schema when the process engine is being closed. @@ -92,7 +92,7 @@ Here are some sample JDBC urls: ### Business Key -Since the release of Operaton.0.0-alpha9, the unique constraint for the business key is removed in the runtime and history tables and the database schema create and drop scripts. +Since the release of Camunda BPM 7.0.0-alpha9, the unique constraint for the business key is removed in the runtime and history tables and the database schema create and drop scripts. If you rely on the constraint, you can add it manually to your schema by issuing following sql statements: DB2 diff --git a/docs/documentation/user-guide/process-engine/process-engine-api.md b/docs/documentation/user-guide/process-engine/process-engine-api.md index 77c6fc2e..0ae61274 100644 --- a/docs/documentation/user-guide/process-engine/process-engine-api.md +++ b/docs/documentation/user-guide/process-engine/process-engine-api.md @@ -47,21 +47,21 @@ For all `activiti.cfg.xml` files, the process engine will be built in the Spring All services are stateless. This means that you can easily run Operaton on multiple nodes in a cluster, each going to the same database, without having to worry about which machine actually executed previous calls. Any call to any service is idempotent regardless of where it is executed. -The **RepositoryService** is probably the first service needed when working with the Operaton engine. This service offers operations for managing and manipulating deployments and process definitions. Without going into much detail here, a process definition is the Java counterpart of a BPMN 2.0 process. It is a representation of the structure and behavior of each of the steps of a process. A deployment is the unit of packaging within the engine. A deployment can contain multiple BPMN 2.0 XML files and any other resource. The choice of what is included in one deployment is up to the developer. It can range from a single process BPMN 2.0 XML file to a whole package of processes and relevant resources (for example the deployment 'hr-processes' could contain everything related to hr processes). The RepositoryService allows to deploy such packages. Deploying a deployment means it is uploaded to the engine, where all processes are inspected and parsed before being stored in the database. From that point on, the deployment is known to the system and any process included in the deployment can now be started. +The **RepositoryService** is probably the first service needed when working with the Operaton engine. This service offers operations for managing and manipulating deployments and process definitions. Without going into much detail here, a process definition is the Java counterpart of a BPMN 2.0 process. It is a representation of the structure and behavior of each of the steps of a process. A deployment is the unit of packaging within the engine. A deployment can contain multiple BPMN 2.0 XML files and any other resource. The choice of what is included in one deployment is up to the developer. It can range from a single process BPMN 2.0 XML file to a whole package of processes and relevant resources (for example the deployment 'hr-processes' could contain everything related to hr processes). The RepositoryService allows you to deploy such packages. Deploying a deployment means it is uploaded to the engine, where all processes are inspected and parsed before being stored in the database. From that point on, the deployment is known to the system and any process included in the deployment can now be started. -Furthermore, this service allows to +Furthermore, this service allows you to * Query on deployments and process definitions known to the engine. * Suspend and activate process definitions. Suspending means no further operations can be done on them, while activation is the opposite operation. * Retrieve various resources such as files contained within the deployment or process diagrams that were automatically generated by the engine. -While the RepositoryService is about static information (i.e., data that doesn't change, or at least not a lot), the **RuntimeService** is quite the opposite. It deals with starting new process instances of process definitions. As mentioned above, a process definition defines the structure and behavior of the different steps in a process. A process instance is one execution of such a process definition. For each process definition there are typically many instances running at the same time. The RuntimeService is also the service which is used to retrieve and store [process variables](../process-engine/variables.md). This is data specific to the given process instance and can be used by various constructs in the process (e.g., an exclusive gateway often uses process variables to determine which path is chosen to continue the process). The RuntimeService also allows to query on process instances and executions. Executions are a representation of the 'token' concept of BPMN 2.0. Basically an execution is a pointer pointing to where the process instance currently is. Lastly, the RuntimeService is used whenever a process instance is waiting for an external trigger and the process needs to be continued. A process instance can have various wait states and this service contains various operations to 'signal' the instance that the external trigger is received and the process instance can be continued. +While the RepositoryService is about static information (i.e., data that doesn't change, or at least not a lot), the **RuntimeService** is quite the opposite. It deals with starting new process instances of process definitions. As mentioned above, a process definition defines the structure and behavior of the different steps in a process. A process instance is one execution of such a process definition. For each process definition there are typically many instances running at the same time. The RuntimeService is also the service which is used to retrieve and store [process variables](../process-engine/variables.md). This is data specific to the given process instance and can be used by various constructs in the process (e.g., an exclusive gateway often uses process variables to determine which path is chosen to continue the process). The RuntimeService also allows you to query process instances and executions. Executions are a representation of the 'token' concept of BPMN 2.0. Basically an execution is a pointer pointing to where the process instance currently is. Lastly, the RuntimeService is used whenever a process instance is waiting for an external trigger and the process needs to be continued. A process instance can have various wait states and this service contains various operations to 'signal' the instance that the external trigger is received and the process instance can be continued. Tasks that need to be performed by actual human users of the system are core to the process engine. Everything around tasks is grouped in the **TaskService**, such as * Querying tasks assigned to users or groups. -* Creating new standalone tasks. These are tasks that are not related to a process instances. -* Manipulating to which user a task is assigned or which users are in some way involved with the task. +* Creating new standalone tasks. These are tasks that are not related to a process instance. +* Changing which user a task is assigned to or which users are in some way involved with the task. * Claiming and completing a task. Claiming means that someone decided to be the assignee for the task, meaning that this user will complete the task. Completing means 'doing the work of the tasks'. Typically this is filling in a form of sorts. The **IdentityService** is pretty simple. It allows the management (creation, update, deletion, querying, ...) of groups and users. It is important to understand that the core engine actually doesn't do any checking on users at runtime. For example, a task could be assigned to any user, but the engine does not verify if that user is known to the system. This is because the engine can also be used in conjunction with services such as LDAP, Active Directory, etc. @@ -70,15 +70,15 @@ The **FormService** is an optional service. This means that the Operaton engine The **HistoryService** exposes all historical data gathered by the engine. When executing processes, a lot of data can be kept by the engine (this is configurable) such as process instance start times, who did which tasks, how long it took to complete the tasks, which path was followed in each process instance, etc. This service exposes mainly query capabilities to access this data. -The **ManagementService** is typically not needed when coding custom applications. It allows to retrieve information about the database tables and table metadata. Furthermore, it exposes query capabilities and management operations for jobs. Jobs are used in the engine for various things such as timers, asynchronous continuations, delayed suspension/activation, etc. Later on, these topics will be discussed in more detail. +The **ManagementService** is typically not needed when coding custom applications. It allows you to retrieve information about the database tables and table metadata. Furthermore, it exposes query capabilities and management operations for jobs. Jobs are used in the engine for various things such as timers, asynchronous continuations, delayed suspension/activation, etc. Later on, these topics will be discussed in more detail. -The **FilterService** allows to create and manage filters. Filters are stored queries like task queries. For example filters are used by Tasklist to [filter user tasks](../../webapps/tasklist/filters.md). +The **FilterService** allows you to create and manage filters. Filters are stored queries like task queries. For example filters are used by Tasklist to [filter user tasks](../../webapps/tasklist/filters.md). The **ExternalTaskService** provides access to [external task instances](external-tasks.md). External tasks represent work items that are processed externally and independently of the process engine. The **CaseService** is like the RuntimeService but for case instances. It deals with starting new case instances of case definitions and managing the lifecycle of case executions. The service is also used to retrieve and update process variables of case instances. -The **[DecisionService](../process-engine/decisions/decision-service.md)** allows to evaluate decisions that are deployed to the engine. It is an alternative to evaluate a decision within a business rule task that is independent from a process definition. +The **[DecisionService](../process-engine/decisions/decision-service.md)** allows you to evaluate decisions that are deployed to the engine. It is an alternative to evaluate a decision within a business rule task that is independent from a process definition. :::warning[Java Docs] For more detailed information on the service operations and the engine API, see the Java Docs. @@ -97,7 +97,7 @@ To query data from the engine there are multiple possibilities: The recommended way is to use one of the Query APIs. -The Java Query API allows to program completely typesafe queries with a fluent API. You can add various conditions to your queries (all of which are applied together as a logical AND) and precisely one ordering. The following code shows an example: +The Java Query API allows you to write completely type-safe queries with a fluent API. You can add various conditions to your queries (all of which are applied together as a logical AND) and precisely one ordering. The following code shows an example: ```java List tasks = taskService.createTaskQuery() diff --git a/docs/documentation/user-guide/process-engine/process-instance-modification.md b/docs/documentation/user-guide/process-engine/process-instance-modification.md index c034ea4d..c72e1d85 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-modification.md +++ b/docs/documentation/user-guide/process-engine/process-instance-modification.md @@ -17,7 +17,7 @@ While the process model contains sequence flows that define in which order activ * Testing: Activities can be skipped or repeated for isolated testing of individual process segments To perform such an operation, the process engine offers the *process instance modification API* that is entered via `RuntimeService.createProcessInstanceModification(...)` or -`RuntimeService.createModification(...)`. This API allows to specify multiple *modification instructions* in one call by using a fluent builder. In particular, it is possible to: +`RuntimeService.createModification(...)`. This API allows you to specify multiple *modification instructions* in one call by using a fluent builder. In particular, it is possible to: * start execution before an activity * start execution on a sequence flow leaving an activity @@ -43,7 +43,7 @@ ProcessInstance Decline Loan Application ``` -Now the worker performing the task *Decline Loan Application* recognizes an error in the evaluation result and comes to the conclusion that the application should be accepted nevertheless. While such flexibility is not modelled as part of the process, process instance modification allows to correct the running process instance. The following API call does the trick: +Now the worker performing the task *Decline Loan Application* recognizes an error in the evaluation result and comes to the conclusion that the application should be accepted nevertheless. While such flexibility is not modelled as part of the process, process instance modification allows you to correct the running process instance. The following API call does the trick: ```java ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().singleResult(); @@ -550,7 +550,7 @@ Providing variables is not supported when executing async modification of single ### Modification of Multiple Process Instances -When there are multiple process instances which fulfill a specific criteria, it is possible to modify them at once using `RuntimeService.createModification(...)`. This method allows to specify +When there are multiple process instances which fulfill a specific criteria, it is possible to modify them at once using `RuntimeService.createModification(...)`. This method allows you to specify the modification instructions and IDs of process instances that should be modified. It is required that the process instances belong to the given process definition. The fluent modification builder offers the following instructions to be submitted: @@ -617,7 +617,7 @@ It will be visible in [User Operation Log](../process-engine/history/user-operat ### Soundness Checks -Process instance modification is a very powerful tool and allows to start and cancel activities at will. Thus, it is easy to create situations that are unreachable by normal process execution. Assume the following process model: +Process instance modification is a very powerful tool and allows you to start and cancel activities at will. Thus, it is easy to create situations that are unreachable by normal process execution. Assume the following process model:
diff --git a/docs/documentation/user-guide/process-engine/process-instance-restart.md b/docs/documentation/user-guide/process-engine/process-instance-restart.md index 3d440fde..68ddbbb1 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-restart.md +++ b/docs/documentation/user-guide/process-engine/process-instance-restart.md @@ -16,7 +16,7 @@ This can, for example, be useful when termination did not proceed in a desired w * Restoring the last state of process instances that have been erroneously canceled * Restarting process instances after a termination caused by a wrong decision -To perform such an operation the process engine offers *the process instance restart API*, that is entered via `RuntimeService.restartProcessInstances(...)`. This API allows to specify multiple instantiation instructions in one call by using a fluent builder. +To perform such an operation the process engine offers *the process instance restart API*, that is entered via `RuntimeService.restartProcessInstances(...)`. This API allows you to specify multiple instantiation instructions in one call by using a fluent builder. Note that these operations are also available via REST: restref page="restartProcessInstance" text="Restart Process Instance" tag="Process-Definition and restref page="restartProcessInstanceAsyncOperation" text="Restart Process Instance (async)" tag="Process-Definition diff --git a/docs/documentation/user-guide/process-engine/the-job-executor.md b/docs/documentation/user-guide/process-engine/the-job-executor.md index 534083ee..eb7a3e4a 100644 --- a/docs/documentation/user-guide/process-engine/the-job-executor.md +++ b/docs/documentation/user-guide/process-engine/the-job-executor.md @@ -40,7 +40,7 @@ When using a **shared process engine**, the default is reversed: if you do not s ## Job Executor in a Unit Test -For unit testing scenarios it is cumbersome to work with this background component. Therefore the Java API offers to query for (`ManagementService.createJobQuery`) and execute jobs (`ManagementService.executeJob`) *by hand*, which allows to control job execution from within a unit test. +For unit testing scenarios it is cumbersome to work with this background component. Therefore the Java API offers to query for (`ManagementService.createJobQuery`) and execute jobs (`ManagementService.executeJob`) *by hand*, which allows you to control job execution from within a unit test. ## Job Creation @@ -183,7 +183,7 @@ Sometimes job priorities need to be changed at runtime to deal with unforeseen c #### Override Priority by Job Definition -While expressions may help in these cases to a certain extent, it is cumbersome to change process data for all involved process instances and to make sure to restore it when the exceptional condition is over. Thus the ManagementService API allows to temporarily set an overriding priority for a job definition. The following operation can be performed to downgrade the priority for all future jobs of a given job definition: +While expressions may help in these cases to a certain extent, it is cumbersome to change process data for all involved process instances and to make sure to restore it when the exceptional condition is over. Thus the ManagementService API allows you to temporarily set an overriding priority for a job definition. The following operation can be performed to downgrade the priority for all future jobs of a given job definition: ```java // find the job definition @@ -514,7 +514,7 @@ The following example defines the retries of a multi-instance service task with ``` ### Retry Intervals -The retry time cycle (e.g. R5/PT5M) allows to define the number of retries and an interval when the failed job should be retried. Regardless of the values, the interval is always (at least) 5 minutes. You can configure the list of retry intervals (separated by comma) on a global level or for a specific job configuration. The local configuration takes precedence. +The retry time cycle (e.g. R5/PT5M) allows you to define the number of retries and an interval when the failed job should be retried. Regardless of the values, the interval is always (at least) 5 minutes. You can configure the list of retry intervals (separated by comma) on a global level or for a specific job configuration. The local configuration takes precedence. Here is an example of a global process engine configuration: ```xml @@ -621,7 +621,7 @@ In the case of a single, application-embedded process engine, the job executor s There is a single job table that the engine adds jobs to and the acquisition consumes from. Creating a second embedded engine would therefore create another acquisition thread and execution thread-pool. -In larger deployments however, this quickly leads to a poorly manageable situation. When running Operaton on Tomcat or an application server, the platform allows to declare multiple process engines shared by multiple process applications. With respect to job execution, one job acquisition may serve multiple job tables (and thus process engines) and a single thread-pool for execution may be used. +In larger deployments however, this quickly leads to a poorly manageable situation. When running Operaton on Tomcat or an application server, the platform allows you to declare multiple process engines shared by multiple process applications. With respect to job execution, one job acquisition may serve multiple job tables (and thus process engines) and a single thread-pool for execution may be used. ![Example img](/img/documentation/user-guide/process-engine/job-executor-multiple-engines.png)Multiple Engines diff --git a/docs/documentation/user-guide/quarkus-integration/configuration.md b/docs/documentation/user-guide/quarkus-integration/configuration.md index a8e1fb51..6a41d733 100644 --- a/docs/documentation/user-guide/quarkus-integration/configuration.md +++ b/docs/documentation/user-guide/quarkus-integration/configuration.md @@ -89,7 +89,7 @@ A `QuarkusProcessEngineConfiguration` instance provides the following defaults:
-Quarkus allows to configure a Quarkus application via a [MicroProfile Config][mp-config] source. You can read more about +Quarkus allows you to configure a Quarkus application via a [MicroProfile Config][mp-config] source. You can read more about configuring a Quarkus application in the [Quarkus configuration][quarkus-config] page. The Operaton Quarkus extension docs use the `application.properties` format in the examples, but you can use any supported Quarkus config source. diff --git a/docs/documentation/webapps/admin/user-management.md b/docs/documentation/webapps/admin/user-management.md index 3f600668..c817a681 100644 --- a/docs/documentation/webapps/admin/user-management.md +++ b/docs/documentation/webapps/admin/user-management.md @@ -44,4 +44,4 @@ If you installed the default Operaton webapps and demo content, Operaton was con ## Administrator Account -Users who belong to the group *operaton-admin* (default set by the invoice receipt demo process application) have administrator privileges. There must be at least one member in this group, otherwise the [initial setup screen](#initial-user-setup) appears. Besides user- and groupmanagement, as administrator you are able to define authorization rules for a variety of resources. See the chapter on [Authorizations](authorization-management.md) for more details. +Users who belong to the group *operaton-admin* (default set by the invoice receipt demo process application) have administrator privileges. There must be at least one member in this group, otherwise the [initial setup screen](#initial-user-setup) appears. Besides user and group management, as administrator you are able to define authorization rules for a variety of resources. See the chapter on [Authorizations](authorization-management.md) for more details. diff --git a/docs/documentation/webapps/cockpit/bpmn/dashboard.md b/docs/documentation/webapps/cockpit/bpmn/dashboard.md index a1f6490c..4c8c930a 100644 --- a/docs/documentation/webapps/cockpit/bpmn/dashboard.md +++ b/docs/documentation/webapps/cockpit/bpmn/dashboard.md @@ -142,5 +142,5 @@ start editing by clicking on the value. You can expand the value in a modal dial ![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-delete-process-definition.png)Delete Process Definition -Each process definition in the dashboard has a delete action. This action allows to delete all versions of a process definition. +Each process definition in the dashboard has a delete action. This action allows you to delete all versions of a process definition. When proceeding with this action, you can always choose to enable/disable skipping custom listeners. However, if the process definition has process instances running, enabling the cascading flag becomes mandatory. diff --git a/docs/documentation/webapps/shared-options/cookie-security.md b/docs/documentation/webapps/shared-options/cookie-security.md index 4bc0a32f..d3ac6421 100644 --- a/docs/documentation/webapps/shared-options/cookie-security.md +++ b/docs/documentation/webapps/shared-options/cookie-security.md @@ -56,7 +56,7 @@ Have a look at [SameSite cookies](https://developer.mozilla.org/en-US/docs/Web/H The following section lists the limitations of the cookie security settings. ### Absence of HttpOnly for the CSRF Cookie -For the CSRF Cookie, the HttpOnly flag is absent and not configurable to ensure the functionality of the Web applications. Aforementioned is due to the reason that the CSRF cookie must be readable by the JavaScript HTTP Client to guarantee that the browser sends the token along with every modifying request. +For the CSRF Cookie, the HttpOnly flag is absent and not configurable to ensure the functionality of the Web applications. This is because the CSRF cookie must be readable by the JavaScript HTTP Client to guarantee that the browser sends the token along with every modifying request. ### Absence of SameSite for the Session Cookie In the following [pre-packaged distributions](../../installation/full/index.md), the SameSite property is absent by default since the Java Container manages the cookie and the latest Servlet specification does currently not support the SameSite property: From 9536c4378f9aaed9798dd6e0cb9745091a4b8010 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 15:16:44 +0200 Subject: [PATCH 13/41] Remove trailing whitespace in docs --- .../process-engine/process-instance-modification.md | 8 ++++---- .../process-engine/process-instance-restart.md | 10 +++++----- .../webapps/cockpit/batch/batch-operation.md | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/documentation/user-guide/process-engine/process-instance-modification.md b/docs/documentation/user-guide/process-engine/process-instance-modification.md index c72e1d85..4764b556 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-modification.md +++ b/docs/documentation/user-guide/process-engine/process-instance-modification.md @@ -16,7 +16,7 @@ While the process model contains sequence flows that define in which order activ * Migrating process instances from one version of a process definition to another * Testing: Activities can be skipped or repeated for isolated testing of individual process segments -To perform such an operation, the process engine offers the *process instance modification API* that is entered via `RuntimeService.createProcessInstanceModification(...)` or +To perform such an operation, the process engine offers the *process instance modification API* that is entered via `RuntimeService.createProcessInstanceModification(...)` or `RuntimeService.createModification(...)`. This API allows you to specify multiple *modification instructions* in one call by using a fluent builder. In particular, it is possible to: * start execution before an activity @@ -546,12 +546,12 @@ Batch modificationBatch = runtimeService.createProcessInstanceModification(proce .executeAsync(); ``` This would create a modification [batch](../process-engine/batch.md) which will be executed asynchronously. -Providing variables is not supported when executing async modification of single process instance. +Providing variables is not supported when executing async modification of single process instance. ### Modification of Multiple Process Instances When there are multiple process instances which fulfill a specific criteria, it is possible to modify them at once using `RuntimeService.createModification(...)`. This method allows you to specify -the modification instructions and IDs of process instances that should be modified. It is required that the process instances belong to the given process definition. +the modification instructions and IDs of process instances that should be modified. It is required that the process instances belong to the given process definition. The fluent modification builder offers the following instructions to be submitted: @@ -560,7 +560,7 @@ The fluent modification builder offers the following instructions to be submitte * `startTransition(String transitionId)` * `cancelAllForActivity(String activityId)` -Process instances can be selected for modification by either providing a set of process instance IDs or providing a process instance query. +Process instances can be selected for modification by either providing a set of process instance IDs or providing a process instance query. It is also possible to specify both, a list of process instance IDs and a query. The process instances to be modified will then be the union of the resulting sets. ```java diff --git a/docs/documentation/user-guide/process-engine/process-instance-restart.md b/docs/documentation/user-guide/process-engine/process-instance-restart.md index 68ddbbb1..9f5a0a3a 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-restart.md +++ b/docs/documentation/user-guide/process-engine/process-instance-restart.md @@ -10,7 +10,7 @@ menu: --- -After a process instance termination, its historic data still exists and can be accessed to restore a process instance, provided that the history level is set to FULL. +After a process instance termination, its historic data still exists and can be accessed to restore a process instance, provided that the history level is set to FULL. This can, for example, be useful when termination did not proceed in a desired way. Use cases for this API may be: * Restoring the last state of process instances that have been erroneously canceled @@ -43,7 +43,7 @@ runtimeService.restartProcessInstance(processInstance.getProcessDefinitionId()) .execute(); ``` -The process instance has been restarted with the last set of variables. However, only global variables are set in the restarted process instance. +The process instance has been restarted with the last set of variables. However, only global variables are set in the restarted process instance. Local variables can be set manually, for example by calling `RuntimeService.setVariableLocal(...)`. :::note @@ -230,9 +230,9 @@ Batch batch = runtimeService.restartProcessInstances(processDefinition.getId()) Using a batch, the process instance restart is split into several jobs which are executed asynchronously. These batch jobs are executed by the job executor. -See the [batch](../process-engine/batch.md) section for more -information. A batch is completed if all batch execution jobs are successfully -completed. However, in contrast to the synchronous execution, it is not guaranteed +See the [batch](../process-engine/batch.md) section for more +information. A batch is completed if all batch execution jobs are successfully +completed. However, in contrast to the synchronous execution, it is not guaranteed that either all or no process instances are restarted. As the restart is split into several independent jobs, every single job may fail or succeed. diff --git a/docs/documentation/webapps/cockpit/batch/batch-operation.md b/docs/documentation/webapps/cockpit/batch/batch-operation.md index 58edd317..9da58a32 100644 --- a/docs/documentation/webapps/cockpit/batch/batch-operation.md +++ b/docs/documentation/webapps/cockpit/batch/batch-operation.md @@ -18,7 +18,7 @@ menu: It is possible to execute the following batch operations: -- Delete running process instances. +- Delete running process instances. - Delete finished process instances. - Set retries of Jobs belonging to process instances. - Set retries of external tasks belonging to process instances. @@ -42,9 +42,9 @@ Selecting all instances might create a high load on the database and application You can copy a link to the current search query to your clipboard by clicking on the button and you can save search queries to your local browser storage by clicking on the button and inserting a name in the drop down menu that appears. You can then retrieve the search query by clicking on the button and selecting the chosen name in the drop down menu. -Please note that +Please note that some operations can only be executed on running instances, while others can only be executed on finished instances. You will see an -appropriate notice once the operation type is selected. +appropriate notice once the operation type is selected. Navigation to the next step is disabled as long as all required data to perform the operation is not filled out. From 9b0d4eb9a9d72d4bc02f4546203825ce50ef418d Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 15:21:58 +0200 Subject: [PATCH 14/41] Fix additional copy issues --- docs/documentation/introduction/architecture.md | 2 +- .../bpmn20/subprocesses/transaction-subprocess.md | 2 +- .../reference/cmmn11/markers/repetition-rule.md | 2 +- .../process-engine/database/database-configuration.md | 8 ++++---- docs/documentation/user-guide/process-engine/scripting.md | 2 +- .../process-engine/transactions-in-processes.md | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/documentation/introduction/architecture.md b/docs/documentation/introduction/architecture.md index a5b5842c..19d67f43 100644 --- a/docs/documentation/introduction/architecture.md +++ b/docs/documentation/introduction/architecture.md @@ -8,7 +8,7 @@ sidebar_position: 30 Operaton is a Java-based framework. The main components are written in Java and we have a general focus on providing Java developers with the tools they need for designing, implementing and running business processes and workflows on the JVM. Nevertheless, we also want to make the process engine technology available to non-Java developers. This is why Operaton also provides a REST API which allows you to build applications connecting to a remote process engine. -Operaton can be used both as a standalone process engine server or embedded inside custom Java applications. The embeddability requirement is at the heart of many architectural decisions within Operaton. For instance, we work hard to make the process engine component a lightweight component with as little dependencies on [third-party libraries](./third-party-libraries/index.md) as possible. Furthermore, the embeddability motivates programming model choices such as the capabilities of the process engine to participate in Spring Managed or JTA [transactions and the threading model](../user-guide/process-engine/transactions-in-processes.md). +Operaton can be used both as a standalone process engine server or embedded inside custom Java applications. The embeddability requirement is at the heart of many architectural decisions within Operaton. For instance, we work hard to make the process engine component a lightweight component with as few dependencies on [third-party libraries](./third-party-libraries/index.md) as possible. Furthermore, the embeddability motivates programming model choices such as the capabilities of the process engine to participate in Spring Managed or JTA [transactions and the threading model](../user-guide/process-engine/transactions-in-processes.md). ## Process Engine Architecture diff --git a/docs/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md b/docs/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md index e5dfd9c4..f070c6a9 100644 --- a/docs/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md +++ b/docs/documentation/reference/bpmn20/subprocesses/transaction-subprocess.md @@ -42,7 +42,7 @@ It is important not to confuse the BPMN transaction subprocess with technical (A A BPMN transaction differs from a technical transaction in the following ways: -* While an ACID transaction is typically short lived, a BPMN transaction may take hours, days or even months to complete. (Consider a case where one of the activities grouped by a transaction is a usertask; typically, people have longer response times than applications. Or, in another situation, a BPMN transaction might wait for some business event to occur, like the fact that a particular order has been fulfilled.) Such operations usually take considerably longer to complete than updating a record in a database or storing a message using a transactional queue. +* While an ACID transaction is typically short lived, a BPMN transaction may take hours, days or even months to complete. (Consider a case where one of the activities grouped by a transaction is a user task; typically, people have longer response times than applications. Or, in another situation, a BPMN transaction might wait for some business event to occur, like the fact that a particular order has been fulfilled.) Such operations usually take considerably longer to complete than updating a record in a database or storing a message using a transactional queue. * Because it is impossible to scope a technical transaction to the duration of a business activity, a BPMN transaction typically spans multiple ACID transactions. diff --git a/docs/documentation/reference/cmmn11/markers/repetition-rule.md b/docs/documentation/reference/cmmn11/markers/repetition-rule.md index 3f127719..017e59d7 100644 --- a/docs/documentation/reference/cmmn11/markers/repetition-rule.md +++ b/docs/documentation/reference/cmmn11/markers/repetition-rule.md @@ -125,7 +125,7 @@ The transition in which the repetition rule is evaluated can be changed by an Op ``` -This means that the repetition rule is evaluated in the transition `disable`. So, whenever an instance of the defined human task gets disabled, the repetition rule is evaluated and if this rule evaluates to `true`, a new instance is created. As a consequence, the repetition rule is not evaluated when an instance transitions in state `COMPLETED` anymore. +This means that the repetition rule is evaluated in the transition `disable`. So, whenever an instance of the defined human task gets disabled, the repetition rule is evaluated and if this rule evaluates to `true`, a new instance is created. As a consequence, the repetition rule is not evaluated when an instance transitions in state `COMPLETED` anymore. ## Repetition triggered by entry criteria diff --git a/docs/documentation/user-guide/process-engine/database/database-configuration.md b/docs/documentation/user-guide/process-engine/database/database-configuration.md index 4aee3999..f1632ca2 100644 --- a/docs/documentation/user-guide/process-engine/database/database-configuration.md +++ b/docs/documentation/user-guide/process-engine/database/database-configuration.md @@ -67,10 +67,10 @@ Note that Operaton does not ship with a library that lets you define such a data The following properties can be set, regardless of whether you are using the JDBC or data source approach: -* `databaseType`: It's normally not necessary to specify this property as it is automatically analyzed from the database connection meta data. Should only be specified in case automatic detection fails. Possible values: \{h2, mysql, oracle, postgres, mssql, db2, mariadb\}. This setting will determine which create/drop scripts and queries will be used. See the 'supported databases' section for an overview of which types are supported. +* `databaseType`: It's normally not necessary to specify this property as it is automatically analyzed from the database connection metadata. Should only be specified in case automatic detection fails. Possible values: \{h2, mysql, oracle, postgres, mssql, db2, mariadb\}. This setting will determine which create/drop scripts and queries will be used. See the 'supported databases' section for an overview of which types are supported. * `databaseSchemaUpdate`: Sets the strategy to handle the database schema on process engine boot and shutdown. * `true` (default): Upon building the process engine, a check is performed whether the Operaton tables exist in the database. If they don't exist, they are created. It must be ensured that the version of the DB schema matches the version of the process engine library, unless performing a Rolling Update. Updates of the database schema have to be done manually as described in the [Update and Migration Guide](../../../update/index.md). - * `false`: Does not perform any checks and assumes that the Operaton table exist in the database. It must be ensured that the version of the DB schema matches the version of the process engine library, unless performing a Rolling Update. Updates of the database schema have to be done manually as described in the [Update and Migration Guide](../../../update/index.md). + * `false`: Does not perform any checks and assumes that the Operaton tables exist in the database. It must be ensured that the version of the DB schema matches the version of the process engine library, unless performing a Rolling Update. Updates of the database schema have to be done manually as described in the [Update and Migration Guide](../../../update/index.md). * `create-drop`: Creates the schema when the process engine is being created and drops the schema when the process engine is being closed. :::note[Supported Databases] @@ -93,7 +93,7 @@ Here are some sample JDBC urls: ### Business Key Since the release of Camunda BPM 7.0.0-alpha9, the unique constraint for the business key is removed in the runtime and history tables and the database schema create and drop scripts. -If you rely on the constraint, you can add it manually to your schema by issuing following sql statements: +If you rely on the constraint, you can add it manually to your schema by issuing the following SQL statements: DB2 @@ -165,7 +165,7 @@ alter table ACT_HI_PROCINST add constraint ACT_UNIQ_HI_BUS_KEY UNIQUE (PROC_DEF_ ## Isolation Level Configuration -Most database management systems provide four different isolation levels to be set. For instance the levels defined by ANSI/USO SQL are (from low to high isolation): +Most database management systems provide four different isolation levels. For instance, the levels defined by ANSI/ISO SQL are (from low to high isolation): * READ UNCOMMITTED * READ COMMITTED diff --git a/docs/documentation/user-guide/process-engine/scripting.md b/docs/documentation/user-guide/process-engine/scripting.md index 5c2857fa..b82f1649 100644 --- a/docs/documentation/user-guide/process-engine/scripting.md +++ b/docs/documentation/user-guide/process-engine/scripting.md @@ -584,7 +584,7 @@ section of the [Custom Extensions](../../reference/bpmn20/custom-extensions/inde ## JavaScript Considerations -JavaScript code execution is part of the Java Runtime (JRE) with the **Nashorn** script engine until Java 14 and thus only there available out of the box. +JavaScript code execution is part of the Java Runtime (JRE) with the **Nashorn** script engine until Java 14 and is therefore only available there out of the box. We include **GraalVM JavaScript** in the pre-packaged Operaton distributions as a replacement regardless of the JRE version. JavaScript code executes on GraalVM JavaScript with preference in the process engine context if this script engine is available. If this script engine cannot be found, the process engine defaults to let the JVM select an appropriate script engine. diff --git a/docs/documentation/user-guide/process-engine/transactions-in-processes.md b/docs/documentation/user-guide/process-engine/transactions-in-processes.md index 9697dbcd..6a704907 100644 --- a/docs/documentation/user-guide/process-engine/transactions-in-processes.md +++ b/docs/documentation/user-guide/process-engine/transactions-in-processes.md @@ -6,7 +6,7 @@ sidebar_position: 160 --- -The process engine is a piece of passive Java code which works in the Thread of the client. For instance, if you have a web application allowing users to start a new process instance and a user clicks on the corresponding button, some thread from the application server's http-thread-pool will invoke the API method `runtimeService.startProcessInstanceByKey(...)`, thus *entering* the process engine and starting a new process instance. We call this "borrowing the client thread". +The process engine is a piece of passive Java code which works in the thread of the client. For instance, if you have a web application allowing users to start a new process instance and a user clicks on the corresponding button, some thread from the application server's HTTP thread pool will invoke the API method `runtimeService.startProcessInstanceByKey(...)`, thus *entering* the process engine and starting a new process instance. We call this "borrowing the client thread". On any such *external* trigger (i.e., start a process, complete a task, signal an execution), the engine runtime will advance in the process until it reaches wait states on each active path of execution. A wait state is a task which is performed *later*, which means that the engine persists the current execution to the database and waits to be triggered again. For example in case of a user task, the external trigger on task completion causes the runtime to execute the next bit of the process until wait states are reached again (or the instance ends). In contrast to user tasks, a timer event is not triggered externally. Instead it is continued by an *internal* trigger. That is why the engine also needs an active component, the [job executor](../process-engine/the-job-executor.md), which is able to fetch registered jobs and process them asynchronously. @@ -54,7 +54,7 @@ The most common motivation is the requirement to scope *logical units of work*. ![Example img](/img/documentation/user-guide/process-engine/transactions-2.png)Asynchronous Continuations -We are completing the user task, generating an invoice and then sending that invoice to the customer. It can be argued that the generation of the invoice is not part of the same unit of work: we do not want to roll back the completion of the usertask if generating an invoice fails. +We are completing the user task, generating an invoice and then sending that invoice to the customer. It can be argued that the generation of the invoice is not part of the same unit of work: we do not want to roll back the completion of the user task if generating an invoice fails. Ideally, the process engine would complete the user task (**1**), commit the transaction and return control to the calling application (**2**). In a background thread (**3**), it would generate the invoice. This is the exact behavior offered by asynchronous continuations: they allow us to scope transaction From 37f0b120a4fe9ba3bcee9d20621e166ea3c3007d Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 15:59:10 +0200 Subject: [PATCH 15/41] Polish additional documentation copy --- docs/documentation/user-guide/dmn-engine/embed.md | 6 +++--- .../user-guide/process-engine/authorization-service.md | 2 +- .../process-engine/history/history-configuration.md | 2 +- .../user-guide/process-engine/the-job-executor.md | 4 ++-- .../user-guide/quarkus-integration/configuration.md | 2 +- docs/documentation/webapps/cockpit/bpmn/dashboard.md | 6 +++--- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/documentation/user-guide/dmn-engine/embed.md b/docs/documentation/user-guide/dmn-engine/embed.md index a959cc66..604ccb31 100644 --- a/docs/documentation/user-guide/dmn-engine/embed.md +++ b/docs/documentation/user-guide/dmn-engine/embed.md @@ -15,7 +15,7 @@ menu: The Operaton DMN engine can be used as a library in a custom application. To achieve this, add the `operaton-engine-dmn` artifact to the classpath of the application and then configure and build a decision engine instance. This section provides the -required maven coordinates to add the DMN engine as a dependency to your +required Maven coordinates to add the DMN engine as a dependency to your project. It then shows how to configure and build a new DMN engine instance. ## Maven Coordinates @@ -327,7 +327,7 @@ configuration.setScriptEngineResolver(new MyScriptEngineResolver()); The DMN engine uses [SLF4J] as logging API. The `operaton-dmn-engine` artifact does not have a dependency to any of the existing [SLF4J] backends. This means that -you can choose which backend you want to use. One example would be [LOGBack], or +you can choose which backend you want to use. One example would be [Logback], or if you want to use Java util logging, you could use the `slf4j-jdk14` artifact. For more information on how to configure and use SLF4J, please refer to the [user manual]. @@ -338,7 +338,7 @@ For more information on how to configure and use SLF4J, please refer to the [data types]: ../../user-guide/dmn-engine/data-types.md [hit policies]: ../reference/dmn/decision-table/hit-policy.md [SLF4J]: http://www.slf4j.org/ -[LOGBack]: http://logback.qos.ch/ +[Logback]: http://logback.qos.ch/ [user manual]: http://www.slf4j.org/manual.html [DMN decision table]: ../reference/dmn/decision-table/index.md [DMN decision literal expression]: ../reference/dmn/decision-literal-expression/index.md diff --git a/docs/documentation/user-guide/process-engine/authorization-service.md b/docs/documentation/user-guide/process-engine/authorization-service.md index 4ebade8d..6f04ad2f 100644 --- a/docs/documentation/user-guide/process-engine/authorization-service.md +++ b/docs/documentation/user-guide/process-engine/authorization-service.md @@ -653,7 +653,7 @@ In case of Process Definitions ### Application Permissions The resource "Application" uniquely supports the **Access** permission. -The **Access** permission controls whether a user has access to a Operaton web application or not. Out of the box, it can be granted for the following applications (resource ids): +The **Access** permission controls whether a user has access to an Operaton web application or not. Out of the box, it can be granted for the following applications (resource ids): * `admin` * `cockpit` diff --git a/docs/documentation/user-guide/process-engine/history/history-configuration.md b/docs/documentation/user-guide/process-engine/history/history-configuration.md index 400565f0..310aac5f 100644 --- a/docs/documentation/user-guide/process-engine/history/history-configuration.md +++ b/docs/documentation/user-guide/process-engine/history/history-configuration.md @@ -349,7 +349,7 @@ historyService.createHistoricProcessInstanceReport() Retrieves a report of completed tasks. For the task report there are two possible report types: count and duration. -If you use the method `countByProcessDefinitionKey` or `countByTaskName` in the end of your report query, the report contains a list of completed task counts where an entry contains the task name, the definition key of the task, the process definition id, the process definition key, the process definition name and the count of how many tasks were completed for the specified key in a given period. The methods `countByProcessDefinitionKey` and `countByTaskName` then group the count reports according the criterion 'definition key' or 'task name'. To retrieve a task count report grouped by the task name, one could execute the following query: +If you use the method `countByProcessDefinitionKey` or `countByTaskName` in the end of your report query, the report contains a list of completed task counts where an entry contains the task name, the definition key of the task, the process definition id, the process definition key, the process definition name and the count of how many tasks were completed for the specified key in a given period. The methods `countByProcessDefinitionKey` and `countByTaskName` then group the count reports according to the criterion 'definition key' or 'task name'. To retrieve a task count report grouped by the task name, one could execute the following query: ```java historyService diff --git a/docs/documentation/user-guide/process-engine/the-job-executor.md b/docs/documentation/user-guide/process-engine/the-job-executor.md index eb7a3e4a..4845c43c 100644 --- a/docs/documentation/user-guide/process-engine/the-job-executor.md +++ b/docs/documentation/user-guide/process-engine/the-job-executor.md @@ -55,14 +55,14 @@ During creation, jobs can receive a priority for acquisition and execution. ### Job Prioritization -In practice, the amount of jobs processed is seldomly spread evenly across the day. Instead, there are peaks of high load, for example when batch operations are run overnight. In such a situation, the job executor can be temporarily overloaded: the database contains many more jobs than the job executor can handle at a time. *Job Prioritization* can help cope with these situations in a well-defined matter by defining an order of importance and enabling execution by that order. +In practice, the number of jobs processed is rarely spread evenly across the day. Instead, there are peaks of high load, for example when batch operations are run overnight. In such a situation, the job executor can be temporarily overloaded: the database contains many more jobs than the job executor can handle at a time. *Job Prioritization* can help cope with these situations in a well-defined manner by defining an order of importance and enabling execution by that order. In general, there are two types of use cases that can be tackled with job prioritization: * **Anticipating priorities at Design Time**: In many cases, a high-load scenario can be anticipated when designing a process model. In these scenarios, it is often important to prioritize job execution according to certain business objectives. Examples: * A retail store has casual and VIP customers. In case of high load, it is desired to handle orders of VIP customers with higher priority since their satisfaction is more important to the company's business goals. * A furniture store has human-centric processes for consulting customers in buying furniture as well as non-time-critical processes for delivery. Prioritization can be used to ensure fast response times in the consulting processes, improving user and customer satisfaction. -* **Prioritization as a Response to Runtime Conditions**: Some scenarios for high job executor load result from unforeseen conditions at runtime that cannot be dealt with during process design. Temporarily overriding priorities can help deal with these kind of situations gracefully. Example: +* **Prioritization as a Response to Runtime Conditions**: Some scenarios for high job executor load result from unforeseen conditions at runtime that cannot be dealt with during process design. Temporarily overriding priorities can help deal with these kinds of situations gracefully. Example: * A service task accesses a web service to process a payment. The payment service encounters an overload and responds very slowly. To avoid occupying all the job executor's resources with waiting for the service to respond, the respective jobs' priorities can be temporarily reduced. This way, unrelated process instances and jobs are not slowed down. After the service recovers, the overriding priority can be cleared again. diff --git a/docs/documentation/user-guide/quarkus-integration/configuration.md b/docs/documentation/user-guide/quarkus-integration/configuration.md index 6a41d733..492ab71e 100644 --- a/docs/documentation/user-guide/quarkus-integration/configuration.md +++ b/docs/documentation/user-guide/quarkus-integration/configuration.md @@ -58,7 +58,7 @@ A `QuarkusProcessEngineConfiguration` instance provides the following defaults: idGenerator - An instance of StrongUuidGeneratoris used. + An instance of StrongUuidGenerator is used. StrongUuidGenerator diff --git a/docs/documentation/webapps/cockpit/bpmn/dashboard.md b/docs/documentation/webapps/cockpit/bpmn/dashboard.md index 4c8c930a..fcea8134 100644 --- a/docs/documentation/webapps/cockpit/bpmn/dashboard.md +++ b/docs/documentation/webapps/cockpit/bpmn/dashboard.md @@ -19,7 +19,7 @@ The processes dashboard of Cockpit is the entry point for process monitoring. It ![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-process-definition-state.png)Deployed Processes -With this plugin you can easily observe the state of a process definition. Green and red dots signalize running and [failed jobs][failed-jobs]. At this observing level a red dot signifies that there is at least one process instance or a sub process instance which has an unresolved incident. You can localize the problem by using the [process definition view][process-definition-view]. +With this plugin you can easily observe the state of a process definition. Green and red dots indicate running and [failed jobs][failed-jobs]. At this observing level a red dot signifies that there is at least one process instance or a subprocess instance which has an unresolved incident. You can locate the problem by using the [process definition view][process-definition-view]. ![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes-search.png)cockpit Search @@ -37,7 +37,7 @@ button and selecting the chosen name in the drop-down menu. ![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-deployed-processes.png)Rendered Process Preview -You can also switch to the preview tab which displays the rendered process model of each deployed process. Additionally, you get information about how many instances of the process are currently running and about the process state. Green and red dots signalize running and [failed jobs][failed-jobs]. Click on the model to go to the [process definition view][process-definition-view]. +You can also switch to the preview tab which displays the rendered process model of each deployed process. Additionally, you get information about how many instances of the process are currently running and about the process state. Green and red dots indicate running and [failed jobs][failed-jobs]. Click on the model to go to the [process definition view][process-definition-view]. [process-definition-view]: ../bpmn/process-definition-view.md [failed-jobs]: ../bpmn/failed-jobs.md @@ -87,7 +87,7 @@ Additionally, you can specify process variables by name to enrich the export res * For security reasons, you can limit the maximum number of process instances that can be exported via the [Query Maximum Results Limit](../../../user-guide/process-engine/process-engine-api.md#query-maximum-results-limit). ::: -When clicking **Export CSV**, the backend crunches the requested data and creates a CSV file. This could take a while, depending on the amounts of process instances you want to export. +When clicking **Export CSV**, the backend crunches the requested data and creates a CSV file. This could take a while, depending on the number of process instances you want to export. ![Example img](/img/documentation/webapps/cockpit/bpmn/cockpit-export-download-as-csv.png)CSV Export for Process Instances: Modal Dialog – Download as CSV From b290d94212f7130ed07f787198f7dc63a9504002 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 16:37:15 +0200 Subject: [PATCH 16/41] Polish remaining process engine copy --- .../dmn/decision-table/hit-policy.md | 2 +- .../configuring-spin-integration.md | 10 +++---- .../process-engine/authorization-service.md | 22 +++++++-------- .../process-instance-modification.md | 28 +++++++++---------- .../process-engine/the-job-executor.md | 2 +- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/documentation/reference/dmn/decision-table/hit-policy.md b/docs/documentation/reference/dmn/decision-table/hit-policy.md index 57e6d0d1..9cce2f6a 100644 --- a/docs/documentation/reference/dmn/decision-table/hit-policy.md +++ b/docs/documentation/reference/dmn/decision-table/hit-policy.md @@ -176,7 +176,7 @@ the Operaton DMN engine: #### SUM aggregator The SUM aggregator sums up all outputs from the satisfied rules. ![Example img](/img/documentation/reference/dmn/decision-table/hit-policy-collect-sum.png)Hit Policy Collect SUM" class="no-lightbox -The showed decision table can be used to sum up the salary bonus for an employee. For example, the employee has been working in the company for +The shown decision table can be used to sum up the salary bonus for an employee. For example, the employee has been working in the company for 3.5 years. So the first, second and third rule will match and the result of the decision table is 600, since the output is summed up. #### MIN aggregator diff --git a/docs/documentation/user-guide/data-formats/configuring-spin-integration.md b/docs/documentation/user-guide/data-formats/configuring-spin-integration.md index 7c950822..35981ca0 100644 --- a/docs/documentation/user-guide/data-formats/configuring-spin-integration.md +++ b/docs/documentation/user-guide/data-formats/configuring-spin-integration.md @@ -23,7 +23,7 @@ There are three types of Spin artifacts as follows. ### operaton-spin-core -`operaton-spin-core` is a jar that contains only the core Spin classes. It can be combined with single data format artifacts. Operaton provides the artifacts `operaton-spin-dataformat-json-jackson` and `operaton-spin-dataformat-xml-dom` (`operaton-spin-dataformat-xml-dom-jakarta` for Jakarta XML Binding 4.0 support) that implement JSON and XML processing. These artifacts transitively pull in libraries they need. For example, `operaton-spin-dataformat-json-jackson` has a dependency to `jackson-databind`. +`operaton-spin-core` is a jar that contains only the core Spin classes. It can be combined with single data format artifacts. Operaton provides the artifacts `operaton-spin-dataformat-json-jackson` and `operaton-spin-dataformat-xml-dom` (`operaton-spin-dataformat-xml-dom-jakarta` for Jakarta XML Binding 4.0 support) that implement JSON and XML processing. These artifacts transitively pull in libraries they need. For example, `operaton-spin-dataformat-json-jackson` has a dependency on `jackson-databind`. ### operaton-spin-dataformat-all @@ -87,7 +87,7 @@ If your application manages its own process engine, then using `operaton-engine- ### Application with Operaton Spring Boot Starter -Add the dependencies to `operaton-engine-plugin-spin` and `operaton-spin-core` (along with `operaton-spin-dataformat-json-jackson` and `operaton-spin-dataformat-xml-dom` as needed) to your application. If you need to use Jakarta XML Binding 4.0 (e.g. Springboot version 3.x.x), use `operaton-spin-dataformat-xml-dom-jakarta` instead of `operaton-spin-dataformat-xml-dom`. +Add dependencies on `operaton-engine-plugin-spin` and `operaton-spin-core` (along with `operaton-spin-dataformat-json-jackson` and `operaton-spin-dataformat-xml-dom` as needed) to your application. If you need to use Jakarta XML Binding 4.0 (e.g. Spring Boot version 3.x.x), use `operaton-spin-dataformat-xml-dom-jakarta` instead of `operaton-spin-dataformat-xml-dom`. The Spin process engine plugin will be automatically registered with the process engine. ### Shared Process Engine @@ -97,9 +97,9 @@ If you use a shared process engine, Spin is usually installed as a shared librar Depending on the type of application server, `operaton-engine-plugin-spin` should be used with either `operaton-spin-core` or `operaton-spin-dataformat-all`. In the pre-packaged distributions, the following artifacts are used: * Tomcat: `operaton-spin-dataformat-all` is provided in Tomcat's shared library path. Using `operaton-spin-dataformat-all` avoids classpath pollution with Spin's dependencies. For example, this ensures that applications are not forced to use Spin's version of Jackson. -* WildFly: `operaton-spin-core` (along with `operaton-spin-dataformat-json-jackson` and `operaton-spin-dataformat-xml-dom`) are deployed as modules. Thanks to WildFly's module system, classpath pollution is not an issue. Whenever a process application is deployed, it receives an implicit module dependency to `operaton-spin-core`. +* WildFly: `operaton-spin-core` (along with `operaton-spin-dataformat-json-jackson` and `operaton-spin-dataformat-xml-dom`) are deployed as modules. Thanks to WildFly's module system, classpath pollution is not an issue. Whenever a process application is deployed, it receives an implicit module dependency on `operaton-spin-core`. -If you want to program against the Spin APIs in your process application, you need to declare a dependency to Spin in your application. As Spin is provided by the application server, the following is important: +If you want to program against the Spin APIs in your process application, you need to declare a dependency on Spin in your application. As Spin is provided by the application server, the following is important: -* Make sure to set the dependencies to scope `provided`. This avoids that a copy of the dependencies is packaged with your application, resulting in various classloading problems at runtime. +* Make sure to set the dependency scopes to `provided`. This avoids packaging a copy of the dependencies with your application, which can result in various classloading problems at runtime. * Make sure to depend on the same Spin artifacts that the application server provides, i.e. either `operaton-spin-core` or `operaton-spin-dataformat-all`. diff --git a/docs/documentation/user-guide/process-engine/authorization-service.md b/docs/documentation/user-guide/process-engine/authorization-service.md index 6f04ad2f..fc28e86c 100644 --- a/docs/documentation/user-guide/process-engine/authorization-service.md +++ b/docs/documentation/user-guide/process-engine/authorization-service.md @@ -238,11 +238,11 @@ See the [Performance Considerations](#performance-considerations) section on thi Authorizations may range over all users, an individual user or a group of users, or they may apply to an individual resource instance or all instances of the same type (resourceId = ANY). The precedence is as follows: -* An authorization applying to an individual resource instance precedes over an authorization applying to all instances of the same resource type. -* An authorization for an individual user precedes over an authorization for a group. -* A Group authorization precedes over a GLOBAL authorization. -* A Group GRANT authorization precedes over a Group REVOKE authorization. -* A User GRANT authorization precedes over a User REVOKE authorization. +* An authorization applying to an individual resource instance takes precedence over an authorization applying to all instances of the same resource type. +* An authorization for an individual user takes precedence over an authorization for a group. +* A Group authorization takes precedence over a GLOBAL authorization. +* A Group GRANT authorization takes precedence over a Group REVOKE authorization. +* A User GRANT authorization takes precedence over a User REVOKE authorization. ### When are Authorizations checked? @@ -550,7 +550,7 @@ The table below shows a detailed overview on which permissions authorize a user -GRANT and REVOKE authorizations with **Task Work**, **Task Assign**, and **Update Variable** permissions precede over **Update** and **Update Task**. +GRANT and REVOKE authorizations with **Task Work**, **Task Assign**, and **Update Variable** permissions take precedence over **Update** and **Update Task**. ### Default Task Permissions @@ -588,8 +588,8 @@ The **Create Instance** permission is required to start new process instances. ::: -GRANT and REVOKE authorizations with **Retry Job**, **Suspend**, **Suspend Instance**, **Update Instance Variable**, and **Update Task Variable** permissions precede over **Update**. -Keep in mind that user who is allowed to perform variable updates could trigger other changes in the process by updating a variable. For example, successful evaluation of conditional event related to this variable. +GRANT and REVOKE authorizations with **Retry Job**, **Suspend**, **Suspend Instance**, **Update Instance Variable**, and **Update Task Variable** permissions take precedence over **Update**. +Keep in mind that a user who is allowed to perform variable updates could trigger other changes in the process by updating a variable. For example, it could trigger the successful evaluation of a conditional event related to this variable. ### Additional Process Instance Permissions @@ -599,8 +599,8 @@ In addition to **Create**, **Read**, **Update**, and **Delete**, the following p * Suspend * Update Variable -GRANT and REVOKE authorizations with **Retry Job**, **Suspend**, and **Update Variable** permissions precede over **Update**. -Keep in mind that user who is allowed to perform variable updates could trigger other changes in the process by updating a variable. For example, successful evaluation of conditional event related to this variable. +GRANT and REVOKE authorizations with **Retry Job**, **Suspend**, and **Update Variable** permissions take precedence over **Update**. +Keep in mind that a user who is allowed to perform variable updates could trigger other changes in the process by updating a variable. For example, it could trigger the successful evaluation of a conditional event related to this variable. ### Additional Decision Definition Permissions @@ -631,7 +631,7 @@ In addition to **Create**, **Update**, **Read**, and **Delete**, the following p * Create Batch Set Variables * Create Batch Correlate Messages -GRANT and REVOKE authorizations with "Create Batch …" permissions precede over Create. +GRANT and REVOKE authorizations with "Create Batch …" permissions take precedence over Create. ### Default Read Variable Permissions When the `enforceSpecificVariablePermission` process engine configuration is enabled, in order to read variables, the user needs to be granted the following permissions: diff --git a/docs/documentation/user-guide/process-engine/process-instance-modification.md b/docs/documentation/user-guide/process-engine/process-instance-modification.md index 4764b556..81398f12 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-modification.md +++ b/docs/documentation/user-guide/process-engine/process-instance-modification.md @@ -192,7 +192,7 @@ Starting a transition via `startTransition` translates to starting execution on ProcessInstanceModificationBuilder#cancelActivityInstance(String activityInstanceId) ``` -A specific activity instance can be canceled by `cancelActivityInstance`. This can either be a leaf activity instance, such as an instance of a user task, as well as an instance of a scope higher in the hierarchy, such as an instance of a sub process. See the [details on activity instances](#activity-instance-based-api) how to retrieve the activity instances of a process instance. +A specific activity instance can be canceled by `cancelActivityInstance`. This can be either a leaf activity instance, such as an instance of a user task, or an instance of a scope higher in the hierarchy, such as an instance of a subprocess. See the [details on activity instances](#activity-instance-based-api) how to retrieve the activity instances of a process instance. ### Cancel a Transition Instance @@ -271,7 +271,7 @@ Compared to activity instances, *transition instances* do not represent active a ### Nested Instantiation -Assume a process instance of the above example process where the activity *Decline Loan Application* is active. Now we submit the instruction to start before the activity *Assess Credit Worthiness*. When applying this instruction, the process engine makes sure to instantiate all parent scopes that are not active yet. In this case, before starting the activity, the process engine instantiates the *Evaluate Loan Application* sub process. Where before the activity instance tree was +Assume a process instance of the above example process where the activity *Decline Loan Application* is active. Now we submit the instruction to start before the activity *Assess Credit Worthiness*. When applying this instruction, the process engine makes sure to instantiate all parent scopes that are not active yet. In this case, before starting the activity, the process engine instantiates the *Evaluate Loan Application* subprocess. Where before the activity instance tree was ``` ProcessInstance @@ -291,7 +291,7 @@ Apart from instantiating these parent scopes, the engine also ensures to registe
-Starting the activity *Assess Credit Worthiness* also registers an event subscription for the message boundary event *Cancellation Notice Received* such that it is possible to cancel the sub process this way. +Starting the activity *Assess Credit Worthiness* also registers an event subscription for the message boundary event *Cancellation Notice Received* such that it is possible to cancel the subprocess this way. ### Ancestor Selection for Instantiation @@ -312,7 +312,7 @@ ProcessInstance Assess Credit Worthiness ``` -The sub process scope has been instantiated as well. Now assume that the sub process is already instantiated, such as in the following tree: +The subprocess scope has been instantiated as well. Now assume that the subprocess is already instantiated, such as in the following tree: ``` ProcessInstance @@ -320,7 +320,7 @@ ProcessInstance Assess Credit Worthiness ``` -Starting *Assess Credit Worthiness* again will start it in the context of the existing sub process instance, such that the resulting tree is: +Starting *Assess Credit Worthiness* again will start it in the context of the existing subprocess instance, such that the resulting tree is: ``` ProcessInstance @@ -329,7 +329,7 @@ ProcessInstance Assess Credit Worthiness ``` -If you want to avoid this behavior and instead want to instantiate the sub process a second time, an id of an ancestor activity instance can be supplied by using the method `startBeforeActivity(String activityId, String ancestorActivityInstanceId)` - similar methods exist for starting after an activity and starting a transition. The parameter `ancestorActivityInstanceId` takes the id of an activity instance that is currently active and that belongs to an *ancestor* activity of the activity to be started. An activity is a valid ancestor, if it contains the activity to be started (either directly, or indirectly with other activities in between). +If you want to avoid this behavior and instead want to instantiate the subprocess a second time, an id of an ancestor activity instance can be supplied by using the method `startBeforeActivity(String activityId, String ancestorActivityInstanceId)` - similar methods exist for starting after an activity and starting a transition. The parameter `ancestorActivityInstanceId` takes the id of an activity instance that is currently active and that belongs to an *ancestor* activity of the activity to be started. An activity is a valid ancestor, if it contains the activity to be started (either directly, or indirectly with other activities in between). With a given ancestor activity instance id, all scopes in between the ancestor activity and the activity to be started will be instantiated, regardless of whether they are already instantiated. In the example, the following code starts the activity *Assess Credit Worthiness* with the process instance (being the root activity instance) as the ancestor: @@ -351,12 +351,12 @@ ProcessInstance Assess Credit Worthiness ``` -The sub process was started a second time. +The subprocess was started a second time. ### Cancellation Propagation -Canceling an activity instance propagates to parent activity instances that do not contain other activity instances. This behavior ensures that the process instance is not left in an execution state that makes no sense. This means, when a single activity is active in a sub process and that activity instance is canceled, the sub process is canceled as well. Consider the following activity instance tree: +Canceling an activity instance propagates to parent activity instances that do not contain other activity instances. This behavior ensures that the process instance is not left in an execution state that makes no sense. This means, when a single activity is active in a subprocess and that activity instance is canceled, the subprocess is canceled as well. Consider the following activity instance tree: ``` ProcessInstance @@ -412,7 +412,7 @@ runtimeService.createProcessInstanceModification(processInstance.getId()) .execute(); ``` -Due to [cancellation propagation](#cancellation-propagation), the sub process instance is canceled when the cancellation instruction is executed only to be re-instantiated when the instantiation instruction is executed. This means, after the modification has been executed, there is a different instance of the *Evaluate Loan Application* sub process. Any entities associated with the previous instance have been removed, such as variables or event subscriptions. +Due to [cancellation propagation](#cancellation-propagation), the subprocess instance is canceled when the cancellation instruction is executed only to be re-instantiated when the instantiation instruction is executed. This means, after the modification has been executed, there is a different instance of the *Evaluate Loan Application* subprocess. Any entities associated with the previous instance have been removed, such as variables or event subscriptions. In contrast, consider the case where the instantiation is performed first: @@ -424,16 +424,16 @@ runtimeService.createProcessInstanceModification(processInstance.getId()) .execute(); ``` -Due to the [default ancestor selection](#ancestor-selection-for-instantiation) during instantiation and the fact that cancellation does not propagate to the sub process instance in this case, the sub process instance is the same after modification as it was before. Related entities like variables and event subscriptions are preserved. +Due to the [default ancestor selection](#ancestor-selection-for-instantiation) during instantiation and the fact that cancellation does not propagate to the subprocess instance in this case, the subprocess instance is the same after modification as it was before. Related entities like variables and event subscriptions are preserved. ### Start Activities with Interrupting/Canceling Semantics -Process instance modification respects any interrupting or canceling semantics of the activities to be started. In particular, starting an interrupting boundary event or an interrupting event sub process will cancel/interrupt the activity it is defined on/in. Consider the following process: +Process instance modification respects any interrupting or canceling semantics of the activities to be started. In particular, starting an interrupting boundary event or an interrupting event subprocess will cancel/interrupt the activity it is defined on/in. Consider the following process:
-Assume that the activity *Assess Credit Worthiness* is currently active. The event sub process can be started with the following code: +Assume that the activity *Assess Credit Worthiness* is currently active. The event subprocess can be started with the following code: ```java ProcessInstance processInstance = ...; @@ -442,7 +442,7 @@ runtimeService.createProcessInstanceModification(processInstance.getId()) .execute(); ``` -Since the start event of the *Cancel Evaluation* sub process is interrupting, it will cancel the running instance of *Assess Credit Worthiness*. The same happens when the start event of the event subprocess is started via: +Since the start event of the *Cancel Evaluation* subprocess is interrupting, it will cancel the running instance of *Assess Credit Worthiness*. The same happens when the start event of the event subprocess is started via: ```java ProcessInstance processInstance = ...; @@ -451,7 +451,7 @@ runtimeService.createProcessInstanceModification(processInstance.getId()) .execute(); ``` -However, when an activity located in the event sub process is directly started, the interruption is not executed. Consider the following code: +However, when an activity located in the event subprocess is directly started, the interruption is not executed. Consider the following code: ```java ProcessInstance processInstance = ...; diff --git a/docs/documentation/user-guide/process-engine/the-job-executor.md b/docs/documentation/user-guide/process-engine/the-job-executor.md index 4845c43c..0d36fb3c 100644 --- a/docs/documentation/user-guide/process-engine/the-job-executor.md +++ b/docs/documentation/user-guide/process-engine/the-job-executor.md @@ -491,7 +491,7 @@ Reminder: a retry may be required if there are any failures during the transacti If the retry configuration is set for a multi-instance activity then the configuration is applied to the [multi-instance body](../process-engine/transactions-in-processes.md#asynchronous-continuations-of-multi-instance-activities). Additionally, the retries of the inner activities can also be configured using the extension element as child of the `multiInstanceLoopCharacteristics` element. -The following example defines the retries of a multi-instance service task with asynchronous continuation of the multi-instance body and the inner activity. If a failure occur during one of the five parallel instances then the job of the failed instance will be retried up to 3 times with a delay of 5 seconds. In case all instances ended successful and a failure occur during the transaction which follows the task, the job will be retried up to 5 times with a delay of 5 minutes. +The following example defines the retries of a multi-instance service task with asynchronous continuation of the multi-instance body and the inner activity. If a failure occurs during one of the five parallel instances then the job of the failed instance will be retried up to 3 times with a delay of 5 seconds. If all instances end successfully and a failure occurs during the transaction which follows the task, the job will be retried up to 5 times with a delay of 5 minutes. ```xml From bfaf2dfeef39a63b2fe7dff2c2328f840f465ac8 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 17:10:16 +0200 Subject: [PATCH 17/41] Polish remaining copy wording --- docs/documentation/installation/database-schema.md | 2 +- .../installation/full/tomcat/configuration.md | 4 ++-- docs/documentation/introduction/architecture.md | 4 ++-- .../reference/bpmn20/tasks/user-task.md | 2 +- .../process-engine/authorization-service.md | 2 +- .../database/database-configuration.md | 2 +- .../user-guide/process-engine/scripting.md | 14 +++++++------- .../user-guide/process-engine/the-job-executor.md | 4 ++-- .../user-guide/process-engine/time-zones.md | 8 ++++---- .../process-engine/transactions-in-processes.md | 4 ++-- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/docs/documentation/installation/database-schema.md b/docs/documentation/installation/database-schema.md index 85120197..67fed9c1 100644 --- a/docs/documentation/installation/database-schema.md +++ b/docs/documentation/installation/database-schema.md @@ -131,7 +131,7 @@ Liquibase provides additional commands to preview all changes applied by command #### Migrate to Liquibase Liquibase provides workflows to update databases that were not set up using Liquibase from the very beginning. -For such a scenario to work, you need to populate a tracking table that represents the current state of your database with regards to the changelog file you want to update against. +For such a scenario to work, you need to populate a tracking table that represents the current state of your database with regard to the changelog file you want to update against. In other words, you need to let Liquibase know which parts of the changelog your database already contains. Perform the following steps to migrate your manual installation to Liquibase: diff --git a/docs/documentation/installation/full/tomcat/configuration.md b/docs/documentation/installation/full/tomcat/configuration.md index 95d4fee3..cd630eae 100644 --- a/docs/documentation/installation/full/tomcat/configuration.md +++ b/docs/documentation/installation/full/tomcat/configuration.md @@ -241,8 +241,8 @@ Please also see the detailed overview about the [Cookie Security](../../../webap ### Security-related HTTP headers in Webapps -To customize the configuration of security-related HTTP headers in the web applications its deployment descriptor needs -to be adjusted. You can find it under `WEB-INF/web.xml`. +To customize the configuration of security-related HTTP headers in the web applications, adjust each web application's +deployment descriptor. You can find it under `WEB-INF/web.xml`. Please watch out for the following section: ```xml diff --git a/docs/documentation/introduction/architecture.md b/docs/documentation/introduction/architecture.md index 19d67f43..8cce17dc 100644 --- a/docs/documentation/introduction/architecture.md +++ b/docs/documentation/introduction/architecture.md @@ -64,10 +64,10 @@ The individual process engine instances do not maintain session state across tra Operaton doesn't provide load-balancing capabilities or session replication capabilities out of the box. The load-balancing function would need to be provided by a third-party system, and session replication would need to be provided by the host application server. -In a clustered setup, if users are going to login to the web applications, an extra step will need to be taken to ensure that users aren't asked to login multiple times. Two options exist: +In a clustered setup, if users are going to log in to the web applications, an extra step will need to be taken to ensure that users aren't asked to log in multiple times. Two options exist: 1. "Sticky sessions" could be configured and enabled within your load balancing solution. This would ensure that all requests from a given user are directed to the same instance over a configurable period of time. -2. Session sharing can be enabled in your application server such that the application server instances share session state. This would allow users to connect to multiple instances in the cluster without being asked to login multiple times. +2. Session sharing can be enabled in your application server such that the application server instances share session state. This would allow users to connect to multiple instances in the cluster without being asked to log in multiple times. If neither of the above approaches are implemented in a cluster setup, connections to multiple nodes - intentionally or via a load-balancing solution - will result in multiple login requests. diff --git a/docs/documentation/reference/bpmn20/tasks/user-task.md b/docs/documentation/reference/bpmn20/tasks/user-task.md index ee457f11..eb832bfc 100644 --- a/docs/documentation/reference/bpmn20/tasks/user-task.md +++ b/docs/documentation/reference/bpmn20/tasks/user-task.md @@ -321,7 +321,7 @@ The variables are optional. They will be passed to the execution if the escalati ## Completion -Complete is part of the [task lifecycle](../../../webapps/tasklist/task-lifecycle.md) operation along with create, set candidate, assign, etc. (also available via Java API). Complete a task by passing variables; optionally, the process variables can be retrieved: +Completing a task is part of the [task lifecycle](../../../webapps/tasklist/task-lifecycle.md), along with create, set candidate, assign, etc. (also available via Java API). Complete a task by passing variables; optionally, the process variables can be retrieved: ```java taskService.complete(taskId, variables); diff --git a/docs/documentation/user-guide/process-engine/authorization-service.md b/docs/documentation/user-guide/process-engine/authorization-service.md index fc28e86c..17fd2238 100644 --- a/docs/documentation/user-guide/process-engine/authorization-service.md +++ b/docs/documentation/user-guide/process-engine/authorization-service.md @@ -893,7 +893,7 @@ The following is an example of how to configure the administrator authorization The plugin will make sure that administrator authorizations (ALL permissions) are granted on all resources whenever the process engine is started. :::note - It is not necessary to configure all LDAP users and groups which should have administrator authorization. It is usually enough to configure a single user and use that user to log into the web application and create additional authorizations using the User Interface. + It is not necessary to configure all LDAP users and groups which should have administrator authorization. It is usually enough to configure a single user and use that user to log into the web application and create additional authorizations using the user interface. ::: Complete list of configuration properties: diff --git a/docs/documentation/user-guide/process-engine/database/database-configuration.md b/docs/documentation/user-guide/process-engine/database/database-configuration.md index f1632ca2..b585293d 100644 --- a/docs/documentation/user-guide/process-engine/database/database-configuration.md +++ b/docs/documentation/user-guide/process-engine/database/database-configuration.md @@ -176,6 +176,6 @@ The required isolation level to run Operaton with is **READ COMMITTED**, which m When initializing the engine, a check is performed in order to determine if the transaction isolation level set for the database is different from the recommended one. If it is, an exception will be thrown. -This behaviour can be disabled by setting the `skipIsolationLevelCheck` flag to `true`. Doing this will prevent an exception from being thrown and a warning message will be logged instead. +This behavior can be disabled by setting the `skipIsolationLevelCheck` flag to `true`. Doing this will prevent an exception from being thrown and a warning message will be logged instead. [See here](../../../reference/deployment-descriptors/tags/process-engine.mdx#configuration-properties) for more details about this and other properties. diff --git a/docs/documentation/user-guide/process-engine/scripting.md b/docs/documentation/user-guide/process-engine/scripting.md index b82f1649..fc89f27c 100644 --- a/docs/documentation/user-guide/process-engine/scripting.md +++ b/docs/documentation/user-guide/process-engine/scripting.md @@ -443,18 +443,18 @@ Be aware that the process engine flag `enableFetchScriptEngineFromProcessApplica ## Variables Available During Script Execution During the execution of scripts, all process variables visible in the current scope are available. -They can be accessed directly by the name of the variable (i.e., `sum`). This does not apply for -JRuby where you have to access the variable as a ruby global variable (prepend with a dollar sign, -i.e., `$sum`) +They can be accessed directly by the name of the variable (i.e., `sum`). This does not apply to +JRuby, where you have to access the variable as a Ruby global variable (prepend with a dollar sign, +i.e., `$sum`). There are also special variables: 1. `execution`, which is always available if the script is executed in an execution scope (e.g., in a script task) (DelegateExecution). 1. `task`, which is available if the script is executed in a task scope (e.g., a task listener) (DelegateTask). -1. `connector`, which is available if the script is executed in a connector variable scope (e.g., outputParameter of a operaton:connector) (ConnectorVariableScope). +1. `connector`, which is available if the script is executed in a connector variable scope (e.g., outputParameter of an `operaton:connector`) (ConnectorVariableScope). -These variables correspond to the `DelegateExecution`, `DelegateTask` or resp. `ConnectorVariableScope` -interface which means that it can be used to get and set variables or access process engine services. +These variables correspond to the `DelegateExecution`, `DelegateTask`, and `ConnectorVariableScope` +interfaces, respectively. They can be used to get and set variables or access process engine services. ```java // get process variable @@ -547,7 +547,7 @@ You can also specify the attribute `operaton:resource` on the `scriptTask` and ` element, respectively the `resource` attribute on the `operaton:script` element. This extension attribute specifies the location of an external resource which should be used as script source code. Optionally, the resource path can be prefixed with an URL-like scheme to specify if the resource is -contained in the deployment or classpath. The default behaviour is that the resource is part of the +contained in the deployment or classpath. The default behavior is that the resource is part of the classpath. This means that the first two script task elements in the following examples are equal. ```xml diff --git a/docs/documentation/user-guide/process-engine/the-job-executor.md b/docs/documentation/user-guide/process-engine/the-job-executor.md index 0d36fb3c..b70e5be2 100644 --- a/docs/documentation/user-guide/process-engine/the-job-executor.md +++ b/docs/documentation/user-guide/process-engine/the-job-executor.md @@ -525,7 +525,7 @@ Here is an example of a global process engine configuration: ``` -The retry sequence contains three retry times and the behaviour for this example would be the following: +The retry sequence contains three retry times and the behavior for this example would be the following: * A job fails for the first time: the job will be retried in 10 minutes (PT10M is applied). * A job fails for the second time: the job will be retried in 17 minutes (PT17M is applied). @@ -536,7 +536,7 @@ If the user decides to increase the retry number during retries, the last interv ### Custom Retry Configuration -You can configure an custom retry configuration by adding the `customPostBPMNParseListeners` property and specify your custom `FailedJobParseListener` to the process engine configuration: +You can configure a custom retry configuration by adding the `customPostBPMNParseListeners` property and specifying your custom `FailedJobParseListener` in the process engine configuration: ```xml diff --git a/docs/documentation/user-guide/process-engine/time-zones.md b/docs/documentation/user-guide/process-engine/time-zones.md index 81b324ad..49480176 100644 --- a/docs/documentation/user-guide/process-engine/time-zones.md +++ b/docs/documentation/user-guide/process-engine/time-zones.md @@ -30,10 +30,10 @@ to avoid unexpected job executions. ## Operaton Web Applications -It is possible to use the Operaton Web Applications in different timezones. All dates are translated to/from the local timezone when working with the UI. +It is possible to use the Operaton web applications in different time zones. All dates are translated to/from the local time zone when working with the UI. ## Cluster Setup -In case the process engine is running in a [cluster](../../introduction/architecture.md#clustering-model), -all cluster nodes must run in one and the same time zone. In case cluster nodes exist in different time zones, -correct behaviour when operating with DateTime values cannot be guaranteed. +If the process engine is running in a [cluster](../../introduction/architecture.md#clustering-model), +all cluster nodes must run in the same time zone. If cluster nodes exist in different time zones, +correct behavior when operating with DateTime values cannot be guaranteed. diff --git a/docs/documentation/user-guide/process-engine/transactions-in-processes.md b/docs/documentation/user-guide/process-engine/transactions-in-processes.md index 6a704907..b11d5c23 100644 --- a/docs/documentation/user-guide/process-engine/transactions-in-processes.md +++ b/docs/documentation/user-guide/process-engine/transactions-in-processes.md @@ -242,14 +242,14 @@ as soon as the Command returns. However, it should be noted that the current transaction may be committed at a later time. If a Process Engine Command is nested into another Command, i.e. a Command -is executed within another command, the default behaviour is to reuse the +is executed within another command, the default behavior is to reuse the existing Process Engine Context. This means that the nested Command will have access to the same cached entities and the changes made to them. When the nested Command is to be executed in a new transaction, a new Process Engine Context needs to be created for its execution. In this case, the nested Command will use a new cache for the database entities, independent of the -previous (outer) Command cache. This means that, the changes in the cache of +previous (outer) Command cache. This means that the changes in the cache of one Command are invisible to the other Command and vice versa. When the nested Command returns, the changes are flushed to the database independently of the Process Engine Context of the outer Command. From a406ee973a4184cdc6f30ad2f4b4a7847ecff402 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 17:36:21 +0200 Subject: [PATCH 18/41] Polish identity service copy wording --- .../user-guide/process-engine/identity-service.md | 8 ++++---- .../webapps/admin/authorization-management.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/documentation/user-guide/process-engine/identity-service.md b/docs/documentation/user-guide/process-engine/identity-service.md index 437a574d..aa87bb2c 100644 --- a/docs/documentation/user-guide/process-engine/identity-service.md +++ b/docs/documentation/user-guide/process-engine/identity-service.md @@ -318,7 +318,7 @@ The LDAP Identity Provider provides the following configuration properties: allowAnonymousLogin

- Allows to login anonymously without a password. Default: false + Allows users to log in anonymously without a password. Default: false

Warning: We strongly advise against using this property. You should configure your LDAP @@ -384,7 +384,7 @@ See the Spring Security OAuth2 Integration's [OAuth2 Identity Provider](../sprin ## Throttle login attempts -A mechanism exists for preventing subsequent unsuccessful login attempts.The essence of it is that the user is not able to log in for a specific amount of time after unsuccessful login attempts. +A mechanism exists for preventing subsequent unsuccessful login attempts. The essence of it is that the user is not able to log in for a specific amount of time after unsuccessful login attempts. The amount of time is calculated after each attempt but it is limited by maximum delay time. After a predefined number of unsuccessful attempts, the user will be locked and only an administrator has permissions to [unlock](../../webapps/admin/user-management.md) them. @@ -398,8 +398,8 @@ The mechanism is configurable with the following properties and respective defau For more information, please check the process engine's [login properties](../../reference/deployment-descriptors/tags/process-engine.mdx#login-parameters) section. Calculation of the delay is done via the formula: baseTime * factor^(attempt-1). -The behaviour with the default configuration will be: -3 seconds delay after the first unsuccessful attempt, 6 seconds after the 2nd attempt, 12 seconds, 24 seconds, 48 seconds, 60 seconds, 60 seconds, etc. After the 10th attempt, if the user fails to login again, the user will be locked. +The behavior with the default configuration will be: +3 seconds delay after the first unsuccessful attempt, 6 seconds after the 2nd attempt, 12 seconds, 24 seconds, 48 seconds, 60 seconds, 60 seconds, etc. After the 10th attempt, if the user fails to log in again, the user will be locked. ### LDAP specifics diff --git a/docs/documentation/webapps/admin/authorization-management.md b/docs/documentation/webapps/admin/authorization-management.md index 9d5a5bfa..8fa0f86b 100644 --- a/docs/documentation/webapps/admin/authorization-management.md +++ b/docs/documentation/webapps/admin/authorization-management.md @@ -56,7 +56,7 @@ The authorizations set here correspond to the authorizations that can be set in ### Member Visibility -Depending on the users authorization, [Tasklist](../tasklist/index.md) will show you information about your colleagues and groups. Currently you can only see the group folder *support* but not your colleague. To change that, log in to the admin application as administrator, enter the Users Authorization menu and create the following rules: +Depending on the user's authorization, [Tasklist](../tasklist/index.md) will show you information about your colleagues and groups. Currently you can only see the group folder *support* but not your colleague. To change that, log in to the admin application as administrator, enter the Users Authorization menu and create the following rules: ![Example img](/img/documentation/webapps/admin/admin-authorization-users.png)Users Authorization From 760803ff38239b6d4103a30a470dd7807fdf4bd2 Mon Sep 17 00:00:00 2001 From: Julian Haupt Date: Wed, 17 Jun 2026 17:41:32 +0200 Subject: [PATCH 19/41] Polish process engine copy wording --- .../user-guide/process-engine/authorization-service.md | 8 ++++---- .../process-engine/process-instance-modification.md | 6 +++--- .../user-guide/process-engine/process-instance-restart.md | 2 +- docs/get-started/archive/spring/shared-process-engine.md | 6 +++--- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/documentation/user-guide/process-engine/authorization-service.md b/docs/documentation/user-guide/process-engine/authorization-service.md index 17fd2238..53012b2e 100644 --- a/docs/documentation/user-guide/process-engine/authorization-service.md +++ b/docs/documentation/user-guide/process-engine/authorization-service.md @@ -10,7 +10,7 @@ menu: --- -Operaton allows users to authorize access to the data it manages. This makes it possible to configure which user can access which process instances, tasks, etc... +Operaton allows users to authorize access to the data it manages. This makes it possible to configure which user can access which process instances, tasks, etc. Authorization has a performance cost and introduces some complexity. It should only be used if required. @@ -71,7 +71,7 @@ The basic permissions available in the engine are: Note that the permission **None** does not mean no permissions are granted. Instead, it represents "no action". Additionally, the **All** permission will vanish from a user if a single permission is revoked. -For detailed list of available permissions please check [Permission by resource](#permissions-by-resource) section. +For a detailed list of available permissions, please check the [Permission by resource](#permissions-by-resource) section. A single authorization object may assign multiple permissions to a single user and resource: @@ -862,7 +862,7 @@ Operaton has no explicit concept of "administrator" beyond it being a user who h When downloading the Operaton distribution, the invoice example application creates a group with id `operaton-admin` and grants all authorizations on all resources to this group. -In absence of the demo application, this task is performed by the [Operaton Admin Web Application](../../webapps/admin/user-management.md#initial-user-setup). If the Operaton web application is started for the first time and no user exists in the database, it asks you to perform the "initial setup". In this process, the `operaton-admin` group is created and granted all permissions on all resources. +In the absence of the demo application, this task is performed by the [Operaton Admin Web Application](../../webapps/admin/user-management.md#initial-user-setup). If the Operaton web application is started for the first time and no user exists in the database, it asks you to perform the "initial setup". In this process, the `operaton-admin` group is created and granted all permissions on all resources. :::note[LDAP] The group "operaton-admin" is not created when using LDAP (since LDAP is only accessed in a read-only way). Also see the below section on the administrator authorization plugin. @@ -1006,7 +1006,7 @@ Authorizations are calculated by the database which is most efficient. Example: ### Performance of Checking Grant Authorizations -When only Grant authorizations are used, the check is very efficient since the authorization table can be joined with the resource table (task table, process instance table, etc...). +When only Grant authorizations are used, the check is very efficient since the authorization table can be joined with the resource table (task table, process instance table, etc.). ### Performance of Checking Revoke Authorizations diff --git a/docs/documentation/user-guide/process-engine/process-instance-modification.md b/docs/documentation/user-guide/process-engine/process-instance-modification.md index 81398f12..acf210e9 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-modification.md +++ b/docs/documentation/user-guide/process-engine/process-instance-modification.md @@ -16,7 +16,7 @@ While the process model contains sequence flows that define in which order activ * Migrating process instances from one version of a process definition to another * Testing: Activities can be skipped or repeated for isolated testing of individual process segments -To perform such an operation, the process engine offers the *process instance modification API* that is entered via `RuntimeService.createProcessInstanceModification(...)` or +To perform such an operation, the process engine offers the *process instance modification API*, which is entered via `RuntimeService.createProcessInstanceModification(...)` or `RuntimeService.createModification(...)`. This API allows you to specify multiple *modification instructions* in one call by using a fluent builder. In particular, it is possible to: * start execution before an activity @@ -43,7 +43,7 @@ ProcessInstance Decline Loan Application ``` -Now the worker performing the task *Decline Loan Application* recognizes an error in the evaluation result and comes to the conclusion that the application should be accepted nevertheless. While such flexibility is not modelled as part of the process, process instance modification allows you to correct the running process instance. The following API call does the trick: +Now the worker performing the task *Decline Loan Application* recognizes an error in the evaluation result and comes to the conclusion that the application should be accepted nevertheless. While such flexibility is not modeled as part of the process, process instance modification allows you to correct the running process instance. The following API call does the trick: ```java ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().singleResult(); @@ -550,7 +550,7 @@ Providing variables is not supported when executing async modification of single ### Modification of Multiple Process Instances -When there are multiple process instances which fulfill a specific criteria, it is possible to modify them at once using `RuntimeService.createModification(...)`. This method allows you to specify +When there are multiple process instances which fulfill a specific criterion, it is possible to modify them at once using `RuntimeService.createModification(...)`. This method allows you to specify the modification instructions and IDs of process instances that should be modified. It is required that the process instances belong to the given process definition. The fluent modification builder offers the following instructions to be submitted: diff --git a/docs/documentation/user-guide/process-engine/process-instance-restart.md b/docs/documentation/user-guide/process-engine/process-instance-restart.md index 9f5a0a3a..fc3d80cc 100644 --- a/docs/documentation/user-guide/process-engine/process-instance-restart.md +++ b/docs/documentation/user-guide/process-engine/process-instance-restart.md @@ -16,7 +16,7 @@ This can, for example, be useful when termination did not proceed in a desired w * Restoring the last state of process instances that have been erroneously canceled * Restarting process instances after a termination caused by a wrong decision -To perform such an operation the process engine offers *the process instance restart API*, that is entered via `RuntimeService.restartProcessInstances(...)`. This API allows you to specify multiple instantiation instructions in one call by using a fluent builder. +To perform such an operation, the process engine offers *the process instance restart API*, which is entered via `RuntimeService.restartProcessInstances(...)`. This API allows you to specify multiple instantiation instructions in one call by using a fluent builder. Note that these operations are also available via REST: restref page="restartProcessInstance" text="Restart Process Instance" tag="Process-Definition and restref page="restartProcessInstanceAsyncOperation" text="Restart Process Instance (async)" tag="Process-Definition diff --git a/docs/get-started/archive/spring/shared-process-engine.md b/docs/get-started/archive/spring/shared-process-engine.md index 9638a453..93619cd8 100644 --- a/docs/get-started/archive/spring/shared-process-engine.md +++ b/docs/get-started/archive/spring/shared-process-engine.md @@ -132,11 +132,11 @@ public class LoanApplicationContext { } ``` -We also removed `Starter` bean as we are going to use Tasklist to manually start the process. +We also removed the `Starter` bean as we are going to use Tasklist to manually start the process. If you like, you can also remove the class itself as it is not used anymore. -After Maven build and redeploy, process definitions will be automatically deployed. Then you -can go to Tasklist, login with `demo/demo` credentials, click on `Start process` and start +After a Maven build and redeploy, process definitions will be automatically deployed. Then you +can go to Tasklist, log in with `demo/demo` credentials, click on `Start process` and start the `Loan approval` process. You will see this in the Tomcat log file:


From b44b78988e19250d23ca1a44235d3a9acffbb73e Mon Sep 17 00:00:00 2001
From: Julian Haupt 
Date: Wed, 17 Jun 2026 18:06:58 +0200
Subject: [PATCH 20/41] Fix additional tutorial copy typos

---
 docs/documentation/user-guide/testing/assert-examples.md | 4 ++--
 docs/get-started/archive/java-process-app/deploy.md      | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/documentation/user-guide/testing/assert-examples.md b/docs/documentation/user-guide/testing/assert-examples.md
index 2acbb28e..11fee10f 100644
--- a/docs/documentation/user-guide/testing/assert-examples.md
+++ b/docs/documentation/user-guide/testing/assert-examples.md
@@ -305,7 +305,7 @@ assertThat(task).isNotAssigned();
 
 ### Task: hasCandidateGroup
 
-Assert that a task is is currently waiting to be assigned
+Assert that a task is currently waiting to be assigned
 to a user of the specified candidate group.
 
 ```java
@@ -878,4 +878,4 @@ instance of its own process definition you can therefore e.g. write ...
 
 ```java
 assertThat(processDefinition()).hasActiveInstances(1);
-```
\ No newline at end of file
+```
diff --git a/docs/get-started/archive/java-process-app/deploy.md b/docs/get-started/archive/java-process-app/deploy.md
index ecd50861..a5667169 100644
--- a/docs/get-started/archive/java-process-app/deploy.md
+++ b/docs/get-started/archive/java-process-app/deploy.md
@@ -83,6 +83,6 @@ Log out of Admin. Go to Tasklist ([http://localhost:8080/operaton/app/tasklist](
 
 ![Example image](/img/get-started/archive/java-process-app/diagram.png)
 
-To work on the task, select the *Form* tab. Again, there is no task form associated with the process. Click on *Load Variables*. This displays the variables you have put in in the first step.
+To work on the task, select the *Form* tab. Again, there is no task form associated with the process. Click on *Load Variables*. This displays the variables you entered in the first step.
 
 ![Example image](/img/get-started/archive/java-process-app/task-form-generic.png)

From 6ab895ec97d29cdc756e05aa1f59ff81688a5b55 Mon Sep 17 00:00:00 2001
From: Julian Haupt 
Date: Wed, 17 Jun 2026 18:08:37 +0200
Subject: [PATCH 21/41] Polish admin authorization wording

---
 docs/documentation/webapps/admin/authorization-management.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/documentation/webapps/admin/authorization-management.md b/docs/documentation/webapps/admin/authorization-management.md
index 8fa0f86b..8eb482c0 100644
--- a/docs/documentation/webapps/admin/authorization-management.md
+++ b/docs/documentation/webapps/admin/authorization-management.md
@@ -89,7 +89,7 @@ Now that we have one group that can see everything in Cockpit, we want to have a
 
 ## Restrict Process Permissions
 
-Not every process has to be managed by every user/group and with regards to different organizational levels, not every group should be aware of every process present in the process engine. Therefore it might be necessary to restrict the access of users/groups to certain processes.
+Not every process has to be managed by every user/group, and depending on organizational levels, not every group should be aware of every process present in the process engine. Therefore it might be necessary to restrict the access of users/groups to certain processes.
 
 In this use case we want to give the group *accounting*, which we will assume is already present and has access to Cockpit (see [Application-Specific Permission](../admin/authorization-management.md#application-specific-permissions) and [Application Access](#application-access)), full access to the "invoice" process and only to this process.
 

From 9d58c015e2ea6789041685ac867f3e6f1ce7d313 Mon Sep 17 00:00:00 2001
From: Julian Haupt 
Date: Wed, 17 Jun 2026 18:14:49 +0200
Subject: [PATCH 22/41] Polish remaining allows-to copy

---
 docs/documentation/reference/cmmn11/sentry.md          | 10 +++++-----
 docs/documentation/reference/cmmn11/tasks/case-task.md |  8 ++++----
 .../reference/cmmn11/tasks/decision-task.md            |  2 +-
 .../documentation/reference/cmmn11/tasks/human-task.md |  2 +-
 .../reference/cmmn11/tasks/process-task.md             |  6 +++---
 .../contextual-programming-model.md                    |  4 ++--
 .../cdi-java-ee-integration/the-cdi-event-bridge.md    |  2 +-
 docs/documentation/user-guide/process-engine/batch.md  |  6 +++---
 .../user-guide/spring-boot-integration/index.md        |  4 ++--
 docs/documentation/webapps/cockpit/cleanup.md          |  4 ++--
 docs/documentation/webapps/tasklist/dashboard.md       |  2 +-
 11 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/docs/documentation/reference/cmmn11/sentry.md b/docs/documentation/reference/cmmn11/sentry.md
index 2dcbcd6f..f68af658 100644
--- a/docs/documentation/reference/cmmn11/sentry.md
+++ b/docs/documentation/reference/cmmn11/sentry.md
@@ -56,11 +56,11 @@ OnParts are defined on lifecycle transitions for plan items or case file items.
 ```
 
 
-A `planItemOnPart` must always reference a plan item by the attribute `sourceRef`. This plan item must be contained by the same stage the sentry is defined in. The child element `standardEvent` can the identifier of any lifecycle transition from that plan item's lifecycle and that is supported by the Operaton engine. Note that different plan item definitions define different lifecycles. For details on valid lifecycle transitions, see the [Lifecycles](../cmmn11/concepts/lifecycle.md) section.
+A `planItemOnPart` must always reference a plan item by the attribute `sourceRef`. This plan item must be contained by the same stage the sentry is defined in. The child element `standardEvent` can be the identifier of any lifecycle transition from that plan item's lifecycle and that is supported by the Operaton engine. Note that different plan item definitions define different lifecycles. For details on valid lifecycle transitions, see the [Lifecycles](../cmmn11/concepts/lifecycle.md) section.
 
-As an alternative to `sourceRef`, the CMMN specification allows to define an attribute `sentryRef` responsible for referencing another sentry such that the onPart is fulfilled when the plan item that sentry references performs the *exit* state transition. This attribute is currently not supported by the Operaton engine.
+As an alternative to `sourceRef`, the CMMN specification defines an attribute `sentryRef` responsible for referencing another sentry such that the onPart is fulfilled when the plan item that sentry references performs the *exit* state transition. This attribute is currently not supported by the Operaton engine.
 
-Note that it is possible to have any number of OnParts which allows to combine multiple events. All OnParts must be fulfilled for a sentry to occur, i.e., specifying multiple OnParts is a conjunction of multiple events. An OnPart is fulfilled as soon as the element it is defined on performs the specified lifecycle transition. It is irrelevant whether this element performs any other subsequent lifecycle transitions.
+Note that it is possible to have any number of OnParts, which lets you combine multiple events. All OnParts must be fulfilled for a sentry to occur, i.e., specifying multiple OnParts is a conjunction of multiple events. An OnPart is fulfilled as soon as the element it is defined on performs the specified lifecycle transition. It is irrelevant whether this element performs any other subsequent lifecycle transitions.
 
 ## IfPart
 
@@ -85,7 +85,7 @@ In addition to variable names, the identifier `caseExecution` can be used to acc
   
 
 ```
-The CMMN specification allows to reference a case file item by the sentry attribute `contextRef`. This attribute is not supported by the Operaton engine and therefore ignored.
+The CMMN specification lets you reference a case file item by the sentry attribute `contextRef`. This attribute is not supported by the Operaton engine and therefore ignored.
 
 The engine evaluates IfParts at every lifecycle transition of a plan item contained in the sentry's stage. That means, if an IfPart is not satisfied immediately when all OnParts have occurred, the sentry may still occur at any later lifecycle transition.
 
@@ -138,4 +138,4 @@ Sentries allow a flexible definition of event occurrences and data-based conditi
 * A valid sentry must have at least one of the sentry parts (OnPart or IfPart or VariableOnPart).
 * A sentry without OnParts is fulfilled when the IfPart evaluates to `true` and all the VariableOnParts have occurred.
 * A sentry without an IfPart is fulfilled when all OnParts and all the VariableOnParts have occurred.
-* A sentry without variableOnPart is fullfilled when all the OnParts and IfPart are fulfilled.
\ No newline at end of file
+* A sentry without a VariableOnPart is fulfilled when all the OnParts and the IfPart are fulfilled.
diff --git a/docs/documentation/reference/cmmn11/tasks/case-task.md b/docs/documentation/reference/cmmn11/tasks/case-task.md
index 17a6d9c0..9c322b58 100644
--- a/docs/documentation/reference/cmmn11/tasks/case-task.md
+++ b/docs/documentation/reference/cmmn11/tasks/case-task.md
@@ -80,12 +80,12 @@ Note that the tenant id of the calling case instance is not taken into account i
 
 In some situations it may be useful to override this default behavior and specify the tenant id explicitly.
 
-The `operaton:caseTenantId` attribute allows to explicitly specify a tenant id:
+The `operaton:caseTenantId` attribute lets you explicitly specify a tenant id:
 
 ```xml
 
-
+
 ```
 
 If the tenant id is not known at design time, an expression can be used as well:
@@ -106,7 +106,7 @@ An expression also allows using the tenant id of the calling case instance inste
 
 ## Exchange Variables
 
-The Operaton custom extensions elements `in` and `out` allow to exchange variables between the case task (in a case instance) and the case instance that it creates: `in` elements of a case task map variables of the calling case to input variables of the launched case instance and `out` mappings of a case task map output variables of the called case instance to variables of the calling case, e.g.,:
+The Operaton custom extension elements `in` and `out` let you exchange variables between the case task (in a case instance) and the case instance that it creates: `in` elements of a case task map variables of the calling case to input variables of the launched case instance and `out` mappings of a case task map output variables of the called case instance to variables of the calling case, e.g.,:
 
 ```xml
 
@@ -145,7 +145,7 @@ Furthermore, the case task can be configured to pass all variables to the called
 
 ```
 
-Note: The variables keeps their names.
+Note: The variables keep their names.
 
 It is possible, at runtime, to decide which variables are mapped into the called case instance. This can be declared with the `local` attribute on the `operaton:in` element as follows:
 
diff --git a/docs/documentation/reference/cmmn11/tasks/decision-task.md b/docs/documentation/reference/cmmn11/tasks/decision-task.md
index 32254fd5..b97ce53c 100644
--- a/docs/documentation/reference/cmmn11/tasks/decision-task.md
+++ b/docs/documentation/reference/cmmn11/tasks/decision-task.md
@@ -85,7 +85,7 @@ Note that the tenant id of the calling case instance is not taken into account i
 
 In some situations it may be useful to override this default behavior and specify the tenant id explicitly.
 
-The `operaton:decisionTenantId` attribute allows to explicitly specify a tenant id:
+The `operaton:decisionTenantId` attribute lets you explicitly specify a tenant id:
 
 ```xml
 
diff --git a/docs/documentation/reference/cmmn11/tasks/process-task.md b/docs/documentation/reference/cmmn11/tasks/process-task.md
index eed73444..6f7f50b3 100644
--- a/docs/documentation/reference/cmmn11/tasks/process-task.md
+++ b/docs/documentation/reference/cmmn11/tasks/process-task.md
@@ -79,7 +79,7 @@ Note that the tenant id of the calling case instance is not taken into account i
 
 In some situations it may be useful to override this default behavior and specify the tenant id explicitly.
 
-The `operaton:processTenantId` attribute allows to explicitly specify a tenant id:
+The `operaton:processTenantId` attribute lets you explicitly specify a tenant id:
 
 ```xml
 
@@ -182,7 +182,7 @@ The following example shows how the business key of the calling case instance ca
 
 ```
 
-If the business key of the called process instance should be different than the business key of the calling case instance, it is possible to use an expression that, for example, references a variable:
+If the business key of the called process instance should be different from the business key of the calling case instance, it is possible to use an expression that, for example, references a variable:
 
 ```xml
 
diff --git a/docs/documentation/user-guide/cdi-java-ee-integration/contextual-programming-model.md b/docs/documentation/user-guide/cdi-java-ee-integration/contextual-programming-model.md
index e49f632f..3b33ecd3 100644
--- a/docs/documentation/user-guide/cdi-java-ee-integration/contextual-programming-model.md
+++ b/docs/documentation/user-guide/cdi-java-ee-integration/contextual-programming-model.md
@@ -45,8 +45,8 @@ The following JSF2 snippet begins a new conversation and associates it with a us
 
 ## Declaratively controlling the process
 
-Operaton CDI allows declaratively starting process instances and completing tasks using annotations.
-The `@org.operaton.bpm.engine.cdi.annotation.StartProcess` annotation allows to start a process instance either by "key" or by "name".
+Operaton CDI lets you declaratively start process instances and complete tasks using annotations.
+The `@org.operaton.bpm.engine.cdi.annotation.StartProcess` annotation lets you start a process instance either by "key" or by "name".
 Note that the process instance is started after the annotated method returns. Example:
 
 ```java
diff --git a/docs/documentation/user-guide/cdi-java-ee-integration/the-cdi-event-bridge.md b/docs/documentation/user-guide/cdi-java-ee-integration/the-cdi-event-bridge.md
index fa67fae3..04229e42 100644
--- a/docs/documentation/user-guide/cdi-java-ee-integration/the-cdi-event-bridge.md
+++ b/docs/documentation/user-guide/cdi-java-ee-integration/the-cdi-event-bridge.md
@@ -113,7 +113,7 @@ public void beforeShippingGoods(@Observes @BusinessProcessDefinition("shippingPr
 ```
 
 In the default configuration, event listeners are invoked synchronously and in the context of the same transaction.
-CDI transactional observers (only available in combination with JakartaEE / JavaEE / EJB), allow to control when the
+CDI transactional observers, which are only available in combination with JakartaEE / JavaEE / EJB, let you control when the
 event is handed to the observer method. Using transactional observers, we can for example assure that an observer is
 only notified if the transaction in which the event is fired succeeds:
 
diff --git a/docs/documentation/user-guide/process-engine/batch.md b/docs/documentation/user-guide/process-engine/batch.md
index 03befe78..3bf25a3f 100644
--- a/docs/documentation/user-guide/process-engine/batch.md
+++ b/docs/documentation/user-guide/process-engine/batch.md
@@ -11,12 +11,12 @@ menu:
 ---
 
 Batch is a concept to offload workload from the current execution to be
-processed in the background. This allows to run a process engine command
+processed in the background. This lets you run a process engine command
 asynchronously on a large set of instances without blocking. It also decouples
 the separate command invocations from each other.
 
 For example the [process instance migration][migration] command can be
-[executed using a batch][batch-migration]. This allows to migrate
+[executed using a batch][batch-migration]. This lets you migrate
 process instances asynchronously. In a synchronous process instance migration,
 all migrations are executed in a single transaction.  First of all, this
 requires all of them to succeed to commit the transaction. For a
@@ -332,4 +332,4 @@ You can configure the property in three ways:
 [invoc-per-batch-job-batch-type]: ../../reference/deployment-descriptors/tags/process-engine.mdx#invocations-per-batch-job-by-batch-type
 [Process Engine Plugin]: ../process-engine/process-engine-plugins.md
 [spring-xml-config]: ../spring-framework-integration/configuration.md
-[spring-boot-config]: ../spring-boot-integration/configuration.mdx#operaton-engine-properties
\ No newline at end of file
+[spring-boot-config]: ../spring-boot-integration/configuration.mdx#operaton-engine-properties
diff --git a/docs/documentation/user-guide/spring-boot-integration/index.md b/docs/documentation/user-guide/spring-boot-integration/index.md
index cdadcfba..13ff600a 100644
--- a/docs/documentation/user-guide/spring-boot-integration/index.md
+++ b/docs/documentation/user-guide/spring-boot-integration/index.md
@@ -6,7 +6,7 @@ sidebar_position: 60
 ---
 
 The Operaton Engine can be used in a Spring Boot application by using provided Spring Boot starters.
-Spring boot starters allow to enable behavior of your spring-boot application by adding dependencies to the classpath.
+Spring Boot starters let you enable behavior in your Spring Boot application by adding dependencies to the classpath.
 
 These starters will pre-configure the Operaton process engine, REST API and Web applications, so they can easily be used in a standalone process application.
 
@@ -41,4 +41,4 @@ Following deployment scenario is supported by Operaton:
 
 * executable JAR with embedded Tomcat and one embedded process engine (plus Webapps when needed)
 
-There are other possible variations that might also work, but are not tested by Operaton at the moment.
\ No newline at end of file
+There are other possible variations that might also work, but are not tested by Operaton at the moment.
diff --git a/docs/documentation/webapps/cockpit/cleanup.md b/docs/documentation/webapps/cockpit/cleanup.md
index a71c20c1..3dd9eb1c 100644
--- a/docs/documentation/webapps/cockpit/cleanup.md
+++ b/docs/documentation/webapps/cockpit/cleanup.md
@@ -10,7 +10,7 @@ sidebar_position: 50
 ![Example img](/img/documentation/webapps/cockpit/cockpit-cleanup-page.png)Cockpit Cleanup View
 
 The cleanup view in Cockpit provides information about the history cleanup state and statistics about the cleanable and deleted data.
-Moreover, the page allows to manually perform various operations related to the history cleanup.
+Moreover, the page allows you to manually perform various operations related to the history cleanup.
 
 
 ## Cleanup State
@@ -36,4 +36,4 @@ Moreover, it's also possible to modify the history time to live directly from th
 
 ## Deleted Data Metrics
 
-The metrics in the bottom of the cleanup page give an overview about the cleaned up data. You can select to display the details for the current day, the current week or the current month.
\ No newline at end of file
+The metrics in the bottom of the cleanup page give an overview about the cleaned up data. You can select to display the details for the current day, the current week or the current month.
diff --git a/docs/documentation/webapps/tasklist/dashboard.md b/docs/documentation/webapps/tasklist/dashboard.md
index b112d71e..f938b9c9 100644
--- a/docs/documentation/webapps/tasklist/dashboard.md
+++ b/docs/documentation/webapps/tasklist/dashboard.md
@@ -55,7 +55,7 @@ To start working on the task, simply select the task.
 
 ![Example img](/img/documentation/webapps/tasklist/tasklist-task-search.png)Task Search
 
-Above the filter results, you have the option of searching for user tasks within the selected filter results. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. Depending on the selected property, you have to specify the value of the property. Some properties also allow operators other than equal, e.g., `'like'`, which allows to search for a task where the entered value is a substring of the property value. The `'in'` operator allows you to provide a comma-separated list of possible values.
+Above the filter results, you have the option of searching for user tasks within the selected filter results. To do so, click in the search box and select the parameters to search for. You can also begin typing to find the required parameter faster. Depending on the selected property, you have to specify the value of the property. Some properties also allow operators other than equal, e.g., `'like'`, which lets you search for a task where the entered value is a substring of the property value. The `'in'` operator allows you to provide a comma-separated list of possible values.
 
 If you are searching for variables, you also have to enter the variable name you want to search for. If the filter you have selected has defined labels for variables, you can select the label of the variable as variable name. Otherwise (if there is no label definition for a variable), you have to enter the variable name to search for it. If you change the filter selection, the search will be performed on the selected filter and the results will be updated accordingly.
 

From 0ef4d7a4d2264a89b1a16f8fdd860fcf67dab3cb Mon Sep 17 00:00:00 2001
From: Julian Haupt 
Date: Wed, 17 Jun 2026 18:16:13 +0200
Subject: [PATCH 23/41] Remove trailing spaces in copy-edited docs

---
 docs/documentation/reference/cmmn11/tasks/decision-task.md     | 2 +-
 docs/documentation/user-guide/spring-boot-integration/index.md | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/documentation/reference/cmmn11/tasks/decision-task.md b/docs/documentation/reference/cmmn11/tasks/decision-task.md
index b97ce53c..31af8097 100644
--- a/docs/documentation/reference/cmmn11/tasks/decision-task.md
+++ b/docs/documentation/reference/cmmn11/tasks/decision-task.md
@@ -167,4 +167,4 @@ To evaluate a referenced decision, the integration of the Operaton DMN engine is
   
 
 
-[DMN 1.3]: ../../dmn/index.md 
+[DMN 1.3]: ../../dmn/index.md
diff --git a/docs/documentation/user-guide/spring-boot-integration/index.md b/docs/documentation/user-guide/spring-boot-integration/index.md
index 13ff600a..99711f05 100644
--- a/docs/documentation/user-guide/spring-boot-integration/index.md
+++ b/docs/documentation/user-guide/spring-boot-integration/index.md
@@ -24,7 +24,7 @@ To enable Operaton auto configuration, add the following dependency to your ```p
 
 This will add the Operaton engine v1.0.0 to your dependencies.
 
-Other starters that can be used are: 
+Other starters that can be used are:
 
 * [`Operaton-bpm-spring-boot-starter-rest`](rest-api)
 * [`Operaton-bpm-spring-boot-starter-webapp`](webapps)

From b09ec0811fc112c133918f72950d5471f0ee2431 Mon Sep 17 00:00:00 2001
From: Julian Haupt 
Date: Wed, 17 Jun 2026 18:30:10 +0200
Subject: [PATCH 24/41] Polish additional copy wording

---
 .../reference/forms/embedded-forms/javascript/examples.md   | 2 +-
 docs/documentation/user-guide/dmn-engine/data-types.md      | 2 +-
 .../process-application-event-listeners.md                  | 2 +-
 .../user-guide/process-engine/delegation-code.md            | 6 +++---
 docs/documentation/user-guide/process-engine/metrics.md     | 2 +-
 .../user-guide/quarkus-integration/cdi-integration.md       | 2 +-
 .../spring-boot-integration/the-spring-event-bridge.md      | 4 ++--
 7 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/docs/documentation/reference/forms/embedded-forms/javascript/examples.md b/docs/documentation/reference/forms/embedded-forms/javascript/examples.md
index 4226555b..b91d4399 100644
--- a/docs/documentation/reference/forms/embedded-forms/javascript/examples.md
+++ b/docs/documentation/reference/forms/embedded-forms/javascript/examples.md
@@ -76,7 +76,7 @@ When a variable is loaded, it is also sent back to the server when the form is s
 
 This example contains a file input element and the script to send it to the server. In contrast to the [file input element of the Forms SDK](../../../../reference/forms/embedded-forms/controls/files.md), this example can handle large files, but it also has some drawbacks:
 
-* Can not be used in the start form of a process (no process instance id exists at this time)
+* Cannot be used in the start form of a process (no process instance id exists at this time)
 * Does not take part in the form lifecycle (files could be saved even if the form is not submitted)
 * Can only save one file at a time
 
diff --git a/docs/documentation/user-guide/dmn-engine/data-types.md b/docs/documentation/user-guide/dmn-engine/data-types.md
index bc11c6e7..5d26a690 100644
--- a/docs/documentation/user-guide/dmn-engine/data-types.md
+++ b/docs/documentation/user-guide/dmn-engine/data-types.md
@@ -12,7 +12,7 @@ menu:
 
 ---
 
-A decision table allows to specify the types of inputs and outputs. When the
+A decision table lets you specify the types of inputs and outputs. When the
 DMN engine evaluates an input or an output, it checks if the type of the
 value matches the specified type. If the types do not match, the engine
 tries to transform the value into the specified type or throws an exception.
diff --git a/docs/documentation/user-guide/process-applications/process-application-event-listeners.md b/docs/documentation/user-guide/process-applications/process-application-event-listeners.md
index 824e8cd0..10d02aac 100644
--- a/docs/documentation/user-guide/process-applications/process-application-event-listeners.md
+++ b/docs/documentation/user-guide/process-applications/process-application-event-listeners.md
@@ -12,7 +12,7 @@ menu:
 
 
 The process engine supports defining two types of event listeners: [Task Event Listeners and Execution Event Listeners](../../user-guide/process-engine/delegation-code.md#execution-listener).
-Task Event listeners allow to react to Task Events (Tasks are Created, Assigned, Completed). Execution Listeners allow to react to events fired as execution progresses through the diagram: Activities are Started, Ended and Transitions are being taken.
+Task event listeners let you react to task events (tasks are created, assigned, or completed). Execution listeners let you react to events fired as execution progresses through the diagram: activities are started or ended, and transitions are taken.
 
 When using the process application API, the process engine makes sure that Events are delegated to the right process application. For example, assume there is a process application deployed as "invoice.war" which deploys a process definition named "invoice". The invoice process has a task named "archive invoice". The application "invoice.war" further provides a Java Class implementing the [ExecutionListener](../../user-guide/process-engine/delegation-code.md#execution-listener) interface and is configured to be invoked whenever the END event is fired on the "archive invoice" activity. The process engine makes sure that the event is delegated to the listener class located inside the process application:
 
diff --git a/docs/documentation/user-guide/process-engine/delegation-code.md b/docs/documentation/user-guide/process-engine/delegation-code.md
index a3a2a28e..1f546d6e 100644
--- a/docs/documentation/user-guide/process-engine/delegation-code.md
+++ b/docs/documentation/user-guide/process-engine/delegation-code.md
@@ -62,14 +62,14 @@ The classes that are referenced in the process definition (i.e., by using
 Only when a process execution arrives at the point in the process where the class is used for the
 first time, an instance of that class will be created. If the class cannot be found,
 a `ProcessEngineException` will be thrown. The reason for this is that the environment (and
-more specifically the classpath) when you are deploying is often different than the actual runtime
+more specifically the classpath) when you are deploying is often different from the actual runtime
 environment.
 
 
 ## Activity Behavior
 
 Instead of writing a Java Delegate, it is also possible to provide a class that implements the `org.operaton.bpm.engine.impl.pvm.delegate.ActivityBehavior`
-interface. Implementations then have access to the more powerful `ActivityExecution` that for example also allows to influence the control flow of the process. However, note that this is not a very good practice and should be avoided as much as possible. So, it is advised to only use the `ActivityBehavior` interface for advanced use cases and if you know exactly what you're doing.
+interface. Implementations then have access to the more powerful `ActivityExecution` that, for example, also lets you influence the control flow of the process. However, note that this is not a very good practice and should be avoided as much as possible. So, it is advised to only use the `ActivityBehavior` interface for advanced use cases and if you know exactly what you're doing.
 
 
 ## Field Injection
@@ -422,7 +422,7 @@ A task listener supports the following attributes:
     
     ```
 
-* **delegateExpression**: allows to specify an expression that resolves to an object implementing the TaskListener interface, similar to a service task.
+* **delegateExpression**: lets you specify an expression that resolves to an object implementing the TaskListener interface, similar to a service task.
 
     ```xml
     
diff --git a/docs/documentation/user-guide/process-engine/metrics.md b/docs/documentation/user-guide/process-engine/metrics.md
index ce302c30..2e0e656f 100644
--- a/docs/documentation/user-guide/process-engine/metrics.md
+++ b/docs/documentation/user-guide/process-engine/metrics.md
@@ -168,7 +168,7 @@ Task metric entries are created on every assignment of a user task. This behavio
 
 ### Reporter Identifier
 
-Metrics are reported with an identifier of the reporting party. This identifier allows to attribute
+Metrics are reported with an identifier of the reporting party. This identifier lets you attribute
 reports to individual engine instances when making a metrics query. For example in a cluster, load
 metrics can be related to individual cluster nodes. By default the process engine generates a
 reporter id as `$`. The generation can be customized by implementing the
diff --git a/docs/documentation/user-guide/quarkus-integration/cdi-integration.md b/docs/documentation/user-guide/quarkus-integration/cdi-integration.md
index 5c58539f..71e37b3b 100644
--- a/docs/documentation/user-guide/quarkus-integration/cdi-integration.md
+++ b/docs/documentation/user-guide/quarkus-integration/cdi-integration.md
@@ -125,7 +125,7 @@ The following API methods will throw an `UnsupportedOperationException`:
 ### Task form beans
 
 Associating beans with [Conversational Scope][cdi-conversational-scope] is currently [not supported][quarkus-bean-scopes] by Quarkus ArC.
-Furthermore, Quarkus does not allow to set a different default scope for beans that are outside of the extension's control.
+Furthermore, Quarkus does not allow setting a different default scope for beans that are outside of the extension's control.
 As a result, the following conversational scoped beans are not available in a Quarkus application out of the box:
 
 * `org.operaton.bpm.engine.cdi.jsf.TaskForm`
diff --git a/docs/documentation/user-guide/spring-boot-integration/the-spring-event-bridge.md b/docs/documentation/user-guide/spring-boot-integration/the-spring-event-bridge.md
index aff7d13c..2fbeefe0 100644
--- a/docs/documentation/user-guide/spring-boot-integration/the-spring-event-bridge.md
+++ b/docs/documentation/user-guide/spring-boot-integration/the-spring-event-bridge.md
@@ -77,13 +77,13 @@ class MyListener {
 
 :::note
   If the method, annotated with `EventListener` returns a non-`void` result, Spring will
-  throw it as a new event on Spring event bus. This allows to build event handler chains
+  throw it as a new event on the Spring event bus. This lets you build event handler chains
   for processing. For more information on eventing, please consult the Spring manual.
 :::
 
 ## Specifying event type
 
-Spring allows to specify the event delivered to the listener by providing a SpEL condition in the
+Spring lets you specify the event delivered to the listener by providing a SpEL condition in the
 `@EventListener` annotation. For example, you could register a listener for a task event fired by
 creating of the user task with a specific task definition key. Here is the code example:
 

From c343939e048019e4479e642c8ddfc4431b0cb3d2 Mon Sep 17 00:00:00 2001
From: Julian Haupt 
Date: Wed, 17 Jun 2026 21:47:15 +0200
Subject: [PATCH 25/41] Polish CMMN lifecycle and Java object form copy

---
 .../reference/cmmn11/concepts/lifecycle.md    |  8 +++----
 .../forms/embedded-forms/java-objects.md      | 24 +++++++++----------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/docs/documentation/reference/cmmn11/concepts/lifecycle.md b/docs/documentation/reference/cmmn11/concepts/lifecycle.md
index 91035d42..06693a34 100644
--- a/docs/documentation/reference/cmmn11/concepts/lifecycle.md
+++ b/docs/documentation/reference/cmmn11/concepts/lifecycle.md
@@ -87,7 +87,7 @@ States:
       completed
     
     
-      The transition complete automatically triggers when all plan items contained in the case plan model are completed, terminated, or disabled.  With automatic completion enabled, only required plan items have to reach theses states. Furthermore, it is possible to manually complete a case instance via the CaseService API if it has no active tasks or stages and all required plan items are either completed, terminated, or disabled.
+      The transition complete automatically triggers when all plan items contained in the case plan model are completed, terminated, or disabled.  With automatic completion enabled, only required plan items have to reach these states. Furthermore, it is possible to manually complete a case instance via the CaseService API if it has no active tasks or stages and all required plan items are either completed, terminated, or disabled.
     
   
   
@@ -134,7 +134,7 @@ States:
       enabled
     
     
-      A task or stage becomes enabled as soon as any of its entry criteria is fulfilled. If this is given when a the task/stage becomes available, it immediately becomes enabled or, depending on its manual activation rule, active.
+      A task or stage becomes enabled as soon as any of its entry criteria is fulfilled. If this is given when the task/stage becomes available, it immediately becomes enabled or, depending on its manual activation rule, active.
     
   
   
@@ -150,7 +150,7 @@ States:
       active
     
     
-      When a task or stage becomes active, its actual work is performed. For a stage, all contained plan items are instantiated. For a task, its actual work is issued, e.g., for a human task, a task instance is created and needs to be worked on by a user. In order for a task or stage to become active, at least one entry criterion has to be fulfilled. Activation can either be performed manually by a human worker using the CaseService API if the manualActivation rule is specified or automatically if not manualActivation rule is specified.
+      When a task or stage becomes active, its actual work is performed. For a stage, all contained plan items are instantiated. For a task, its actual work is issued, e.g., for a human task, a task instance is created and needs to be worked on by a user. In order for a task or stage to become active, at least one entry criterion has to be fulfilled. Activation can either be performed manually by a human worker using the CaseService API if the manualActivation rule is specified or automatically if no manualActivation rule is specified.
     
   
   
@@ -158,7 +158,7 @@ States:
       completed
     
     
-      The complete transition triggers for a task when its actual work is done. For a stage, this transition triggers when all contained tasks/stages are either completed, terminated, or disabled. With automatic completion enabled, only required plan items have to reach theses states. A task/stage in state completed is removed from the runtime database.
+      The complete transition triggers for a task when its actual work is done. For a stage, this transition triggers when all contained tasks/stages are either completed, terminated, or disabled. With automatic completion enabled, only required plan items have to reach these states. A task/stage in state completed is removed from the runtime database.
     
   
   
diff --git a/docs/documentation/reference/forms/embedded-forms/java-objects.md b/docs/documentation/reference/forms/embedded-forms/java-objects.md
index 3e175fe9..9ca4f4be 100644
--- a/docs/documentation/reference/forms/embedded-forms/java-objects.md
+++ b/docs/documentation/reference/forms/embedded-forms/java-objects.md
@@ -10,20 +10,20 @@ menu:
 
 ---
 
-This section explains how to work with serialized Java Objects in embedded task forms.
+This section explains how to work with serialized Java objects in embedded task forms.
 
 :::note
-Out of the box, you can only work with Java Objects which are serialized in *JSON format*
-If Java Classes are serialized using JAX-B, you need to add custom XML parsing and writing logic
-to the embedded form. Java Objects serialized using Java Serialization cannot be used in forms.
+Out of the box, you can only work with Java objects that are serialized in *JSON format*.
+If Java classes are serialized using JAX-B, you need to add custom XML parsing and writing logic
+to the embedded form. Java objects serialized using Java Serialization cannot be used in forms.
 :::
 
 
-## Fetching an existing Serialized Java Object Variable
+## Fetching an Existing Serialized Java Object Variable
 
-The Form SDK will only fetch those variables which are actually used in a form. Since a Complex Java
-Object is usually not bound to a single input field, we cannot use the `cam-variable-name` directive.
-We thus need to fetch the variable programmatically:
+The Form SDK will only fetch variables that are actually used in a form. Since a complex Java
+object is usually not bound to a single input field, we cannot use the `cam-variable-name` directive.
+Therefore, we need to fetch the variable programmatically:
 
 ```html