# Контекст выполенения схемы

## Что такое "Контекст выполнения схемы" в nana800.io?

Контекст выполнения схемы - это мощный инструмент, который позволяет вам создавать более гибкие и динамичные схемы в BEKENDER RU. Он предоставляет доступ к данным, которые могут быть получены в процессе выполнения блоков схемы и использованы для настройки других блоков.

Подумайте о контексте как о хранилище информации, которое может быть доступно в любой точке вашей схемы.

## Типы контекста:

В BEKENDER RU имеются три типа контекста:

1. GLOBAL\_ENV:

* Назначение: Этот тип контекста позволяет вам задавать глобальные переменные для вашей схемы.
* Как использовать: Вы можете указать значения для GLOBAL\_ENV переменных в разделе настроек схемы. Эти переменные будут доступны во всех блоках вашей схемы.
* Пример:
  * Вы можете задать API\_KEY в GLOBAL\_ENV, чтобы использовать его в блоке "Запрос" для аутентификации на внешнем API.
  * Вы можете задать EMAIL\_TEMPLATE в GLOBAL\_ENV, чтобы использовать его в своей цепочке блоков.
  * Пример использования в поле ввода: "Bearer {{GLOBAL\_ENV.API\_KEY}}" (без ковычек).

<figure><img src="https://2365701060-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5j27dVA9H781kr1KsrbT%2Fuploads%2FPCp0LIOlQlndf0MH5asI%2F%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202024-09-13%20%D0%B2%2009.10.11.png?alt=media&#x26;token=d8b20e55-b9b1-4cde-b972-78391fc8f3b5" alt=""><figcaption><p>Использование переменных для настройки блоков</p></figcaption></figure>

<figure><img src="https://2365701060-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5j27dVA9H781kr1KsrbT%2Fuploads%2Fhu7ZPuzhqRmGrDR5YJ3I%2F%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202024-09-13%20%D0%B2%2009.07.17.png?alt=media&#x26;token=fb0f91f1-4fe0-482c-865f-b5af848aa8a2" alt=""><figcaption><p>установка GLOBAL_ENV значений</p></figcaption></figure>

2. NODES:

* Назначение: NODES - это объект, который содержит информацию о выполнении каждого блока в вашей схеме.
* Как использовать: Вы можете получить доступ к данным любого предыдущего блока в цепочке, используя специальные выражения в блоках, которые должны использовать эти данные.
* Вы можете просмотреть возвращаемый тип данных внизу при настройке каждого блока (фото ниже).
* Пример:
  * Вы можете использовать NODES в блоке "Запись в БД", чтобы записать данные, полученные в предыдущем блоке "Запрос".
  * Вы можете использовать NODES в блоке "Отправить уведомление", чтобы отправить уведомление с информацией, полученной в предыдущем блоке "Обработать данные".

<figure><img src="https://2365701060-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5j27dVA9H781kr1KsrbT%2Fuploads%2FbNmxI9uBmGe6ImbbCClJ%2Fimage.png?alt=media&#x26;token=abe86f3c-8fea-4c3e-b766-1f0f5894dc30" alt=""><figcaption><p>Просмотр возращаемого типа блока</p></figcaption></figure>

3. PARAMS:

* Назначение: PARAMS - это переменные, которые вы можете задать в результате выполнения блока действия с типом "set context param".
* Как использовать: Используйте блок действия "set context param", чтобы установить значения для переменных, которые вы хотите использовать в других блоках схемы.
* Пример:
  * Вы можете использовать "set context param" для записи результатов вычислений в блок "Запись в БД", а затем использовать эти результаты в блоке "Отправить уведомление".
  * Вы можете использовать "set context param" для записи данных, полученных от пользователя в блоке "Обработать форму", а затем использовать эти данные в блоке "Запись в БД" или любом другом.

<figure><img src="https://2365701060-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5j27dVA9H781kr1KsrbT%2Fuploads%2FdVX9iUfjlE4wVc0Xcpih%2F%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA%20%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0%202024-09-13%20%D0%B2%2009.03.22.png?alt=media&#x26;token=a307873e-f76b-46c1-987f-c91bfcea477e" alt=""><figcaption><p>Создание PARAMS переменной контекста с ключем STATUS</p></figcaption></figure>

Важно отметить:

* Выбор типа контекста зависит от того, как вы хотите использовать данные в вашей схеме.
* GLOBAL\_ENV используется для хранения глобальных переменных, которые применяются ко всей схеме.
* NODES используется для хранения данных, которые генерируются в процессе выполнения схемы.
* PARAMS - альтернатива GLOBAL\_ENV и NODES, когда вам нужно сохранить только определенные переменные.

## Используйте контекст, чтобы сделать ваши схемы более динамичными!

Примеры использования:

* Автоматизация отправки писем с персонализированными данными. Получите имя пользователя из блока "Обработать форму" и используйте его в блоке "Отправить письмо на почту".
* Автоматизация обработки заказов. Получите данные о заказе из блока "Принять платеж" и используйте их в блоке "Создать заказ" в базе данных.
* Автоматизация обновления данных в базе данных. Получите данные из блока "Получить данные" и используйте их в блоке "Обновить данные".

## Используйте выражения, чтобы получить доступ к контексту

В блоках BEKENDER RU вы можете использовать выражения, чтобы получить доступ к данным из контекста. Выражения начинаются с символа {{ и заканчиваются символом }}.

Примеры выражений:

* {{GLOBAL\_ENV.API\_KEY}} - Получает значение переменной API\_KEY из контекста GLOBAL\_ENV.
* {{NODES.previous\_block.response\_text}} - Получает значение параметра name из блока, который был выполнен перед текущим блоком. (Используйте "slug" название блока вместо "previous\_block"). Доступно так же наименование в виде строки {{NODES\["previous\_block"].response\_text}}
* {{PARAMS.user\_id}} - Получает значение переменной user\_id из контекста PARAMS.

## Как работает контекст?

Контекст передается по цепочке блоков вашей схемы.

* Каждый блок может изменять контекст, добавляя в него данные или изменяя значения уже существующих данных.
  * Блоки, которые выполняются после одного блока, могут получить доступ к данным, которые были добавлены в контекст предыдущими блоками.

{% hint style="info" %}
Используйте контекст выполнения схемы, чтобы создавать более динамичные и мощные сценарии в nana800.io.
{% endhint %}
