Example #1
0
        public async Task <WFStep> Add(WFStep wFStep)
        {
            _wFContext.WFSteps.Add(wFStep);
            await _wFContext.SaveChangesAsync();

            return(wFStep);
        }
Example #2
0
 public async Task <bool> Update(WFStep wFStep)
 {
     _wFContext.Update(wFStep); //Change Tracker : only change the state
     try
     {
         await _wFContext.SaveChangesAsync();
     }
     catch (Exception ex)
     {
     }
     return(true);
 }
Example #3
0
        public ActionResult Approve(int stepId)
        {
            WFStep           step  = WFStepBll.GetById(stepId);
            var              uu    = UserInfoBll.GetById(step.WFInstance.SubBy);
            ApproveViewModel model = new ApproveViewModel
            {
                StepId        = step.StepId,
                InstanceId    = step.InstanceId,
                InstanceTitle = step.WFInstance.InstanceTitle,
                Details       = step.WFInstance.Details,
                SubBy         = uu.RealName != null && uu.RealName != "" ? uu.RealName : uu.Username,
                Approve       = true //默认选中同意
            };

            ViewData["SelectList"] = GetNextIdList();
            return(View(model));
        }
Example #4
0
        //新建
        protected override void BeforeAdd(Dictionary <string, object> dic)
        {
            //表单FlowPhase字段赋值
            dic.SetValue("FlowPhase", FlowState.Create.ToString());
            //如果仅仅是保存表单
            if (!string.IsNullOrEmpty(QueryString("JustSave")) && QueryString("JustSave").ToLower() == "true")
            {
                return;
            }

            string wFDefInstId = QueryString("wFDefInstId");

            wFDefInstId.CheckNotNullOrEmpty("wFDefInstId");
            var wfDefInst = UnitOfWork.GetByKey <WFDefInst>(wFDefInstId);

            wfDefInst.CheckNotNull("wfDefInst");

            #region 创建流程实例
            WFInst wfInst = new WFInst();
            wfInst.Id          = GuidHelper.CreateTimeOrderID();
            wfInst.WFDefInstId = wFDefInstId;

            wfInst.FormInstId = dic.GetValue("Id");
            wfInst.FlowState  = FlowState.Create.ToString();
            UnitOfWork.Add <WFInst>(wfInst);
            #endregion

            #region 增加流程实例开始步骤
            WFStep step = new WFStep();
            step.Id       = GuidHelper.CreateTimeOrderID();
            step.WFInstId = wfInst.Id;
            var startNodeDefInst = wfDefInst.GetStartNode();
            startNodeDefInst.CheckNotNull("startNodeDefInst");
            step.WFNodeDefInstId = startNodeDefInst.Id;
            UnitOfWork.Add <WFStep>(step);
            #endregion

            #region  一步骤
            string nextRoutingDefInstId = QueryString("nextRoutingDefInstId");
            if (!string.IsNullOrEmpty(nextRoutingDefInstId))
            {
                GoToNextStep(nextRoutingDefInstId, step, dic);
            }
            #endregion
        }
Example #5
0
        public ActionResult ReApply(int InstanceId)
        {
            WFStep           lastStep = WFStepBll.GetList <int>(s => s.WFInstance.InstanceId == InstanceId).OrderByDescending(s => s.StepId).FirstOrDefault();
            WFInstance       instance = lastStep.WFInstance;
            var              uu       = UserInfoBll.GetById(lastStep.SubBy);
            ReApplyViewModel raView   = new ReApplyViewModel
            {
                InstanceId    = instance.InstanceId,
                InstanceTitle = instance.InstanceTitle,
                Details       = instance.Details,
                Tips          = lastStep.Tips,
                RejectBy      = uu.RealName != null && uu.RealName != "" ? uu.RealName : uu.Username,
                RejectTime    = lastStep.SubTime
            };
            var result = GetNextIdList();

            ViewData["SelectList"] = result;
            return(View(raView));
        }
Example #6
0
        public void GoToNextStep(string nextRoutingDefInstId, WFStep currentStep, Dictionary <string, object> entityDic)
        {
            var nextRoutingDefInst = UnitOfWork.GetByKey <WFRoutingDefInst>(nextRoutingDefInstId);

            nextRoutingDefInst.CheckNotNull("id为{0}的WFRoutingDefInst不存在".ReplaceArg(nextRoutingDefInstId));

            WFStep step = new WFStep();

            step.Id              = GuidHelper.CreateTimeOrderID();
            step.PreStepId       = currentStep.Id;
            step.WFNodeDefInstId = nextRoutingDefInst.ENodeDefInstId;
            step.WFInstId        = currentStep.WFInstId;

            //如果下一节点不是结束节点,必须给执行人
            var nextNodeDefInst = UnitOfWork.GetByKey <WFNodeDefInst>(nextRoutingDefInst.ENodeDefInstId);

            nextNodeDefInst.CheckNotNull("id为{0}的WFNodeDefInst不存在".ReplaceArg(nextRoutingDefInst.ENodeDefInstId));
            if (nextNodeDefInst.WFNodeType != WFNodeType.End.ToString())
            {
                string nextUserId = QueryString("nextUserId");
                nextUserId.CheckNotNullOrEmpty("nextUserId");
                string nextUserName = QueryString("nextUserName");
                nextUserName.CheckNotNullOrEmpty("nextUserName");
                step.StepUserId   = nextUserId;
                step.StepUserName = nextUserName;
                step.Name         = nextNodeDefInst.Name;
            }
            //结束
            else
            {
                entityDic.SetValue("FlowPhase", FlowState.End.ToString());
                OnFlowEnd(entityDic);
            }

            currentStep.NextStepId      = step.Id;//
            currentStep.OperateUserId   = GetCurrentUserID();
            currentStep.OperateUserName = GetCurrentUserName();
            currentStep.OperateTime     = DateTime.Now;
            UnitOfWork.Add <WFStep>(step);
        }