Ejemplo n.º 1
0
        public void AddAfter(WorkFlowTemplate template, WorkType existingWorkType, WorkType newWorkType)
        {
            var workFlowNodeexisting = CreateWorkFlowTypeNode(template, existingWorkType);
            var newNodeWorkFlow      = CreateWorkFlowTypeNode(template, newWorkType);

            AddAfter(template, workFlowNodeexisting, newNodeWorkFlow);
        }
Ejemplo n.º 2
0
        private void ValidateAdd(WorkFlowTemplate template, WorkflowWorkTypeNode Node)
        {
            //vaidate rules for publish and such

            if (!CanAddWorkType(template, Node))
            {
                throw new WorkTypeAlreadyExistInWorkFlowException(Node.Name);
            }
        }
Ejemplo n.º 3
0
        public void AddWorkType(WorkFlowTemplate template, WorkType workType)
        {
            //worktype has to be published before allow to add to workflow.
            //and workflowtemplate can not be published.
            //Use an interface of IValidateAddWorkTypeForWorkFlow.Execute(template,worktype)

            var workFlowNode = CreateWorkFlowTypeNode(template, workType);

            AddWorkFlowTypeNode(template, workFlowNode);
        }
 public string StartETicketingSystem(TicketSystem TicketSystem, string Template, string userId)
 {
     try
     {
         WorkFlowTemplate WorkFlowTemplate = PSF.Get <WorkFlowTemplate>("TemplateName", Template);
         //creating process instance
         ProcessInstance pi = new ProcessInstance();
         pi.CreatedBy   = userId;
         pi.DateCreated = DateTime.Now;
         pi.TemplateId  = WorkFlowTemplate.Id;
         pi.Status      = "Activated";
         PSF.SaveOrUpdate <ProcessInstance>(pi);
         long pid = pi.Id;
         //create object with the pid for FFExport
         TicketSystem.InstanceId = pid;
         PSF.SaveOrUpdate <TicketSystem>(TicketSystem);
         string ticketNo = "ETicket-" + TicketSystem.Id;
         TicketSystem.TicketNo = ticketNo;
         PSF.SaveOrUpdate <TicketSystem>(TicketSystem);
         IList <WorkFlowStatus> WorkFlowStatusList = PSF.GetList <WorkFlowStatus>("TemplateId", WorkFlowTemplate.Id, "ActivityOrder", 1);
         foreach (WorkFlowStatus wfs in WorkFlowStatusList)
         {
             Activity NextActivity = new Activity();
             NextActivity.ActivityName     = wfs.WFStatus;
             NextActivity.ActivityFullName = wfs.Description;
             NextActivity.AppRole          = wfs.Performer;
             NextActivity.Completed        = false;
             NextActivity.Available        = true;
             NextActivity.Assigned         = false;
             NextActivity.Performer        = userId;
             NextActivity.TemplateId       = WorkFlowTemplate.Id;
             NextActivity.InstanceId       = pid;
             NextActivity.NextActOrder     = wfs.NextActOrder;
             NextActivity.ActivityOrder    = wfs.ActivityOrder;
             NextActivity.PreviousActOrder = 1;
             NextActivity.ProcessRefId     = TicketSystem.Id;
             NextActivity.CreatedDate      = DateTime.Now;
             NextActivity.BranchCode       = TicketSystem.BranchCode;
             NextActivity.DeptCode         = TicketSystem.DeptCode;
             if (wfs.IsRejectionRequired == true)
             {
                 NextActivity.IsRejApplicable = true;
             }
             PSF.SaveOrUpdate <Activity>(NextActivity);
         }
         return(TicketSystem.TicketNo);
     }
     catch (Exception) { throw; }
 }
Ejemplo n.º 5
0
        public WorkFlowTemplate CreateWorkFlowTemplate(string Name, List <WorkType> workTypes)
        {
            WorkFlowTemplate template = CreateWorkFlowTemplate(Name);

            foreach (WorkType item in workTypes)
            {
                AddWorkType(template, item);
            }

            var result = persistor.SaveOrUpdateAndPersist(template);

            if (!result.Success)
            {
                throw new PersistenceTransActionException(string.Format("Unable to save the {0} template", Name));
            }

            return(template);
        }
