2015-09-05 1 views
1

У меня есть пара вопросов, пожалуйста.Динамический CRM 2013 Плагин исполнения события и 2 минуты Время ожидания

1- Когда плагин триггеры на события и вызвал другой плагин B для запуска, делает плагин B выполняется в том же трубопроводе выполнения события, как плагин A?

2- Если это верно и плагин A и плагин B выполняет в том же трубопроводе выполнения событий они оба имеют 2 минуты, чтобы завершить (так как максимальное время выполнения плагина в динамическом CRM является 2 минут), или у каждого из них есть 2 минуты, чтобы завершить, чтобы общее время выполнения, разрешенное для обоих из них, составляло 4 минуты?

Спасибо.

ответ

3

Плагин B будет выполняться в дочернем трубопроводе плагин А.

В Dynamics CRM 2011 понятие родительских и дочерних трубопроводов был оставлен в попытке упростить разработки плагинов, но под капотом они все еще существуют. Вы можете узнать, в каком контексте выполняется ваш плагин, проверяя свойство IPluginExecutionContext.ParentContext.

E.g. когда ваш плагин зарегистрирован для сообщения Update, родительский конвейер может фактически отображаться в контексте сообщения Assign или SetState. Кроме того, когда пользовательский код плагина выполняет обновление в записи, обновление будет выполняться в отдельном дочернем конвейере.

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

Асинхронные шаги плагина, однако, не играют здесь роли, поскольку они выполняются в отдельном процессе. Имейте в виду, что код плагина не может создавать дочерние конвейерные экземпляры бесконечно. Чтобы избежать бесконечных циклов работы, система позволяет плагинам не более 8 уровней. Вы можете проверить это с помощью свойства IPluginExecutionContext.Depth.

+0

Благодарим за отзыв. Вы упомянули: ** В песочнице корневой трубопровод должен завершиться в течение 2 минут **. Означает ли это, что если плагин НЕ зарегистрирован в песочнице, корневой конвейер может занять более 2 минут? – Nick

+0

Нет, я имею в виду, что сумма всех не может работать в течение более длительного времени, чем 2 минуты. –

1

В контексте плагина это неверно, но я думаю, зависит от того, как вы регистрируете плагин, если вы выполняете операцию создания из плагина A, а плагин B запускается в этой операции, если плагин B является синхронным (pre -добавление, предварительная операция), то плагин A должен дождаться завершения плагина B. Плагин B Все еще будет иметь 2-минутное окно для завершения, возможно, у вас будет небольшое более крупное окно, а затем 2 мин - плагин. Время выполнения, но когда плагин A будет разорван, поскольку он прошел время выполнения, плагин B будет разорван после его собственный лимит в 2 минуты (я представляю сценарий свертывания).

Я думаю, что ответ для вас - нет, они не получают Выполнено в одном и том же событии, но общее время выполнения зависит от того, как вы регистрируете плагин B, если синхронно или асинхронно.