Я пытаюсь найти способ отменить рабочий процесс с помощью Dynamics CRM SDK. В настоящее время я могу повторить рабочий процесс, но у меня возникают проблемы с его программной отменой. Это возможно?
SDK Dynamics CRM – отмена рабочего процесса
- Вы пытаетесь отменить текущий рабочий процесс или отменить пакет других рабочих процессов, запущенных на сервере? 20.01.2014
- Я бы запрашивал у системы приостановленные рабочие процессы, которые, как я знаю, должны были быть завершены, и если повторная попытка не сработала, отменял бы их. 21.01.2014
- лучший способ справиться с этим - определить логику в рабочем процессе, чтобы завершить его на основе причины, по которой он может дать сбой... но проверьте мой ответ ниже о том, как остановить его программно 23.01.2014
Ответы:
Чтобы запустить рабочий процесс:
ExecuteWorkflowRequest request = new ExecuteWorkflowRequest()
{
WorkflowId = Workflow.Id,
EntityId = entity.Id
};
// Execute the workflow.
ExecuteWorkflowResponse response =
(ExecuteWorkflowResponse)service.Execute(request);
В конец:
Entity operation = new Entity("asyncoperation")
{
Id = WorkflowRef.Id
};
operation["statecode"] = new OptionSetValue(3);
operation["statuscode"] = new OptionSetValue(32);
organizationservice.Update(operation);
Вы видели состояния асинхронной операции?
По-видимому, вам просто нужно сделать вызов обновления файла statecode
.
Получение и обновление состояний AsyncOperation
Мониторинг и обновление состояния асинхронной операции обычно выполняется в интерактивном режиме через сетку системных заданий в веб-приложении Microsoft Dynamics CRM. Однако вы также можете использовать SDK для написания кода, выполняющего те же задачи.
Чтение состояния асинхронной операции
Получите AsyncOperation по имени с помощью метода RetrieveMultiple или по идентификатору с помощью метода Retrieve.
Прочтите атрибут AsyncOperation.StateCode.
Изменить код штата
Измените полученный атрибут кода состояния на новое значение в соответствии с разрешенными состояниями операции. Вы также можете изменить атрибут AsyncOperation.PostponeUntil.
Вызовите Update, чтобы изменить значение этих атрибутов в базе данных.