Ejemplo n.º 6
0
        public WorkFlowTemplate CreateWorkFlowTemplate(string Name)
        {
            if (nameMgr.IsNameAvailable(workFlowTemplatetypeForNameMgr, Name))
            {
                nameMgr.RegisterName(workFlowTemplatetypeForNameMgr, Name);

                var workflowTemplate = new WorkFlowTemplate(Name);

                var result = persistor.SaveOrUpdateAndPersist(workflowTemplate);

                if (!result.Success)
                {
                    throw new PersistenceTransActionException(string.Format("Unable to save the {0} template", Name));
                }

                return(workflowTemplate);
            }
            throw new NameAlreadyUsedException(Name, workFlowTemplatetypeForNameMgr);
        }
Ejemplo n.º 7
0
        public bool CanAddWorkType(WorkFlowTemplate template, WorkType workType)
        {
            var workFlowNode = CreateWorkFlowTypeNode(template, workType);

            return(CanAddWorkType(template, workFlowNode));
        }
Ejemplo n.º 8
0
 private bool AbleToEditTemplate(WorkFlowTemplate template)
 {
     return(true);
 }
Ejemplo n.º 9
0
 public WorkFlowInstance CreateWorkFlowInstance(WorkFlowTemplate template, IExternalMessageData messageData)
 {
     return(null);
 }
Ejemplo n.º 10
0
 public void Remove(WorkFlowTemplate template, WorkflowWorkTypeNode workflowWorkTypeNode)
 {
     template.Remove(workflowWorkTypeNode);
 }
Ejemplo n.º 11
0
 public void RemoveLast(WorkFlowTemplate template)
 {
     template.RemoveLast( );
 }
Ejemplo n.º 12
0
 public void AddAfter(WorkFlowTemplate template, WorkflowWorkTypeNode existingWorkflowWorkTypeNode, WorkflowWorkTypeNode newWorkflowWorkFlowTypeNode)
 {
     ValidateAdd(template, newWorkflowWorkFlowTypeNode);
     template.AddAfter(existingWorkflowWorkTypeNode, newWorkflowWorkFlowTypeNode);
 }
Ejemplo n.º 13
0
        public void AddLast(WorkFlowTemplate template, WorkType workType)
        {
            var workFlowNode = CreateWorkFlowTypeNode(template, workType);

            AddLast(template, workFlowNode);
        }
Ejemplo n.º 14
0
 public void AddLast(WorkFlowTemplate template, WorkflowWorkTypeNode workflowWorkFlowNode)
 {
     ValidateAdd(template, workflowWorkFlowNode);
     template.AddLast(workflowWorkFlowNode);
 }
Ejemplo n.º 15
0
 public bool CanAddWorkType(WorkFlowTemplate template, WorkflowWorkTypeNode workflowWorkType)
 {
     return(template.CanAddWorkType(workflowWorkType));
 }
Ejemplo n.º 16
0
        public void Remove(WorkFlowTemplate template, WorkType workType)
        {
            var workFlowNodeexisting = CreateWorkFlowTypeNode(template, workType);

            template.Remove(workFlowNodeexisting);
        }
