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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2011, 15:33   #1  
Fighter is offline
Fighter
Участник
Аватар для Fighter
 
108 / 31 (2) +++
Регистрация: 26.07.2011
Адрес: Kyiv
Записей в блоге: 12
Цикл ожидания в асинхронном бизнес-процессе
Добрый день!

CRM 2011 Online.

В асинхронном бизнес-процессе требуется запустить процедуру ожидания. Кто знает, какой метод лучше использовать (точнее, какой метод будет меньше "грузить" сервер):

- использовать условие ожидания;
- использовать таймаут в процессе (например, ждать 2 часа, а потом проверить нужные условия...).

В конструкторе Бизнес-процесса эти условия называются соответственно:
1) - Подождать пока произойдет ...
2) - Время ожидания до ...

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

Понятно, что во втором случае - это заданный жестко таймаут. По идее, CRM должна запустить внешний счетчик времени и не лезть в запись. Т.е. бизнес-процесс как бы "висит", но ресурсы процессора тратятся минимально... Так ли это? Или все же CRM продолжает "лезть" в запись с заданным интервалом времени, и там смотрит условие тайм-аута, типа пора прекращать счет времени или ждем дальше...

Заранее спасибо!
__________________
Материалы для внедренцев Microsoft Dynamics CRM теперь на сайте Infoleat.com и в моем блоге CRM для бизнеса
Старый 27.10.2011, 16:07   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Я думаю вам нужно почитать про Windows Workflow Foundation в .NET 4.0. Рабочие процессы CRM построены на базе этой технологии.
Все запущенные процессы хранятся в таблице текущих операций. Ожидающие процессы - не исключение. Раз в какое-то время (где-то есть информация раз в сколько, кажется это задается в реестре или в базе) асинхронный сервис CRM пробегает по этой таблице и последовательно выполняет шаги процессов. У него есть на это определенный интервал времени и если он не успевает в него уложитья, то процесс складывается обратно в базу, а сервис засыпает до следующего запуска. Кривизна архитектуры состоит в 2 моментах:
1. Если операции внутри шага не успели завершиться до таймаута - шаг считается не выполненным, процесс завершается и в следующий раз будет выполняться с этого же шага. В этом случае какие-то операции могут быть выполнены дважды или трижды. Поэтому следует избегать длительных ожидающих операций в кастомных шагах. Если они необходимы - используйте плагины.
2. Если ожидающих процессов много, или журнал не чистится, асинхронный сервис может подавиться потоком информации и не будет успевать выполнять процессы за свой рабочий интервал. Процессы зависнут в состоянии ожидания.

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

На производительности решения это может сказаться косвенно: процессы будут отрабатывать дольше, но быстродействие остальных частей системы от этого пострадать не должно. Сервис поэтому и устроен подобным образом, чтобы как можно меньше влиять на производительность.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional

Последний раз редактировалось Артем Enot Грунин; 27.10.2011 в 16:10.
Старый 02.11.2011, 00:28   #3  
AndreyS is offline
AndreyS
Moderator
Сотрудники Microsoft Dynamics
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
283 / 61 (3) ++++
Регистрация: 18.05.2006
На больших проектах со сложными процессами настоятельно рекомендуется избегать долгих wait.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Бизнес-процесс висит в состоянии ожидания Evgenia_f Dynamics CRM: Функционал 70 21.12.2009 18:53
Проверка связи 1:N в бизнес-процессе Nazarov Dynamics CRM: Функционал 4 25.11.2009 08:16
Как записать условие в бизнес-процессе, что атрибут объекта (с типом дата) равен сегодня. Clever Dynamics CRM: Функционал 2 19.11.2009 15:41
Обновление логических полей в бизнес-процессе Ириска Dynamics CRM: Функционал 6 22.01.2009 18:00
Бизнес-процесс и список ожидания Evgenia_f Dynamics CRM: Разработка 16 07.10.2008 16:22

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

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

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