在我看来,实际上您当前要使用的一项活动中有两项活动。您所要求的在流程图(即 Visio)中是不可能的,因为一个活动只有一个出口可以链接到下一个活动(即结束状态),您需要一个决策块才能采取不同的路线。
这是您尝试转换为流程图的示例:
public int CalculatePrice(string parameters)
{
// Calculate result.
var price = 5;
// Are we done?
if (!IsVATNeeded(price))
{
return price;
}
// Do more calculations.
price = price * vat;
return price;
}
从方法体内部返回是一种代码异味,表明需要重新考虑工作流程。一个健康的方法只有一个回报。IE
public int CalculatePrice(string parameters)
{
var price = CalculatePriceWithoutVAT(parameters);
if (IsVATNeeded(parameters))
{
price = ApplyVAT(price);
}
return price;
}
现在,第二种方法可以直接转换为流程图/工作流程。

如果您有不同的案例,请提供示例流程图或其他图表。经验法则是,如果您无法绘制流程图、状态机或序列图,则无法使用 Microsoft Workflow 实现。
请注意,可以创建由其他活动组成的活动,因此您可以将上图中的活动嵌入到单个活动中并隐藏详细信息。它与代码示例中的 CalculatePrice 方法相同。调用者实际上不必知道价格是如何计算的。