コード例 #1
0
ファイル: WFTest.cs プロジェクト: uwitec/mb-oa
        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)
                {

                }
            }
        }
コード例 #2
0
ファイル: GenericBuizTest.cs プロジェクト: uwitec/mb-oa
        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();
            }
        }
コード例 #3
0
ファイル: DefineController.cs プロジェクト: uwitec/mb-oa
        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 });
            }
        }
コード例 #4
0
ファイル: InstanceController.cs プロジェクト: uwitec/mb-oa
 //
 // 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);
 }