public bool DeleteFlowTemplate(FlowTemplate element)
        {
            string sql = "delete from FlowTemplate where ID=" + element.ID;
            int    r   = sqlHelper.ExecuteSql(sql);

            return(r > 0);
        }
Example #2
0
        public int AddTaskInfo(TaskInfo element)
        {
            string sql = "insert into TaskInfo (EntityId, FlowID, Sponsor, Remark) values (" + element.EntityId + ", " + element.Flow.ID + ", '" + element.Sponsor + "', '" + element.Remark + "'); select SCOPE_IDENTITY()";
            object obj = sqlHelper.ExecuteSqlReturn(sql);
            int    R;

            if (obj != null && obj != DBNull.Value && int.TryParse(obj.ToString(), out R))
            {
                Flow flow = FlowLogic.GetInstance().GetFlow(element.Flow.ID);
                if (flow != null)
                {
                    FlowTemplate temp = FlowTemplateLogic.GetInstance().GetFlowTemplate(flow.Template.ID);
                    if (temp != null)
                    {
                        Alert alert = new Alert();
                        alert.提醒对象 = string.Join(",", temp.Stages[flow.CurrentIndex].Executors.ToArray());
                        alert.提醒方式 = 提醒方式.执行流程;
                        alert.提醒时间 = DateTime.Now;
                        alert.提醒项目 = flow.Name;
                        alert.备注   = flow.ID.ToString();
                        AlertLogic.GetInstance().AddAlert(alert);
                        Alert alert2 = new Alert();
                        alert2.提醒对象 = string.Join(",", temp.Stages[flow.CurrentIndex].Approvers.ToArray());
                        alert2.提醒方式 = 提醒方式.审批流程;
                        alert2.提醒时间 = DateTime.Now;
                        alert2.提醒项目 = flow.Name;
                        alert.备注    = flow.ID.ToString();
                        AlertLogic.GetInstance().AddAlert(alert2);
                        return(R);
                    }
                }
            }
            return(0);
        }
Example #3
0
        public Flow GetFlow(int id)
        {
            string    sql = "select * from Flow where ID=" + id;
            DataTable dt  = sqlHelper.Query(sql);

            if (dt != null && dt.Rows.Count > 0)
            {
                int              templateId  = Convert.ToInt32(dt.Rows[0]["TemplateID"]);
                FlowTemplate     template    = FlowTemplateLogic.GetInstance().GetFlowTemplate(templateId);
                List <TaskStage> stages      = new List <TaskStage>();
                string           stagesIds   = dt.Rows[0]["Stages"].ToString();
                string[]         stageIdList = stagesIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                foreach (string stageId in stageIdList)
                {
                    TaskStage stage = TaskStageLogic.GetInstance().GetTaskStage(Convert.ToInt32(stageId));
                    if (stage != null)
                    {
                        stages.Add(stage);
                    }
                }
                Flow element = new Flow(Convert.ToInt32(dt.Rows[0]["ID"]), dt.Rows[0]["Name"].ToString(), template, Convert.ToInt32(dt.Rows[0]["CurrentIndex"]), dt.Rows[0]["Remark"].ToString(), stages);
                return(element);
            }
            return(null);
        }
        public bool UpdateFlowTemplate(FlowTemplate element)
        {
            string sql = "update FlowTemplate set Name='" + element.Name + "', Stages='" + element.StageIds + "' where ID=" + element.ID;
            int    r   = sqlHelper.ExecuteSql(sql);

            return(r > 0);
        }
