.Net Workflow Foundation设计:使用IfElse活动的多个工作流程或一个大型工作流程?

时间:2010-08-03 15:04:51

标签: .net-3.5 workflow-foundation

我一直在阅读有关工作流程设计的内容,我对如何为我的应用程序建模感到困惑。非常感谢任何帮助!

这是要求:

  • 5个顶级活动的顺序工作流程
  • 每个顶级活动可能包含1-5个子活动。
  • 将来可能会推出新的儿童活动。
  • 工作流的输入是文档及其类型。根据文档的类型,它必须在每个顶级活动中经历一个或多个子活动。
  • 所有顶级活动和一些儿童活动适用于所有类型的文件。
  • 目前已知约5种不同类型的文件。将来可能会添加理论上最多10种文档类型。
  • XAML将用于工作流程配置。
  • 框架:3.5 SP1

对于上述要求,您能否就初始设计和维护方面的最佳策略提出建议:

  • 在每个顶级活动中设计一个包含大量IfElse分支的大型工作流程(将在每个分支或子活动中检查文档类型)

OR

  • 设计单独的工作流程 - 每种文档类型一个。

OR

  • 还有其他更好的选择吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我曾在WF 3.5 SP1中工作过一段合理的时间,并建议如下:

  1. 单独的工作流程 - 每种类型的文档各一个:直接,因为您必须足够强大才能合并新文档。你根本不能(不应该)将Document类型计为常量。业务需求会发生变化,您将被要求合并超过10-15个文档(在所有现实世界的软件中一直发生)。

  2. 由于将来可能会引入新的子活动,您可以考虑为5个顶级活动定义单独的工作流程。这可能有助于您维持个人顶级活动。

  3. 有很多If-Else的大工作流程可能听起来很开始,但是相信我一旦添加了合理数量的条件,它看起来很糟糕。管理1个巨大的工作流程确实需要付出更多的努力。

  4. 因此,总而言之,您可以将您的活动划分为仅用于顶级活动的5个工作流,然后管理其中的子活动,而不管仍作为参数传递的文档类型。

    希望它有所帮助。