Пользовательский рабочий процесс: время ожидания в песочнице Client.System.TimeoutException

В настоящее время мы работаем над CRM 2015 Online, у нас есть требование заполнить поле «new_UniqueNumber». Для этого мы написали собственный рабочий процесс (OnDemand|Async.). Ожидается, что WF извлечет более 3500 записей за один раз (учитывая ограничение RetriveMultiple в 5000).

WF работает только примерно с 1600 записями, а затем прерывает исключение TimeOut:

Unhandled Exception:
Microsoft.Crm.CrmException: The plug-in execution failed because the operation
has timed-out at the Sandbox Client.System.TimeoutException: Microsoft Dynamics
CRM has experienced an error.
at Microsoft.Crm.Sandbox.SandboxCodeUnit.Execute(IExecutionContext context)
at Microsoft.Crm.Workflow.Services.ProxyCustomActivity.Execute(CodeActivityContext
executionContext)

Кроме того, вместо того, чтобы пытаться работать со всеми записями сразу, мы попытались сделать это пакетно (т.е. ограничить query.PageInfo.Count) и использовать пейджинг, но это не помогло.

Что вы думаете?


person Kunal Goel    schedule 15.08.2015    source источник
comment
Можете ли вы опубликовать свой запрос. Какую выборку вы используете: QueryExpression, Fetchxml? Вы получаете все столбцы сущности? Попробуйте ограничить столбцы, которые вы выбираете. Это может очень помочь.   -  person Yacine Zine    schedule 17.08.2015


Ответы (2)


Если вы хотите просто заполнить поле, почему вы используете настраиваемое действие рабочего процесса? Разработайте простое приложение .Net или используйте SSIS для выполнения этой работы.

person Andrew Butenko    schedule 17.08.2015
comment
Потому что, 1. Это разовое обновление, которое обновит некоторые существующие записи.(OnDemand for Backfill). 2. а. Было ограничено количество записей около 7000 для обновления. б. Да, мы можем использовать .Net App, но мне интересно, что также нужно будет вызывать RetrieveMultiple. 3. Меня беспокоит только то, почему это не удалось, когда мы подходим к нему партиями и с асинхронной победой. услуга. Более того, заказчик хотел бы иметь для этого WF. - person Kunal Goel; 17.08.2015
comment
Пожалуйста, обратитесь к моей ветке на MSDN для получения дополнительной информации: исключение at-the-sandbox-clientsystemtimeout?forum=crmdevelopment" rel="nofollow noreferrer">social.msdn.microsoft.com/Forums/en-US/ - person Kunal Goel; 17.08.2015
comment
Я считаю, что я уже ответил вам на ваш вопрос в указанной ветке. Специалистов, работающих с Dynamics CRM и носящих имя Андрея Бутенко, немного. Во всяком случае, я не видел какой-либо веской причины, по которой вы не можете использовать .Net App или SSIS вместо рабочего процесса/пользовательской активности рабочего процесса. - person Andrew Butenko; 17.08.2015
comment
Я согласен с использованием приложения .NET или потока данных SSIS. Это может быть простое консольное приложение, которое даст вам преимущество в регулировании размера пакета для обновления. Больше всего вы можете отлаживать выполнение при тестировании и, надеюсь, получите больше информации. - person Alessi; 17.08.2015

Вы пробовали иметь два разных рабочих процесса? Один рабочий процесс, который извлекает тысячи записей, а затем вызывает второй рабочий процесс для каждой из записей, чтобы фактически выполнить работу?

Тогда двухминутный тайм-аут не будет проблемой для рабочего процесса, который просто вызывает тысячу рабочих процессов (потому что они должны быть созданы просто отлично, но могут оставаться в состоянии «Ожидание ресурсов» в течение нескольких минут), и тайм-аут должен не будет проблемой для каждого из «дочерних» рабочих процессов, если каждый из них завершается в течение 2 минут после запуска.

person pkr    schedule 17.08.2015