public ActionResult GetInstanceByID() { string ID = Request["ID"] as string; int t = int.Parse(Request["type"]); int id; if (t == 0) { id = int.Parse(Session["InstanceID"] as string); } else { id = int.Parse(Session["SelectedInstanceID"] as string); } //当前流程实例 var data = WF_InstanceBLL.GetEntities(u => u.ID == id).Select(u => new { u.ID, u.InstanceName, u.WF_TempID, u.StartTime, u.StartBy, u.Content, } ).FirstOrDefault(); string callback = Request["callback"]; JavaScriptSerializer jss = new JavaScriptSerializer(); string json = jss.Serialize(data); return(JavaScript(callback + "(" + json + ")")); }
public ActionResult GetMyUnCheck() { var runEnum = (short)WFStepEnum.UnProecess; var instanceEnum = (short)WF_InstanceEnum.Processing; var Steps = WF_StepBLL.GetEntities(s => s.StepStaus == runEnum && s.ProcessBy == LoginUser.ID).ToList(); //当前待审批的所有Id var instanceIds = (from s in Steps select s.WF_InstanceID).Distinct(); //获取当前待审批流程的数据 var data = WF_InstanceBLL.GetEntities(u => instanceIds.Contains(u.ID) && u.Status == instanceEnum).Select(u => new { u.ID, u.InstanceName, u.WF_TempID, u.StartTime, u.StartBy, u.Status }).ToList(); string callback = Request["callback"]; JavaScriptSerializer jss = new JavaScriptSerializer(); string json = jss.Serialize(data); return(JavaScript(callback + "(" + json + ")")); }
public ActionResult ShowInstance(int id) { Session["InstanceID"] = id.ToString(); ViewData.Model = WF_InstanceBLL.GetEntities(u => u.ID == id).FirstOrDefault(); //获得所有用户 ViewBag.AllUsers = UserInfoBLL.GetEntities(u => u.DelFlag == DelFlag).ToList(); return(View()); }
//自己发起的流程 public ActionResult ShowMyCheck() { var data = WF_InstanceBLL.GetEntities(i => i.StartBy == LoginUser.ID).ToList(); //获得所有用户 ViewBag.AllUsers = UserInfoBLL.GetEntities(u => u.DelFlag == DelFlag).ToList(); return(View(data)); }
public ActionResult GetCurrentInstanceStepID() { int id = int.Parse(Session["SelectedInstanceID"] as string); var data = WF_InstanceBLL.GetEntities(u => u.ID == id).FirstOrDefault(); var currentStep = data.WF_Step.Where(s => s.StepStaus == 0).FirstOrDefault(); string callback = Request["callback"]; JavaScriptSerializer jss = new JavaScriptSerializer(); string json = jss.Serialize(currentStep.ID.ToString()); return(JavaScript(callback + "(" + json + ")")); }
//显示已经审批(还没结束的流程) public ActionResult ShowMyChecked() { var runEnum = (short)WFStepEnum.Processed; var Steps = WF_StepBLL.GetEntities(s => s.StepStaus == runEnum && s.ProcessBy == LoginUser.ID).ToList(); //当前已经审批的所有Id var instanceIds = (from s in Steps select s.WF_InstanceID).Distinct(); var data = WF_InstanceBLL.GetEntities(u => instanceIds.Contains(u.ID)).ToList(); //获得所有用户 ViewBag.AllUsers = UserInfoBLL.GetEntities(u => u.DelFlag == DelFlag).ToList(); return(View(data)); }
//审批当前流程 /// <summary> /// 审批 /// </summary> /// <param name="stepId">当前审批步骤id</param> /// <param name="isPass">是否通过</param> /// <param name="Comment">审批意见</param> /// <param name="flowTo">流转到谁</param> /// <returns></returns> public ActionResult DoCheck(int stepId, bool isPass, string Comment, int flowTo) { //1.更新当前步骤 var step = WF_StepBLL.GetEntities(u => u.ID == stepId).FirstOrDefault(); step.ProcessResult = isPass ? "通过" : "不通过"; step.StepStaus = (short)WFStepEnum.Processed; step.ProcessContent = Comment; step.ProcessTime = DateTime.Now; WF_StepBLL.Update(step); //初始化下一个步骤 WF_Step nextStep = new WF_Step(); nextStep.IsEndStep = false; nextStep.IsStartStep = false; nextStep.ProcessBy = flowTo; nextStep.SubTime = DateTime.Now; nextStep.ProcessResult = string.Empty; nextStep.StepStaus = (short)WFStepEnum.UnProecess; nextStep.StepName = string.Empty; nextStep.WF_InstanceID = step.WF_InstanceID; nextStep.ProcessTime = DateTime.Now; nextStep.ProcessContent = string.Empty; WF_StepBLL.Add(nextStep); //根据流程类型 来初始化对应流程 反射 实现 var wfinstance = WF_InstanceBLL.GetEntities(u => u.ID == step.WF_InstanceID).FirstOrDefault(); var wftemp = WF_TempBLL.GetEntities(u => u.ID == wfinstance.WF_TempID).FirstOrDefault(); //让书签继续往下执行 var Value = isPass ? 1 : 0; WorkflowApplicationHelper.ResumeBookMark( //new FincallActivity(), Assembly.Load("HeiMa8.OA.WorkFlow").CreateInstance(wftemp.ActityType) as Activity, step.WF_Instance.WFInstanceId, step.StepName, Value); return(Content("ok")); }
//审批的情况 public ActionResult ShowCheck(int id) { Session["SelectedInstanceID"] = id.ToString(); //当前流程的详情 var data = WF_InstanceBLL.GetEntities(u => u.ID == id).FirstOrDefault(); ViewData.Model = data; var currentStep = data.WF_Step.Where(s => s.StepStaus == 0).FirstOrDefault(); //获得所有用户 ViewBag.AllUsers = UserInfoBLL.GetEntities(u => u.DelFlag == DelFlag).ToList(); ViewData["flowTo"] = UserInfoBLL.GetEntities(u => u.DelFlag == DelFlag).ToList() .Select(u => new SelectListItem { Selected = false, Text = u.UName, Value = u.ID + "" }); return(View()); }
public ActionResult GetMyCheck() { string callback = Request["callback"]; JavaScriptSerializer jss = new JavaScriptSerializer(); //获取当前用户发起的流程 var data = WF_InstanceBLL.GetEntities(i => i.StartBy == LoginUser.ID).Select(u => new { u.ID, u.InstanceName, u.WF_TempID, u.StartTime, u.StartBy, u.Status }).ToList(); string json = jss.Serialize(data); return(JavaScript(callback + "(" + json + ")")); }
public ActionResult GetAllTypeCount() { #region 获取当前用户发起的流程个数 MyCheckCount var MyCheckCount = WF_InstanceBLL.GetEntities(i => i.StartBy == LoginUser.ID).ToList().Count; #endregion #region 获取当前用户已审批的流程个数 MyCheckedCount var runEnum = (short)WFStepEnum.Processed; var Steps = WF_StepBLL.GetEntities(s => s.StepStaus == runEnum && s.ProcessBy == LoginUser.ID).ToList(); //当前已经审批的所有Id var instanceIds = (from s in Steps select s.WF_InstanceID).Distinct(); var MyCheckedCount = WF_InstanceBLL.GetEntities(u => instanceIds.Contains(u.ID)).ToList().Count; #endregion #region 获取当前用户待审批的流程个数 MyUnCheckCount var runEnumed = (short)WFStepEnum.UnProecess; var instanceEnum = (short)WF_InstanceEnum.Processing; var Stepsed = WF_StepBLL.GetEntities(s => s.StepStaus == runEnumed && s.ProcessBy == LoginUser.ID).ToList(); //当前待审批的所有Id var instanceIdsed = (from s in Stepsed select s.WF_InstanceID).Distinct(); var MyUnCheckCount = WF_InstanceBLL.GetEntities(u => instanceIdsed.Contains(u.ID) && u.Status == instanceEnum).ToList().Count; #endregion string callback = Request["callback"]; JavaScriptSerializer jss = new JavaScriptSerializer(); var data = new { CheckCount = MyCheckCount, CheckedCount = MyCheckedCount, UnCheckCount = MyUnCheckCount }; string json = jss.Serialize(data); return(JavaScript(callback + "(" + json + ")")); }
public ActionResult Add(WF_Instance instance, int id, int flowTo) { var CurrentUserId = LoginUser.ID; //1->在工作流实例表中添加一条数据 instance.DelFlag = DelFlag; instance.StartTime = DateTime.Now; instance.FilePath = string.Empty; instance.StartBy = CurrentUserId; //当前用户 也就是发起人 instance.Level = 0; //紧急程度 instance.Status = (short)WF_InstanceEnum.Processing; instance.WF_TempID = id; //WF_TempBLL.Add(instance); WF_InstanceBLL.Add(instance); //2->在步骤表里面添加两条步骤 //2->1 一个当前已处理的步骤 WF_Step startStep = new WF_Step(); startStep.WF_InstanceID = instance.ID; startStep.SubTime = DateTime.Now; startStep.StepName = "提交申请表单"; startStep.IsEndStep = false; startStep.IsStartStep = true; startStep.ProcessBy = CurrentUserId; startStep.ProcessContent = "提交申请"; startStep.ProcessResult = "通过"; startStep.ProcessTime = DateTime.Now; startStep.StepStaus = (short)WFStepEnum.Processed; WF_StepBLL.Add(startStep); //2->2 下一步谁审批的步骤 。项目经理审批 WF_Step nextStep = new WF_Step(); nextStep.WF_InstanceID = instance.ID; nextStep.SubTime = DateTime.Now; nextStep.ProcessTime = DateTime.Now; nextStep.ProcessContent = string.Empty; nextStep.IsStartStep = false; nextStep.IsEndStep = false; nextStep.ProcessBy = flowTo; nextStep.ProcessResult = ""; nextStep.StepName = ""; nextStep.StepStaus = (short)WFStepEnum.UnProecess; WF_StepBLL.Add(nextStep); //3->启动工作流 //根据流程类型 来初始化对应流程 spring 实现 //通过容器创建一个对象 依赖注入只能在子类中实现 // IApplicationContext ctx = ContextRegistry.GetContext(); var wftemp = WF_TempBLL.GetEntities(u => u.ID == id).FirstOrDefault(); //Activity activityType = ctx.GetObject(wftemp.ActityType.Split('.')[3]) as Activity; var wfApp = WorkflowApplicationHelper.CreateWorkflowApp( //new FincallActivity(), Assembly.Load("HeiMa8.OA.WorkFlow").CreateInstance(wftemp.ActityType) as Activity, null); instance.WFInstanceId = wfApp.Id; WF_InstanceBLL.Update(instance); return(Content("ok")); }