2011-12-15 6 views
0

Прежде всего, я извиняюсь, если мой английский отключен, а не мой первый язык.Workflow Foundation 4 раза проблемы

Я работаю над проектом, который использует для своих процессов Windows Workflow Foundation 4 и asp MVC для пользовательского интерфейса, большинство рабочих процессов уже было сделано, когда я добрался туда, и у меня нет большого опыта с ним ... теперь мы столкнулись с проблемой, когда у нас есть рабочий процесс, который вызывает другой рабочий процесс, примерно так:

process1.xaml Получить запрос ---> получить сущность -> для каждого объекта ---- // вызов process2.xaml // -> отправить ответ

process2.xaml получить запрос ---> известково зарплата ---> отправить ответ

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

** Ошибка обработки текущего рабочего элемента вызвала прерывание рабочего процесса. Подробнее см. Внутреннее исключение. Сообщение InnerException: транзакция прервана. **

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

Любые идеи?

Кроме того, есть ли способ сказать «process1.xaml» повторить вызов «process2.xaml», скажем, 3 раза? затем отправить сообщение об ошибке msg, если он не работает?

Заблаговременно за это время.

SVP

+0

Звучит как 'calc pay'' занимает слишком много времени. Вам нужно определить, какие существуют зависимости - веб-службы, ado.net и т. Д. Здесь вы найдете свою причину. – SliverNinja

ответ

0

Кроме того, есть ли способ для меня, чтобы сказать «process1.xaml», чтобы повторить попытку вызова «process2.xaml», скажем, в 3 раза? затем отправить сообщение об ошибке msg, если он не работает?

Решение (в стиле последовательного потока управления) должно было бы вызвать вызов процесса 2 в действие TryCatch, чтобы поймать исключение и активность While для повторного выполнения. Затем поддерживайте счетчик Exception, который управляет While и увеличивается каждый раз при возникновении исключения. Если сумма превышает заданный порог, вы можете отправить сообщение пользователя и прервать его. Вот променад в XAML:

<While> 
    <While.Variables> 
    <Variable TypeArguments="Int32" Default="0" Name="exceptionCounter" /> 
    </While.Variables> 
    <While.Condition>[exceptionCounter &lt; 3]</While.Condition> 
    <TryCatch> 
    <TryCatch.Try> 
     <Sequence> 
     <!--Call Process 2--> 
     <Assign> 
      <!--Everything worked fine. Set exceptionCounter to 3 to abort the While--> 
     </Assign> 
     </Sequence> 
    </TryCatch.Try> 
    <TryCatch.Catches> 
     <Catch TypeArguments="InnerException"> 
      <If Condition="[exceptionCounter &lt; 3]"> 
      <If.Then> 
       <Assign> 
       <!--Increment Counter--> 
       </Assign> 
      </If.Then> 
      <If.Else> 
       <Sequence> 
       <!--Send Error Message--> 
       <TerminateWorkflow/> 
       </Sequence> 
      </If.Else> 
      </If> 
     </Catch> 
    </TryCatch.Catches> 
    </TryCatch> 
</While> 
Смежные вопросы