public void InitData() { clear(); using (MyDB mydb = new MyDB()) { WFTemplate wft = new WFTemplate { ID = Guid.NewGuid().ToString(), Name = "费用申请流程", BuizCode = "ApplyExpense", BuizName = "费用申请", Creator = mydb.Users.First(u => u.Code.Equals("chw")), CreateTime = DateTime.Now, Nodes = new WFNode[] { new WFNodeStart { Name="开始", Next=null }, new WFNodeHandle { Name="创建申请", ViewCode="createForm", ViewName="创建表单", Actions = new [] { new WFNodeAction { Code="save", Name="保存", NextNode=null //为空表示仍在停留在此节点中 }, new WFNodeAction { Code="submit", Name="提交", NextNode=null //这个不应该为NULL,但所需的节点还未创建 }, }, Subjects = new [] { mydb.Users.First(u => u.Code.Equals("chw")), mydb.Users.First(u => u.Code.Equals("lilin")) } }, new WFNodeHandle { Name="部门确认", ViewCode="auditForm", ViewName="审核表单", Actions = new [] { new WFNodeAction { Code="pass", Name="确认", NextNode=null //为空表示仍在停留在此节点中 }, new WFNodeAction { Code="deny", Name="否决", NextNode=null //这个不应该为NULL,但所需的节点还未创建 }, }, Subjects = new [] { mydb.Users.First(u => u.Code.Equals("chw")) } }, new WFNodeHandle { Name="副总审核", ViewCode="auditForm", ViewName="审核表单", Actions = new [] { new WFNodeAction { Code="pass", Name="确认", NextNode=null //为空表示仍在停留在此节点中 }, new WFNodeAction { Code="deny", Name="否决", NextNode=null //这个不应该为NULL,但所需的节点还未创建 }, }, Subjects = new [] { mydb.Users.First(u => u.Code.Equals("chw")) } }, new WFNodeXORSplit { Name="费用金额分支", //Next = null, //缺省节点 WFNodeExpressions = new [] { new WFNodeExpression { Expression = "{费用金额}>10000", Description = "费用金额大于10000元时,需要总经理审核", Next = null, OrderNO = 1 }, new WFNodeExpression { Expression = "{费用金额}>5000", Description = "费用金额大于5000元时,需要通知监察科", Next = null, OrderNO = 3 } } }, new WFNodeHandle { Name="总经理审核", ViewCode="auditForm", ViewName="审核表单", Actions = new [] { new WFNodeAction { Code="pass", Name="同意", NextNode=null //为空表示仍在停留在此节点中 }, new WFNodeAction { Code="deny", Name="不同意", NextNode=null //这个不应该为NULL,但所需的节点还未创建 }, }, Subjects = new [] { mydb.Users.First(u => u.Code.Equals("lxx")) } }, new WFNodeFinish { ID = Guid.NewGuid().ToString(), Name="结束" } } }; mydb.WFTemplates.Add(wft); wft.Nodes.OfType<WFNodeStart>().First().Next = wft.Nodes.First(n => n.Name.Equals("创建申请")); wft.Nodes.OfType<WFNodeHandle>().First(n => n.Name.Equals("创建申请")).Actions.First(a => a.Code.Equals("submit")).NextNode = wft.Nodes.First(n => n.Name.Equals("部门确认")); wft.Nodes.OfType<WFNodeHandle>().First(n => n.Name.Equals("部门确认")).Actions.First(a => a.Code.Equals("pass")).NextNode = wft.Nodes.First(n => n.Name.Equals("副总审核")); wft.Nodes.OfType<WFNodeHandle>().First(n => n.Name.Equals("部门确认")).Actions.First(a => a.Code.Equals("deny")).NextNode = wft.Nodes.OfType<WFNodeFinish>().First(); wft.Nodes.OfType<WFNodeHandle>().First(n => n.Name.Equals("副总审核")).Actions.First(a => a.Code.Equals("pass")).NextNode = wft.Nodes.First(n => n.Name.Equals("费用金额分支")); wft.Nodes.OfType<WFNodeHandle>().First(n => n.Name.Equals("副总审核")).Actions.First(a => a.Code.Equals("deny")).NextNode = wft.Nodes.OfType<WFNodeFinish>().First(); //wft.Nodes.OfType<WFNodeXORSplit>().First(n => n.Name.Equals("费用金额分支")).Next = wft.Nodes.OfType<WFNodeFinish>().First(); wft.Nodes.OfType<WFNodeXORSplit>().First(n => n.Name.Equals("费用金额分支")).WFNodeExpressions.First(exp => exp.Expression.Equals("{费用金额}>10000")).Next = wft.Nodes.First(n => n.Name.Equals("总经理审核")); wft.Nodes.OfType<WFNodeXORSplit>().First(n => n.Name.Equals("费用金额分支")).WFNodeExpressions.First(exp => exp.Expression.Equals("{费用金额}>5000")).Next = wft.Nodes.First(n => n.Name.Equals("总经理审核")); wft.Nodes.OfType<WFNodeHandle>().First(n => n.Name.Equals("总经理审核")).Actions.First(a => a.Code.Equals("pass")).NextNode = wft.Nodes.OfType<WFNodeFinish>().First(); wft.Nodes.OfType<WFNodeHandle>().First(n => n.Name.Equals("总经理审核")).Actions.First(a => a.Code.Equals("deny")).NextNode = wft.Nodes.OfType<WFNodeFinish>().First(); try { mydb.SaveChanges(); } catch (Exception e) { } } }
public void Append() { using (MyDB mydb = new MyDB()) { WFTemplate template = new WFTemplate { ID = Guid.NewGuid().ToString(), BuizCode = "GenericBuiz", BuizName = "通用业务", Name = "通用业务模板一", Creator = mydb.Users.First(u => u.Code == "chw"), CreateTime = DateTime.Now }; mydb.WFTemplates.Add(template); GenericModel model = new GenericModel { Name = "test1", Model = @"[ {code:'ID',name:'ID',type:'string'}, {code:'amount',name:'申请金额(元)',type:'numeric'}, {code:'description',name:'申请说明',type:'string'}, {code:'applyTime',name:'申请时间',type:'date'}, {code:'detail',name:'明细',type:'array',ctype:[ {code:'ID',name:'ID',type:'string'}, {code:'item',name:'项目',type:'string'}, {code:'item',name:'费用(元)',type:'numeric'}, ] } ]", Views = new[] { new GenericView { Name="view1", Content=@"<script type='text/javascript'> var data={}; </script> <input type='hidden' name='ID' id='ID' value=''/> <table border='1'> <tr> <td><span>申请金额(元)</span></td><td><input type='text' name='amount' id='amount' value=''/></td></tr> <tr> <td><span>申请说明</span></td><td><input type='text' name='description' id='description' value=''/></td></tr> <tr> <td><span>申请时间</span></td><td><input type='text' name='applyTime' id='applyTime' value=''/></td> </tr> </table> <!--以下是明细-->" }, new GenericView { Name = "view2", Content="" } }, Buizs = new[] { new GenericBuiz { Name="业务实例1", Data="", Creator = mydb.Users.First(u => u.Code == "chw"), WFTemplate = template }, new GenericBuiz { Name="业务实例2", Data="", Creator = mydb.Users.First(u => u.Code == "chw"), WFTemplate = template } } }; mydb.GenericModels.Add(model); mydb.SaveChanges(); } }
public ActionResult saveWFTemplate() { string id = Request.Form["id"]; string Name = Request.Form["Name"]; string BuizCode = Request.Form["BuizCode"]; string BuizName = Request.Form["BuizName"]; using (MyDB mydb = new MyDB()) { WFNodeFinish finish = new WFNodeFinish { ID = Guid.NewGuid().ToString(), Name = "结束节点", PositionX = 200, PositionY = 40 }; WFTemplate wft = new WFTemplate { ID = Guid.NewGuid().ToString(), Name = Name, BuizCode = BuizCode, BuizName = BuizName, Creator = mydb.Users.Find(this.User.Identity.Name), CreateTime = DateTime.Now, Nodes = new WFNode[] { new WFNodeStart { ID = Guid.NewGuid().ToString(), PositionX = 100, PositionY = 40, Name = "开始节点", Next = finish }, finish } }; mydb.WFTemplates.Add(wft); mydb.SaveChanges(); return Json(new { success = true }); } }
// // GET: /workflow/Instance/ public Type getType(WFTemplate template) { //System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom(Server.MapPath("~/bin/EntityObjectLib.dll")); System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom(Server.MapPath("~/bin/RTBuizModel.dll")); return ass.GetType("EntityObjectLib." + template.BuizCode); }