WEB开发网
开发学院软件开发C语言 《WF编程》系列之46 第七章 事件驱动工作流 阅读

《WF编程》系列之46 第七章 事件驱动工作流

 2010-10-01 08:20:51 来源:WEB开发网   
核心提示: 这些事件的事件参数需要进程中的服务传递工作流可以使用的信息,例如,《WF编程》系列之46 第七章 事件驱动工作流(5),一条可用的信息就是一个携带了bug所有特性(title、description、assignment)的Bug对象,[Serializable]publicclassBugS

这些事件的事件参数需要进程中的服务传递工作流可以使用的信息。例如,一条可用的信息就是一个携带了bug所有特性(title、description、assignment)的Bug对象。

[Serializable]
public class BugStateChangedEventArgs : ExternalDataEventArgs
{
  public BugStateChangedEventArgs(Guid instanceID, Bug bug):base(instanceID)
  {
    _bug = bug;
    WaitForIdle = true;
  }

  private Bug _bug;

  public Bug Bug
  {
    get { return _bug; }
    set { _bug = value; }
  }
}

实现了IBugService接口的服务将会在bug的状态发生改变时触发事件。例如,服务可能触发来自Smart Client应用程序的事件以响应用户在UI中操作的bug。有选择地,服务可能在一个web服务的调用中接收到更新过的bug信息,并触发来自ASP.NET的web服务的事件。核心问题是工作流不关心为什么触发,也不关心导致事件的结果。工作流只关心有事件发生了。

我们将使用bug服务接口的本地实现,并提供触发事件的简单方法。在本章的后面,我们将在控制台模式的程序中使用这个服务以触发事件到工作流。

public class BugService : IBugService
{
  public event EventHandler<BugStateChangedEventArgs> BugOpened;

  public void OpenBug(Guid id, Bug bug)
  {
    if (BugOpened != null)
    {
      BugOpened(null,
        new BugStateChangedEventArgs(id, bug));
    }
  }

  //and so on …
}

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:WF 编程 系列

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接