2013-02-28 121 views
2

我有3个独立的应用程序使用相同的持久工作流程。其中2个是网络应用程序,第三个是赢得窗体应用程序,用于监视WF。 我目前使用我自己的查询数据库来检查WF是否正在运行或由processID guid空闲。 有没有一些本地的方式来检查WF是否正在运行,空闲.....通过processID我用于关联,不会锁定工作流实例。如何检查工作流是否正在运行(WF4)

+0

为什么你的方法不是最好的?我敢打赌,一种本地方式会做类似的事情。由于WF4的异步特性,没有100%的防弹解决方案。您有多种方式来运行工作流程,因此,您有多种方式来检查它是否正在运行。 – Joao 2013-02-28 10:55:46

+0

无论如何,请考虑[跟踪参与者](http://msdn.microsoft.com/zh-cn/library/ee513993.aspx)。它被用作订阅机制。订阅工作流程事件并等待它告诉您其状态。 – Joao 2013-02-28 10:57:25

回答

1

我认为一个更好的方法是使用日志,无论是自己的日志在数据库和指示状态的仪表板,或从Windows或Windows服务器的内置系统监视器和性能计数器,这些将是任何IT环境中的标准方法。

+0

我也一样,但它的问题它不是子弹prufe解决方案。我使用i.Load(procesID)来封装某些东西,但它不能锁定实例。 – 2013-02-28 08:26:51

+0

但是,您为什么要检查过程?日志会立即告诉您错误操作的结果,即使它挂起,也就是说您不再接收反馈,性能计数器与操作系统有界限,它们可以同时监视多个进程,但我不会对这样的基础设施感到担忧。 – 2013-02-28 08:30:58

+0

我有6个州的ATM机,他们可能会也可能不会提供更多配置状态,因为持续的开发和升级将持续一年或两年。在开始是好的,但现在检查它的状态代码越来越大。正因为如此,我需要一些本地的东西,比如当我正在ping vOrchestrators WF时,它会返回我的状态,执行完成并发生故障。 – 2013-02-28 11:47:30

0

您可以提升相关密钥,然后您可以在相关密钥上查询实例库。 See here for an explanation.

+0

这就是问题所在,我想避免查询,我已经在做这件事。我需要为此构建解决方案。我在WF 4.5中发现了类似的东西 – 2013-02-28 08:47:15

相关问题