WorkflowRuntime WorkflowInstance.docx
- 文档编号:9222794
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:27
- 大小:105.91KB
WorkflowRuntime WorkflowInstance.docx
《WorkflowRuntime WorkflowInstance.docx》由会员分享,可在线阅读,更多相关《WorkflowRuntime WorkflowInstance.docx(27页珍藏版)》请在冰豆网上搜索。
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.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WorkflowRuntime WorkflowInstance