《WF编程》系列之46 第七章 事件驱动工作流
2010-10-01 08:20:51 来源:WEB开发网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事件。工作流运行时将保证我们的应用程序遵循状态机所描述的进程。这就提供了一个优势——它保证了编码不正确的应用程序将不会引起状态迁移,这样的工作流被认为不具有可用性,因此将总是遵循工作流编码的企业级处理。然而,需要着重注意的是,任何出发不可用事件的代码将不会引起编译期错误——我们只有到运行期才会看到错误。
- ››WF 4.0 beta1中的跟踪机制
- ››WF 4.0的建模风格:顺序和Flowchart
- ››WF4.0 Beta1之旅(5):规则引擎的变化
- ››WF 4.0 beta1活动概览(1):Procedural
- ››WF4.0 Beta1之旅(4):Bookmark的使用
- ››WF4.0 Beta1之旅:基本介绍
- ››WF4.0 Beta1之旅(2):异常处理
- ››WF4.0 Beta1之旅(3):全新的FlowChart
- ››WF 应用场景指南: SharePoint 与工作流(上)
- ››WF 应用场景指南: 展现流(Presentation Flow)
- ››WF单元测试系列1:测试基本的Activity
- ››WF单元测试系列2:简单测试Activity的行为
更多精彩
赞助商链接