Skip to content

Conversation

@DmytroKost
Copy link
Contributor

No description provided.

@DmytroKost
Copy link
Contributor Author

Update images after we have new icons:

  • static/attachments/refguide/modeling/application-logic/workflows/event-sub-processes/drag-and-drop.png
  • static/attachments/refguide/modeling/application-logic/workflows/event-sub-processes/notify-workflow.png

@Yiyun333 Yiyun333 self-assigned this Jan 14, 2026

## Introduction

An Event Sub-process is a specialized type of sub-process that is not part of the normal sequence flow of its workflow. Instead, it lives inside the workflow and "listens" for a specific trigger.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"specialized type of sub-process" does not really add any information. Consider rephrasing to "separate execution flow" or something similar.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of writing "instead, ..." it is clearer to say:

"It resides inside the workflow and starts executing upon receiving a specific trigger."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed


### When to Use Event Sub-Processes

Choosing between a Boundary Event and an Event Sub-process is a common architectural crossroads.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe you could add a bit of introduction here:

"An Event Sub-Process is like a Boundary Event, with the exception that an Event Sub-Process can start at any time, whereas a Boundary Event can start only while the activity it is attached to is active."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added

#### When NOT to Use

- **Sequential Logic** – If the logic must happen after a specific task, use a standard sequence flow.
- **Direct Interaction** – If you need to "pause" a specific task and resume it, a Boundary Event (Interrupting) is often more appropriate.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How does an Interrupting Boundary Event "resume" a specific task? It does the opposite in my eyes. Also, the use of the word "pause" might be confusing (because in our implementation you can only pause the workflow itself, not individual activities).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-phrased and added one more point regarding "Conditional Logic"


#### Lifecycle

The Event Sub-process is initialized as soon as the main process starts and remains in a waiting state until a notification is received.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding "(but not started)" after initialized.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

{{% alert color="info" %}}
**What keeps a workflow In Progress?** A workflow instance remains in the **In Progress** state as long as **at least one** of the following is true:
- The Main Process path has not yet reached its End Event.
- Any Event Sub-process that was triggered is still executing.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider using similar wording here as in the previous bullet point:

"Any Event Sub-Process that was started has not yet reached its End Event."

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done


| Attribute | Type | Description |
|--------------|---------|-------------------------------------------------------------------------------|
| `Caption` | String | The display name of the sub-process. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yesterday I learned that a User Task has both a caption and a display name (which is confusing in itself). I don't think the SubProcess does, but maybe it's better to refrain from using "display name" nevertheless.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to "caption" so that there is no ambiguity


### WorkflowSubProcess

The `WorkflowSubProcess` entity represents a specific runtime instance of an Event Sub-process.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add here that we only create such an instance when the sub-process is started.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added


| Attribute | Type | Description |
|-------------|--------------------|--------------------------------------------------------------------------------------------------------------------------------|
| `Caption` | String | The display name of the sub-process instance. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comments as for the definition.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed

| `WorkflowUserTask_WorkflowSubProcess` | `WorkflowUserTask` | The association to active user tasks within this sub-process instance. |
| `WorkflowEndedUserTask_WorkflowSubProcess` | `WorkflowEndedUserTask` | The association to completed or ended user tasks within this instance. |
| `WorkflowActivityRecord_WorkflowSubProcess` | `WorkflowActivityRecord` | The association to the historical execution records for this instance. |
| `WorkflowCurrentActivity_WorkflowSubProcess` | `WorkflowCurrentActivity` | The association to the activity currently being executed in this sub-process (see [Jump to](/refguide/jump-to/). |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider changing "activity" to "activities", because there can be multiple.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed


| Caption | Name | Description |
|-------------|--------------|-----------------------------------------------------------------------------------------------------------|
| In progress | `InProgress` | The sub-process has been triggered and is currently executing logic. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is better to drop the word "logic".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants