WF TrackingService 中4个获取 TrackingProfile 方法的调用时机
2009-04-07 11:59
399 查看
TrackingService 中获取 TrackingProfile 的方法有4个,类库帮助文档中对各个方法的调用时机描述的不是很清楚,通过参考相关资料和实际测试,对各个方法的调用时机描述如下:
方法1、protected override bool TryGetProfile(Type workflowType, out TrackingProfile profile)
方法2、protected override bool TryReloadProfile(Type workflowType, Guid workflowInstanceId, out TrackingProfile profile)
方法3、protected override TrackingProfile GetProfile(Guid workflowInstanceId)
方法4、protected override TrackingProfile GetProfile(Type workflowType, Version profileVersionId)
方法1:
当调用 WorkflowRuntime.CreateWorkflow(...) 方法创建工作流实例时,此方法被调用。按照返回值和输出参数profile的赋值可以分为3种情况:
1、返回值==false
这种情况,表示不启用跟踪。如果工作流在以后的运行过程中,试图调用方法2,会抛出异常。
2、返回值==true,profile为null或无效的跟踪配置文件
这种情况表示启用跟踪,但由于跟踪配置文件设置无效,会直接抛出异常。
3、返回值==true,profile为有效的跟踪配置文件
这种情况表示启用跟踪,且跟踪配置有效。
方法2:
当调用 WorkflowInstance.ReloadTrackingProfiles() 方法时,此方法被调用。按照返回值和输出参数profile的赋值可以分为4种情况:
1、返回值==false
这种情况,表示对调用 ReloadTrackingProfiles() 方法的工作流实例没有特定的跟踪配置文件可以应用。
2、返回值==true,profile为null
这种情况表示停止对调用 ReloadTrackingProfiles() 方法的工作流实例的跟踪。
3、返回值==true,profile为无效的跟踪配置文件
这种情况表示对调用 ReloadTrackingProfiles() 方法的工作流实例要应用特定的跟踪配置文件,但由于跟踪配置文件设置无效,会直接抛出异常。
4、返回值==true,profile为有效的跟踪配置文件
这种情况表示对调用 ReloadTrackingProfiles() 方法的工作流实例要应用特定的跟踪配置文件,且跟踪配置有效。
方法3和方法4:
工作流实例钝化后被重新加载时,如果在缓存中没有找到钝化时相应版本的跟踪配置文件时,此2个方法中的一个将被调用。如果先前调用了 WorkflowInstance.ReloadTrackingProfiles() 方法并且对工作流实例应用了特定的跟踪配置文件,则方法3被调用,否则方法4被调用。
在编写自定义TrackingService时,应该保证通过不同的方法获取的 TrackingProfile 版本的一致性。
参考资料:
Writing Tracking Services for Windows Workflow Foundation
Windows Workflow Foundation: Tracking Services Deep Dive
方法1、protected override bool TryGetProfile(Type workflowType, out TrackingProfile profile)
方法2、protected override bool TryReloadProfile(Type workflowType, Guid workflowInstanceId, out TrackingProfile profile)
方法3、protected override TrackingProfile GetProfile(Guid workflowInstanceId)
方法4、protected override TrackingProfile GetProfile(Type workflowType, Version profileVersionId)
方法1:
当调用 WorkflowRuntime.CreateWorkflow(...) 方法创建工作流实例时,此方法被调用。按照返回值和输出参数profile的赋值可以分为3种情况:
1、返回值==false
这种情况,表示不启用跟踪。如果工作流在以后的运行过程中,试图调用方法2,会抛出异常。
2、返回值==true,profile为null或无效的跟踪配置文件
这种情况表示启用跟踪,但由于跟踪配置文件设置无效,会直接抛出异常。
3、返回值==true,profile为有效的跟踪配置文件
这种情况表示启用跟踪,且跟踪配置有效。
方法2:
当调用 WorkflowInstance.ReloadTrackingProfiles() 方法时,此方法被调用。按照返回值和输出参数profile的赋值可以分为4种情况:
1、返回值==false
这种情况,表示对调用 ReloadTrackingProfiles() 方法的工作流实例没有特定的跟踪配置文件可以应用。
2、返回值==true,profile为null
这种情况表示停止对调用 ReloadTrackingProfiles() 方法的工作流实例的跟踪。
3、返回值==true,profile为无效的跟踪配置文件
这种情况表示对调用 ReloadTrackingProfiles() 方法的工作流实例要应用特定的跟踪配置文件,但由于跟踪配置文件设置无效,会直接抛出异常。
4、返回值==true,profile为有效的跟踪配置文件
这种情况表示对调用 ReloadTrackingProfiles() 方法的工作流实例要应用特定的跟踪配置文件,且跟踪配置有效。
方法3和方法4:
工作流实例钝化后被重新加载时,如果在缓存中没有找到钝化时相应版本的跟踪配置文件时,此2个方法中的一个将被调用。如果先前调用了 WorkflowInstance.ReloadTrackingProfiles() 方法并且对工作流实例应用了特定的跟踪配置文件,则方法3被调用,否则方法4被调用。
在编写自定义TrackingService时,应该保证通过不同的方法获取的 TrackingProfile 版本的一致性。
参考资料:
Writing Tracking Services for Windows Workflow Foundation
Windows Workflow Foundation: Tracking Services Deep Dive
相关文章推荐
- 在springmvc中非controller类中调用service接口,以获取springmvc容器方法实现
- Android Service的onRebind方法调用时机
- Spring普通类获取并调用Spring service方法
- springmvc下servlet怎么获取service及调用service的方法(备忘)
- MyBatis+Spring在注解@Autowried后通过反射的方式调用方法获取注入的Service或DAO对象为空
- 安卓Service组件使用系列4:绑定service并调用service中的方法返回结果
- CXF - 拦截器获取调用方法
- C#使用StackTrace获取方法被谁调用
- 在被调用方法中如何获取调用方的相关信息
- 获取系统隐藏API远程调用服务方法-挂断电话
- Dedecms网站地图获取文章列表支持标签调用的方法
- 在C#中获取IronPthon2.7异常时的调用方法堆栈,调试使用。
- 织梦DedeCms获取当前页面URL地址的调用方法
- 通过Binder调用Service内的方法
- java中通过反射获取方法并且调用(getMethod和invoke深入)实践
- 获取iOS任意线程调用堆栈(三)符号化理论:从Mach-o结构分析类名方法名
- WF工作流技术内幕 —— 以InvokeWebServiceActivity在Workflow工作流调用Web服务
- Java 调用 .Net Web Service 问题解决方法分享
- Android -- service 利用广播调用服务的方法
- android 中activity调用本地service中的方法。