Мы говорим о времени, которое требуется конечному автомату рабочего процесса, чтобы заметить, что задача A завершена, таким образом удовлетворяя условию ожидания в определении рабочего процесса, которое затем создает задачу B. Пользователь1 отмечает задачу A как завершенную, и это занимает от 2 до 20 минут для создания задачи B. Вот что я узнал:
Наиболее распространенное решение, найденное на форумах, - очистить таблицу AsyncOperationBase. Говорят, что производительность пострадает, если эта таблица содержит> 1 миллион строк, однако наша таблица содержит только 22 КБ.
В CRM 2013 MS создала новый тип рабочего процесса, названный «рабочие процессы в реальном времени». Это те, у которых нет флажка рядом с «Запускать этот рабочий процесс в фоновом режиме». Мы не можем использовать их, потому что рабочие процессы в реальном времени не могут иметь условий ожидания. В CRM 2011 обычно проходило всего несколько секунд, прежде чем конечный автомат заметил, что задача завершена, и создал следующую. Похоже, что с введением реального времени другие типы стали еще более «в фоновом режиме» ... наиболее подходящее утверждение на этот счет содержится в URL-адресе ниже: «Фоновые рабочие процессы обычно рекомендуются, поскольку они позволяют системе применять их как ресурсы на сервере доступны. Это помогает сгладить работу, которую должен выполнять сервер, и помогает поддерживать максимальную производительность для всех, кто использует систему. Недостатком является то, что действия, определяемые фоновыми рабочими процессами, не выполняются немедленно. Вы не можете предсказать, когда они будут применены, но обычно это занимает несколько минут ».
Есть ли какое-либо возможное решение, с помощью которого рабочий процесс поможет создать задачу B за меньшее время?
Каковы характеристики вашего Microsoft SQL Server, т. Е. ОЗУ, диск и процессор? Сколько у вас пользователей Microsoft CRM (как лицензированных, так и обычных)? Хотя обычно это не является фактором низкой производительности рабочего процесса, недостаточная мощность Microsoft CRM Server может также повлиять на скорость обработки рабочих процессов. Каковы аппаратные характеристики Microsoft CRM Server (ЦП, ОЗУ)? Похоже, у вас может быть проблема с производительностью SQL Server, но реальный способ определить это - собрать некоторые данные и проанализировать их. Вы должны получить 5-15 минут данных с помощью инструмента трассировки статистики ожидания SQL Server PSS Perf, доступного здесь - http://sqlnexus.codeplex.com/wikipage?title=Sql2005PerfStatsScript&referringTitle=Home и можете проанализировать его с помощью SQLNexus, доступного на http://sqlnexus.codeplex.com/. Обычно есть несколько ключевых недостающих индексов, которые, если их добавить в базу данных Microsoft CRM, решат большинство проблем с производительностью. В зависимости от ОЗУ на SQL Server и если он используется совместно с Microsoft CRM и / или другими службами, вам может потребоваться либо перенести SQL Server на выделенный компьютер, и / или обновить ОЗУ или дисковую систему на нем для более оптимального использования. производительность.
Если вы хотите получить более конкретные числа и данные из завершенных рабочих процессов, вы можете получить фактическое время обработки (только CRM OnPremise), используя приведенный ниже запрос SQL для запуска в базе данных MSCRM, то есть Contoso_MSCRM (раскомментируйте и введите имя вашего рабочего процесса, если вы хотите увидеть только те экземпляры вашего рабочего процесса, которые были упомянуты выше). Обратите внимание, что время обработки ниже указано в минутах:
SELECT Name, StartedOn, CompletedOn, DateDiff(mi,StartedOn,CompletedOn)as 'Time to Process', RetryCount,Message,ErrorCode,StateCode,StatusCode
FROM AsyncOperationBase WITH (NOLOCK)
WHERE OperationType = 10
AND CompletedOn IS NOT NULL
--AND Name = 'Name of Workflow'
ORDER BY [Time to Process] DESC
У вас нет того, что я бы считал большим количеством записей AsyncOperation с ~ 22000, но после получения некоторых результатов с помощью вышеуказанного запроса вы можете удалить завершенные задания рабочего процесса из таблицы AsyncOperationBase, используя запрос в KB 968520, http://support.microsoft.com/kb/968520. Обычно я настраиваю это в задании SQL для запуска либо ночью, либо еженедельно, чтобы его можно было запускать в непроизводственные часы.