WF的一些技术细节与应用体会(三)
2007-02-16 08:25
274 查看
有关HandleExternalEvent的一些事情。有一个很有趣的现象,是望星观月发现的。情况大体是这样的,当一个工作流设计中含有一个HandleExternalEvent活动时,在其运行到该活动后,如果没有触发一个相关的事件,则该活动会被持久化的。这里使用的持久化是SqlWorkflowPersistenceService作为持久化服务,并且在构造函数中将instanceOwnershipDuration和loadingInterval两个参数指定了不为零的值。 但在持久化后,在数据库中的InstanceState表中的ownerID和ownedUntil为空值,且nextTimer为永久。
如果我想让HandleExternalEvent的后续活动能够让同一人进行操作,则可能出现问题!这意味着什么?实例没有被锁定,其它的引擎都可以进行加载!这就有可能产生争用问题。此时应在instanceOwnershipDuration参数所指定的时间之内,按道理引擎在持久化工作流时进行锁定。这是微软的疏解还是故意这么设计的?
工作流中的HandleExternalEvent活动是用来接收宿主发出的事件用的。如果执行到此处进行时间限制的持久化,此时HandleExternalEvent只能接收同一个引擎来的事件通知,那么HandleExternalEvent就失去活动了意义。试想一下,我们可以用其它的活动来代替HandleExternalEvent来达到同样的效果。HandleExternalEvent代表的意思是,用户什么时候触发是随机的,不能局限于某一时间内的某一特定的人。也就是说当执行到HandleExternalEvent时前面的活动已经完结,这个完结不是一个一般意义上的某一个活动的完结,他也代表了工作流外某一人或系统某一参与阶段的完结!。说的再白一点就是,我提前完成了任务,于是持久化解锁以让后面的人或系统及时参与。从这个层次上来讲,微软的做法是对的(当然对了,这么关键的东西微软肯定不会搞错!只是我理解的不到位而已)。
看来这只是虚惊一场,但同时也说明了一个问题,我们在应用工作流时,要充分每一个工作流活动的意义,不能只是为了走通工作流而做工作流。
那么如何保证HandleExternalEvent的后续活动能够让同一人进行操作?你有答案了吗?留一个悬念吧,呵呵。
如果我想让HandleExternalEvent的后续活动能够让同一人进行操作,则可能出现问题!这意味着什么?实例没有被锁定,其它的引擎都可以进行加载!这就有可能产生争用问题。此时应在instanceOwnershipDuration参数所指定的时间之内,按道理引擎在持久化工作流时进行锁定。这是微软的疏解还是故意这么设计的?
工作流中的HandleExternalEvent活动是用来接收宿主发出的事件用的。如果执行到此处进行时间限制的持久化,此时HandleExternalEvent只能接收同一个引擎来的事件通知,那么HandleExternalEvent就失去活动了意义。试想一下,我们可以用其它的活动来代替HandleExternalEvent来达到同样的效果。HandleExternalEvent代表的意思是,用户什么时候触发是随机的,不能局限于某一时间内的某一特定的人。也就是说当执行到HandleExternalEvent时前面的活动已经完结,这个完结不是一个一般意义上的某一个活动的完结,他也代表了工作流外某一人或系统某一参与阶段的完结!。说的再白一点就是,我提前完成了任务,于是持久化解锁以让后面的人或系统及时参与。从这个层次上来讲,微软的做法是对的(当然对了,这么关键的东西微软肯定不会搞错!只是我理解的不到位而已)。
看来这只是虚惊一场,但同时也说明了一个问题,我们在应用工作流时,要充分每一个工作流活动的意义,不能只是为了走通工作流而做工作流。
那么如何保证HandleExternalEvent的后续活动能够让同一人进行操作?你有答案了吗?留一个悬念吧,呵呵。
相关文章推荐
- WWF的一些技术细节与应用体会(一)
- WWF的一些技术细节与应用体会
- WWF的一些技术细节与应用体会(二)
- WebBrower的应用和功能扩展中的一些技术细节
- 聊天类android应用的一些技术细节
- 先进驾驶辅助系统ADAS一些技术应用小结
- 前端通信:SSE设计方案(二)--- 服务器推送技术的实践以及一些应用场景的demo(包括在线及时聊天系统以及线上缓存更新,代码热修复案例)
- Python开发中一些技术细节
- WF工作流与管理类应用系统工作流需求实现的一些误区
- 会话中的存储技术和一些细节
- 新(移动端)旧(pc端企业级应用)公司前端技术与侧重点的对比及一些感悟
- Servlet简介 以及servlet一些细节 servletconfig servletcontext 的几个应用
- 本文简述了Ajax技术适用场景、Ajax不适用场景的具体情况以及应用时候存在的一些问题。
- 综合应用WPF/WCF/WF/LINQ之二十五:使用CustomControl技术编写一个翻页控件
- iOS应用发布中的一些细节
- WF工作流与管理类应用系统工作流需求实现的一些误区
- 谈判专家应用的一些技术总结3 语音格式的选择
- iOS应用发布中的一些细节
- 蓝牙的一些技术细节
- 关于技术和产品的一些体会