Управление плагином синхронизации после операции с помощью ExecuteTransactionrequest - PullRequest
0 голосов
/ 14 декабря 2018

У нас есть плагин синхронизации после операции, который записывает данные о событиях в концентратор событий.Однако у нас есть некоторые пользовательские функции, которые используют ExecuteTransactionrequest для запуска пакетных операций.

Если транзакции, выполняемые по ExecuteTransactionrequest, не выполняются, выполняется откат, однако данные, записанные в концентратор событий, не могут быть откатаны.

Существует ли способ управления запуском постоперационных плагинов, с помощью которых они запускаются после завершения всех операций.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Вы можете использовать асинхронный плагин.Асинхронные шаги вызываются только тогда, когда синхронный конвейер плагина завершился без ошибок.

0 голосов
/ 14 декабря 2018

Ваши параметры здесь несколько ограничены, вы можете попробовать предварительную проверку.

Стадии конвейера

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

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

Постоперация - этап в конвейере для подключаемых модулей, которые должны выполняться после основной операции.Плагины, зарегистрированные на этом этапе, выполняются внутри транзакции базы данных .

Включение в транзакции базы данных

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

Если вы используете концентратор событий как своего рода протоколирование, я бы посоветовал вам этого не делать, так как откат транзакции может стереть все журналы.

Вы могли бы рассмотреть возможность вывести журналирование за пределы CRM.Или, если вам нужно иметь его в CRM, то отправьте данные куда-нибудь, чтобы их нельзя было откатить в первую очередь.Например плагин> внешний веб-сервис> CRM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...