简要分析WF 状态机工作流的部分代码
这里简要分析WF 状态机工作流的部分代码。
首先,看看下面的代码:
public class clsOrder : IOrder
{
#region IOrder Members
public event EventHandler<ExternalDataEventArgs> NotPaid;
public event EventHandler<ExternalDataEventArgs> InStock;
public event EventHandler<ExternalDataEventArgs> PaymentMade;
public event EventHandler<ExternalDataEventArgs> Dispatch;
public event EventHandler<ExternalDataEventArgs> AddressNotProper;
public event EventHandler<ExternalDataEventArgs> AddressCorrected;
public event EventHandler<ExternalDataEventArgs> ProductStocked;
#endregion
public void CallNotPaid(ExternalDataEventArgs args)
{
// 触发工作流中相应的活动
NotPaid(null, args);
Console.WriteLine("This order is not paid");
}
其中 event EventHandler<ExternalDataEventArgs> 代码相当于C# 1.0 中的语法:
delegate void ExternalDataEventHandler(object sender, ExternalDataEventArgs e);
event ExternalDataEventHandler OnInitStart;
事件只有两个参数,一个是sender谁触发的,一个是相关的参数。
event EventHandler <ExternalDataEventArgs>定义的是一个事件。 其中EventHandler <ExternalDataEventArgs>是一个delegate的简化定义。
public event EventHandler<ExternalDataEventArgs> NotPaid;
这里定义了一个EventHandler 类型的事件 NotPaid。
其中,NotPaid(null, args);方法触发工作流中相应的活动,这里是触发NotPaid事件,进一步转换State的状态。