AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.02.2009, 00:35   #1  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
С полной уверенностью могу сказать - очередность выполнения плагинов возможна только в рамках обработки события. То есть если пользователь инициировал некоторое событие, то плагины, зарегистрированные на него возможно и объывленные как синхронные возможно будут выполнятся по очереди. В случае одновременной инициализации одним (или разными) пользователем нескольких одинаковых событий одной сущности, плагины будут выполнятьсяпараллельно. Уж не знаю, несколько ли раз при этом будут подключаться библиотеки с плагинами или они подключаются один раз и выполняются в разных потоках.

Уверенность моя исходит из следующего. Создал плагин который выполняет некоторое достаточно долгое действие. При начале работы плагин пишет в файл некий маркер (guid, чтобы отличать один экземпляр плагина от другого) и слово Start. По завершению работы тот же маркер и слово End. Повесил плагин на событие сущности. Создал workflow, которое инициирует событие сущности. Выделил две записи сущности и запустил workflow. Результат в файле был следующим:
Start
Start
End
End

Вот такие вот пирожки с котятами...
Старый 05.02.2009, 01:34   #2  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Да, и кстати... Мы почему-то стали путать и смешивать понятия синхронности плагинов и очередности выполнения. Синхронность всего лишь говорит о том что плагин выполниться при обработке события, а не когда то после. При этом синхронность (или асинхронность) никак не влияет ни на очередность выполнения плагинов в рамках одного события, ни на очередность вообще. Кстати, на сколько я понимаю, в отличии от колаутов, для плагинов вообще нельзя задать очередность (в рамках обработки одного события). В какой последовательности они будут выполняться (и в последовательности ли вообще, а может параллельно) - одному богу известно...
Старый 19.02.2009, 23:24   #3  
Савран Роман is offline
Савран Роман
Участник
 
58 / 17 (1) ++
Регистрация: 19.02.2009
Адрес: Киев, Украина
Ну раз уж так далеко зашло :)
SDK нигде не описан способ очередности обработки нескольких вызовов веб-сервисов, тем не менее 99,9% процентов, что они выполняются паралельно, это из личного опыта, связанного с нагрузочным тестированием. Все из информации, что доступно из СДК :
http://msdn.microsoft.com/en-us/library/cc151078.aspx
т.е. сущность "лочится", после выполнения пре-плагинов и "разлачивается" перед выпоолнением пост-плагинови и коллизия о которой говорит ZooY вполне возможна.

Если вы не доверяете майкрософту в плане разрешения таких коллизий, достаточно просто реализовать свой механизм, например при помощи семафоров для сущности "Нумератор". Для этого добавить поле, например new_islocked и перед какими-либо операциями устанавливать это поле в 1, при этом повесив на "Нумератор" пре-плагин, который отрубает попытку обновления, если значение семафора 1. После выполнения плагин должен вернуть значение семафора в 0.

Цитата:
Кстати, на сколько я понимаю, в отличии от колаутов, для плагинов вообще нельзя задать очередность (в рамках обработки одного события). В какой последовательности они будут выполняться (и в последовательности ли вообще, а может параллельно) - одному богу известно...
Для плагинов есть поле "Execution order" и хотя я не видел в СДК явного указания, что плагины выполняются последовательно (в рамках одного вызова веб-сервиса), я в этом практически уверен.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics CRM Team Blog: Building Rich-Client Dashboards for Microsoft Dynamics CRM with Windows Presentation Foundation Blog bot Dynamics CRM: Blogs 1 31.03.2009 13:24
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM 4.0 Bookshelf Blog bot Dynamics CRM: Blogs 1 22.01.2009 04:46
Microsoft Dynamics CRM Team Blog: Reports for CRM 4.0 using SQL Server 2008 and Report Builder 2.0 Blog bot Dynamics CRM: Blogs 0 11.11.2008 08:05
Microsoft Dynamics CRM Team Blog: Top 14 Microsoft Dynamics CRM Sites and Downloads Blog bot Dynamics CRM: Blogs 0 14.07.2008 13:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:01.