WWF(1)

mac2022-06-30  41

外部事件触发和处理:

1. 创建一个HandleExternalEventActivity

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. 创建一些类:

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

3. 创建TriggerEventActivity:

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

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 MethodInvoking27 {28 add29 {30 base.AddHandler(MethodInvokingEvent, value);31 }32 remove33 {34 base.RemoveHandler(MethodInvokingEvent, value);35 }36 }37 }

 

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

相关资源:WWF(微软工作流基础)和LINQ电子书
最新回复(0)