protected override IComponent[] CreateComponentsCore(IDesignerHost designerHost) { CompositeActivity parallelActivity = new ParallelActivity(); parallelActivity.Activities.Add(new SequenceActivity()); parallelActivity.Activities.Add(new SequenceActivity()); return (IComponent[])new IComponent[] { parallelActivity }; }
public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { ValidationErrorCollection errors = base.Validate(manager, obj); ParallelActivity activity = obj as ParallelActivity; if (activity == null) { throw new ArgumentException(SR.GetString("Error_UnexpectedArgumentType", new object[] { typeof(ParallelActivity).FullName }), "obj"); } if (activity.EnabledActivities.Count < 2) { errors.Add(new ValidationError(SR.GetString("Error_ParallelLessThanTwoChildren"), 0x517)); } bool flag = false; foreach (Activity activity2 in activity.EnabledActivities) { if (activity2.GetType() != typeof(SequenceActivity)) { flag = true; } } if (flag) { errors.Add(new ValidationError(SR.GetString("Error_ParallelNotAllSequence"), 0x518)); } return(errors); }
protected override IComponent[] CreateComponentsCore(IDesignerHost designerHost) { CompositeActivity activity = new ParallelActivity { Activities = { new SequenceActivity(), new SequenceActivity() } }; return new IComponent[] { activity }; }
void IActivityEventListener <ActivityExecutionStatusChangedEventArgs> .OnEvent(object sender, ActivityExecutionStatusChangedEventArgs e) { if (sender == null) { throw new ArgumentNullException("sender"); } if (e == null) { throw new ArgumentNullException("e"); } ActivityExecutionContext context = sender as ActivityExecutionContext; if (context == null) { throw new ArgumentException(SR.Error_SenderMustBeActivityExecutionContext, "sender"); } ParallelActivity activity = context.Activity as ParallelActivity; e.Activity.UnregisterForStatusChange(Activity.ClosedEvent, this); bool flag = true; for (int i = 0; i < activity.EnabledActivities.Count; i++) { Activity activity2 = activity.EnabledActivities[i]; if ((activity2.ExecutionStatus != ActivityExecutionStatus.Initialized) && (activity2.ExecutionStatus != ActivityExecutionStatus.Closed)) { flag = false; break; } } if (flag) { context.CloseActivity(); } }
public override ValidationErrorCollection Validate(ValidationManager manager, object obj) { ValidationErrorCollection validationErrors = base.Validate(manager, obj); ParallelActivity parallel = obj as ParallelActivity; if (parallel == null) { throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(ParallelActivity).FullName), "obj"); } // Validate number of children if (parallel.EnabledActivities.Count < 2) { validationErrors.Add(new ValidationError(SR.GetString(SR.Error_ParallelLessThanTwoChildren), ErrorNumbers.Error_ParallelLessThanTwoChildren)); } bool notAllSequence = false; foreach (Activity activity in parallel.EnabledActivities) { if (activity.GetType() != typeof(SequenceActivity)) { notAllSequence = true; } } // Validate that all child activities are sequence activities. if (notAllSequence) { validationErrors.Add(new ValidationError(SR.GetString(SR.Error_ParallelNotAllSequence), ErrorNumbers.Error_ParallelNotAllSequence)); } return(validationErrors); }
protected override IComponent[] CreateComponentsCore(IDesignerHost designerHost) { CompositeActivity parallelActivity = new ParallelActivity(); parallelActivity.Activities.Add(new SequenceActivity()); parallelActivity.Activities.Add(new SequenceActivity()); return((IComponent[])new IComponent[] { parallelActivity }); }
protected override IComponent[] CreateComponentsCore(IDesignerHost designerHost) { CompositeActivity activity = new ParallelActivity { Activities = { new SequenceActivity(), new SequenceActivity() } }; return(new IComponent[] { activity }); }
protected override void OnActivityChangeAdd(ActivityExecutionContext executionContext, Activity addedActivity) { if (executionContext == null) { throw new ArgumentNullException("executionContext"); } if (addedActivity == null) { throw new ArgumentNullException("addedActivity"); } ParallelActivity activity = executionContext.Activity as ParallelActivity; if ((activity.ExecutionStatus == ActivityExecutionStatus.Executing) && activity.IsExecuting) { addedActivity.RegisterForStatusChange(Activity.ClosedEvent, this); executionContext.ExecuteActivity(addedActivity); } }
void IActivityEventListener <ActivityExecutionStatusChangedEventArgs> .OnEvent(object sender, ActivityExecutionStatusChangedEventArgs e) { if (sender == null) { throw new ArgumentNullException("sender"); } if (e == null) { throw new ArgumentNullException("e"); } ActivityExecutionContext context = sender as ActivityExecutionContext; if (context == null) { throw new ArgumentException(SR.Error_SenderMustBeActivityExecutionContext, "sender"); } ParallelActivity parallel = context.Activity as ParallelActivity; e.Activity.UnregisterForStatusChange(Activity.ClosedEvent, this); bool canCloseNow = true; for (int i = 0; i < parallel.EnabledActivities.Count; ++i) { Activity childActivity = parallel.EnabledActivities[i]; if (!(childActivity.ExecutionStatus == ActivityExecutionStatus.Initialized || childActivity.ExecutionStatus == ActivityExecutionStatus.Closed)) { canCloseNow = false; break; } } if (canCloseNow) { context.CloseActivity(); } }
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.CanModifyActivities = true; System.Workflow.ComponentModel.ActivityBind activitybind2 = new System.Workflow.ComponentModel.ActivityBind(); System.Workflow.ComponentModel.ActivityBind activitybind3 = new System.Workflow.ComponentModel.ActivityBind(); System.Workflow.ComponentModel.ActivityBind activitybind1 = new System.Workflow.ComponentModel.ActivityBind(); System.Workflow.ComponentModel.ActivityBind activitybind6 = new System.Workflow.ComponentModel.ActivityBind(); System.Workflow.ComponentModel.ActivityBind activitybind4 = new System.Workflow.ComponentModel.ActivityBind(); System.Workflow.ComponentModel.ActivityBind activitybind5 = new System.Workflow.ComponentModel.ActivityBind(); this.MessageReceived = new System.Workflow.Activities.CodeActivity(); this.ReceiveMessage = new Winterdom.Workflow.Activities.Msmq.MsmqReceiveActivity(); this.DelayDone = new System.Workflow.Activities.CodeActivity(); this.ReceiveTimeout = new System.Workflow.Activities.DelayActivity(); this.SendMessage = new Winterdom.Workflow.Activities.Msmq.MsmqSendActivity(); this.eventDrivenActivity2 = new System.Workflow.Activities.EventDrivenActivity(); this.eventDrivenActivity1 = new System.Workflow.Activities.EventDrivenActivity(); this.MessageSent = new System.Workflow.Activities.CodeActivity(); this.SendScope = new System.Workflow.ComponentModel.TransactionScopeActivity(); this.DelaySend = new System.Workflow.Activities.DelayActivity(); this.ConfigureObject = new System.Workflow.Activities.CodeActivity(); this.listenActivity1 = new System.Workflow.Activities.ListenActivity(); this.sequenceActivity2 = new System.Workflow.Activities.SequenceActivity(); this.sequenceActivity1 = new System.Workflow.Activities.SequenceActivity(); this.parallelActivity1 = new System.Workflow.Activities.ParallelActivity(); // // MessageReceived // this.MessageReceived.Name = "MessageReceived"; this.MessageReceived.ExecuteCode += new System.EventHandler(this.MessageReceived_ExecuteCode); activitybind2.Name = "SampleWorkflow1"; activitybind2.Path = "QUEUE"; activitybind3.Name = "SampleWorkflow1"; activitybind3.Path = "_customerReceived"; // // ReceiveMessage // activitybind1.Name = "SampleWorkflow1"; activitybind1.Path = "_labelReceived"; this.ReceiveMessage.MessageType = typeof(TestApp.Customer); this.ReceiveMessage.Name = "ReceiveMessage"; this.ReceiveMessage.SetBinding(Winterdom.Workflow.Activities.Msmq.MsmqReceiveActivity.QueueProperty, ((System.Workflow.ComponentModel.ActivityBind)(activitybind2))); this.ReceiveMessage.SetBinding(Winterdom.Workflow.Activities.Msmq.MsmqReceiveActivity.MessageReceivedProperty, ((System.Workflow.ComponentModel.ActivityBind)(activitybind3))); this.ReceiveMessage.SetBinding(Winterdom.Workflow.Activities.Msmq.MsmqReceiveActivity.LabelProperty, ((System.Workflow.ComponentModel.ActivityBind)(activitybind1))); // // DelayDone // this.DelayDone.Name = "DelayDone"; this.DelayDone.ExecuteCode += new System.EventHandler(this.DelayDone_ExecuteCode); // // ReceiveTimeout // this.ReceiveTimeout.Name = "ReceiveTimeout"; this.ReceiveTimeout.TimeoutDuration = System.TimeSpan.Parse("00:00:10"); activitybind6.Name = "SampleWorkflow1"; activitybind6.Path = "QUEUE"; // // SendMessage // this.SendMessage.IsTransactionalQueue = true; activitybind4.Name = "SampleWorkflow1"; activitybind4.Path = "_labelToSend"; activitybind5.Name = "SampleWorkflow1"; activitybind5.Path = "_customerToSend"; this.SendMessage.Name = "SendMessage"; this.SendMessage.SetBinding(Winterdom.Workflow.Activities.Msmq.MsmqSendActivity.MessageToSendProperty, ((System.Workflow.ComponentModel.ActivityBind)(activitybind5))); this.SendMessage.SetBinding(Winterdom.Workflow.Activities.Msmq.MsmqSendActivity.QueueProperty, ((System.Workflow.ComponentModel.ActivityBind)(activitybind6))); this.SendMessage.SetBinding(Winterdom.Workflow.Activities.Msmq.MsmqSendActivity.LabelProperty, ((System.Workflow.ComponentModel.ActivityBind)(activitybind4))); // // eventDrivenActivity2 // this.eventDrivenActivity2.Activities.Add(this.ReceiveMessage); this.eventDrivenActivity2.Activities.Add(this.MessageReceived); this.eventDrivenActivity2.Name = "eventDrivenActivity2"; // // eventDrivenActivity1 // this.eventDrivenActivity1.Activities.Add(this.ReceiveTimeout); this.eventDrivenActivity1.Activities.Add(this.DelayDone); this.eventDrivenActivity1.Name = "eventDrivenActivity1"; // // MessageSent // this.MessageSent.Name = "MessageSent"; this.MessageSent.ExecuteCode += new System.EventHandler(this.MessageSent_ExecuteCode); // // SendScope // this.SendScope.Activities.Add(this.SendMessage); this.SendScope.Name = "SendScope"; this.SendScope.TransactionOptions.IsolationLevel = System.Transactions.IsolationLevel.Serializable; // // DelaySend // this.DelaySend.Name = "DelaySend"; this.DelaySend.TimeoutDuration = System.TimeSpan.Parse("00:00:00"); // // ConfigureObject // this.ConfigureObject.Name = "ConfigureObject"; this.ConfigureObject.ExecuteCode += new System.EventHandler(this.ConfigureObject_ExecuteCode); // // listenActivity1 // this.listenActivity1.Activities.Add(this.eventDrivenActivity1); this.listenActivity1.Activities.Add(this.eventDrivenActivity2); this.listenActivity1.Name = "listenActivity1"; // // sequenceActivity2 // this.sequenceActivity2.Activities.Add(this.ConfigureObject); this.sequenceActivity2.Activities.Add(this.DelaySend); this.sequenceActivity2.Activities.Add(this.SendScope); this.sequenceActivity2.Activities.Add(this.MessageSent); this.sequenceActivity2.Name = "sequenceActivity2"; // // sequenceActivity1 // this.sequenceActivity1.Activities.Add(this.listenActivity1); this.sequenceActivity1.Name = "sequenceActivity1"; // // parallelActivity1 // this.parallelActivity1.Activities.Add(this.sequenceActivity1); this.parallelActivity1.Activities.Add(this.sequenceActivity2); this.parallelActivity1.Name = "parallelActivity1"; // // SampleWorkflow1 // this.Activities.Add(this.parallelActivity1); this.Name = "SampleWorkflow1"; this.CanModifyActivities = false; }
private void ProcessAutoReplyEmailActivity(ParallelActivity activityList) { AutoReplyEmail emailActivity = new AutoReplyEmail(); emailActivity.Name = "AutoReplyEmail"; SequenceActivity branch = new SequenceActivity(); branch.Name = "branch1"; branch.Activities.Add(emailActivity); if (activityList != null) activityList.Activities.Add(branch); else workflowDesigner.SequentialWorkflow.Activities.Add(branch); workflowDesigner.Host.RootComponent.Site.Container.Add(emailActivity); workflowDesigner.Host.RootComponent.Site.Container.Add(branch); }
private void ProcessOutlookNoteActivity(ParallelActivity activityList) { OutlookNote outlookNoteActivity = new OutlookNote(); outlookNoteActivity.Name = "CreateOutlookNote"; SequenceActivity branch = new SequenceActivity(); branch.Name = "branch2"; branch.Activities.Add(outlookNoteActivity); if (activityList != null) activityList.Activities.Add(branch); else workflowDesigner.SequentialWorkflow.Activities.Add(branch); workflowDesigner.Host.RootComponent.Site.Container.Add(outlookNoteActivity); workflowDesigner.Host.RootComponent.Site.Container.Add(branch); }
private void ProcessActivitySelection(ActionTypes actionType) { if (actionType == ActionTypes.None) return; ParallelActivity parallelActivity = null; // Check for multi activity selection if (actionType != ActionTypes.SendAutoReply & actionType != ActionTypes.CreateNote & actionType != ActionTypes.CreateTask) { parallelActivity = new ParallelActivity(); } // Process each selected activity if ((actionType & ActionTypes.SendAutoReply) == ActionTypes.SendAutoReply) ProcessAutoReplyEmailActivity(parallelActivity); if ((actionType & ActionTypes.CreateNote) == ActionTypes.CreateNote) ProcessOutlookNoteActivity(parallelActivity); if ((actionType & ActionTypes.CreateTask) == ActionTypes.CreateTask) ProcessOutlookTaskActivity(parallelActivity); // Add ParallelActivity to the workflow if (parallelActivity != null) { workflowDesigner.SequentialWorkflow.Activities.Add(parallelActivity); workflowDesigner.Host.RootComponent.Site.Container.Add(parallelActivity); } }
private void InitializeComponent() { parallel1 = new ParallelActivity(); sequence1 = new SequenceActivity(); sequence2 = new SequenceActivity(); begin = new CodeActivity(); end = new CodeActivity(); increment1 = new CodeActivity(); increment2 = new CodeActivity(); decrement1 = new CodeActivity(); decrement2 = new CodeActivity(); SynchronizedDecrement = new SynchronizationScopeActivity(); SynchronizedIncrement = new SynchronizationScopeActivity(); System.Collections.Generic.List<string> stringCollection1 = new System.Collections.Generic.List<string>(); System.Collections.Generic.List<string> stringCollection2 = new System.Collections.Generic.List<string>(); this.CanModifyActivities = true; // parallel this.parallel1.Activities.Add(sequence1); this.parallel1.Activities.Add(sequence2); this.parallel1.Name = "parallel1"; // sequences this.sequence1.Activities.Add(SynchronizedIncrement); this.sequence1.Name = "sequence1"; this.sequence2.Activities.Add(SynchronizedDecrement); this.sequence2.Name = "sequence2"; // both synchronization activities are set to the same syncMutex string // in order for the parallel activity to provide synchronization guarantees for shared data access to count variable this.SynchronizedIncrement.Name = "SynchronizedIncrement"; stringCollection1.Add("syncMutex"); this.SynchronizedIncrement.SynchronizationHandles = stringCollection1; this.SynchronizedIncrement.Activities.Add(increment1); this.SynchronizedIncrement.Activities.Add(increment2); this.SynchronizedDecrement.Name = "SynchronizedDecrement"; stringCollection2.Add("syncMutex"); this.SynchronizedDecrement.SynchronizationHandles = stringCollection2; this.SynchronizedDecrement.Activities.Add(decrement1); this.SynchronizedDecrement.Activities.Add(decrement2); // code activities begin.Name = "begin"; begin.ExecuteCode += new EventHandler(Begin_ExecuteCode); end.Name = "end"; end.ExecuteCode += new EventHandler(End_ExecuteCode); increment1.Name = "increment1"; increment1.ExecuteCode += new EventHandler(Increment1_ExecuteCode); increment2.Name = "increment2"; increment2.ExecuteCode += new EventHandler(Increment2_ExecuteCode); decrement1.Name = "decrement1"; decrement1.ExecuteCode += new EventHandler(Decrement1_ExecuteCode); decrement2.Name = "decrement2"; decrement2.ExecuteCode += new EventHandler(Decrement2_ExecuteCode); // workflow activities this.Activities.Add(begin); this.Activities.Add(parallel1); this.Activities.Add(end); this.Name = "SynchronizedActivityWorkflow"; this.CanModifyActivities = false; }
private void InitializeComponent () { CanModifyActivities = true; CodeCondition codecondition1 = new CodeCondition (); CodeCloseMailProgram2 = new ourCodeActivity (); DelayWaitForSentMail2 = new DelayActivity (); PrepareMail2 = new CodeActivity (); CodeCloseMailProgram1 = new CodeActivity (); DelayWaitForSentMail1 = new DelayActivity (); CodePrepareMail1 = new CodeActivity (); SeqSendMail2 = new SequenceActivity (); SeqSendMail1 = new SequenceActivity (); TerminateFinishNoNeedToReadMail = new TerminateActivity (); Parallel = new ParallelActivity (); IfElseBranchActivityNoNeed = new IfElseBranchActivity (); IfElseBranchActivityNeedToSendMail = new IfElseBranchActivity (); NeedToSendMail = new IfElseActivity (); CodeCloseMailProgram2.Name = "CodeCloseMailProgram2"; CodeCloseMailProgram2.ExecuteCode += new EventHandler (CodeCloseMailProgram2_ExecuteCode); DelayWaitForSentMail2.Name = "DelayWaitForSentMail2"; DelayWaitForSentMail2.TimeoutDuration = System.TimeSpan.Parse ("00:00:05"); DelayWaitForSentMail2.InitializeTimeoutDuration += new EventHandler (DelayWaitForSentMail2_InitializeTimeoutDuration); PrepareMail2.Name = "PrepareMail2"; PrepareMail2.ExecuteCode += new EventHandler (PrepareMail2_ExecuteCode); CodeCloseMailProgram1.Name = "CodeCloseMailProgram1"; CodeCloseMailProgram1.ExecuteCode += new EventHandler (CodeCloseMailProgram_ExecuteCode); DelayWaitForSentMail1.Name = "DelayWaitForSentMail1"; DelayWaitForSentMail1.TimeoutDuration = System.TimeSpan.Parse ("00:00:03"); DelayWaitForSentMail1.InitializeTimeoutDuration += new EventHandler (DelayWaitForSentMail1_InitializeTimeoutDuration); CodePrepareMail1.Name = "CodePrepareMail1"; CodePrepareMail1.ExecuteCode += new EventHandler (CodeActivity1_ExecuteCode); SeqSendMail2.Activities.Add (PrepareMail2); SeqSendMail2.Activities.Add (DelayWaitForSentMail2); SeqSendMail2.Activities.Add (CodeCloseMailProgram2); SeqSendMail2.Name = "SeqSendMail2"; SeqSendMail1.Activities.Add (CodePrepareMail1); //SeqSendMail1.Activities.Add (DelayWaitForSentMail1); SeqSendMail1.Activities.Add (CodeCloseMailProgram1); SeqSendMail1.Name = "SeqSendMail1"; TerminateFinishNoNeedToReadMail.Name = "TerminateFinishNoNeedToReadMail"; Parallel.Activities.Add (SeqSendMail1); Parallel.Activities.Add (SeqSendMail2); Parallel.Name = "Parallel"; IfElseBranchActivityNoNeed.Activities.Add (TerminateFinishNoNeedToReadMail); IfElseBranchActivityNoNeed.Name = "IfElseBranchActivityNoNeed"; IfElseBranchActivityNeedToSendMail.Activities.Add (Parallel); codecondition1.Condition += new EventHandler <ConditionalEventArgs>(IfElseCondition); IfElseBranchActivityNeedToSendMail.Condition = codecondition1; IfElseBranchActivityNeedToSendMail.Name = "IfElseBranchActivityNeedToSendMail"; NeedToSendMail.Activities.Add (IfElseBranchActivityNeedToSendMail); NeedToSendMail.Activities.Add (IfElseBranchActivityNoNeed); NeedToSendMail.Name = "NeedToSendMail"; Activities.Add (NeedToSendMail); Name = "IfElseParalellWorkFlow"; CanModifyActivities = false; }
private void InitializeComponent() { this.CanModifyActivities = true; CorrelationToken correlationtoken1 = new CorrelationToken(); CorrelationToken correlationtoken2 = new CorrelationToken(); this.taskCompleted2 = new TaskCompleted(); this.createTask2 = new CreateTask(); this.taskCompleted1 = new TaskCompleted(); this.createTask1 = new CreateTask(); this.sequence2 = new SequenceActivity(); this.sequence1 = new SequenceActivity(); this.parallel1 = new ParallelActivity(); // // taskCompleted2 // correlationtoken1.Name = "c2"; correlationtoken1.OwnerActivityName = "sequence2"; this.taskCompleted2.CorrelationToken = correlationtoken1; this.taskCompleted2.EventArgs = null; this.taskCompleted2.EventName = "TaskCompleted"; this.taskCompleted2.InterfaceType = typeof(ITaskService); this.taskCompleted2.Name = "taskCompleted2"; this.taskCompleted2.Sender = null; this.taskCompleted2.Invoked += new EventHandler<ExternalDataEventArgs>(this.OnTaskCompleted); // // createTask2 // this.createTask2.Assignee = "Kim"; this.createTask2.CorrelationToken = correlationtoken1; this.createTask2.InterfaceType = typeof(ITaskService); this.createTask2.MethodName = "CreateTask"; this.createTask2.Name = "createTask2"; this.createTask2.TaskId = "002"; this.createTask2.Text = "task 2"; // // taskCompleted1 // correlationtoken2.Name = "c1"; correlationtoken2.OwnerActivityName = "sequence1"; this.taskCompleted1.CorrelationToken = correlationtoken2; this.taskCompleted1.EventArgs = null; this.taskCompleted1.EventName = "TaskCompleted"; this.taskCompleted1.InterfaceType = typeof(ITaskService); this.taskCompleted1.Name = "taskCompleted1"; this.taskCompleted1.Sender = null; this.taskCompleted1.Invoked += new EventHandler<ExternalDataEventArgs>(this.OnTaskCompleted); // // createTask1 // this.createTask1.Assignee = "Joe"; this.createTask1.CorrelationToken = correlationtoken2; this.createTask1.InterfaceType = typeof(ITaskService); this.createTask1.MethodName = "CreateTask"; this.createTask1.Name = "createTask1"; this.createTask1.TaskId = "001"; this.createTask1.Text = "task 1"; // // sequence2 // this.sequence2.Activities.Add(this.createTask2); this.sequence2.Activities.Add(this.taskCompleted2); this.sequence2.Name = "sequence2"; // // sequence1 // this.sequence1.Activities.Add(this.createTask1); this.sequence1.Activities.Add(this.taskCompleted1); this.sequence1.Name = "sequence1"; // // parallel1 // this.parallel1.Activities.Add(this.sequence1); this.parallel1.Activities.Add(this.sequence2); this.parallel1.Name = "parallel1"; // // TaskWorkflow // this.Activities.Add(this.parallel1); this.Name = "TaskWorkflow"; this.CanModifyActivities = false; }