WorkflowRuntime WorkflowInstance.docx

上传人:b****7 文档编号:9222794 上传时间:2023-02-03 格式:DOCX 页数:27 大小:105.91KB
下载 相关 举报
WorkflowRuntime WorkflowInstance.docx_第1页
第1页 / 共27页
WorkflowRuntime WorkflowInstance.docx_第2页
第2页 / 共27页
WorkflowRuntime WorkflowInstance.docx_第3页
第3页 / 共27页
WorkflowRuntime WorkflowInstance.docx_第4页
第4页 / 共27页
WorkflowRuntime WorkflowInstance.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

WorkflowRuntime WorkflowInstance.docx

《WorkflowRuntime WorkflowInstance.docx》由会员分享,可在线阅读,更多相关《WorkflowRuntime WorkflowInstance.docx(27页珍藏版)》请在冰豆网上搜索。

WorkflowRuntime WorkflowInstance.docx

WorkflowRuntimeWorkflowInstance

WorkflowRuntime与宿主,服务,工作流模板类,设计器,实例的关系

WorkflowRuntime与WWF的结构

WorkflowRuntime基本运行图

WorkflowRuntime与加载服务

WorkflowRuntime

介绍

System.Workflow.Runtime.WorkflowRuntime

文件:

system.workflow.runtime.dll

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

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

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

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

基本使用

配置并启动引擎

Dim引擎AsNewWorkflowRuntime()'定义引擎实例

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

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

引擎.StartRuntime()'启动引擎

在引擎中创建

并运行实例

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

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

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

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

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

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

停止引擎

'停止引擎

引擎.StopRuntime()

方法

加载

服务

得到

服务

AddService

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

引擎.AddService(object)

RemoveService

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

引擎.RemoveService(object)

GetService

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

FunctionGetService(serviceTypeAsType)AsObject

FunctionGetService(OfT)()AsT

GetAllServices

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

FunctionGetAllServices(OfT)AsReadOnlyCollection(OfT)

FunctionGetAllServices(serviceTypeAsType)AsReadOnlyCollection(OfObject)

建立

实例

得到

实例

CreateWorkflow

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

使用工作流类开为参数

FunctionCreateWorkflow(workflowTypeAsType)AsWorkflowInstance

FunctionCreateWorkflow(workflowTypeAsType,参数AsDictionary(OfString,Object))AsWorkflowInstance

使用一个XmlReader为参数

FunctionCreateWorkflow(ByValworkflowDefinitionReaderAsXmlReader)AsWorkflowInstance

FunctionCreateWorkflow(ByValworkflowDefinitionReaderAsXmlReader,ByValrulesReaderAsXmlReader,ByVal参数AsDictionary(OfString,Object))AsWorkflowInstance

GetLoadedWorkflows

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

FunctionGetLoadedWorkflowsAsReadOnlyCollection(OfWorkflowInstance)

GetWorkflow

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

FunctionGetWorkflow(ByValinstanceIdAsGuid)AsWorkflowInstance

如果引擎中没有指定GUID的实例,会报

Theworkflowhostingenvironmentdoesnothaveapersistenceserviceasrequiredbyanoperationontheworkflowinstance

如果加载了SqlWorkflowPersistenceService,没有所引的实例会报

Workflowwithid"GUID"notfoundinstatepersistencestore.

引擎

控制

StartRuntime

启用引擎

引擎.StartRuntime()

StopRuntime

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

引擎.StopRuntime()

资源释放

Dispose

释放工作流引擎资源

引擎.Dispose()

事件

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

ServicesException

_NotHandled

Occurswhenaservicethatisderivedfrom

theWorkflowRuntimeServiceclasscallsRaiseServicesExceptionNotHandledEvent(与加载服务有关)

SubOnServicesExceptionNotHandled(ByValsenderAsObject,ByValeAsServicesExceptionNotHandledEventArgs)

'ServicesExceptionNotHandledEventArgs

'e.Exception异常信息

'e.WorkflowInstanceId工作流实例的GUID

Started

引擎启动后

SubOnStarted(ByValsenderAsObject,ByValeAsWorkflowRuntimeEventArgs)

'WorkflowRuntimeEventArgs

'e.IsStarted是否启动

Stopped

引擎停止后

SubOnStopped(ByValsenderAsObject,ByValeAsWorkflowRuntimeEventArgs)

'WorkflowRuntimeEventArgs

'e.IsStarted是否启动

WorkflowAborted

引擎中的某个实例:

被中断执行后

