Вы находитесь здесь:
Выполнение потоков в транзакциях
Потоки выполняются в транзакциях, группирующих операции как единое целое. При неудачном выполнении любой операции вся транзакция откатывается для сохранения целостности данных. Сюда входят триггеры Apex, правила расширения и все сеансы потока в транзакции.
При каждой транзакции Salesforce применяет контролирующие ограничения, чтобы предотвратить истощение общедоступных ресурсов. Поскольку ресурсы доступны нескольким организациям Salesforce, система Salesforce предотвращает истощение ресурсов одной организацией, а также их высокую и сухую нагрузку на другие организации. Он похож на многоквартирный дом, использующий один кэш воды для обслуживания каждого жильца. Если ваш сосед использует всю воду, вы не можете принимать душ. (Это пустяки, но надеюсь, вы поймете идею.) Ограничения управляющего по каждой транзакции помогают предотвратить подобное.
Начиная с выпуска Winter ’26, можно настроить все типы потоков для определения при выполнении, требуется ли новая транзакция для успешного выполнения действия. Раньше только потоки окон имели управление транзакциями. Для потоков, запущенных записью, можно применить управление транзакциями к действиям в асинхронном или запланированном пути, но не в пути для немедленного выполнения.
| Если действие было настроено в | Стандартный алгоритм действий: |
|---|---|
| Winter ‘26 или более поздняя | Пусть поток решает (рекомендуется) |
| Summer ‘25 или ранее | Всегда продолжать текущую транзакцию |
Параметр управления транзакциями доступен для действия в параметре «Дополнительно» для всех настраиваемых действий и для стандартных действий, только если они выполняют выноску.
Описание параметров
Настройте действия, чтобы поток автоматически определял при выполнении, нужна ли новая транзакция для успешного выполнения действия.
| Параметры | Описание |
|---|---|
| Пусть поток решает (рекомендуется) | Поток определяет при выполнении, требуется ли новая транзакция для успешного выполнения действия. Если это действие связано с выноской, а текущая транзакция содержит отложенные операции, текущая транзакция обязуется перед выполнением действия в новой транзакции. При отладке потока действие всегда выполняется в текущей транзакции и может привести к ошибке при наличии выносок. |
| Всегда запускать новую транзакцию | Перед выполнением этого действия текущая транзакция будет зафиксирована. Действие потом выполняется в новой транзакции. Если действие по каким-то причинам не удается, Salesforce не может откатить операции от предыдущей транзакции. Запуски отладки не поддерживаются. |
| Всегда продолжать текущую транзакцию | Это действие всегда выполняется в текущей транзакции. Если действие включает выноску, в то время как текущая транзакция содержит отложенные операции, поток не выполняется. |
- Способ запуска транзакции
В зависимости от способа распространения потока, транзакция, выполняющая сеанс для этого потока, начинается разными способами. - Как заканчивается транзакция
Когда заканчивается транзакция, зависит от того, содержит ли поток определенные элементы и был ли он изначально запущен из-за изменения записи.
См. также:
Способ запуска транзакции
В зависимости от способа распространения потока, транзакция, выполняющая сеанс для этого потока, начинается разными способами.
| Метод распространения | Транзакция начинается, когда... |
|---|---|
| Конструктор процессов1 | Запись создается или обновляется. |
| URL-адрес потока | URL-адрес открыт. |
| Настраиваемая кнопка или ссылка | Нажатие кнопки или ссылки. |
| Страница Visualforce | Доступ к странице открыт. |
Метод Interview.start() |
Если метод запускается посредством триггера В противном случае, транзакция начинается при вызове метода (или родительского метода). Метод |
| REST API (ресурс настраиваемых действий или потоков) | Когда выполняется вызов REST. В зависимости от способа реализации вызова REST, ограничения могут быть общедоступными для других операций. |
1То же самое относится и к потоку, распространяемому посредством бизнес-правила. Пилотная программа для действий бизнес-правил триггера потока закрыта. Если вы уже включили пробную версию в вашей организации, можно продолжить создание и редактирование действий триггера потока бизнес-правил. Если вы не включили пробную версию в вашей организации, используйте Flow Builder для создания потока, запущенного записью, или используйте конструктор процессов для запуска потока из процесса.
Как заканчивается транзакция
Когда заканчивается транзакция, зависит от того, содержит ли поток определенные элементы и был ли он изначально запущен из-за изменения записи.
Транзакция заканчивается, когда:
- Выполняется элемент окна, локального действия или ожидания
- Порядок выполнения действий завершен, если поток запущен при создании или обновлении записи
- Все сеансы в транзакции завершены
Если сеанс является одним из многих действий, выполняемых в данной транзакции, этот сеанс имеет общие управляющие ограничения транзакции с другими операциями.
Вы обновляете 100 обращений посредством Data Loader. В зависимости от порядка их выполнения в транзакции и настроек в организации, происходит следующее.
| STEP | Операция транзакции | Использованный оператор DML | Использованный запрос SOQL |
|---|---|---|---|
| 1 | Обращения сохраняются в базе данных, но еще не подтверждены. | Нет | Нет |
| 2 | Правила назначения обращений выполняются. Ответственный за каждое обращение обновляется. | Да | Нет |
| 3 | Выполняются правила расширения обращений. Если обращение открыто в течение 10 дней, ответственному отправляется электронное сообщение. | Нет | Нет |
| 4 | Процесс запущен. | Нет | Нет |
| 5 | Процесс ищет организацию обращения. | Нет | Да |
| 6 | Если организация горячая, процесс использует Chatter для уведомления ответственного за организацию о наличии нового обращения, связанного с организацией. | Да | Нет |
| 7 | Процесс запускает сеанс потока. | Нет | Нет |
| 8 | Сеанс потока ищет родительскую организацию и количество обращений. | Нет | Да |
| 9 | Сеанс потока проверяет наличие в организации более пяти открытых обращений. | Нет | Нет |
| 10 | В противном случае, сеанс потока ищет менеджера подразделения организации, потом публикует сообщение в ленте Chatter организации для уведомления менеджера подразделения и ответственного за организацию. | Да | Да |
| 11 | В противном случае, поток публикует интервью в ленте Chatter организации для уведомления только ответственного за организацию. | Да | Нет |
