首页 > 代码库 > WWF<第三篇>

WWF<第三篇>

  WWF将工作流分为两大类:

  • 面向Human:在工作流运行时通过用户对外部应用程序的操作来影响工作流的业务流转。
  • 面向System:应用程序控制流程。

  工作流与应用程序都是可以单独存在的,因此它们之间的数据交互需要通过接口来实现。工作流、应用程序、接口程序之间的数据交互模型如下图:

  

   工作流的实例存在于一个工作流运行时的Runtime容器中,但是用于数据交互的接口项目和应用程序都不存在于该工作流的Runtime容器中。WWF提供了"System.Workflow.Activities.ExternalDataExchangeService"专门用于它们的数据交互。用户可以把外部应用程序加载到"ExternalDataExchangeService"服务中,然后再将该服务加载到工作流运行时的Runtime容器中,那么这时工作流的实例和外部应用程序都处于同一个容器里,这样就可以进行数据交互了。

  

一、HandleExternalEvent
  HandleExternalEvent是一个事件类型的活动。CallExternalEvent和HandleExternalEvent活动与应用程序之间的相互调用关系如下:

  

  HandleExternalEvent是通过一个"ExternalDataExchangeService"服务将应用程序注册到工作流运行时容器Runtime中,并通过一个继承了"ExternalDataExchange"的接口项目来实现外部应用程序对工作流的调用。但是HandleExternalEvent活动在接口中定义的是Event事件而不是普通的函数或方法。当工作流执行到HandleExternalEvent活动后会进入到"idle"状态。

 

WWF<第三篇>