public ActionResult addNodeHandle() { string templateId = Request.Form["templateId"]; string id = Request.Form["id"]; string Name = Request.Form["Name"]; string ViewCode = Request.Form["ViewCode"]; bool IsCountersign = Request.Form["IsCountersign"] != null; string[] Handlers = Request.Form["Handlers"].Split(",".ToCharArray()); int x = int.Parse(Request.Form["x"]); int y = int.Parse(Request.Form["y"]); if (Session[templateId] != null) { MyDB mydb = Session[templateId] as MyDB; WFTemplate template = mydb.WFTemplates.Find(templateId); WFNodeHandle node = new WFNodeHandle { ID = Guid.NewGuid().ToString(), PositionX = x, PositionY = y, Name = Name, ViewCode = ViewCode, IsCountersign = IsCountersign, WFTemplate = template, Subjects = mydb.Subjects.Where(s => Handlers.Contains(s.ID)).ToArray() }; mydb.WFNodeHandles.Add(node); return(Json(new { success = true, data = node.ID })); } return(Json(new { success = false })); }
/// <summary> /// URL: /workflow/Instance/create/id /// id: 模板ID /// 发起流程 /// </summary> /// <returns></returns> public ActionResult create(string id) { using (MyDB mydb = new MyDB()) { WFTemplate template = mydb.WFTemplates.Find(id); WFNodeStart start = template.Nodes.OfType <WFNodeStart>().First(); WFNodeHandle next = start.Next as WFNodeHandle; if (next is WFNodeHandle) { ((WFNodeHandle)next).Actions.Select(a => a); } Type t = getType(template); EntityObjectLib.WFInst inst = Activator.CreateInstance(t) as EntityObjectLib.WFInst; inst.WFTemplate = template; inst.State = "处理中"; inst.WFInstNodes = new WFInstNode[] { new WFInstNode { WFNode = next, State = "处理中", EntryTime = DateTime.Now, WFInst = inst } }; // 这里有一个设计约束:开始节点后一定是个处理节点 return(View("toHandle", inst.CurrentNode)); } }