public async Task <WFStep> Add(WFStep wFStep) { _wFContext.WFSteps.Add(wFStep); await _wFContext.SaveChangesAsync(); return(wFStep); }
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); }
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)); }
//新建 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 }
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)); }
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); }