Skip to content

Commit 17c5559

Browse files
AvtandilkoNikita Velgin
andauthored
process store docs (#222)
* process store docs * fix lint * fix --------- Co-authored-by: Nikita Velgin <nikita.velgin@flant.com>
1 parent 7a37614 commit 17c5559

9 files changed

Lines changed: 320 additions & 62 deletions

File tree

.werf/nginx-local.conf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ http {
5050
}
5151

5252
map $lang $hugo_upstream {
53-
"ru" "hugo_1314";
54-
default "hugo_1313";
53+
"ru" "hugo_1313";
54+
default "hugo_1314";
5555
}
5656
map $host $publicdocupstream {
5757
hostnames;

content/documentation/admin/actions/overview.ru.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -243,16 +243,20 @@ project_id: {{ .property.project_id }}
243243

244244
#### Обновление хранилища процесса
245245

246-
Правила из раздела «Обновление хранилища процесса» применяются только при выполнении действия в рамках процесса: если они заданы, то после успешного выполнения действия значения по этим правилам записываются в хранилище.
246+
Правила из раздела «Обновление хранилища процесса» применяются только при выполнении действия в рамках процесса: после успешного завершения действия значения записываются в хранилище запуска по заданным правилам, **в порядке списка**.
247247

248-
| Поле | Описание |
249-
| ------------------ | ------------------------------------------------------------------------ |
250-
| Источник | Go-шаблон значения |
251-
| Ключ в хранилище | Ключ, под которым значение сохраняется в хранилище процесса |
248+
| Поле | Описание |
249+
| ---- | -------- |
250+
| Условие | Необязательный Go-шаблон; пустое — правило всегда выполняется. Результат рендеринга: `true`, `false`, `1` или `0` |
251+
| Операция | Записать строку, Записать JSON, Добавить строку, Добавить JSON, Слить JSON (поверхностно), Удалить |
252+
| Цель | Dot-path в хранилище без ведущей точки, например `deploy.job_id` или `notification.items` |
253+
| Источник | Go-шаблон значения |
252254

253-
Другие действия в процессе могут читать сохранённое значение через шаблон `{{ .store.key }}`, где `key` — указанный ключ.
255+
Другие действия и элементы процесса читают данные через `{{ .store.<путь> }}`. Внутри цикла в шаблонах доступен контекст `{{ .store._loop.* }}`.
254256

255-
Если правил нет (список пустой), при выполнении действия в процессе в хранилище ничего не записывается. Данные из хранилища можно использовать в последующих действиях того же процесса через плейсхолдеры `{{ .store.<ключ> }}`. Подробности описаны в разделе [«Хранилище процесса»](../processes/#хранилище-процесса).
257+
Если правил нет (список пустой), при выполнении действия в процессе в хранилище ничего не записывается.
258+
259+
Подробное описание операций, примеры правил, цикл по коллекции и просмотр хранилища — в разделе [«Хранилище процесса»](../processes/store/).
256260

257261
### Безопасность
258262

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
title: Процессы
3+
weight: 35
4+
---

content/documentation/admin/processes.ru.md renamed to content/documentation/admin/processes/overview.ru.md

Lines changed: 47 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
title: Процессы
3-
menuTitle: Процессы
2+
title: Обзор
3+
weight: 10
44
---
55

66
Процессы — это механизм автоматизации сложных бизнес-сценариев, который позволяет создавать визуальные схемы выполнения действий с поддержкой условной логики, параллельного выполнения и обработки ошибок.
@@ -15,7 +15,8 @@ menuTitle: Процессы
1515
* «Задача» — выполнение конкретного действия.
1616
* «Эксклюзивный шлюз» — условное ветвление.
1717
* «Параллельный шлюз» — объединение нескольких веток процесса в одну.
18-
* «Цикл» — повторение части процесса заданное число раз.
18+
* «Цикл» — повторение части процесса фиксированное число раз или обход JSON-массива из хранилища.
19+
* «Шаблон» — вычисление Go-шаблона и запись результата в хранилище процесса.
1920
* «Примечание» — текстовый блок.
2021
* «Ошибка» — немедленная остановка процесса со статусом `Failed`.
2122
* «Конец» — завершение процесса.
@@ -60,10 +61,11 @@ menuTitle: Процессы
6061

6162
Эксклюзивный шлюз позволяет настраивать ветвление процесса по условиям. По умолчанию проверяется статус предыдущей задачи, и в зависимости от него выполнение идёт по «успешной» или «неуспешной» ветке.
6263

63-
В качестве условий для эксклюзивного шлюза можно задать либо проверку статуса предыдущей задачи, либо проверку параметра из хранилища процесса:
64+
В качестве условий для эксклюзивного шлюза можно задать либо проверку статуса предыдущей задачи, либо сравнение значений из шаблонов:
6465

65-
- Для проверки статуса предыдущей задачи используйте конструкцию `{{ .prev_task.status }}`
66-
- Для проверки значения переменной из хранилища используйте конструкцию `{{ .store.<название переменной> }}`.
66+
- Для проверки статуса предыдущей задачи используйте конструкцию `{{ .prev_task.status }}`.
67+
- Для проверки значения из хранилища — `{{ .store.<путь> }}`, в том числе вложенные ключи: `{{ .store.notification.status }}`.
68+
- Внутри цикла — поля текущего элемента: `{{ .store._loop.item.scan_type }}`, флаги `{{ .store._loop.first }}` и `{{ .store._loop.last }}`.
6769

6870
Доступна проверка нескольких условий с комбинацией их результатов через оператор `AND` или `OR`.
6971

@@ -86,21 +88,43 @@ menuTitle: Процессы
8688

8789
##### Цикл
8890

89-
Элемент «Цикл» предназначен для выполнения одной и той же части процесса заданное число раз, после выполнения активируется элемент, подключенный к выходу из цикла.
91+
Элемент «Цикл» повторяет ветку процесса либо фиксированное число раз, либо по каждому элементу JSON-массива из хранилища. После завершения всех итераций активируется элемент, подключённый к выходу из цикла.
9092

91-
В конфигурации цикла можно настроить количество итераций: от 1 до 10000.
93+
###### Режим цикла
94+
95+
- **Фиксированное число** — поле «Количество итераций» от 1 до 10000. На каждой итерации в `{{ .store._loop.item }}` доступен номер итерации (1, 2, 3…).
96+
- **По коллекции** — поле «Шаблон коллекции»: Go-шаблон, который при входе в цикл должен дать JSON-массив. Обычно указывают путь к массиву, записанному предыдущей задачей: `{{ .store.notification.engagements }}`. Каждый элемент массива — одна итерация; текущий элемент доступен как `{{ .store._loop.item }}`.
97+
98+
Если массив пуст или ключ отсутствует, тело цикла не выполняется, процесс сразу переходит по связи «Выход из цикла».
99+
100+
Подробнее — в разделе [«Хранилище процесса»](store/#цикл-по-коллекции-из-хранилища).
92101

93102
###### Исходящие связи
94103

95104
Из элемента «Цикл» должны выходить ровно две связи к разным элементам:
96-
- «Тело цикла» — нижний порт; от него строится ветка, которая выполняется на каждой итерации.
97-
- «Выход из цикла» — правый порт; по этой ветке выполнение продолжается после последней итерации.
105+
106+
1. «Тело цикла» — нижний порт; от него строится ветка, которая выполняется на каждой итерации.
107+
1. «Выход из цикла» — правый порт; по этой ветке выполнение продолжается после последней итерации.
98108

99109
###### Использование
100110

101-
Элемент «Цикл» можно ставить после «Эксклюзивного шлюза» или «Параллельного шлюза», если нужно повторять выбранную ветку, либо использовать для схем, где один блок шагов должен пройти фиксированное число раз.
111+
Типовые сценарии:
112+
113+
- повторная проверка статуса внешней системы с фиксированным числом попыток;
114+
- обход списка объектов из ответа API: задача записывает массив в хранилище, цикл в режиме «По коллекции» обрабатывает каждый элемент;
115+
- вложенные циклы — контекст родителя доступен через `{{ .store._loop.parent }}`.
116+
117+
##### Шаблон
102118

103-
Типовой пример использования: ожидание в теле цикла успешного выполнения какой-либо длительной операции и выход через эксклюзивный шлюз при положительном результате проверки, либо возврат в цикл при отрицательном результате.
119+
Элемент «Шаблон» вычисляет Go-шаблон без дополнительного вызова действия и записывает результат в хранилище как строку.
120+
121+
Настройте:
122+
123+
- «Тело шаблона» — текст с плейсхолдерами `{{ .store.* }}`, `{{ .process.* }}`, внутри цикла — `{{ .store._loop.* }}`;
124+
- «Ключ в хранилище» — dot-path назначения, например `rendered_message`;
125+
- «Подсказка формата» — как отображать значение при просмотре запуска (`text`, `markdown`, `html`, `json`); не влияет на содержимое хранилища.
126+
127+
Примеры и ограничения — в разделе [«Хранилище процесса»](store/#элемент-шаблон).
104128

105129
##### Таймер
106130

@@ -154,30 +178,22 @@ menuTitle: Процессы
154178

155179
На вкладке `Параметры` настраиваются параметры процесса, которые могут использоваться во всех действиях процесса.
156180

157-
Конфигурация и использование параметров процесса описаны в разделе [«Шаблонизация»](../user/templating/#параметры-процесса).
181+
Конфигурация и использование параметров процесса описаны в разделе [«Шаблонизация»](../../user/templating/#параметры-процесса).
158182

159183
### Хранилище процесса
160184

161-
Хранилище процесса — это хранилище в формате «ключ — значение» для передачи данных между действиями в процессе.
162-
163-
#### Основные характеристики
164-
165-
- «Одно хранилище на запуск процесса» — каждый запуск процесса имеет своё хранилище.
166-
- «Плоские ключи» — в хранилище используются только логические ключи (например `projectId`, `deployJobId`).
167-
- «Запись только по правилам» — в хранилище записывается только то, что задано в настройках действий, входящих в процесс (см. [«Обновление хранилища процесса»](../actions/overview/#обновление-хранилища-процесса)). Если правил записи нет — в хранилище ничего не записывается.
168-
- «Чтение через плейсхолдеры» — в конфигурации действий (URL, заголовки, body и т. д.) можно использовать Go-шаблоны вида `{{ .store.<ключ> }}` (см. [«Хранилище процесса»](../../user/templating/#хранилище-процесса)).
169-
170-
#### Как данные попадают в хранилище
185+
Хранилище процесса — JSON-объект для передачи данных между шагами одного запуска: идентификаторы, массивы, промежуточные результаты и тексты из элемента «Шаблон».
171186

172-
1. Действие в процессе завершилось успешно.
173-
1. У действия настроены правила «Запись в хранилище процесса».
174-
1. Для каждого правила выполняется Go-шаблон из поля «Источник» с данными ответа действия; полученная строка записывается в хранилище под ключом, указанным в поле «Ключ в хранилище».
187+
Полное описание правил записи, операций, контекста цикла и примеров сценариев — в разделе [«Хранилище процесса»](store/).
175188

176-
Если для одного и того же ключа пишут несколько действий (или одно и то же действие при повторном запуске), значение перезаписывается.
189+
Кратко:
177190

178-
#### Поведение при отсутствующих данных
191+
- **Одно хранилище на запуск** — у каждого экземпляра процесса своё хранилище; его можно просмотреть на вкладке «Хранилище» при визуализации запуска.
192+
- **Вложенные пути** — ключи задаются через точку: `notification.module_name`, `ctx.job.id`; поддерживаются индексы массивов: `items[0].status`.
193+
- **Запись по правилам** — данные попадают в store после успешного выполнения действия (раздел [«Обновление хранилища процесса»](../../actions/overview/#обновление-хранилища-процесса)) или при проходе элемента «Шаблон». Доступны операции записи строки и JSON, добавления, слияния и удаления, а также условие на каждое правило.
194+
- **Чтение** — Go-шаблоны `{{ .store.<путь> }}` в конфигурации действий и условиях шлюзов (см. [«Хранилище процесса»](../../user/templating/#хранилище-процесса)).
179195

180-
Если ключа нет в хранилище (действие ещё не выполнялось, не имело правил записи или запись не произошла), при выполнении шаблона `{{ .store.<ключ> }}` действие завершится с ошибкой.
196+
Если ключа нет в хранилище, шаблон `{{ .store.<путь> }}` завершит шаг с ошибкой.
181197

182198
## Запуск процесса
183199

@@ -228,14 +244,15 @@ menuTitle: Процессы
228244
* Логи выполнения действий.
229245
* Статус каждого элемента процесса.
230246
* Хронологию выполнения процесса.
247+
* Содержимое [хранилища процесса](store/#просмотр-хранилища-при-выполнении) на вкладке «Хранилище».
231248

232249
#### Таймлайн
233250

234251
На панели визуализации запуска процесса доступна вкладка «Таймлайн», на которой отображается хронология выполнения процесса: для каждого элемента, который участвовал в текущем запуске, показаны время начала и окончания, длительность и статус.
235252

236253
#### Лог процесса
237254

238-
Для каждого запуска процесса доступен подробный лог его выполнения. Кнопка просмотра лога находится на экране визуализации выполнения процесса (иконка лога рядом с Fullscreen, Zoom, Refresh).
255+
Для каждого запуска процесса доступен подробный лог выполнения: панель на схеме запуска, отдельное окно или док внизу экрана. Лог и JSON хранилища можно скачать с панели диалога запуска процесса.
239256

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

0 commit comments

Comments
 (0)