我在我的项目中使用Windows workflow 4.0版本来管理工作流程。在系统中创建一个项目,其中有100个文档需要用户批准,每个文档应遵循相同的工作流程。文档处理是100个文档的并行处理。哪个完成可以进入下一个工作流程步骤。 [例如:创建的文件 - 发送审核 - 已审核 - 已批准]。
现在我正在为100个文档创建100个实例。但是,当文件显着增加时,我不确定性能(例如:10000份文件)。此外,还可以在任何给定的时间点在系统中创建多个项目。
有没有更好的方法来处理这种情况?
该应用程序基于ASP.Net并运行IIS。
答案 0 :(得分:1)
您的工作流程步骤(创建文档 - 发送审核 - 已审核 - 已批准)听起来像涉及人工互动,这意味着它们将在人类时间尺度上进行。分钟至少,更可能是几小时或几天。 Workflow 4.0在设计时考虑了这个用例,因为没有主动进展的实例将被持久保存到您的数据库存储中。扩展到数千个实例中的10个应该不是问题。
答案 1 :(得分:0)
您可以批量处理或实时操作项目。需要考虑的问题是该过程需要的实时性。每分钟(接近实时)执行批处理工作流程是否足够,而不是每秒100-1000 WF的开销?
您肯定需要考虑设计的开销(实时可扩展性将是一个问题),因此如果您的卷应该显着增加,您可能需要重新考虑实时方法。我的目标是以预先配置的频率批量处理民意调查并使用DelayActivity
。
答案 2 :(得分:0)
我无法帮助您优化场景,但您可以通过首先缓存活动(而不是每次加载xaml并创建实例)来优化性能,然后通过正确确定何时在内存中卸载实例来优化性能。
答案 3 :(得分:0)
如果您使用IIS中的AppFabric(Windows服务器)托管您的WF,那么这不是问题。您描述的步骤意味着您的WF正在等待由于某些人为干预而导致的时间延迟或消息。该进程将处于空闲状态,直到那些事件,即小空闲超时后,它们将从内存中卸载。您可以处理数百万个这样的并发流程。