在此示例中,将促销代码和孩子数量作为变量传递到 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();
}
}