Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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());
        }