Рабочий процесс Windows: EventHandlersActivity не завершается - PullRequest
0 голосов
/ 24 марта 2009

У меня есть пользовательское действие рабочего процесса с EventHandlingScopeActivity (UpdateListenerScope).

Внутри EventHandlingScopeActivity есть основная SequenceActivity (UpdateListenerSequenceActivity) и EventHandlersActivity (UpdateHandlers).

Когда основная SequenceActivity завершает свою работу, иногда EventHandlersActivity не завершается и не позволяет EventHandlingScopeActivity завершить работу, чтобы рабочий процесс продолжался до следующей операции.

Странно то, что иногда UpdateHandlers завершается, а иногда нет. Я не могу предсказать или контролировать, когда UpdateHandlers останется висеть.

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

System.Workflow.Runtime Информация: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: Выполнение запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerSequenceActivity, ActivityQue 1 .hanue (1) .ueue (1). UpdateListenerSequenceActivity ', выполняется, успешно)) System.Workflow.Runtime Информация: 0: изменение состояния активности - действие: serviceQueueActivity1.UpdateListenerSequenceActivity Старый: выполнение; Новое: Закрыто Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: запись в расписании: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChangeQlive_AccessueAccessueAccessueAateOccessedateAccessueAateNatement_AccessueAateNatement_AccessueAccessueAateNatement_AccessueAateNatement_AccessueAateNatement_AccessueAateNatement_Exception_AccessDatementAccessUAUUUUQueue_AccessueAateNatement_AccessDatementAccessueAAUUUNueUment_AccessueAAUAUUUNueUateSate_Exception_AccessueAateNatex_Live_Nate_Date_Date_Date_Signed_Rate_Date_Signed) Успешно)) Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: выполнено с запуском запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerSequenceActivity, ActivityQueueatege1. ActivityQueStateShange. Простите, добившись успеха)) Информация System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: Выполнение запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChangeQueUvent_AccessEueUate_AccessDueueAateAateNate_Excess1) () Закрыто, Успешно)) Информация System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: Запись планирования: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, System.EventArgs) Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: выполнено с запуском запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChanueAccessEateAateAateEateAateeate () Простите, Закрыто, Успешно)) Информация System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: Запуск запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, System.EventArgs) Информация о System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: Запись о планировании: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, ServiceStatusctivityHate () 1UnateQup () ', Выполнение, Успешно)) Информация System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: выполнено с запуском запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, System.EventArgs) Информация System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: Выполнение запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, ActivityStatusChange ('serviceAuentQULL) (' (1)) Выполнение, Успех)) System.Workflow.Runtime Информация: 0: изменение состояния активности - активность: serviceQueueActivity1.UpdateHandlers Старый: выполнение; Новое: ЗакрытоСведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: запись в расписании: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChangeUQueUntUHateUHateUHateUate_HueUate_Hueue (): ( Успешно)) Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: выполнено с запуском запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, ActivityStatusChange1 (Activity )ueueHate1 ()) (0) Простите, добившись успеха)) Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: выполнение запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChangeUueQueUHueULLSUUULLERS () 1 () Закрыто, Успешно)) Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: запись в расписании: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChangeUQUUUUIUNueUateUateAateUateUateUate) (() Успешно)) Информация System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: выполнено с запуском запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChanueQueUHateUate () Простите, Закрыто, Успешно)) Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 78f436b4-9f97-4d2b-a3dc-add8acf15c79: выполнение запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChangeUUUUUUpueueSateUate () 1 () Выполнение, Успех)) System.Workflow.Runtime Информация: 0: изменение состояния активности - действие: serviceQueueActivity1.UpdateListenerScope Старый: выполнение; Новое: Закрыто

Вот журнал отслеживания рабочих процессов UpdateHandlers не завершается:

System.Workflow.Runtime Информация: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 6602768f-f043-4382-9d29-0be944f0d390: Выполнение запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerSequenceActivity, ActivityQueuegege (ActivityQueusgehan) UpdateListenerSequenceActivity ', выполняется, успешно)) System.Workflow.Runtime Информация: 0: изменение состояния активности - действие: serviceQueueActivity1.UpdateListenerSequenceActivity Старый: выполнение; Новое: Закрыто Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 6602768f-f043-4382-9d29-0be944f0d390: запись в расписании: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange (Activity) ClosedSecueUpueUserviceSecureSecureLueUventSecueUUateSecueUserueUateDateUserueSueueUateDateUserue )UueSecueUserueUserueUUUUsedueUUUsedueUUUsedueUUUsedueUUUsedueUUUsedueUUUsedUueUUUUsedue () (1) Успешно)) Информация System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 6602768f-f043-4382-9d29-0be944f0d390: Завершено с запуском запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerSequenceActivityectivityectivity1SecenceUctivity (Activity) ActivityQuestUate_ExceptionExchange) ( Простите, добившись успеха)) Сведения о System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 6602768f-f043-4382-9d29-0be944f0d390: выполнение запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange ('ActivityAuerUU1.Up1UserviceUQ) (услуга (1)) Закрыто, Успешно)) Информация System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 6602768f-f043-4382-9d29-0be944f0d390: Запись планирования: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, System.EventArgs) Информация System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 6602768f-f043-4382-9d29-0be944f0d390: Завершено с запуском запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateListenerScope, ActivityStatusChangeUueUateAateAateAateAateAateAateAateUateSateUateUateUate_Excess1) () Простите, Закрыто, Успешно))Информация System.Workflow.Runtime: 1: Время выполнения рабочего процесса: Планировщик: InstanceId: 6602768f-f043-4382-9d29-0be944f0d390: Запуск запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, System.EventArgs) Пропущенный шаг здесь !!! Информация System.Workflow.Runtime: 1: время выполнения рабочего процесса: планировщик: InstanceId: 6602768f-f043-4382-9d29-0be944f0d390: выполнено с запуском запланированной записи: SubscriptionEvent ((1) serviceQueueActivity1.UpdateHandlers, System.EventArgs) System.Workflow.Runtime Сведения: 0: рабочий процесс Runtime: WorkflowExecutor: экземпляр рабочего процесса '6602768f-f043-4382-9d29-0be944f0d390' не работает.

Есть идеи, почему EventHandlersActivity не будет завершена? На этом этапе рабочий процесс навсегда зависает, потому что обработчик событий ожидает событие, которое не будет отправлено.

1 Ответ

0 голосов
/ 04 апреля 2009

Первопричиной стало то, что несколько операций HandleExternalEventActivity параллельно прослушивали одно и то же событие. Создан пользовательский IEventActivity на основе образца в http://msmvps.com/blogs/theproblemsolver/archive/2008/09/16/versioning-long-running-workfows-part-3.aspx с использованием queue.Peek вместо queue.Dequeue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...