如何避免Windows工作流(WF)中的Name-itis?

时间:2009-02-11 03:46:38

标签: c# .net workflow-foundation

我刚刚开始与WF合作,我觉得非常烦人的是你必须说出名字 这么多的事情。 IMO,程序员每天处理的最困难的事情之一就是为事物建立好名字,而WF似乎将这一点发挥到了极致。

以WF IfElse活动为例。如果我用原始C#编码(不使用WF),它看起来像这样:

if( x == 0 )
{
    // ...
}
else if( x < 10 )
{
    // ...
}
else if( x < 100 )
{
    // ...
}
else
{
    // ...
}

现在上面的C#代码简单明了。相反,如果我要定义一个使用IfElse活动执行相同操作的Windows工作流程,首先关闭我必须为每个if块命名: e.g。

  • ifXEquals0
  • ifXLessThan10
  • ifXLessThan100

最重要的是,我必须在每个if语句中命名每个条件: e.g。

  • xEquals0
  • xLessThan10
  • xLessThan100

这不仅乏味,而且难以维护(例如,如果情况发生变化)且容易出错(当条件发生变化时,您忘记更改名称)。

问题(据我所知)是WF将每个编程构造分解为工作流的属性,这需要一个名称。

现在因为我还在学习WF,我不想听起来像是知道这一切......我想问问大家。难道我做错了什么?有没有办法在创建WF工作流程时避免使用此名称?这是Windows WF特有的,还是其他工作流引擎遭受同样的事情?

1 个答案:

答案 0 :(得分:1)

  

问题(据我所知)是   WF打破了每一个节目   构造成的属性   工作流程,需要一个名字。

实际上,您需要使用不同名称的原因是因为工作流中表示的if-else语句的每个部分实际上都是单独的IfElseBranchActivity,而不仅仅是工作流的属性,因此必须具有唯一名称。< / p>

就维护而言,请查看使用规则集来帮助实际的布尔测试本身。这可能会使以后更容易修改。