使用XAMLX服务
问题描述:
当我目前使用BehaviorExtensionElement加载在ApplyDispatchBehavior方法被设立为ServiceBehavior如何挂钩WF4 WorkflowRuntime的事件:使用XAMLX服务
事件public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
WorkflowServiceHost host = serviceHostBase as WorkflowServiceHost;
if (host != null)
{
UnityService.CreateContainer();
host.WorkflowExtensions.Add<IUnityContainer>(delegate { return UnityService.CreateChildContainer(); });
System.Diagnostics.Debug.WriteLine("NotificationService : Adding extension");
WorkflowRuntimeBehavior wfbehavior = serviceDescription.Behaviors.Find<WorkflowRuntimeBehavior>();
WorkflowRuntime runtime = wfbehavior.WorkflowRuntime;
runtime.WorkflowStarted += runtime_WorkflowStarted;
runtime.WorkflowCreated += runtime_WorkflowCreated;
runtime.WorkflowUnloaded += runtime_WorkflowUnloaded;
runtime.WorkflowSuspended += runtime_WorkflowSuspended;
runtime.WorkflowCompleted += runtime_WorkflowCompleted;
runtime.WorkflowAborted += runtime_WorkflowAborted;
runtime.WorkflowTerminated += runtime_WorkflowTerminated;
}
}
没有被触发,只有可以说我在这个特定的场景中引用运行时实例的方式是错误的。
任何人都知道一种方法来做到这一点?提前致谢。
答
WorkflowRuntime和WorkflowRuntimeBehavior是WF3工件,但您的问题被标记为WF4,所以我会推测您使用的是WF4。
在WF4中,执行此操作的方法是使用自定义TrackingParticipant并将其添加到WorkflowServiceHost的WorkflowExtensions集合中。
完美。那做了这个工作。顺便说一句,我完全可以想象你用大卫卡鲁索式的方式回答问题。 – 2010-05-28 10:51:02