WorkflowRuntime

来源:互联网 发布:易驾星模拟器软件 编辑:程序博客网 时间:2024/04/28 18:41

介绍

System.Workflow.Runtime.WorkflowRuntime

文件: system.workflow.runtime.dll

 在工作流的运行环境(宿主)中,为工作流提供运行的引擎

1WorkflowRuntime在宿主中以自已独立的线程运行例

2WorkflowRuntime可以加载多个工作流实例,每个工作流实例在WorkflowRuntime有独立的线程

3.同一宿主可可以实例化多个引擎,他们可以同时工作

基本使用

配置并启动引擎

Dim 引擎  As New WorkflowRuntime() '定义引擎实例

 

引擎.AddService(加载服务)'向引擎加载服务

 

AddHandler 引擎.事件, AddressOf 事件回调程序  '为引擎绑定事件

 

引擎.StartRuntime() '启动引擎

在引擎中创建

并运行实例

Dim 工作流模板类As Type   '定义一个Type型对象

 

工作流模板类= GetType(Workflow1)  '得要要运行的工作流的类型名

 

Dim 实例  As WorkflowInstance  '定义一个要由引擎运行的工作流实例

 

'用引擎.CreateWorkflow方法返回实例,此时该实例已在引擎内创建,但还没启动

实例= 引擎.CreateWorkflow(工作流模板类)

 

实例.Start()  '运行引擎中的实例

停止引擎

 

'停止引擎

引擎.StopRuntime()


 

方法
如何加载服务见WWF_持久化

加载

服务

 

得到

服务

AddService

添加一个服务到工作流引擎

引擎.AddService (object)

RemoveService

从工作流引擎移除一个服务

 引擎.RemoveService(object)

GetService

从加载到引擎中的指定服务

Function GetService (serviceType As Type) As Object

Function GetService(Of T)() As T

GetAllServices

得到所有加载到引擎中的服务

Function GetAllServices(Of T) As ReadOnlyCollection(Of T)

Function GetAllServices (serviceType As Type) As ReadOnlyCollection(Of Object)

建立

实例

 

得到

实例

CreateWorkflow

在引擎中建立一个实例,并将该实例返回

使用工作流类开为参数

Function CreateWorkflow (   workflowType As Type ) As WorkflowInstance

 

Function CreateWorkflow (workflowType As Type,参数 As Dictionary(Of String, Object)) As WorkflowInstance

 

使用一个XmlReader为参数

Function CreateWorkflow(ByVal workflowDefinitionReader As XmlReader) As WorkflowInstance

 

Function CreateWorkflow(ByVal workflowDefinitionReader As XmlReader, ByVal rulesReader As XmlReader, ByVal 参数As Dictionary(Of String, Object)) As WorkflowInstance

GetLoadedWorkflows

得到内存中所有工作流的集合

Function GetLoadedWorkflows As ReadOnlyCollection(Of WorkflowInstance)

GetWorkflow

使用 Guid参数,从引擎中得到指定ID的工作流实例

Function GetWorkflow(ByVal instanceId As Guid) As WorkflowInstance

引擎

控制

StartRuntime

启用引擎

引擎.StartRuntime()       

StopRuntime

停止引擎,停止引擎后,引擎并没有释放,引擎中的实例也存中,只是所有的执行都被系统级挂起,当重新启动引擎时,所有的实例还可粥运行

引擎.StopRuntime()

资源释放

Dispose

释放工作流引擎资源

引擎.Dispose()

 

事件


有些事件将在具体实用中详细说明

ByVal sender As Object
返回引发该事件的工作流引擎,当一个宿主实例化了多个引擎,而这些引擎又绑定到同一组事件上时,可以使用sender参数得到触发该事件的引擎

ServicesException

_NotHandled

Occurs when a service that is derived from

the WorkflowRuntimeService class calls RaiseServicesExceptionNotHandledEvent(与加载服务有关)

 Sub OnServicesExceptionNotHandled(ByVal sender As Object, ByVal e As ServicesExceptionNotHandledEventArgs)

        'ServicesExceptionNotHandledEventArgs

        ' e.Exception异常信息

        ' e.WorkflowInstanceId 工作流实例的GUID

Started

引擎启动后

    Sub OnStarted(ByVal sender As Object, ByVal e As WorkflowRuntimeEventArgs)

        'WorkflowRuntimeEventArgs

        'e.IsStarted 是否启动

Stopped

引擎停止后

    Sub OnStopped(ByVal sender As Object, ByVal e As WorkflowRuntimeEventArgs)

        'WorkflowRuntimeEventArgs

        'e.IsStarted 是否启动

WorkflowAborted

引擎中的某个实例:被中断执行后

    Sub OnWorkflowAborted(ByVal sender As Object, ByVal e As WorkflowEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例

WorkflowCompleted

引擎中的某个实例:完成后.

    Sub OnWorkflowCompleted(ByVal sender As Object, ByVal e As WorkflowCompletedEventArgs)

        'WorkflowCompletedEventArgs

        ' e.OutputParameters用参数方式与实例的属性进行通信

        ' e.WorkflowInstance 工作流实例

        ' e.WorkflowInstance 引发该事件的实例

WorkflowCreated

引擎中的某个实例: 被创建后

    Sub OnWorkflowCreated(ByVal sender As Object, ByVal e As WorkflowEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例

WorkflowIdled

引擎中的某个实例: 进入空闭状态,

Delay控件,CallExternalMethod控件,

会触发该事件

    Sub OnWorkflowIdled(ByVal sender As Object, ByVal e As WorkflowEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例

WorkflowLoaded

引擎中的某个实例: 加载到内存时

    Sub OnWorkflowLoaded(ByVal sender As Object, ByVal e As WorkflowEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例

WorkflowPersisted

引擎中的某个实例: 进入持久化状态后,

注,如果没有加载持久化服务,而调用持久化方法,该事件仍会触发,但实例并没有被持久化

    Sub OnWorkflowPersisted(ByVal sender As Object, ByVal e As WorkflowEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例

WorkflowResumed

引擎中的某个实例:从挂起状态恢复后

    Sub OnWorkflowResumed(ByVal sender As Object, ByVal e As WorkflowEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例

WorkflowStarted

引擎中的某个实例:被启动后

    Sub OnWorkflowStarted(ByVal sender As Object, ByVal e As WorkflowEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例

WorkflowSuspended

引擎中的某个实例:被暂停后,如Suspend控件会触发该事件

    Sub OnWorkflowSuspended(ByVal sender As Object, ByVal e As WorkflowSuspendedEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例

        'e.Error 暂停信息

WorkflowTerminated

引擎中的某个实例:终止后,如工作流内部的异常会引起终止

    Sub OnWorkflowTerminated(ByVal sender As Object, ByVal e As WorkflowTerminatedEventArgs)

        'WorkflowTerminatedEventArgs

        ' e.Exception 异常

        ' e.WorkflowInstance 工作流实例

WorkflowUnloaded

引擎中的某个实例:从内存中移出后

    Sub OnWorkflowUnloaded(ByVal sender As Object, ByVal e As WorkflowEventArgs)

        'WorkflowEventArgs

        'e.WorkflowInstance 工作流实例