Example #5
0
 private void button2_Click(object sender, EventArgs e)
 {
     if (listBox1.SelectedIndex > -1)
     {
         if (MessageBox.Show("确定要删除该流程模板么?", "删除提醒", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK)
         {
             FlowTemplate temp = (FlowTemplate)listBox1.SelectedItem;
             if (temp != null)
             {
                 if (FlowTemplateLogic.GetInstance().DeleteFlowTemplate(temp))
                 {
                     LoadAllTemps();
                     MessageBox.Show("删除成功!");
                 }
                 else
                 {
                     MessageBox.Show("删除失败!");
                 }
             }
         }
     }
     else
     {
         MessageBox.Show("请先选定要删除的流程模板!");
     }
 }
Example #6
0
        public List <Flow> GetAllFlows()
        {
            List <Flow> elements = new List <Flow>();
            string      sql      = "select * from Flow order by ID desc";
            DataTable   dt       = sqlHelper.Query(sql);

            if (dt != null && dt.Rows.Count > 0)
            {
                TaskStageLogic tsl = TaskStageLogic.GetInstance();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    FlowTemplate     template    = FlowTemplateLogic.GetInstance().GetFlowTemplate(Convert.ToInt32(dt.Rows[i]["TemplateID"]));
                    List <TaskStage> stages      = new List <TaskStage>();
                    string           stagesIds   = dt.Rows[i]["Stages"].ToString();
                    string[]         stageIdList = stagesIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                    foreach (string stageId in stageIdList)
                    {
                        TaskStage stage = TaskStageLogic.GetInstance().GetTaskStage(Convert.ToInt32(stageId));
                        if (stage != null)
                        {
                            stages.Add(stage);
                        }
                    }
                    Flow element = new Flow(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), template, Convert.ToInt32(dt.Rows[i]["CurrentIndex"]), dt.Rows[i]["Remark"].ToString(), stages);
                    elements.Add(element);
                }
            }
            return(elements);
        }
Example #7
0
        public void Should_return_first_step_if_no_steps_are_completed()
        {
            // arrange
            var steps = new List <IStep> {
                new StartStep {
                    Id = 1
                }, new CollectDataStep {
                    Id = 2
                }, new StopStep {
                    Id = 3
                }
            };
            var template = new FlowTemplate {
                Steps = steps
            };
            var sut = new FlowInstance {
                Template = template
            };

            // act
            var result = sut.NextStep();

            // assert
            Assert.NotNull(result);
            Assert.IsType <StartStep>(result);
        }
        public List <FlowTemplate> GetAllFlowTemplates()
        {
            List <FlowTemplate> elements = new List <FlowTemplate>();
            string    sql = "select * from FlowTemplate";
            DataTable dt  = sqlHelper.Query(sql);

            if (dt != null && dt.Rows.Count > 0)
            {
                TaskStageTemplateLogic tsl = TaskStageTemplateLogic.GetInstance();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    List <TaskStageTemplate> stages = new List <TaskStageTemplate>();
                    string        stageIds          = dt.Rows[i]["Stages"].ToString();
                    List <string> idList            = Flow.GetSatges(stageIds);
                    foreach (string id in idList)
                    {
                        TaskStageTemplate stage = tsl.GetTaskStageTemplate(Convert.ToInt32(id));
                        if (stage != null)
                        {
                            stages.Add(stage);
                        }
                    }
                    FlowTemplate element = new FlowTemplate(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), stages);
                    elements.Add(element);
                }
            }
            return(elements);
        }
Example #9
0
 public ActionResult EditKendo([DataSourceRequest] DataSourceRequest request, FlowTemplate item)
 {
     if (ModelState.IsValid)
     {
         _FlowTemplateService.Update(item);
         return(Json(ModelState.ToDataSourceResult()));
     }
     return(Json(ModelState.ToDataSourceResult()));
 }
Example #10
0
 public ActionResult Edit(FlowTemplate item)
 {
     if (ModelState.IsValid)
     {
         _FlowTemplateService.Update(item);
         return(RedirectToAction("Index"));
     }
     return(View(item));
 }
Example #11
0
 public bool Delete(FlowTemplate item)
 {
     if (item == null)
     {
         return(false);
     }
     _unitOfWork.FlowTemplateRepository.Delete(item);
     _unitOfWork.Save();
     return(true);
 }
Example #12
0
        public ActionResult Delete(int id = 0)
        {
            FlowTemplate item = _FlowTemplateService.FindById(id);

            if (item == null)
            {
                return(HttpNotFound());
            }
            return(View(item));
        }
 public ActionResult EditFlowJSON(FlowTemplate item)
 {
     if (item != null)
     {
         _FlowTemplateService.Update(item);
         // FlowTemplateID
         return(Json(toFlowTemplatePOCO(item), JsonRequestBehavior.AllowGet));
     }
     return(Json("{}"));
 }
 private FlowTemplatePOCO toFlowTemplatePOCO(FlowTemplate item)
 {
     return(new FlowTemplatePOCO()
     {
         FinalStateID = item.FinalStateID,
         FlowTemplateID = item.FlowTemplateID,
         InitialStateID = item.InitialStateID,
         ParentProcessTemplateID = item.ParentProcessTemplateID,
         Name = item.Name
     });
 }
