WF-Activities之EventDrivenActivity ListenActivity
来源:互联网 发布:一起走软件刷步数 编辑:程序博客网 时间:2024/05/01 16:57
EventDrivenActivity一个容器,该容器内的第一个结点必需是一个继承 IEventActivity接口的Activity(可以进入idle状态的Activity,如Delay或HandExternalEvent),后面所有的结点可以是任意Activity。 IEventActivity 阻塞一些没解决的状态,如一个时间状态或一个外部消息的到来。当event完成,IeventActivity 完成运行,后面所有的Activity将执行
EventDrivenActivity一般用在以下两个部分
一是做为状态机结点 ,但是做为状态机结点是,这个EventDrivenActvity会有一些限制。那就是在 EventDrivenActvity容器中HandleExternalEventActivity 必须是第一个结点。
我们采用ListenActivity做为容器,在ListenActivity这一节中,我们说过ListenActivity有着以下的特点单线触发容器,使用EventDrivenActivity作为分支容器,当某条分支中的结点执行完成后,该ListenActivity结点就结束,继续向下执行,其他分支内的结点就不执行了
我们在程序中:
将第一分支中的delayActivity1的TimeoutDuration属性设为00:00:06,将第二分支中delayActivity2的属性设为00:00:05,而第三分支则用handleExternalEvent来监听对应的事件。
到这里,我们可以知道我们这样做的结果是:当你在00:00:05之前触发了handleExternalEvent监听的事件时,工作流进入第三分支,执行完codeActivity3中的程序,工作流就结束了;如果没有触发事件,那么工作流进入第二分支,执行完codeActivity2中的程序,工作流就结束了;也就是第一分支永远不会执行。
事实实现在程序确实达到了这个效果,但实现在发现的过程中发现了这样一个问题,当第二分支结束完,我再去触发第三分支的事件,这时工作流就出现了以下异常
“Event "SubmitedMethod" on interface type "TestLocalService.ITestLocalServeice" for instance id "c968093d-16f3-4b48-94f6-372fc48a6c4e" cannot be delivered”
出现这个问题有两个原因:
第一个原因就是我们在handleExternalEvent中提过的,参数没有序列化的原因。在"innerException "中如果看见了“EventArgs not serializable”,那就是这个原因了
- WF-Activities之EventDrivenActivity ListenActivity
- WF-Activities之EventDrivenActivity ListenActivity
- WF中的自定义Activity(Custom Activities)(1)
- Android 组件之Activities
- 循序渐进之WF:1.什么是WF
- 【WF】之基础介绍
- Activities
- Activities
- Activities
- Activities
- Activities
- Activities
- Activities
- Activities
- Activities
- Activities
- android之activities的生命周期
- WF
- 条款08:别让异常逃离析构函数(Prevent exceptions from leaving destructors.)
- hibernate 笔记
- 准备做基于GPIB的自动微波测量系统,有做相关的大家交流一下,共同学习,共同进步!
- CMS一例故障排除
- 解析xml文档
- WF-Activities之EventDrivenActivity ListenActivity
- 网络socket编程指南
- 自定义样式(style)与主题(theme)
- Flex Spring整合
- AMBA、AHB、APB总线简介
- Linux下读写NTFS
- 集群中几种session同步解决方案的比较
- 利用WINDOWS建一个别人打不开的文件夹
- MyEclipse打开JSP页面时异常