public ActionResult AddStep(int leftPos, int topPos, string description, Guid workflowId, Guid fromStateId, Guid stepId, string comments, string joinDecision, Guid?participantId, Guid stepTypeId, bool initialState) { var wfBO = BusinessLogic.Core.GetFactory().GetInstance <IWorkflowBO>(); List <WorkflowStepDataContract> workflowStepList = (List <WorkflowStepDataContract>)Session["WorkflowStepList"]; WorkflowStepDataContract data; if (Guid.Empty.Equals(stepId)) { data = new WorkflowStepDataContract(); data.Id = Guid.NewGuid(); workflowStepList.Add(data); } else { data = workflowStepList.Where(o => o.Id.Equals(stepId)).FirstOrDefault(); } data.Description = description; data.UILeftPosition = leftPos; data.UITopPosition = topPos; data.WorkflowId = workflowId; data.JoinDecision = joinDecision; data.ParticipantId = participantId; data.FromStateId = fromStateId; data.StepTypeId = stepTypeId; data.StepType = wfBO.GetStepTypeById(stepTypeId); data.Comments = comments; data.Initial = initialState; var manualActionList = (List <ManualActionDataContract>)Session["ManualActionList"]; foreach (var item in manualActionList.Where(o => o.StepId.Equals(Guid.Empty))) { item.StepId = data.Id; } var decisionConditionList = (List <DecisionConditionDataContract>)Session["DecisionConditionList"]; foreach (var item in decisionConditionList.Where(o => o.StepId.Equals(Guid.Empty))) { item.StepId = data.Id; } var tranDecisionList = (List <TransitionDecisionDataContract>)Session["TransitionDecisionList"]; foreach (var item in tranDecisionList.Where(o => o.StepId.Equals(Guid.Empty))) { item.StepId = data.Id; } Session["WorkflowStepList"] = workflowStepList; data.ManualActionList = manualActionList; data.DecisionConditionList = decisionConditionList; data.TransitionDecisionList = tranDecisionList; string emailBody = "", emailSubject = "", emailTo = "", actionSQLProcedure = "", actionSQLCommand = "", uploadFileType = ""; Guid emailParticipantId = Guid.Empty; data.UploadFileType = uploadFileType; data.ActionSQLProcedure = actionSQLProcedure; data.ActionSQLCommand = actionSQLCommand; data.EmailParticipantId = emailParticipantId; data.EmailBody = emailBody; data.EmailSubject = emailSubject; data.EmailTo = emailTo; data.ActionSQLProcedure = actionSQLProcedure; data.ActionSQLCommand = actionSQLCommand; return(Json(new { Id = data.Id.ToString() }, JsonRequestBehavior.AllowGet)); }
public OperationResult ProcessManualStep(Guid workflowStepInstanceId, Guid stepId, string resultCode, byte[] file, string fileName) { var assignmentHandler = DataAccess.Core.GetFactory().GetInstance <IWorkflowAssignmentHandler>(); var stepInstanceHandler = DataAccess.Core.GetFactory().GetInstance <IWorkflowStepInstanceHandler>(); var stepInstance = stepInstanceHandler.GetById(workflowStepInstanceId); WorkflowStepDataContract step = this.GetStepById(stepId); step.TransitionDecisionList = this.GetStepTransitionDecisions(stepId); stepInstance.Completed = true; stepInstance.CompletedBy = Common.SessionData.ResourceId; stepInstance.CompletedOn = DateTime.Now; var assignment = assignmentHandler.GetByStepInstanceId(workflowStepInstanceId); if (file != null) { System.Data.Linq.Binary b = new System.Data.Linq.Binary(file); stepInstanceHandler.AttachFile(b, fileName, assignment.EntityInstanceId, stepId); } stepInstanceHandler.Update(stepInstance); assignmentHandler.Delete(assignment); bool matched = false; foreach (var item in step.TransitionDecisionList) { if (item.Code.Equals(resultCode)) { var transition = this.GetStepTransitionById(item.TransitionId); var newStepInstance = new WorkflowStepInstanceDataContract(); newStepInstance.StepId = transition.ToStepId; newStepInstance.Id = Guid.NewGuid(); newStepInstance.WorkflowId = transition.WorkflowId; newStepInstance.WorkflowInstanceId = stepInstance.WorkflowInstanceId; stepInstanceHandler.Add(newStepInstance); matched = true; } } if (!matched) { var transitionList = this.GetStepsTransitions(step.WorkflowId, step.FromStateId); transitionList = transitionList.Where(o => o.FromStepId.Equals(step.Id)).ToList(); foreach (var item in transitionList) { var newStepInstance = new WorkflowStepInstanceDataContract(); newStepInstance.StepId = item.ToStepId; newStepInstance.Id = Guid.NewGuid(); newStepInstance.WorkflowId = item.WorkflowId; newStepInstance.WorkflowInstanceId = stepInstance.WorkflowInstanceId; stepInstanceHandler.Add(newStepInstance); } } return(new OperationResult()); }