博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WWF(1)
阅读量:5341 次
发布时间:2019-06-15

本文共 3297 字,大约阅读时间需要 10 分钟。

外部事件触发和处理:

1. 创建一个HandleExternalEventActivity

ContractedBlock.gif
ExpandedBlockStart.gif
View Code
1     public class HandleEventActivity:HandleExternalEventActivity  2     {
3 public HandleEventActivity() 4 : base() 5 {
6 this.EventName = "HandleEvent"; 7 this.InterfaceType = typeof(ITriggerEventService); 8 this.Name = "HandleEventActivity"; 9 } 10 11 }

2. 创建一些类:

ContractedBlock.gif
ExpandedBlockStart.gif
View Code
1     [ExternalDataExchange]  2     public interface ITriggerEventService  3     {
4 void triggerEvent(Guid instanceId); 5 6 event EventHandler
HandleEvent; 7 } 8 9 [Serializable] 10 public class TriggerEventArgs : ExternalDataEventArgs 11 {
12 public TriggerEventArgs(Guid instanceId) 13 : base(instanceId) 14 { } 15 } 16 17 [Serializable] 18 public class TriggerEventService : ITriggerEventService 19 {
20 #region ITriggerEventService Member 21 22 public void triggerEvent(Guid instanceId) 23 {
24 TriggerEventArgs teArgs = new TriggerEventArgs(instanceId); 25 EventHandler
evt = this.HandleEvent; 26 if (evt != null) 27 {
28 evt(this, teArgs); 29 } 30 } 31 32 public event EventHandler
HandleEvent; 33 34 #endregion 35 }

3. 创建TriggerEventActivity:

创建一个custom activity. 里面放一个名叫callExternalMethodActivity的CallExternalMethodActivity。

ContractedBlock.gif
ExpandedBlockStart.gif
View Code
1     [Designer(typeof(ActivityDesigner))]  2     public partial class TriggerEventActivity : SequenceActivity  3     {
4 public TriggerEventActivity() 5 {
6 InitializeComponent(); 7 } 8 9 protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) 10 {
11 ExternalDataExchangeService edeService = executionContext.GetService(typeof(ExternalDataExchangeService)) as ExternalDataExchangeService; 12 if (edeService.GetService(typeof(TriggerEventService)) == null) 13 {
14 TriggerEventService teService = new TriggerEventService(); 15 edeService.AddService(teService); 16 } 17 this.callExternalMethodActivity.ParameterBindings.GetItem("instanceId").Value = this.WorkflowInstanceId; 18 return base.Execute(executionContext); 19 } 20 21 public static DependencyProperty MethodInvokingEvent = DependencyProperty.Register("MethodInvoking", typeof(System.EventHandler), typeof(TriggerEventActivity)); 22 23 [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Visible)] 24 [BrowsableAttribute(true)] 25 [CategoryAttribute("Execute Method")] 26 public event EventHandler MethodInvoking 27 {
28 add 29 {
30 base.AddHandler(MethodInvokingEvent, value); 31 } 32 remove 33 {
34 base.RemoveHandler(MethodInvokingEvent, value); 35 } 36 } 37 }

 

转载于:https://www.cnblogs.com/Forest-zhu/archive/2011/08/30/2159800.html

你可能感兴趣的文章
OpenCV的配置
查看>>
spring Cache + Redis 开发数据字典以及自定义标签
查看>>
成功连上数据库顿感世界美好许多
查看>>
编程注意2
查看>>
《C++ Primer Plus》第12章 类和动态内存分配 学习笔记
查看>>
kosaraju求强连通分量
查看>>
Block作为返回值时的使用
查看>>
文件管理之文件后缀名识别
查看>>
android 表情,软键盘冲突解决方案(仿微博等SNS应用)
查看>>
ASP.NET MVC随想录——锋利的KATANA
查看>>
20155303 2016-2017-2 《Java程序设计》第五周学习总结
查看>>
selenium爬取网易云
查看>>
常用配置文件
查看>>
Python全栈之路系列之流程控制
查看>>
# 20155209 2016-2017-2 《Java程序设计》第六周学习总结
查看>>
shell 脚本获取数组字符串长度
查看>>
Spark性能优化指南——基础篇
查看>>
Adapter 适配器模式 MD
查看>>
Linux使用fdisk进行磁盘管理
查看>>
Linux设置服务自启动(转载)
查看>>