api.tx Работа с транзакциями
-
api.tx.call(closure)
Выполнение замыкания внутри новой транзакции.
Для работы с транзакциями в контексте выполнения скрипта.
Найденные объекты не рекомендуется использовать за пределами транзакции, вместо этого следует возвращать примитивные значения (строки, числа и т.д.). Если необходимо использовать объект вне транзакции, то его следует снова получить с использованием уникального признака (например, UUID).
Параметр метода:
- closure — замыкание, которое должно быть выполнено
Пример.
def obj1 = ... def obj2 = ... def closure = { utils.edit(obj1, [ state : 'closed' ]) // первое действие ... utils.edit(obj2, [ state : 'closed' ]) // и второе действие, будут выполнены в новой транзакции } api.tx.call(closure)
-
api.tx.call
Массовое удаление объектов.
Благодаря оборачиванию действия в отдельную транзакцию и блок try-catch, ошибка на какой-либо итерации никак не повлияет на обработку остальных объектов и будет корректно обработана
Пример.
def objs = ... objs.each { obj -> try { api.tx.call { utils.delete(obj) } } catch (e) { logger.error('...', e) } }