SubOnWorkflowAborted(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

WorkflowCompleted

引擎中的某个实例:

完成后.

SubOnWorkflowCompleted(ByValsenderAsObject,ByValeAsWorkflowCompletedEventArgs)

'WorkflowCompletedEventArgs

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

'e.WorkflowInstance工作流实例

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

WorkflowCreated

引擎中的某个实例:

被创建后

SubOnWorkflowCreated(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

WorkflowIdled

引擎中的某个实例:

进入空闭状态,

如Delay控件,CallExternalMethod控件,

会触发该事件

SubOnWorkflowIdled(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

WorkflowLoaded

引擎中的某个实例:

加载到内存时

SubOnWorkflowLoaded(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

WorkflowPersisted

引擎中的某个实例:

进入持久化状态后,

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

SubOnWorkflowPersisted(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

WorkflowResumed

引擎中的某个实例:

从挂起状态恢复后

SubOnWorkflowResumed(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

WorkflowStarted

引擎中的某个实例:

被启动后

SubOnWorkflowStarted(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

WorkflowSuspended

引擎中的某个实例:

被暂停后,如Suspend控件会触发该事件

SubOnWorkflowSuspended(ByValsenderAsObject,ByValeAsWorkflowSuspendedEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

'e.Error暂停信息

WorkflowTerminated

引擎中的某个实例:

终止后,如工作流内部的异常会引起终止

SubOnWorkflowTerminated(ByValsenderAsObject,ByValeAsWorkflowTerminatedEventArgs)

'WorkflowTerminatedEventArgs

'e.Exception异常

'e.WorkflowInstance工作流实例

WorkflowUnloaded

引擎中的某个实例:

从内存中移出后

SubOnWorkflowUnloaded(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

事件代码快速粘贴

AddHandler引擎.ServicesExceptionNotHandled,AddressOfOnServicesExceptionNotHandled

AddHandler引擎.Started,AddressOfOnStarted

AddHandler引擎.Stopped,AddressOfOnStopped

AddHandler引擎.WorkflowAborted,AddressOfOnWorkflowAborted

AddHandler引擎.WorkflowCompleted,AddressOfOnWorkflowCompleted

AddHandler引擎.WorkflowCreated,AddressOfOnWorkflowCreated

AddHandler引擎.WorkflowIdled,AddressOfOnWorkflowIdled

AddHandler引擎.WorkflowLoaded,AddressOfOnWorkflowLoaded

AddHandler引擎.WorkflowPersisted,AddressOfOnWorkflowPersisted

AddHandler引擎.WorkflowResumed,AddressOfOnWorkflowResumed

AddHandler引擎.WorkflowStarted,AddressOfOnWorkflowStarted

AddHandler引擎.WorkflowSuspended,AddressOfOnWorkflowSuspended

AddHandler引擎.WorkflowTerminated,AddressOfOnWorkflowTerminated

AddHandler引擎.WorkflowUnloaded,AddressOfOnWorkflowUnloaded

#Region"引擎事件"

'加载服务

SubOnServicesExceptionNotHandled(ByValsenderAsObject,ByValeAsSystem.Workflow.Runtime.ServicesExceptionNotHandledEventArgs)

'ServicesExceptionNotHandledEventArgs

'e.Exception异常信息

'e.WorkflowInstanceId工作流实例的GUID

Console.WriteLine()

Console.WriteLine("-------------OnServicesExceptionNotHandled--------------------")

Console.WriteLine("有实例完成:

"+e.WorkflowInstanceId.ToString)

Console.WriteLine("异常信息"+e.Exception.Message)

Console.WriteLine("----------------------------------------------------")

Console.WriteLine()

EndSub

'引擎启动后

SubOnStarted(ByValsenderAsObject,ByValeAsWorkflowRuntimeEventArgs)

'WorkflowRuntimeEventArgs

'e.IsStarted是否启动

Console.WriteLine()

Console.WriteLine("-------------OnStarted--------------------")

Console.WriteLine("引擎启动状态:

"+e.IsStarted.ToString)

Console.WriteLine("----------------------------------------------------")

Console.WriteLine()

EndSub

'引擎停止后

SubOnStopped(ByValsenderAsObject,ByValeAsWorkflowRuntimeEventArgs)

'WorkflowRuntimeEventArgs

'e.IsStarted是否启动

Console.WriteLine()

Console.WriteLine("-------------OnStopped--------------------")

Console.WriteLine("引擎启动状态:

"+e.IsStarted.ToString)

Console.WriteLine("----------------------------------------------------")

Console.WriteLine()

EndSub

'被中断后

SubOnWorkflowAborted(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

Console.WriteLine()

Console.WriteLine("-------------OnWorkflowAborted--------------------")

Console.WriteLine("被中断的实例:

"+e.WorkflowInstance.InstanceId.ToString)

Console.WriteLine("----------------------------------------------------")

Console.WriteLine()

EndSub

'当有实例完成时

SubOnWorkflowCompleted(ByValsenderAsObject,ByValeAsWorkflowCompletedEventArgs)

'WorkflowCompletedEventArgs

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

'e.WorkflowInstance工作流实例

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

Console.WriteLine()

Console.WriteLine("-------------OnWorkflowCompleted--------------------")

Console.WriteLine("有实例完成:

"+e.WorkflowInstance.InstanceId.ToString())

Console.WriteLine("sender:

"+sender.ToString)

Console.WriteLine("----------------------------------------------------")

Console.WriteLine()

EndSub

'当有实例被创建后

SubOnWorkflowCreated(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

Console.WriteLine()

Console.WriteLine("-------------OnWorkflowCreated--------------------")

Console.WriteLine("有实例被创建:

"+e.WorkflowInstance.InstanceId.ToString())

Console.WriteLine("----------------------------------------------------")

Console.WriteLine()

TextBox1.Text=e.WorkflowInstance.InstanceId.ToString

EndSub

 

'当有实例进入空闭状态

SubOnWorkflowIdled(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

Console.WriteLine()

Console.WriteLine("-------------OnWorkflowIdled--------------------")

Console.WriteLine("有实例进入空闭状态:

"+e.WorkflowInstance.InstanceId.ToString())

Console.WriteLine("----------------------------------------------------")

Console.WriteLine()

EndSub

 

'当有实例加载到内存时

SubOnWorkflowLoaded(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

Console.WriteLine()

Console.WriteLine("-------------OnWorkflowLoaded--------------------")

Console.WriteLine("有实例加载到内存时:

"+e.WorkflowInstance.InstanceId.ToString())

Console.WriteLine("----------------------------------------------------")

Console.WriteLine()

EndSub

 

'当有实例进入持久化状态后

SubOnWorkflowPersisted(ByValsenderAsObject,ByValeAsWorkflowEventArgs)

'WorkflowEventArgs

'e.WorkflowInstance工作流实例

Console.WriteLine()

Console.WriteLine("-------------OnWorkflowPersisted--------------------")

Console.WriteLine("有实例进入持久化状态:

"+e.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1