# Messages processing

A flow is a sequence of interconnected components that communicate with each other by processing messages. The processing of messages between components occurs in three steps:

* The component receives the message from the previous component (message **in**).
* The component executes some processing that may or may not use the information from the received message.
* The component sends the message to the next component (message **out**).

The messages are always in JSON format.

## Example

A pipeline is built using a [**REST Trigger**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/rest), which is requested and passes the received parameter (`"type": "revenue"`) to the next component - an [**Object Store**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/structured-data/object-store) called “Delete all”. One component after another finishes its execution and triggers the next one by delivering the result message of its processing.

<figure><img src="https://content.gitbook.com/content/jvO5S91EQURCEhbZOuuZ/blobs/zhVlFtD5YvRdCxUeeHRI/image1.png" alt=""><figcaption></figcaption></figure>

If you choose to submit messages in JSON format only, manipulation and transformation are made easier, whether you use transformation components or Double Braces expressions. These expressions must refer to elements of the message **in** to generate messages **out**.

Learn more about [Double Braces](https://app.gitbook.com/s/EKM2LD3uNAckQgy1OUyZ/double-braces/overview), an expression language developed by Digibee Integration Platform.
