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

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

 2010-10-01 08:20:51 来源:WEB开发网   
核心提示: ExternalDataExchangeServicedataExchange;dataExchange=newExternalDataExchangeService();workflowRuntime.AddService(dataExchange);BugServicebugService=

ExternalDataExchangeService dataExchange;
dataExchange = new ExternalDataExchangeService();
workflowRuntime.AddService(dataExchange);

BugService bugService = new BugService();
dataExchange.AddService(bugService);

WorkflowInstance instance;
instance = workflowRuntime.CreateWorkflow(
  typeof(BugFlow));

instance.Start();

在我们的程序中的下一部分代码将调用位于我们的bug服务上的方法。这些方法会触发工作流运行时将要捕获到的事件。我们已经把这些事件小心翼翼地安排到工作流的所有状态中,并成功完成。

Bug bug = new Bug();
bug.Title = "Application crash while printing";

bugService.OpenBug(instance.InstanceId, bug);
bugService.DeferBug(instance.InstanceId, bug);
bugService.AssignBug(instance.InstanceId, bug);
bugService.ResolveBug(instance.InstanceId, bug);
bugService.CloseBug(instance.InstanceId, bug);

waitHandle.WaitOne();

使用状态机的一个好处是,如果我们的应用程序触发了一个当前工作流状态并不希望触发的事件,那么工作流将触发一个异常。当状态机在它的初始状态时,我们应该只触发BugOpened事件。当状态机在它的Assigned状态时,我们应该只触发BugResolved事件。工作流运行时将保证我们的应用程序遵循状态机所描述的进程。这就提供了一个优势——它保证了编码不正确的应用程序将不会引起状态迁移,这样的工作流被认为不具有可用性,因此将总是遵循工作流编码的企业级处理。然而,需要着重注意的是,任何出发不可用事件的代码将不会引起编译期错误——我们只有到运行期才会看到错误。

上一页  5 6 7 8 9 10 

Tags:WF 编程 系列

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