Example #15
0
        private void button1_Click(object sender, EventArgs e)
        {
            FlowTemplate template = new FlowTemplate(0, textBox1.Text.Trim(), flowTemplateControl1.Nodes);
            int          i        = FlowTemplateLogic.GetInstance().AddFlowTemplate(template);

            if (i > 0)
            {
                MessageBox.Show("添加流程模板成功!");
                this.DialogResult = System.Windows.Forms.DialogResult.OK;
            }
        }
Example #16
0
        /// <summary>
        /// 获取指定的流程
        /// </summary>
        /// <param name="name"></param>
        /// <param name="status">1为未完成,2为已完成,其他为所有</param>
        /// <returns></returns>
        public List <Flow> GetFlows(string name, int status)
        {
            List <Flow> elements = new List <Flow>();

            string where = "where (1=1)";
            if (!string.IsNullOrEmpty(name))
            {
                where += " and Name like '%" + name + "%'";
            }
            string    sql = "select * from Flow " + where + " order by ID desc";
            DataTable dt  = sqlHelper.Query(sql);

            if (dt != null && dt.Rows.Count > 0)
            {
                TaskStageLogic tsl = TaskStageLogic.GetInstance();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    FlowTemplate     template    = FlowTemplateLogic.GetInstance().GetFlowTemplate(Convert.ToInt32(dt.Rows[i]["TemplateID"]));
                    List <TaskStage> stages      = new List <TaskStage>();
                    string           stagesIds   = dt.Rows[i]["Stages"].ToString();
                    string[]         stageIdList = stagesIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                    foreach (string stageId in stageIdList)
                    {
                        TaskStage stage = TaskStageLogic.GetInstance().GetTaskStage(Convert.ToInt32(stageId));
                        if (stage != null)
                        {
                            stages.Add(stage);
                        }
                    }
                    int  currentIndex = Convert.ToInt32(dt.Rows[i]["CurrentIndex"]);
                    Flow element      = new Flow(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), template, currentIndex, dt.Rows[i]["Remark"].ToString(), stages);
                    if (status == 1)
                    {
                        if ((currentIndex < stages.Count - 1) || (currentIndex == stages.Count - 1 && stages[stages.Count - 1].Status != TaskStatus.Finished))
                        {
                            elements.Add(element);
                        }
                    }
                    else if (status == 2)
                    {
                        if (currentIndex == stages.Count - 1 && stages[stages.Count - 1].Status == TaskStatus.Finished)
                        {
                            elements.Add(element);
                        }
                    }
                    else
                    {
                        elements.Add(element);
                    }
                }
            }
            return(elements);
        }
Example #17
0
        public IFlowTemplate AddFlowTemplate([Required] string name, string description, IDataFlow source = null)
        {
            var result = new FlowTemplate(this, name)
            {
                Description = description,
                FlowType    = source?.FlowType ?? FlowType.ReadWriteCommand
            };

            source.CloneProperties(result);
            Add(result);

            return(result);
        }
Example #18
0
        public int AddFlowTemplate(FlowTemplate element)
        {
            string sql = "insert into FlowTemplate (Name, Stages) values ('" + element.Name + "', '" + element.StageIds + "'); select SCOPE_IDENTITY()";
            object obj = sqlHelper.ExecuteSqlReturn(sql);
            int    R;

            if (obj != null && obj != DBNull.Value && int.TryParse(obj.ToString(), out R))
            {
                return(R);
            }
            else
            {
                return(0);
            }
        }
Example #19
0
        public void Add(Core.FlowTemplate item)
        {
            var itemToInsert = new FlowTemplate {
                Name = item.Name
            };

            _context.FlowTemplates.InsertOnSubmit(itemToInsert);
            itemToInsert.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "Id")
                {
                    item.Id = ((FlowTemplate)sender).Id;
                }
            };
        }
Example #20
0
        public void Should_not_run_completed_step_based_on_completed_steps()
        {
            var fakeStep = A.Fake <IRunnableStep>();
            var template = new FlowTemplate {
                Steps = new List <IStep> {
                    fakeStep
                }.ToList()
            };
            var sut = new FlowInstance {
                Template = template
            };

            sut.CompletedSteps.Add(new CompletedStep(1, 0));

            A.CallTo(() => fakeStep.Process(A <FlowInstance> ._, A <IRunFlows> ._)).MustNotHaveHappened();
        }
