> For the complete documentation index, see [llms.txt](https://amartyushov.gitbook.io/tech/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://amartyushov.gitbook.io/tech/platforms/camunda.md).

# Camunda

* Reference documentation :link:[Camunda 7](https://docs.camunda.org/manual/latest/) (good for search)
*

{% hint style="info" %}
BPMN - Business Process Model and Notation

DMN - Decision Model and Notation

CMMN - Case Management Model and Notation
{% endhint %}

#### 1. **BPMN (Business Process Model and Notation)**

* **Process Definition:** A visual representation of the business process using BPMN 2.0. It defines the flow of tasks, events, and gateways.
* **Tasks:** Different types of work units within a process (e.g., user tasks, service tasks).
* **Events:** Something that happens during the process (e.g., start event, end event, intermediate events).
* **Gateways:** Control the divergence and convergence of sequence flows (e.g., exclusive gateways, parallel gateways).

#### 2. **Process Engine**

* **Deployment:** The process of uploading BPMN diagrams and associated resources to the Camunda engine.
* **Process Instances:** Runtime instances of a process definition.
* **Execution:** Represents the token that traverses through the process model.

#### 3. **Task Management**

* **User Tasks:** Tasks that require human interaction.
* **Service Tasks:** Automated tasks executed by the system (e.g., calling a REST API, executing business logic).

#### 4. **Forms**

* Used in user tasks to collect or display information to users.
* Can be created using HTML, embedded forms, or external forms.

#### 5. **External Tasks**

* Tasks that are handled by external workers (e.g., microservices).
* Useful for decoupling the process engine from the execution logic.

#### 6. **Event Handling**

* **Message Events:** Allow communication between different process instances or external systems.
* **Timer Events:** Used to model delays or periodic actions.
* **Signal Events:** Broadcast signals within the process engine to trigger actions.

#### 7. **Scripting and Delegates**

* **Delegates:** Java or Kotlin classes that implement the `JavaDelegate` or `ExecutionListener` interfaces to execute custom business logic.
* **Scripting:** Use scripts (e.g., Groovy, JavaScript) within BPMN models for dynamic behavior.

#### 8. **Process Variables**

* Data that is used and manipulated throughout the process.
* Can be of various types (e.g., string, integer, custom objects).

#### 9. **Camunda Modeler**

* A desktop application to create and edit BPMN process diagrams.

#### 10. **Camunda REST API**

* Allows interaction with the Camunda engine from external applications.
* Useful for starting process instances, querying tasks, and completing tasks programmatically.

#### 11. **Camunda Cockpit**

* Web application for monitoring and managing process instances.

#### 12. **Camunda Tasklist**

* Web application for managing and completing user tasks.

#### Integrating Camunda with Kotlin

To integrate Camunda with Kotlin, you'll typically:

1. **Define BPMN Processes:** Use Camunda Modeler to create BPMN diagrams.
2. **Deploy Processes:** Deploy BPMN processes to the Camunda engine.
3. **Implement Business Logic:** Use Kotlin to write delegate classes or external task workers.
4. **Configure Forms:** Create forms for user tasks if needed.
5. **Monitor and Manage:** Use Camunda Cockpit and Tasklist for process management.
