Beispiel #1
0
 public void OnSubWorkflowInstanceStart(SubWorkflowArgs Arg)
 {
     if (SubWorkflowInstanceStart != null)
     {
         SubWorkflowInstanceStart(null, Arg);
     }
 }
Beispiel #2
0
 public void OnSubWorkflowFinished(SubWorkflowArgs Arg)
 {
     if (SubWorkflowFinished != null)
     {
         SubWorkflowFinished(null, Arg);
     }
 }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
 void SubWorkflowStart(object sender, SubWorkflowArgs e)
 {
     if (SubWorkflowStarted != null)
     {
         SubWorkflowStarted(sender, e);
     }
 }
Beispiel #5
0
 void AllSubWorkflowFinished(object sender, SubWorkflowArgs e)
 {
     if (AllSubWorkflowsCompleted != null)
     {
         AllSubWorkflowsCompleted(sender, e);
     }
     //this.CurrentWorkflowInstanceId = e.ParentWorkflowId;
 }
Beispiel #6
0
 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;
     }
 }
Beispiel #7
0
        void SubWorkflowFinished(object sender, SubWorkflowArgs e)
        {
            // this.ParentWorkflowId = e.ParentWorkflowId;

            if (SubWorkflowCompleted != null)
            {
                SubWorkflowCompleted(sender, e);
            }

            RunWorkflow(e.ParentWorkflowId);
        }
Beispiel #8
0
 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);
     }
 }
Beispiel #9
0
        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);
            }
        }