2016-09-01 3 views
0

Я разрабатываю несколько рабочих процессов. Основной рабочий процесс вызывает некоторые дочерние процессы. Если дочерние рабочие процессы не работают, мне нужно подождать период времени, а затем повторить этот дочерний процесс. Если он не сработает, отправьте задачу в очередь. У меня возникают проблемы с проверкой статуса дочернего процесса. Когда это не удается, я останавливаю дочерний процесс с отмененным статусом.MS CRM: проверка состояния дочернего рабочего процесса

ответ

0

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

запрос, чтобы получить состояние ребенка процесса:

<?xml version='1.0' encoding='utf-8'?> 
<fetch distinct='false' no-lock='false' mapping='logical' page='1' count='100'> 
    <entity name='asyncoperation'> 
    <attribute name='statuscode' /> 
    <filter type='and'> 
     <filter type='and'> 
     <condition attribute='correlationid' operator='eq' value='{Correlation ID of workflow>' /> 
     <condition attribute='name' operator='eq' value='NAME OF CHILD WORKFLOW' /> 
     </filter> 
    </filter> 
    </entity> 
</fetch> 

Пришло пример запроса, и соответствует ребенку по имени и корреляционного идентификатора. Он будет работать, если у вас есть только один вызов дочернего процесса.

Здесь вы можете найти список значений состояния для асинхронных процессов: https://msdn.microsoft.com/en-us/library/gg309288.aspx

Затем основные этапы рабочего процесса будет выглядеть так:

  • вызов ребенка документооборота
  • подождать некоторое время
  • вызова пользовательских шаг для проверки состояния детского рабочего процесса
  • если статус ребенка в порядке - продолжение с основным
  • если не добавить логику для обработки отказа
Смежные вопросы