Example #21
0
 private void button2_Click(object sender, EventArgs e)
 {
     if (templateId > 0)
     {
         FlowTemplate template = new FlowTemplate(templateId, textBox1.Text.Trim(), flowTemplateControl1.Nodes);
         if (FlowTemplateLogic.GetInstance().UpdateFlowTemplate(template))
         {
             MessageBox.Show("修改流程模板成功!");
             this.DialogResult = System.Windows.Forms.DialogResult.OK;
         }
     }
     else
     {
         MessageBox.Show("请先指定一个要修改的流程模板!或者当前是添加新的流程模板,请点击【添加】按钮。");
     }
 }
Example #22
0
 private void EditTemplate()
 {
     if (listBox1.SelectedIndex > -1)
     {
         FlowTemplate temp = listBox1.SelectedItem as FlowTemplate;
         if (temp != null)
         {
             FlowTemplateForm ftf = new FlowTemplateForm(this.owner);
             ftf.Template = temp;
             if (ftf.ShowDialog() == System.Windows.Forms.DialogResult.OK)
             {
                 LoadAllTemps();
             }
         }
     }
 }
Example #23
0
        private static FlowInstance GetMock()
        {
            var steps = new List <IStep> {
                new StartStep {
                    Id = 1
                }, new CollectDataStep {
                    Id = 2
                }, new StopStep {
                    Id = 3
                }
            };
            var template = new FlowTemplate {
                Steps = steps
            };
            var sut = new FlowInstance {
                Template = template
            };

            sut.CompletedSteps.Add(new CompletedStep(1, 0));
            return(sut);
        }
Example #24
0
        public List <FlowTemplate> GetFlowTemplates(string name, int stageCount)
        {
            List <FlowTemplate> elements = new List <FlowTemplate>();

            string where = "where (1=1)";
            if (!string.IsNullOrEmpty(name))
            {
                where += " and Name like '%" + name + "%'";
            }
            string    sql = "select * from FlowTemplate " + where + " order by ID desc";
            DataTable dt  = sqlHelper.Query(sql);

            if (dt != null && dt.Rows.Count > 0)
            {
                TaskStageTemplateLogic tsl = TaskStageTemplateLogic.GetInstance();
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    List <TaskStageTemplate> stages = new List <TaskStageTemplate>();
                    string        stageIds          = dt.Rows[i]["Stages"].ToString();
                    List <string> idList            = Flow.GetSatges(stageIds);
                    if (idList.Count == stageCount)
                    {
                        foreach (string id in idList)
                        {
                            TaskStageTemplate stage = tsl.GetTaskStageTemplate(Convert.ToInt32(id));
                            if (stage != null)
                            {
                                stages.Add(stage);
                            }
                        }
                        FlowTemplate element = new FlowTemplate(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), stages);
                        elements.Add(element);
                    }
                }
            }
            return(elements);
        }
Example #25
0
        public IHttpActionResult Put(string guid, [FromBody] FlowTemplate value)
        {
            //这里不做ModelState校验,在创建时由创建函数检查
            if (value == null || guid != value.guid)
            {
                return(BadRequest("错误: 不能传空对象或guid不匹配"));
            }

            Tuple <bool, FlowTemplate, List <string> > result =
                FlowTemplateDBHelper.updateFlowTemplate(
                    value.guid, value.name, value.displayName,
                    value.version, value.code, value.flowTemplateJson);

            if (result.Item1) // 成功修改
            {
                return(Ok(result.Item2));
            }
            else
            {
                var errorInfo = result.Item3.Aggregate(
                    (total, next) => { return(total + "\n" + next); });
                return(BadRequest("错误:" + errorInfo));
            }
        }
Example #26
0
        public IHttpActionResult Post(FlowTemplate value)
        {
            if (value == null) //这里不做ModelState校验,在创建时由创建函数检查
            {
                return(BadRequest("不能传空对象"));
            }

            Tuple <bool, FlowTemplate, List <string> > result =
                FlowTemplateDBHelper.createFlowTemplate(
                    value.guid, value.name, value.displayName,
                    value.version, value.code, value.flowTemplateJson);

            if (result.Item1) // 成功创建
            {
                return(CreatedAtRoute("DefaultApi",
                                      new { id = result.Item2.flowTemplateId }, result.Item2));
            }
            else
            {
                var errorInfo = result.Item3.Aggregate(
                    (total, next) => { return(total + "\n" + next); });
                return(BadRequest(errorInfo));
            }
        }
