在此示例中,将促销代码和孩子数量作为变量传递到 Flowchart 活动,该活动将根据与促销代码相对应的公式计算折扣。此示例分为命令性代码版本和工作流设计器版本。
下表详细描述了 CreateFlowchartWithFaults 活动的变量。
| 参数 | 说明 |
|---|---|
| promoCode | 促销代码。类型:String 可能的值,括号中带有说明:
|
| numKids | 孩子数量。类型:int |
CreateFlowchartWithFaults 活动使用 FlowSwitch 活动,后者根据 promoCode 参数进行切换并使用以下公式计算折扣。
promoCode 的值 | 折扣 (%) |
|---|---|
| Single | 10 |
| MNK | 15 |
| MWK | 15 + (1 – 1/ 注意:
此计算可能会引发 DivideByZeroException。因此,将折扣计算包装在 TryCatch 活动中,该活动可捕获 DivideByZeroException 异常并将折扣设置为零。
|

class Program
{
static void Main(string[] args)
{
// no fault expected
Console.WriteLine("Invoke with Promo Code {0}, number of kids {1}", "Single", 0);
IDictionary<string, object> inputs = new Dictionary<string, object>() { { "promoCode", "Single" }, { "numberOfKids", 0 } };
WorkflowInvoker.Invoke(new PromotionalDiscountWorkflow(), inputs);
// no fault expected
Console.WriteLine("Invoke with Promo Code {0}, number of kids {1}", "MNK", 0);
inputs = new Dictionary<string, object>() { { "promoCode", "MNK" }, { "numberOfKids", 0 } };
WorkflowInvoker.Invoke(new PromotionalDiscountWorkflow(), inputs);
// no fault expected
Console.WriteLine("Invoke with Promo Code {0}, number of kids {1}", "MWK", 2);
inputs = new Dictionary<string, object>() { { "promoCode", "MWK" }, { "numberOfKids", 2 } };
WorkflowInvoker.Invoke(new PromotionalDiscountWorkflow(), inputs);
//fault expected
Console.WriteLine("Invoke with Promo Code {0}, number of kids {1}", "MWK", 0);
inputs = new Dictionary<string, object>() { { "promoCode", "MWK" }, { "numberOfKids", 0 } };
WorkflowInvoker.Invoke(new PromotionalDiscountWorkflow(), inputs);
// wait for user input
Console.WriteLine("\nPress enter to exit");
Console.ReadLine();
}
}
本文介绍了一个根据促销代码和孩子数量计算折扣的流程设计案例。通过使用Flowchart活动和FlowSwitch活动,根据不同促销代码应用相应的折扣计算公式。文章还讨论了如何处理潜在的除以零异常。
注意:
59

被折叠的 条评论
为什么被折叠?