Ejemplo n.º 17
0
 public void Clear(WorkFlowTemplate template)
 {
     template.Clear( );
 }
        public bool CompleteActivityTicketSystem(TicketSystem TicketSystem, string Template, string userId, string ActivityName, bool isRejection)
        {
            bool retValue = false;

            try
            {
                PSF.SaveOrUpdate <TicketSystem>(TicketSystem);
                WorkFlowTemplate WorkFlowTemplate = PSF.Get <WorkFlowTemplate>("TemplateName", Template);
                //close the current activity
                Activity CurrentActivity = PSF.Get <Activity>("InstanceId", TicketSystem.InstanceId, "ActivityName", ActivityName, "Completed", false);
                if (CurrentActivity != null)
                {
                    //if current activity doesnt need any rejection and there is no rejection then it will be completed
                    //otherwise once the rejection resolved then it will be completed
                    //this need to be obdated as waiting
                    if (CurrentActivity.IsRejApplicable == true && isRejection == true)
                    {
                        CurrentActivity.BranchCode = TicketSystem.BranchCode;
                        CurrentActivity.DeptCode   = TicketSystem.DeptCode;
                        CurrentActivity.Completed  = true;
                        CurrentActivity.Available  = false;
                        CurrentActivity.Assigned   = false;
                        CurrentActivity.Performer  = userId;
                        PSF.SaveOrUpdate(CurrentActivity);
                    }
                    else
                    {
                        Activity WaitingAct = PSF.Get <Activity>("WaitingFor", CurrentActivity.Id);
                        if (WaitingAct != null)
                        {
                            CurrentActivity.BranchCode = TicketSystem.BranchCode;
                            CurrentActivity.DeptCode   = TicketSystem.DeptCode;
                            CurrentActivity.Waiting    = false;
                            PSF.SaveOrUpdate(CurrentActivity);
                            WaitingAct.Completed = true;
                            WaitingAct.Assigned  = false;
                            WaitingAct.Available = false;
                        }
                        CurrentActivity.BranchCode = TicketSystem.BranchCode;
                        CurrentActivity.DeptCode   = TicketSystem.DeptCode;
                        CurrentActivity.Completed  = true;
                        CurrentActivity.Available  = false;
                        CurrentActivity.Assigned   = false;
                        CurrentActivity.Performer  = userId;
                        if (CurrentActivity.ActivityName == "CompleteETicket")
                        {
                            TicketSystem.IsTicketCompleted = true;
                            PSF.Update <TicketSystem>(TicketSystem);
                            ProcessInstance pi = PSF.Get <ProcessInstance>(TicketSystem.InstanceId);
                            pi.Status           = "Completed"; PSF.SaveOrUpdate <ProcessInstance>(pi);
                            TicketSystem.Status = "Completed";
                            PSF.SaveOrUpdate <TicketSystem>(TicketSystem);
                        }
                        PSF.SaveOrUpdate(CurrentActivity);
                    }
                }
                //trigger the next activity //we need to check whether parallel activities are there to complete
                //activities that are coming in the next order
                IList <WorkFlowStatus> WorkFlowStatusList = PSF.GetList <WorkFlowStatus>("TemplateId", WorkFlowTemplate.Id, "ActivityOrder", CurrentActivity.NextActOrder);
                //checking parallel activities get the current order of activities
                Dictionary <string, object> WaitCriteria = new Dictionary <string, object>();
                WaitCriteria.Add("TemplateId", WorkFlowTemplate.Id);
                WaitCriteria.Add("ActivityOrder", CurrentActivity.ActivityOrder);
                WaitCriteria.Add("InstanceId", CurrentActivity.InstanceId);
                Dictionary <long, IList <Activity> > conditionList = PSF.GetListWithSearchCriteriaCount <Activity>(0, 100, string.Empty, string.Empty, WaitCriteria);
                if (conditionList != null && conditionList.Count > 0)
                {
                    IList <Activity> conditionWaitList = conditionList.First().Value;
                    bool?            waiting           = false;
                    foreach (Activity a in conditionWaitList)
                    {
                        if (a.Completed == false && waiting == false)
                        {
                            waiting = true;
                        }
                    }
                    retValue = true;
                    if (waiting == true)
                    {
                        if (CurrentActivity.IsRejApplicable == true && isRejection == true)
                        {
                        }
                        else
                        {
                            return(retValue);
                        }
                    }
                }
                if (WorkFlowStatusList != null && WorkFlowStatusList.Count > 0)
                {
                    //if it is rejection flow then build the logic here
                    //{logic goes here }


                    foreach (WorkFlowStatus wfs in WorkFlowStatusList)
                    {
                        //Rejection Activity
                        if (CurrentActivity.IsRejApplicable == true && isRejection == true)
                        {
                            WorkFlowStatus wfsRej = PSF.Get <WorkFlowStatus>("TemplateId", WorkFlowTemplate.Id, "RejectionFor", CurrentActivity.ActivityOrder);
                            if (wfsRej != null)
                            {
                                Activity NextActivityRej = new Activity();
                                NextActivityRej.CreatedDate  = DateTime.Now;
                                NextActivityRej.ActivityName = wfsRej.WFStatus;
                                if (NextActivityRej.ActivityName == "CompleteETicket")
                                {
                                    NextActivityRej.Completed = true;
                                    //ProcessInstance pi = PSF.Get<ProcessInstance>(CallManagement.InstanceId);
                                    //pi.Status = "Completed"; PSF.SaveOrUpdate<ProcessInstance>(pi);
                                    TicketSystem.Status = NextActivityRej.ActivityName;
                                    PSF.SaveOrUpdate <TicketSystem>(TicketSystem);
                                }
                                else
                                {
                                    NextActivityRej.Completed = false;
                                }
                                NextActivityRej.ActivityFullName = wfsRej.Description;
                                NextActivityRej.AppRole          = wfsRej.Performer;

                                NextActivityRej.Performer        = userId;
                                NextActivityRej.TemplateId       = WorkFlowTemplate.Id;
                                NextActivityRej.InstanceId       = TicketSystem.InstanceId;
                                NextActivityRej.NextActOrder     = wfsRej.NextActOrder;
                                NextActivityRej.ActivityOrder    = wfsRej.ActivityOrder;
                                NextActivityRej.PreviousActOrder = wfsRej.PreviousActOrder;
                                NextActivityRej.ProcessRefId     = TicketSystem.Id;
                                NextActivityRej.RejectionFor     = CurrentActivity.Id;
                                NextActivityRej.Completed        = false;
                                NextActivityRej.Available        = true;
                                NextActivityRej.Assigned         = false;
                                NextActivityRej.BranchCode       = TicketSystem.BranchCode;
                                NextActivityRej.DeptCode         = TicketSystem.DeptCode;
                                PSF.SaveOrUpdate <Activity>(NextActivityRej);
                                TicketSystem.Status = NextActivityRej.ActivityName;
                                PSF.SaveOrUpdate <TicketSystem>(TicketSystem);
                                //CurrentActivity.WaitingFor = NextActivityRej.Id;
                                //PSF.SaveOrUpdate(CurrentActivity);
                            }
                        }
                        else
                        {
                            Activity NextActivity = new Activity();
                            NextActivity.CreatedDate = DateTime.Now;
                            if (wfs.IsRejectionRequired == true)
                            {
                                NextActivity.IsRejApplicable = true;
                            }

                            NextActivity.ActivityName     = wfs.WFStatus;
                            NextActivity.ActivityFullName = wfs.Description;
                            NextActivity.AppRole          = wfs.Performer;
                            NextActivity.Completed        = wfs.WFStatus == "Complete" ? true : false;
                            NextActivity.Available        = wfs.WFStatus != "Complete" ? true : false;
                            //NextActivity.Performer = userId;
                            NextActivity.TemplateId       = WorkFlowTemplate.Id;
                            NextActivity.InstanceId       = TicketSystem.InstanceId;
                            NextActivity.NextActOrder     = wfs.NextActOrder;
                            NextActivity.ActivityOrder    = wfs.ActivityOrder;
                            NextActivity.PreviousActOrder = wfs.PreviousActOrder;
                            NextActivity.ProcessRefId     = TicketSystem.Id;
                            NextActivity.Available        = true;
                            NextActivity.Assigned         = false;
                            NextActivity.Completed        = false;
                            NextActivity.BranchCode       = TicketSystem.BranchCode;
                            NextActivity.DeptCode         = TicketSystem.DeptCode;
                            PSF.SaveOrUpdate <Activity>(NextActivity);
                            TicketSystem.Status = NextActivity.ActivityName;
                            PSF.SaveOrUpdate <TicketSystem>(TicketSystem);
                        }
                    }
                    retValue = true;
                }
                return(retValue);
            }
            catch (Exception)
            {
                throw;
            }
        }
Ejemplo n.º 19
0
 public WorkflowWorkTypeNode CreateWorkFlowTypeNode(WorkFlowTemplate template, WorkType workType)
 {
     return(new WorkflowWorkTypeNode(workType, template));
 }