Example #27
0
        public FlowTemplate GetFlowTemplate(int id)
        {
            string    sql = "select * from FlowTemplate where ID=" + id;
            DataTable dt  = sqlHelper.Query(sql);

            if (dt != null && dt.Rows.Count > 0)
            {
                TaskStageTemplateLogic   tsl    = TaskStageTemplateLogic.GetInstance();
                List <TaskStageTemplate> stages = new List <TaskStageTemplate>();
                string        stageIds          = dt.Rows[0]["Stages"].ToString();
                List <string> idList            = Flow.GetSatges(stageIds);
                foreach (string idStr in idList)
                {
                    TaskStageTemplate stage = tsl.GetTaskStageTemplate(Convert.ToInt32(idStr));
                    if (stage != null)
                    {
                        stages.Add(stage);
                    }
                }
                FlowTemplate element = new FlowTemplate(Convert.ToInt32(dt.Rows[0]["ID"]), dt.Rows[0]["Name"].ToString(), stages);
                return(element);
            }
            return(null);
        }
Example #28
0
        public List <FlowTemplate> GetFlowTemplates(string where)
        {
            List <FlowTemplate> elements = new List <FlowTemplate>();

            if (!string.IsNullOrEmpty(where))
            {
                string w = where.Trim().ToLower();
                if (!w.StartsWith("where "))
                {
                    w = "where " + w;
                }
                string    sql = "select * from FlowTemplate " + w + " order by ID desc";
                DataTable dt  = sqlHelper.Query(sql);
                if (dt != null && dt.Rows.Count > 0)
                {
                    TaskStageTemplateLogic tsl = TaskStageTemplateLogic.GetInstance();
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        List <TaskStageTemplate> stages = new List <TaskStageTemplate>();
                        string        stageIds          = dt.Rows[i]["Stages"].ToString();
                        List <string> idList            = Flow.GetSatges(stageIds);
                        foreach (string id in idList)
                        {
                            TaskStageTemplate stage = tsl.GetTaskStageTemplate(Convert.ToInt32(id));
                            if (stage != null)
                            {
                                stages.Add(stage);
                            }
                        }
                        FlowTemplate element = new FlowTemplate(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), stages);
                        elements.Add(element);
                    }
                }
            }
            return(elements);
        }
Example #29
0
 public bool Add(FlowTemplate item)
 {
     _unitOfWork.FlowTemplateRepository.Add(item);
     _unitOfWork.Save();
     return(true);
 }
Example #30
0
 private void Next()
 {
     if (listBox1.SelectedIndex > -1)
     {
         FlowTemplate temp = listBox1.SelectedItem as FlowTemplate;
         if (temp != null)
         {
             List <TaskStage> stages = new List <TaskStage>();
             foreach (TaskStageTemplate stage in temp.Stages)
             {
                 TaskStage s = new TaskStage(0, stage.Name, stage, TaskStatus.Initiative, "", "", DateTime.MinValue, DateTime.MinValue, "");
                 int       i = TaskStageLogic.GetInstance().AddTaskStage(s);
                 if (i > 0)
                 {
                     s.ID = i;
                     stages.Add(s);
                 }
             }
             string docName = doc.Name;
             Flow   flow    = new Flow(0, docName + "(" + temp.Name + ")", temp, -1, "", stages);
             int    r       = FlowLogic.GetInstance().AddFlow(flow);
             if (r > 0)
             {
                 flow.ID = r;
                 if (FlowLogic.GetInstance().StartFlow(r))
                 {
                     flow.StartFlow();
                     TaskInfo task = new TaskInfo(0, doc.ID, flow, this.User.Username, "创建时间:" + DateTime.Now.ToString());
                     if (TaskInfoLogic.GetInstance().AddTaskInfo(task) > 0)
                     {
                         MessageBox.Show("建立流程任务成功!");
                         this.DialogResult = System.Windows.Forms.DialogResult.OK;
                     }
                     else
                     {
                         MessageBox.Show("建立流程任务失败!");
                         this.DialogResult = System.Windows.Forms.DialogResult.Ignore;
                     }
                 }
                 else
                 {
                     MessageBox.Show("启动流程失败!");
                     this.DialogResult = System.Windows.Forms.DialogResult.Ignore;
                 }
             }
             else
             {
                 MessageBox.Show("建立流程到数据库失败!");
                 this.DialogResult = System.Windows.Forms.DialogResult.Ignore;
             }
             //this.Close();
         }
         else
         {
             MessageBox.Show("您选择的流程模板为空!");
         }
     }
     else
     {
         MessageBox.Show("请先选择一个流程模板!");
     }
 }