多个实例性能问题

时间:2011-12-16 13:39:05

标签: workflow workflow-foundation workflow-foundation-4 workflow-activity workflowservice

我在我的项目中使用Windows workflow 4.0版本来管理工作流程。在系统中创建一个项目,其中有100个文档需要用户批准,每个文档应遵循相同的工作流程。文档处理是100个文档的并行处理。哪个完成可以进入下一个工作流程步骤。 [例如:创建的文件 - 发送审核 - 已审核 - 已批准]。

现在我正在为100个文档创建100个实例。但是,当文件显着增加时,我不确定性能(例如:10000份文件)。此外,还可以在任何给定的时间点在系统中创建多个项目。

有没有更好的方法来处理这种情况?

该应用程序基于ASP.Net并运行IIS。

4 个答案:

答案 0 :(得分:1)

您的工作流程步骤(创建文档 - 发送审核 - 已审核 - 已批准)听起来像涉及人工互动,这意味着它们将在人类时间尺度上进行。分钟至少,更可能是几小时或几天。 Workflow 4.0在设计时考虑了这个用例,因为没有主动进展的实例将被持久保存到您的数据库存储中。扩展到数千个实例中的10个应该不是问题。

答案 1 :(得分:0)

您可以批量处理或实时操作项目。需要考虑的问题是该过程需要的实时性。每分钟(接近实时)执行批处理工作流程是否足够,而不是每秒100-1000 WF的开销?

您肯定需要考虑设计的开销(实时可扩展性将是一个问题),因此如果您的卷应该显着增加,您可能需要重新考虑实时方法。我的目标是以预先配置的频率批量处理民意调查并使用DelayActivity

答案 2 :(得分:0)

我无法帮助您优化场景,但您可以通过首先缓存活动(而不是每次加载xaml并创建实例)来优化性能,然后通过正确确定何时在内存中卸载实例来优化性能。

答案 3 :(得分:0)

如果您使用IIS中的AppFabric(Windows服务器)托管您的WF,那么这不是问题。您描述的步骤意味着您的WF正在等待由于某些人为干预而导致的时间延迟或消息。该进程将处于空闲状态,直到那些事件,即小空闲超时后,它们将从内存中卸载。您可以处理数百万个这样的并发流程。