如何在工作流程启动后添加TrackingParticipant或更改TrackingProfile?

时间:2013-03-12 18:24:28

标签: workflow-foundation-4

如何在当前正在执行工作流实例的WorkflowServiceHost中添加和删除TrackingParticipant,或者更改该主机已存在的TrackingParticipant的TrackingProfile?

我需要这样做的原因是WorkflowServiceHost正在我们系统中的某些事件上执行工作流,因此它可以同时运行多个工作流。现在,我需要在运行时启用对这些活动的跟踪,以便在用户请求时进行诊断,然后在用户不再需要时再次禁用它们。我无法重新启动主机,因为工作流可能会长时间运行。但是,向已与工作流关联的WorkflowServiceHost添加扩展会引发异常。 TrackingParticipant的TrackingProfile似乎只能在构造时改变(?)。

一种方法是简单地让我的TrackingParticipant有一个布尔标志,指示它是否已启用,然后让它始终跟踪所有内容,但如果它被禁用则根本不对它们执行任何操作。但是,当我尝试这种方法时,性能影响是不可接受的。让跟踪参与者在其Track方法中完全没有做任何事情,这使得一个由简单的while循环组成的示例工作流程需要花费10倍的时间来执行。

那么有什么方法可以实现我想要的东西吗?如果没有,为什么不呢?

0 个答案:

没有答案