【发布时间】:2009-04-04 05:05:19
【问题描述】:
我有一个带有 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, ActivityStatusChange('(1)serviceQueueActivity1. UpdateListenerSequenceActivity',正在执行,成功)) System.Workflow.Runtime 信息:0:Activity 状态变化 - Activity:serviceQueueActivity1.UpdateListenerSequenceActivity Old:Executing;新:关闭 System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:调度条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerSequenceActivity', Closed , 成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:完成运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerSequenceActivity, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerSequenceActivity ', 执行中, 成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerSequenceActivity',关闭,成功)) 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, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerSequenceActivity ', 关闭, 成功)) 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('(1)serviceQueueActivity1.UpdateHandlers ', 执行中, 成功)) 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('(1)serviceQueueActivity1.UpdateHandlers',执行,成功)) System.Workflow.Runtime 信息:0:活动状态更改 - 活动:serviceQueueActivity1.UpdateHandlers Old:Executing;新:关闭 System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:调度条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateHandlers', Closed , 成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:完成运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateHandlers, ActivityStatusChange('(1)serviceQueueActivity1.UpdateHandlers ', 执行中, 成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateHandlers',关闭,成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:调度条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerScope', Executing , 成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:完成运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateHandlers ', 关闭, 成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:78f436b4-9f97-4d2b-a3dc-add8acf15c79:运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerScope',执行,成功)) System.Workflow.Runtime 信息:0:活动状态更改 - 活动:serviceQueueActivity1.UpdateListenerScope Old:Executing;新:关闭
这里是工作流跟踪日志 UpdateHandlers 未完成:
System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:6602768f-f043-4382-9d29-0be944f0d390:运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerSequenceActivity, ActivityStatusChange('(1)serviceQueueActivity1. UpdateListenerSequenceActivity',正在执行,成功)) System.Workflow.Runtime 信息:0:Activity 状态变化 - Activity:serviceQueueActivity1.UpdateListenerSequenceActivity Old:Executing;新:关闭 System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:6602768f-f043-4382-9d29-0be944f0d390:调度条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerSequenceActivity', Closed , 成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:6602768f-f043-4382-9d29-0be944f0d390:完成运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerSequenceActivity, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerSequenceActivity ', 执行中, 成功)) System.Workflow.Runtime 信息:1:工作流运行时:调度程序:InstanceId:6602768f-f043-4382-9d29-0be944f0d390:运行计划条目:SubscriptionEvent((1)serviceQueueActivity1.UpdateListenerScope, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerSequenceActivity',关闭,成功)) 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, ActivityStatusChange('(1)serviceQueueActivity1.UpdateListenerSequenceActivity ', 关闭, 成功)) 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:工作流运行时:WorkflowExecutor:工作流实例“6602768f-f043-4382-9d29-0be944f0d390”没有工作。
任何想法为什么 EventHandlersActivity 不会完成?此时工作流将永远挂起,因为事件处理程序正在侦听一个不会发送的事件。
【问题讨论】:
-
此外,此自定义活动被动态插入到工作流中。我在其他地方使用了相同的自定义活动,但到目前为止,仅在动态插入时发生此错误。