# About the Flowchart Builder activities

> The activities described in this chapter help you design a **Long Running Workflow** canvas for new processes, using BPMN elements.

The activities described in this chapter help you design a **Long Running Workflow** canvas for new processes, using BPMN elements.

The **Long running workflow** canvas becomes available after you install the Flowchart Builder activity package. The canvas can be also accessed from the **Long running automation** template.

Flowchart Builder activities are categorized by their main functionality inside a long running workflow:

## Sequence

The **Sequence** category contains activities that may represent a single step or a collection of steps within the process, either automatic or involving human intervention, that must execute in a sequential order. For example, reviewing a document, making a decision, processing a payment, or sending an email.

While designing your long running workflow, use the generic **Sequence** activity to symbolize an operation within the workflow. You can later replace the task with a specialized type, such as:

* **Process**—Use it when the step must be completed by a process.
* **Human Approval**—Use it when the step requires human input through an Action Center task.
* **Business Rule**—Use it when the step requires interaction with a DMN file, uploaded in Orchestrator as a Business Rule.
* **Invoke Workflow**—Use it when the step must be performed automatically, without a human intervention.
* **Activity**—Use it when the step requires sending information to an external system, without pausing the process.
* **Wait for Trigger**—Use it when the step needs to wait for a specific event to complete before proceeding with the next step.
* **Subprocess**—Use it when the step requires grouping related elements within a process, to simplify the main long running workflow.
* **Detached Error Handler**—Use it when you need global, reusable error recovery steps for your entire workflow, instead of handling errors task by task.

## Gateway

The **Gateway** category contains graphic symbols to mark decision-making points within the flow of your process. Use them to control the execution of a process on specific conditions.

* **Decision**—Use it when the next steps in a process depend on the **True** or **False** response to a condition. You can add two branches to this activity, one for when the condition is met, and one for when the condition is not met.
* **Switch**—Use it when the next steps in a process depend on various responses to a condition. These responses are called cases, and the order in which you define them determines the sequence in which the Switch activity evaluates them. For example, if case 0 is not met, the activity evaluates case 1, then case 2, and so on. You must define a default case, which applies when no other cases match the condition.
* **Split**—Use it when a process branch needs to divide into multiple paths, to allow simultaneous or conditioned operations.
* **Merge**—Use it when multiple paths or operations need to converge to continue the process execution.

## Events

The **Events** category contains activities used to model events that occur during a process, often involving external interactions or waiting for specific triggers.

* **Event Placeholder**—Use it to mark a placeholder within your process that can be replaced with Resume after Delay or Wait for Message.
* **Resume after Delay**—Use it to suspend the execution of your process until a specified time condition is met.
* **Wait for Message**—Use it to suspend the execution of your process until a specified event occurs.
* **Error Handler**—Use it to handle exceptions, such as catching errors or failures that occur during the execution of the attached Sequence or Subprocess.

## End

The **End** category contains activities or graphic symbols used to indicate where the execution of a process or a path within the process stops.

* **End**—Use it when you want to indicate where a process ends.
* **Throw**—Use it when you want to generate an error that can be captured by an Error Handler.
* **Terminate**—Use it when you want to terminate the instance of a specific process scope.
