public void OnSubWorkflowInstanceStart(SubWorkflowArgs Arg) { if (SubWorkflowInstanceStart != null) { SubWorkflowInstanceStart(null, Arg); } }
public void OnSubWorkflowFinished(SubWorkflowArgs Arg) { if (SubWorkflowFinished != null) { SubWorkflowFinished(null, Arg); } }
public void StartWorkflow(Type workflowType, Dictionary <string, object> inparms, Guid caller, IComparable qn, ActivityExecutionContext context) { this.ParentId = caller; WorkflowRuntime wr = this.Runtime; CallContext.SetData(CallingWorkflowIDProperty.Name, caller); CallContext.SetData(CallingWorkflowQueueNameProperty.Name, qn); //wr.WorkflowCreated += new EventHandler<WorkflowEventArgs>(wr_WorkflowCreated); WorkflowInstance wi = wr.CreateWorkflow(workflowType, inparms); // wr.WorkflowCompleted += new EventHandler<WorkflowCompletedEventArgs>(wr_WorkflowCompleted); _childWorkflows.Add(wi.InstanceId, new ChildData(caller, qn)); //SubWorkflowArgs arg = new SubWorkflowArgs(wi.InstanceId, wi.InstanceId, caller, null); //this.OnStartSubWorkflow(arg); wi.Start(); //// Call Workflow Service when the SubWorkflow Started //WorkflowServices workflowServicde = context.GetService<WorkflowServices>(); SubWorkflowArgs arg = new SubWorkflowArgs(wi.InstanceId, wi.InstanceId, caller, null); this.OnSubWorkflowInstanceStart(arg); ////////////////////// ManualWorkflowSchedulerService ss = wr.GetService <ManualWorkflowSchedulerService>(); if (ss != null) { ss.RunWorkflow(wi.InstanceId); } }
void SubWorkflowStart(object sender, SubWorkflowArgs e) { if (SubWorkflowStarted != null) { SubWorkflowStarted(sender, e); } }
void AllSubWorkflowFinished(object sender, SubWorkflowArgs e) { if (AllSubWorkflowsCompleted != null) { AllSubWorkflowsCompleted(sender, e); } //this.CurrentWorkflowInstanceId = e.ParentWorkflowId; }
void Runtime_WorkflowUnloaded(object sender, WorkflowEventArgs e) { if (ParentId != Guid.Empty && ParentId != e.WorkflowInstance.InstanceId) { SubWorkflowArgs arg = new SubWorkflowArgs(e.WorkflowInstance.InstanceId, e.WorkflowInstance.InstanceId, ParentId, null); this.OnSubWorkflowStart(arg); ParentId = Guid.Empty; } }
void SubWorkflowFinished(object sender, SubWorkflowArgs e) { // this.ParentWorkflowId = e.ParentWorkflowId; if (SubWorkflowCompleted != null) { SubWorkflowCompleted(sender, e); } RunWorkflow(e.ParentWorkflowId); }
void WorkflowCompleted(object o, WorkflowCompletedEventArgs e) { if (_childWorkflows.ContainsKey(e.WorkflowInstance.InstanceId)) //بعد از ایجاد زیر ورک فلوها و بدون بسته شدن اپلیکیشن لیست کیوهای زیر ورک فلوها درون لیست باقی میماند { Guid parentWorkflowId = Enqueue(e.WorkflowInstance.InstanceId, _childWorkflows[e.WorkflowInstance.InstanceId], e.OutputParameters); SubWorkflowArgs arg = new SubWorkflowArgs(e.WorkflowInstance.InstanceId, e.WorkflowInstance.InstanceId, parentWorkflowId, null); this.OnSubWorkflowFinished(arg); } else { this.OnWorkflowCompelte(e); } }
public void OnFinishCallworkflowActivity(Guid instanceId) { WorkflowInstance instance = this.Runtime.GetWorkflow(instanceId); ReadOnlyCollection <WorkflowQueueInfo> qeue = instance.GetWorkflowQueueData(); bool flag = true; foreach (WorkflowQueueInfo item in qeue) { //string regExp = instanceId + ":" + @"\w*:\w*"; //if (Regex.IsMatch(item.QueueName.ToString(), regExp)) if (item.QueueName.ToString().Contains("ThisIsSubWorkflowSupportForkJoin") && item.QueueName.ToString().Contains(instanceId.ToString())) { flag = false; } // QueueName "2dbe6430-4ef3-432e-af2c-954d2a5cfa88:Subworkflow2:callWorkflowActivity1" System.IComparable {string} } if (flag) { SubWorkflowArgs arg = new SubWorkflowArgs(Guid.Empty, Guid.Empty, instanceId, null); this.OnAllSubWorkflowFinished(arg); } }