public void Test___Method_Stop___Status_Created() { var variable1 = new AnyVariable <int>(); var variable2 = new AnyVariable <int>(); var testee = new SequenceActivity() { Activities = new List <IActivity>() { new AssignActivity() { To = variable1, Value = new AnyVariable <int>() { Value = 10 } }, new AssignActivity() { To = variable2, Value = new AnyVariable <int>() { Value = 20 } } } }; testee.Stop(); Assert.AreEqual(ActivityStatus.Stopped, testee.Status); Assert.IsNull(variable1.GetValueAsObject()); Assert.IsNull(variable2.GetValueAsObject()); }
public async Task Test___Method_Stop___Status_Executing() { var duration = new AnyVariable <int>() { Value = 1000 }; var testee = new SequenceActivity() { Activities = new List <IActivity>() { new DelayActivity() { Duration = duration }, new DelayActivity() { Duration = duration } } }; var task = testee.Start(); Assert.AreEqual(ActivityStatus.Executing, testee.Status); testee.Stop(); await task; Assert.AreEqual(ActivityStatus.Stopped, testee.Status); }
static async Task Main(string[] args) { var statusCode = new AnyVariable <HttpStatusCode>(); var data = new AnyVariable <string>(); var activity = new SequenceActivity() { Activities = new List <IActivity>() { // start WFLite.AspNetCore.HelloWorld first. new RestAsyncActivity <string>() { BaseUrl = new AnyVariable("http://localhost:51115/"), Request = new RequestVariable() { Resource = new AnyVariable("api/values") }, Response = new ResponseVariable <string>() { StatusCode = statusCode, Data = data } }, new ConsoleWriteLineActivity() { Value = data } } }; await activity.Start(); Console.ReadKey(); }
static async Task Main(string[] args) { var greeting = new AnyVariable <string>(); var activity = new SequenceActivity() { Activities = new List <IActivity>() { new AssignActivity <string, int>() { To = greeting, Value = new NowHourVariable(), Converter = new HourToGreetingConverter() }, new ConsoleWriteLineActivity() { Value = greeting } } }; await activity.Start(); Console.ReadKey(); }
public async Task Test___Method_Start___Status_Created() { var variable1 = new AnyVariable <int>(); var variable2 = new AnyVariable <int>(); var testee = new SequenceActivity() { Activities = new List <IActivity>() { new AssignActivity() { To = variable1, Value = new AnyVariable <int>() { Value = 10 } }, new AssignActivity() { To = variable2, Value = new AnyVariable <int>() { Value = 20 } } } }; await testee.Start(); Assert.AreEqual(ActivityStatus.Completed, testee.Status); Assert.AreEqual(10, variable1.GetValueAsObject()); Assert.AreEqual(20, variable2.GetValueAsObject()); }
public async Task Test___Method_Start___Status_Created___Issue_2() { var lastAct = string.Empty; var testee = new SequenceActivity() { Activities = new List <IActivity>() { new SequenceActivity() { Activities = new List <IActivity>() { new FuncSyncActivity() { Func = () => { lastAct = "Act1_1"; return(true); } }, new FuncSyncActivity() { Func = () => { lastAct = "Act1_2"; return(false); // stopped } }, new FuncSyncActivity() { Func = () => { lastAct = "Act1_3"; return(true); } } } }, new FuncSyncActivity() { Func = () => { lastAct = "Act2_1"; return(true); } } } }; await testee.Start(); Assert.AreEqual("Act1_2", lastAct); }
public WriteLineActivity(IActorContext context, IActorRef self, IActorRef sender, string message) { Activity = new SequenceActivity() { Activities = new List <IActivity>() { new ConsoleWriteLineActivity(new AnyVariable(message)), new TellActivity() { ActorRef = new AnyVariable <IActorRef>(sender), Message = new AnyVariable(message) } } }; }
public void RunProgram() { var workflow = new SequenceActivity(); // setting property values like this only works for primitive types //workflow.firstName = "Graham"; IDictionary<string, object> inputs = new Dictionary<string, object>(); inputs["firstName"] = "Graham"; //IDictionary<string, object> outputs = WorkflowInvoker.Invoke(workflow, inputs); //Console.WriteLine(outputs["greeting"]); var app = new WorkflowApplication(workflow, inputs); app.Completed = e => { Console.WriteLine("Completed with CompletionState {0}", e.CompletionState); Console.WriteLine(e.Outputs["greeting"]); }; app.Run(); }
void Container1() { System.Workflow.Activities.CodeCondition codecondition1 = new System.Workflow.Activities.CodeCondition(); // <snippet180> // <snippet181> // <snippet182> this.WhileLoop = new System.Workflow.Activities.WhileActivity(); this.Parallel = new System.Workflow.Activities.ParallelActivity(); this.Sequence1 = new System.Workflow.Activities.SequenceActivity(); this.Sequence2 = new System.Workflow.Activities.SequenceActivity(); this.ConsoleMessage1 = new System.Workflow.Activities.CodeActivity(); this.ConsoleMessage2 = new System.Workflow.Activities.CodeActivity(); // // WhileLoop // this.WhileLoop.Activities.Add(this.Parallel); codecondition1.Condition += new System.EventHandler <System.Workflow.Activities.ConditionalEventArgs>(this.WhileCondition); this.WhileLoop.Condition = codecondition1; this.WhileLoop.Name = "WhileLoop"; // </snippet182> // // Parallel // this.Parallel.Activities.Add(this.Sequence1); this.Parallel.Activities.Add(this.Sequence2); this.Parallel.Name = "Parallel"; // </snippet181> // // Sequence1 // this.Sequence1.Activities.Add(this.ConsoleMessage1); this.Sequence1.Name = "Sequence1"; // // Sequence2 // this.Sequence2.Activities.Add(this.ConsoleMessage2); this.Sequence2.Name = "Sequence2"; // </snippet180> }
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); }
/// <summary> /// Execute the activity /// </summary> /// <param name="executionContext"></param> /// <returns>Exedcuting if any children are running, otherwise Closed</returns> protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { if (null == executionContext) { throw new ArgumentNullException("executionContext"); } this.IsExecuting = true; for (int pos = 0; pos < base.EnabledActivities.Count; pos++) { SequenceActivity act = base.EnabledActivities[pos] as SequenceActivity; if (null != act) { /* foreach (Account account in Customer.Accounts) * { * if (account.GetType() == act.AccountType) * { * act.Account = account; * act.RegisterForStatusChange(Activity.ClosedEvent, this); * executionContext.ExecuteActivity(act); * } * }*/ act.RegisterForStatusChange(Activity.ClosedEvent, this); executionContext.ExecuteActivity(act); } } if (base.EnabledActivities.Count != 0) { return(ActivityExecutionStatus.Executing); } else { return(ActivityExecutionStatus.Closed); } }
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); }
public void RunProgram() { var workflow = new SequenceActivity(); // setting property values like this only works for primitive types //workflow.firstName = "Graham"; IDictionary <string, object> inputs = new Dictionary <string, object>(); inputs["firstName"] = "Graham"; //IDictionary<string, object> outputs = WorkflowInvoker.Invoke(workflow, inputs); //Console.WriteLine(outputs["greeting"]); var app = new WorkflowApplication(workflow, inputs); app.Completed = e => { Console.WriteLine("Completed with CompletionState {0}", e.CompletionState); Console.WriteLine(e.Outputs["greeting"]); }; app.Run(); }
/// <summary> /// Execute the activity /// </summary> /// <param name="executionContext"></param> /// <returns>Exedcuting if any children are running, otherwise Closed</returns> protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { if (null == executionContext) { throw new ArgumentNullException("executionContext"); } this.IsExecuting = true; bool executingChildren = false; DateTime date = (this.Date == DateTime.MinValue) ? DateTime.Now : this.Date; // Get the day of the week from this activity & convert to a WeekdayEnum WeekdayEnum weekday = date.DayOfWeek == 0 ? WeekdayEnum.Sunday : (WeekdayEnum)(Convert.ToInt32(Math.Pow(2, (int)date.DayOfWeek))); for (int pos = 0; pos < base.EnabledActivities.Count; pos++) { SequenceActivity act = base.EnabledActivities[pos] as SequenceActivity; if (null != act) { // Get the attached Weekday property for the activity WeekdayEnum weekdays = (WeekdayEnum)GetWeekday(act); // Now check for a match if ((weekdays & weekday) != WeekdayEnum.None) { executingChildren = true; act.RegisterForStatusChange(Activity.ClosedEvent, this); executionContext.ExecuteActivity(act); } } } return(executingChildren ? ActivityExecutionStatus.Executing : ActivityExecutionStatus.Closed); }
private void InitializeComponent() { Console.WriteLine("1"); CanModifyActivities = true; CodeCondition codecondition1 = new CodeCondition(); CodeCloseMailProgram2 = new CodeActivity(); CodeCloseMailProgram3 = new CodeActivity(); DelayWaitForSentMail2 = new DelayActivity(); DelayWaitForSentMail3 = new DelayActivity(); PrepareMail2 = new CodeActivity(); PrepareMail3 = new CodeActivity(); CodeCloseMailProgram1 = new CodeActivity(); DelayWaitForSentMail1 = new DelayActivity(); CodePrepareMail1 = new CodeActivity(); SeqSendMail2 = new SequenceActivity(); SeqSendMail1 = new SequenceActivity(); SeqSendMail3 = new SequenceActivity(); TerminateFinishNoNeedToReadMail = new TerminateActivity(); Parallel = new ParallelActivity(); IfElseBranchActivityNoNeed = new IfElseBranchActivity(); IfElseBranchActivityNeedToSendMail = new IfElseBranchActivity(); NeedToSendMail = new IfElseActivity(); PrepareMail3.Name = "PrepareMail3"; PrepareMail3.ExecuteCode += new EventHandler(PrepareMail3_ExecuteCode); CodeCloseMailProgram3.Name = "CodeCloseMailProgram3"; CodeCloseMailProgram3.ExecuteCode += new EventHandler(CodeCloseMailProgram3_ExecuteCode); DelayWaitForSentMail3.Name = "DelayWaitForSentMail3"; DelayWaitForSentMail3.TimeoutDuration = TimeSpan.Parse("00:00:03"); CodeCloseMailProgram2.Name = "CodeCloseMailProgram2"; CodeCloseMailProgram2.ExecuteCode += new EventHandler(CodeCloseMailProgram2_ExecuteCode); DelayWaitForSentMail2.Name = "DelayWaitForSentMail2"; DelayWaitForSentMail2.TimeoutDuration = TimeSpan.Parse("00:00:02"); PrepareMail2.Name = "PrepareMail2"; PrepareMail2.ExecuteCode += new EventHandler(PrepareMail2_ExecuteCode); CodeCloseMailProgram1.Name = "CodeCloseMailProgram1"; CodeCloseMailProgram1.ExecuteCode += new EventHandler(CodeCloseMailProgram_ExecuteCode); DelayWaitForSentMail1.Name = "DelayWaitForSentMail1"; DelayWaitForSentMail1.TimeoutDuration = TimeSpan.Parse("00:00:05"); CodePrepareMail1.Name = "CodePrepareMail1"; CodePrepareMail1.ExecuteCode += new EventHandler(CodeActivity1_ExecuteCode); SeqSendMail2.Activities.Add(PrepareMail2); SeqSendMail2.Activities.Add(DelayWaitForSentMail2); SeqSendMail2.Activities.Add(CodeCloseMailProgram2); SeqSendMail2.Name = "SeqSendMail2"; SeqSendMail3.Activities.Add(PrepareMail3); SeqSendMail3.Activities.Add(DelayWaitForSentMail3); SeqSendMail3.Activities.Add(CodeCloseMailProgram3); SeqSendMail3.Name = "SeqSendMail3"; 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.Activities.Add(SeqSendMail3); 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() { 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; }
// GET: Sequences/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Sequence sequence = db.Sequences.Find(id); if (sequence == null) { return(HttpNotFound()); } var sDisp = new SequenceDisp(); sDisp.CopyData(sequence); sDisp.Region = (from r in db.Regions where r.RegionID == sDisp.RegionID select r).First(); sDisp.SelectedActivities = (from sa in db.SequencesToActivities join a in db.Activities on sa.ActivityID equals a.ActivityID join d1 in db.Destinations on a.Dest1ID equals d1.DestinationID join d2 in db.Destinations on a.Dest2ID equals d2.DestinationID where sa.SequenceID == id orderby sa.Seqnr select new SequenceActivity { Seqnr = sa.Seqnr, Id = a.ActivityID, Activity = a, Reverted = sa.Reverted, Dest1 = d1, Dest2 = d2 }).ToList(); if (sDisp.SelectedActivities.Count() > 0) { SequenceActivity sa = sDisp.SelectedActivities[sDisp.SelectedActivities.Count() - 1]; int dID = (sa.Reverted ? sa.Dest1.DestinationID : sa.Dest2.DestinationID); // limit Activities to those that start where the last one ended sDisp.AvailableActivities = (from a in db.Activities join d1 in db.Destinations on a.Dest1ID equals d1.DestinationID join d2 in db.Destinations on a.Dest2ID equals d2.DestinationID where d1.RegionID == sequence.RegionID & (a.Dest1ID == dID | a.Dest2ID == dID) orderby a.ExperienceRating descending select new SequenceActivity { Seqnr = 0, Id = a.ActivityID, Activity = a, Reverted = false, Dest1 = d1, Dest2 = d2 }).ToList(); } else { sDisp.AvailableActivities = (from a in db.Activities join d1 in db.Destinations on a.Dest1ID equals d1.DestinationID join d2 in db.Destinations on a.Dest2ID equals d2.DestinationID where d1.RegionID == sequence.RegionID orderby a.ExperienceRating descending select new SequenceActivity { Seqnr = 0, Id = a.ActivityID, Activity = a, Reverted = false, Dest1 = d1, Dest2 = d2 }).ToList(); } ViewBag.RegionID = new SelectList(db.Regions, "RegionID", "Name", sequence.RegionID); return(View(sDisp)); }