Beispiel #1
0
        public void ReadTask(string taskid, string proccessor)
        {
            ISqlMapper mapper  = MapperHelper.GetMapper();
            TaskDao    taskdao = new TaskDao(mapper);
            var        task    = this.Tasks.Find(t => t.ID == taskid);

            if (this.Value.Status == (int)ActivityProcessStatus.Processed)
            {
                task.Status = (int)TaskProcessStatus.Processed;
            }
            else
            {
                task.Status = (int)TaskProcessStatus.Read;
            }
            task.ReadTime    = DateTime.Now;
            task.LastUpdator = proccessor;
            taskdao.Update(new TaskUpdateForm
            {
                Entity = new Task {
                    ReadTime = task.ReadTime, Status = task.Status, LastUpdator = task.LastUpdator
                },
                TaskQueryForm = new TaskQueryForm {
                    ID = task.ID
                }
            });
        }
Beispiel #2
0
 /// <summary>
 /// 作废(停止)流程
 /// </summary>
 /// <param name="taskid"></param>
 /// <param name="processor"></param>
 public void Stop(string processor)
 {
     if (this.CurrentActivity != null)
     {
         ISqlMapper  mapper  = MapperHelper.GetMapper();
         WorkflowDao wfdao   = new WorkflowDao(mapper);
         TaskDao     taskdao = new TaskDao(mapper);
         this.value.Status      = (int)WorkflowProcessStatus.Stoped;
         this.value.LastUpdator = processor;
         wfdao.Update(new WorkflowUpdateForm
         {
             Entity = new Workflow
             {
                 LastUpdator = this.value.LastUpdator,
                 Status      = this.value.Status,
             },
             WorkflowQueryForm = new WorkflowQueryForm
             {
                 ID = this.value.ID,
             }
         });
         taskdao.Update(new TaskUpdateForm
         {
             Entity = new Task {
                 Status = (int)TaskProcessStatus.Stoped
             },
             TaskQueryForm = new TaskQueryForm {
                 ActivityID = this.CurrentActivity.Value.ID
             }
         });
     }
 }
Beispiel #3
0
        /// <summary>
        /// 删除该流程
        /// </summary>
        public void Remove()
        {
            ISqlMapper      mapper      = MapperHelper.GetMapper();
            WorkflowDao     wfdao       = new WorkflowDao(mapper);
            ActivityDao     activitydao = new ActivityDao(mapper);
            LinkDao         linkDao     = new LinkDao(mapper);
            ActivityAuthDao authdao     = new ActivityAuthDao(mapper);
            ApprovalDao     approvalDao = new ApprovalDao(mapper);
            TaskDao         taskdao     = new TaskDao(mapper);
            string          id          = this.value.ID;
            var             activities  = activitydao.Query(new ActivityQueryForm {
                WorkflowID = id
            });

            taskdao.Delete(new TaskQueryForm {
                WorkflowID = id
            });
            wfdao.Delete(new WorkflowQueryForm {
                ID = id
            });
            activitydao.Delete(new ActivityQueryForm {
                WorkflowID = id
            });
            linkDao.Delete(new LinkQueryForm {
                WorkflowID = id
            });
            approvalDao.Delete(new ApprovalQueryForm {
                WorkflowID = id
            });
            authdao.Delete(new ActivityAuthQueryForm {
                WorkflowID = id
            });
        }
Beispiel #4
0
        public List <Project> QueryMyProject(WorkflowProcessStatus processStatus)
        {
            ISqlMapper  mapper     = Common.GetMapperFromSession();
            TaskDao     taskdao    = new TaskDao(mapper);
            WorkflowDao wfdao      = new WorkflowDao(mapper);
            ProjectDao  projectdao = new ProjectDao(mapper);
            UserBLL     userbll    = new UserBLL();
            var         user       = userbll.GetCurrentUser();
            string      userid     = user.User.ID;
            //string userid = "13";
            var tasks = taskdao.Query(new TaskQueryForm {
                UserID = userid
            });
            List <string> workflowids = (from t in tasks
                                         select t.WorkflowID).Distinct().ToList();
            var workflows = wfdao.Query(new WorkflowQueryForm {
                IDs = workflowids, Status = (int)processStatus
            });
            List <string> projectids = (from wf in workflows
                                        select wf.ProcessID).ToList();

            return(projectdao.Query(new ProjectQueryForm {
                IDs = projectids
            }));
        }
Beispiel #5
0
        private static void RemoveItemClicked(object sender, RoutedEventArgs e)
        {
            WPFDbContext.Instance.RemoveItemType = (ItemTypeEnum)Enum.Parse(typeof(ItemTypeEnum), (string)(sender as DependencyObject).GetValue(RemoveItemClickedProperty));
            switch (WPFDbContext.Instance.RemoveItemType)
            {
            case ItemTypeEnum.Category:
                WPFCategoryDao.SaveTempSelectedIndex();
                CategoryDao.Remove(WPFDbContext.Instance.SelectedCategory.ID);
                WPFCategoryDao.GetCategories();
                WPFCategoryDao.GetCategoryFromTempSelectedIndex();
                break;

            case ItemTypeEnum.ParameterName:
                int id = (WPFDbContext.Instance.UnusedTaskVisibility == Visibility.Collapsed) ? WPFDbContext.Instance.SelectedUsedParameter.ID : WPFDbContext.Instance.SelectedUnusedParameter.ID;
                ParameterNameDao.Remove(id);
                WPFParameterNameDao.Update();
                break;

            case ItemTypeEnum.Task:
                WPFTaskDao.SaveTempSelectedIndex();
                TaskDao.Remove(WPFDbContext.Instance.SelectedUnusedTask.ID);
                WPFTaskDao.GetTasks();
                WPFParameterNameDao.Update();
                break;
            }
        }
        public IHttpActionResult Delete(string id)
        {
            TaskDao item = null;

            _toDoItems.TryRemove(Guid.Parse(id), out item);
            return(new StatusCodeResult(HttpStatusCode.NoContent, this));
        }
Beispiel #7
0
        public ActionResult Search(TaskViewModel model)
        {
            //todo
            model.TaskList = TaskDao.GetTasksByEmail(model.Email);

            return(View(model));
        }
        public async Task <TaskDao> SaveToDoItemAsync(TaskDao item)
        {
            try
            {
                var uri = new Uri(string.Format(_restUrl, string.Empty));

                var json    = JsonConvert.SerializeObject(item);
                var content = new StringContent(json, Encoding.UTF8, "application/json");

                HttpResponseMessage response = await _client.PostAsync(uri, content);

                response.EnsureSuccessStatusCode();
                if (response.IsSuccessStatusCode)
                {
                    var newContent = await response.Content.ReadAsStringAsync();

                    return(JsonConvert.DeserializeObject <TaskDao>(newContent));
                }

                return(null);
            }
            catch (Exception)
            {
                throw;
            }
        }
Beispiel #9
0
        private static void AddItemOKClicked(object sender, RoutedEventArgs e)
        {
            switch (WPFDbContext.Instance.AddItemType)
            {
            case ItemTypeEnum.Category:
                WPFCategoryDao.SaveTempSelectedIndex();
                CategoryDao.Insert(WPFDbContext.Instance.ItemName);
                WPFCategoryDao.GetCategories();
                WPFCategoryDao.GetCategoryFromTempSelectedIndex();
                break;

            case ItemTypeEnum.ParameterName:
                if (WPFDbContext.Instance.Description.Length == 0)
                {
                    MessageBox.Show("Please input description of parameter!");
                    return;
                }

                ParameterNameDao.Insert(WPFDbContext.Instance.ItemName, WPFDbContext.Instance.Description);
                WPFParameterNameDao.Update();
                break;

            case ItemTypeEnum.Task:
                WPFTaskDao.SaveTempSelectedIndex();
                TaskDao.Insert(WPFDbContext.Instance.ItemName);
                WPFTaskDao.GetTasks();
                WPFTaskDao.GetTaskFromTempSelectedIndex();
                break;
            }
            WPFDbContext.Instance.ItemName    = "";
            WPFDbContext.Instance.Description = "";
            WPFDbContext.Instance.AddItem.Hide();
        }
Beispiel #10
0
        public bool FinanceConfirmAction(string projectid, string userid)
        {
            ISqlMapper mapper = Common.GetMapperFromSession();
            //处理流程
            WorkflowModel model = WorkflowModel.LoadByProcessID(projectid);

            model.ProcessActivity(new Approval {
                Status = (int)ApprovalStatus.None
            }, userid, new WorkflowAuthority());
            TaskDao taskdao = new TaskDao(mapper);

            taskdao.Update(new TaskUpdateForm
            {
                Entity = new Task
                {
                    Status      = (int)TaskProcessStatus.Processed,
                    LastUpdator = userid,
                },
                TaskQueryForm = new TaskQueryForm
                {
                    WorkflowID = model.Value.ID,
                    Status     = (int)TaskProcessStatus.Started,
                }
            });
            return(true);
        }
Beispiel #11
0
        /// <summary>
        /// 分配缓存道,插入缓存到表。并返回缓存道ID。
        /// </summary>
        /// <param name="TaskID"></param>
        /// <returns></returns>
        public string InsertChannel(string TaskID, string Bill_No)
        {
            using (PersistentManager pm = new PersistentManager())
            {
                string    strChannel_No = "";
                TaskDao   dao           = new TaskDao();
                DataTable dt            = dao.TaskInfo(string.Format("TASK_ID='{0}'", TaskID));
                string    Line_No       = dt.Rows[0]["TARGET_CODE"].ToString().Trim();
                string    BillNo        = dt.Rows[0]["BILL_NO"].ToString();

                ChannelDao Cdao = new ChannelDao();
                dt = Cdao.ChannelInfo(Line_No);

                if (!Cdao.HasTaskInChannel(TaskID))
                {
                    switch (Line_No)
                    {
                    case "01":
                    case "02":
                        strChannel_No = Cdao.GetChannelNoByBillNo(BillNo);
                        if (strChannel_No == "")
                        {
                            DataRow[] drs = dt.Select("QTY=0 AND QTY<CACHE_QTY", "ORDERNO");
                            if (drs.Length > 0)
                            {
                                strChannel_No = drs[0]["CHANNEL_NO"].ToString();
                            }
                        }
                        else
                        {
                            DataRow[] drs = dt.Select(string.Format("QTY<CACHE_QTY and CHANNEL_NO='{0}'", strChannel_No), "ORDERNO");
                            if (drs.Length == 0)
                            {
                                drs = dt.Select("QTY=0 AND QTY<CACHE_QTY", "ORDERNO");
                                if (drs.Length > 0)
                                {
                                    strChannel_No = drs[0]["CHANNEL_NO"].ToString();
                                }
                            }
                        }
                        break;

                    case "03":
                        if (int.Parse(dt.Rows[0]["CACHE_QTY"].ToString()) - int.Parse(dt.Rows[0]["QTY"].ToString()) > 15)
                        {
                            strChannel_No = dt.Rows[0]["CHANNEL_NO"].ToString();
                        }
                        break;
                    }

                    if (strChannel_No != "")
                    {
                        Cdao.InsertChannel(TaskID, Bill_No, strChannel_No);
                    }
                }

                return(strChannel_No);
            }
        }
Beispiel #12
0
 /// <summary>
 /// 插入明细Task_Detail。
 /// </summary>
 /// <param name="task_id"></param>
 /// <returns></returns>
 public string InsertTaskDetail(string task_id)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.InsertTaskDetail(task_id));
     }
 }
Beispiel #13
0
 /// <summary>
 /// 给小车安排任务,更新任务明细表小车编号,起始位置,结束位置
 /// </summary>
 /// <param name="CarNo"></param>
 public void UpdateTaskDetailCrane(string FromStation, string ToStation, string state, string CraneNo, string strWhere)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         dao.UpdateTaskDetailCrane(FromStation, ToStation, state, CraneNo, strWhere);
     }
 }
Beispiel #14
0
 /// <summary>
 /// 根据任务号,返回产品信息。
 /// </summary>
 /// <param name="TaskID"></param>
 /// <returns></returns>
 public DataTable GetProductInfoByTaskID(string TaskID)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.GetProductInfoByTaskID(TaskID));
     }
 }
Beispiel #15
0
 /// <summary>
 /// 二楼出库--条码校验出错,记录错误标志,及新条码。
 /// </summary>
 public void UpdateTaskCheckBarCode(string TaskID, string BarCode)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         dao.UpdateTaskCheckBarCode(TaskID, BarCode);
     }
 }
Beispiel #16
0
 /// <summary>
 /// 小车待出库任务数量
 /// </summary>
 /// <param name="strWhere"></param>
 /// <returns></returns>
 public int CarTaskInfo()
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.CarTaskInfo());
     }
 }
Beispiel #17
0
 /// <summary>
 /// 根据单号,返回任务数量
 /// </summary>
 /// <param name="BillNo"></param>
 /// <returns></returns>
 public int TaskCount(string BillNo)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.TaskCount(BillNo));
     }
 }
Beispiel #18
0
 /// <summary>
 /// 根据Task获取入库,起始位置,目标位置,及堆垛机编号
 /// </summary>
 /// <param name="strWhere"></param>
 /// <returns></returns>
 public DataTable TaskInCraneStation(string strWhere)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.TaskInCraneStation(strWhere));
     }
 }
Beispiel #19
0
 /// <summary>
 /// 更新任务状态
 /// </summary>
 /// <param name="TaskID"></param>
 /// <param name="state"></param>
 public void UpdateTaskState(string TaskID, string state)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         dao.UpdateTaskState(TaskID, state);
     }
 }
Beispiel #20
0
 /// <summary>
 /// 更新堆垛机顺序号
 /// </summary>
 /// <param name="TaskID"></param>
 /// <param name="QueueNO"></param>
 /// <param name="ItemNo"></param>
 public void UpdateCraneQuenceNo(string TaskID, string QueueNO, string ItemNo)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         dao.UpdateCraneQuenceNo(TaskID, QueueNO, ItemNo);
     }
 }
Beispiel #21
0
 /// <summary>
 /// 二楼托盘组入库申请,判断是否有排程,小车未接货的任务。
 /// </summary>
 /// <param name="BillNo"></param>
 /// <returns></returns>
 public string GetPalletInTask()
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.GetPalletInTask());
     }
 }
Beispiel #22
0
 /// <summary>
 /// 判断二楼出库,任务号到达拆盘处,是否已经执行?
 /// </summary>
 /// <param name="TaskID"></param>
 /// <returns></returns>
 public bool SeparateTaskDetailStart(string TaskID)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.SeparateTaskDetailStart(TaskID));
     }
 }
Beispiel #23
0
 /// <summary>
 /// 获取出库的堆垛机信息。主表,WCS_TASK,Item_NO=1堆垛机为起始动作
 /// </summary>
 /// <param name="strWhere"></param>
 /// <returns></returns>
 public DataTable CraneTaskOut(string strWhere)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.CraneTaskOut(strWhere));
     }
 }
Beispiel #24
0
 /// <summary>
 ///  分配货位,返回 0:TaskID,1:货位;
 /// </summary>
 /// <param name="strWhere"></param>
 public string[] AssignCell(string strWhere, string ApplyStation)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.AssignCell(strWhere, ApplyStation));
     }
 }
Beispiel #25
0
 /// <summary>
 /// 更新Task_Detail状态 State
 /// </summary>
 /// <param name="strWhere"></param>
 /// <param name="State"></param>
 public void UpdateTaskDetailState(string strWhere, string State)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         dao.UpdateTaskDetailState(strWhere, State);
     }
 }
Beispiel #26
0
 /// <summary>
 /// 二楼分配货位,更新货位信息,返回 0:TaskID,1:任务号,2:货物到达入库站台的目的地址--平面号,3:堆垛机入库站台,4:货位,5:堆垛机编号,6:小车站台
 /// </summary>
 /// <param name="strWhere"></param>
 public string[] AssignCellTwo(string strWhere) //
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.AssignCellTwo(strWhere));
     }
 }
Beispiel #27
0
 /// <summary>
 /// 更新堆垛机错误编号
 /// </summary>
 /// <param name="TaskID"></param>
 /// <param name="QueueNO"></param>
 /// <param name="ItemNo"></param>
 public void UpdateCraneErrCode(string TaskID, string ItemNo, string ErrCode)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         dao.UpdateCraneErrCode(TaskID, ItemNo, ErrCode);
     }
 }
Beispiel #28
0
 /// <summary>
 /// 根据任务号返回的任务号TaskID,及单号Bill_NO
 /// </summary>
 /// <param name="TaskNo"></param>
 /// <returns></returns>
 public string[] GetTaskInfo(string TaskNo)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.GetTaskInfo(TaskNo));
     }
 }
Beispiel #29
0
 /// <summary>
 ///  分配货位,返回 0:TaskID,1:货位
 /// </summary>
 /// <param name="strWhere"></param>
 public string[] AssignNewCell(string strWhere, string CranNo)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         return(dao.AssignCell(strWhere, CranNo));
     }
 }
Beispiel #30
0
 /// <summary>
 ///  烟包替换记录
 /// </summary>
 /// <param name="strWhere"></param>
 public void InsertChangeProduct(string ProductBarcode, string ProductCode, string NewProductBarcode, string NewProductCode)
 {
     using (PersistentManager pm = new PersistentManager())
     {
         TaskDao dao = new TaskDao();
         dao.InsertChangeProduct(ProductBarcode, ProductCode, NewProductBarcode, NewProductCode);
     }
 }
        public void Process(ActivityModel activity, Approval approval, string processor, IWorkflowAuthority auth)
        {
            //已经处理过就不能再处理
            if (activity.Value.Status == (int)ActivityProcessStatus.Processed) return;
            //MonitorCache.GetInstance().PushMessage(new CacheMessage { Message = "activityid:" + activity.Value.ID + " next activity status:" + activity.Value.Status.ToString() }, CacheEnum.FormMonitor);
            ISqlMapper mapper = MapperHelper.GetMapper();
            ActivityDao activitydao = new ActivityDao(mapper);
            TaskDao taskdao = new TaskDao(mapper);
            //设置当前活动点状态
            activity.Value.Status = (int)ActivityProcessStatus.Processed;
            activity.Value.ProcessTime = DateTime.Now;
            activity.Value.LastUpdator = processor;
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = activity.Value.Status, ProcessTime = activity.Value.ProcessTime, LastUpdator = activity.Value.LastUpdator },
                ActivityQueryForm = new ActivityQueryForm { ID = activity.Value.ID }
            });
            var task = activity.GetUserProcessingTask(processor);
            if (task == null) throw new Exception("环节中没有你的任务,无法进行审批操作");
            task.Status = (int)TaskProcessStatus.Processed;
            task.ProcessTime = DateTime.Now;
            task.LastUpdator = processor;
            //处理任务
            taskdao.Update(new TaskUpdateForm
            {
                Entity = new Task { ProcessTime = task.ProcessTime, Status = task.Status, LastUpdator = task.LastUpdator },
                TaskQueryForm = new TaskQueryForm { ID = task.ID },
            });
            //设置下个活动点的状态
            if (activity.Children.Count > 0)
            {
                foreach (var next in activity.Children)
                {
                    string nextactivityid = next.Value.ID;
                    var nextActivityModel = next as ActivityModel;
                    nextActivityModel.Value.Status = (int)ActivityProcessStatus.Processing;
                    nextActivityModel.Value.LastUpdator = processor;
                    activitydao.Update(new ActivityUpdateForm
                    {
                        Entity = new Activity { Status = nextActivityModel.Value.Status, LastUpdator = nextActivityModel.Value.LastUpdator },
                        ActivityQueryForm = new ActivityQueryForm { ID = nextactivityid },
                    });

                    List<string> useridList = auth.GetUserIDList(nextActivityModel.Auth);
                    //新增下个活动点的任务
                    var tasklist = nextActivityModel.GetTask(processor, useridList);
                    foreach (var t in tasklist)
                    {
                        nextActivityModel.Tasks.Add(t);
                        taskdao.Add(t);
                    }
                }
            }
        }
        public void TestSearchByTaskName()
        {
            TaskEntity entity1 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name-1",
                Subject = "Subject"
            };
            TaskEntity entity2 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name-Two",
                Subject = "Subject"
            };
            TaskEntity entity3 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name-Three-3",
                Subject = "Subject"
            };

            TaskDao dao = new TaskDao(SessionFactory);
            dao.Store(entity1);
            dao.Store(entity2);
            dao.Store(entity3);
            QuerableTaskService tasks = new QuerableTaskService(
                new HibernateTaskQueryContext(SessionFactory));

            var t = from task in tasks where task.Name == "Name-1" select task;
            foreach (Task task in t)
            {
                Assert.IsNotNull(task);
            }
            Assert.IsNotNull(t);
            Assert.AreEqual(1, t.Count());
            Task foundTask = t.ElementAt(0);
            Assert.AreEqual("Name-1", foundTask.Name);
            Assert.AreEqual(entity1.TaskId, foundTask.Id);
        }
        public void TestCreateUpdateTask()
        {
            TaskEntity entity = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name",
                Subject = "Subject"
            };

            Task task = new Task(entity)
                            {
                                LoggingService = new Mock<ILoggingService>().Object,
                                Priority = Priority.High

                            };

            TaskDao dao=new TaskDao(SessionFactory);
            task.Accept(dao);
            //update priority
            task.Priority = Priority.Medium;
            task.Name = "New Name";
            task.Subject = "New Subject";
            task.Accept(dao);
            task.AddComment("Bad comment");
            task.AddComment("Good comment");
            task.Accept(dao);
            TrickVisitor visitor=new TrickVisitor
                                     {
                                         OnEntityVisit = e=>e.Version=1
                                     };
            task.Accept(visitor);
            task.Name = "123";
            task.Accept(dao);
        }
        public void TestSearchSimpleAndOr()
        {
            TaskEntity entity1 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Failed,
                Created = DateTime.UtcNow,
                Name = "Name-1",
                Subject = "Subject"
            };
            TaskEntity entity2 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.High,
                Status = TaskStatus.Ready,
                Created = DateTime.UtcNow,
                Name = "Name-Two",
                Subject = "Subject"
            };
            TaskEntity entity3 = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.InProgress,
                Created = DateTime.UtcNow,
                Name = "Name-Three-3",
                Subject = "Subject"
            };

            TaskDao dao = new TaskDao(SessionFactory);
            dao.Store(entity1);
            dao.Store(entity2);
            dao.Store(entity3);
            QuerableTaskService tasks = new QuerableTaskService(
                new HibernateTaskQueryContext(SessionFactory));

            var t = from task in tasks
                    where task.Name.StartsWith("Name")
                        && task.Priority > Priority.Normal
                        || task.Status==TaskStatus.InProgress
                    select task;

            Assert.IsNotNull(t);
            foreach (Task task in t)
            {
                Assert.IsNotNull(task);
            }
            Assert.AreEqual(2, t.Count());
            Task foundTask = t.ElementAt(0);
            Assert.AreEqual("Name-Two", foundTask.Name);
            Assert.AreEqual(entity2.TaskId, foundTask.Id);
            foundTask = t.ElementAt(1);
            Assert.AreEqual("Name-Three-3", foundTask.Name);
            Assert.AreEqual(entity3.TaskId, foundTask.Id);
        }
 public void TestSearchCollectionContains()
 {
     Guid userGuid1 = Guid.NewGuid();
     Guid userGuid2 = Guid.NewGuid();
     TaskEntity entity1 = new TaskEntity
     {
         TaskId = new TaskId(),
         Initiator = new IdentityId().GetIdentity(),
         Priority = Priority.Normal,
         Status = TaskStatus.Failed,
         Created = DateTime.UtcNow,
         Name = "Name-1",
         Subject = "Subject"
     };
     TaskEntity entity2 = new TaskEntity
     {
         TaskId = new TaskId(),
         Initiator = new IdentityId().GetIdentity(),
         Priority = Priority.High,
         Status = TaskStatus.Ready,
         Created = DateTime.UtcNow,
         Name = "Name-Two",
         Subject = "Subject"
     };
     TaskEntity entity3 = new TaskEntity
     {
         TaskId = new TaskId(),
         Initiator = new IdentityId().GetIdentity(),
         Priority = Priority.Normal,
         Status = TaskStatus.InProgress,
         Created = DateTime.UtcNow,
         Name = "Name-Three-3",
         Subject = "Subject"
     };
     entity2.PotentialOwners.Add(new IdentityId(userGuid1).GetIdentity());
     entity2.PotentialOwners.Add(new IdentityId(userGuid2).GetIdentity());
     entity1.BusinessAdministrators.Add(new IdentityId(userGuid1).GetIdentity());
     TaskDao dao = new TaskDao(SessionFactory);
     dao.Store(entity1);
     dao.Store(entity2);
     dao.Store(entity3);
     QuerableTaskService tasks = new QuerableTaskService(
         new HibernateTaskQueryContext(SessionFactory));
     var t = from task in tasks
             where task.PotentialOwners.Contains(new IdentityId(userGuid1).GetIdentity())
             select task;
     Assert.IsNotNull(t);
     foreach(var task in t)
     {
         Assert.IsNotNull(task);
     }
     Assert.AreEqual(1,t.Count());
     Task foundTask = t.ElementAt(0);
     Assert.IsNotNull(foundTask);
     Assert.AreEqual(entity2.TaskId,foundTask.Id);
 }
Beispiel #36
0
        /// <summary>
        /// 从数据库读取流程信息
        /// </summary>
        /// <param name="workflowids"></param>
        /// <returns></returns>
        public static List<WorkflowModel> Load(WorkflowQueryForm form)
        {
            List<WorkflowModel> models = new List<WorkflowModel>();
            if (form == null) return models;

            #region query data
            ISqlMapper mapper = MapperHelper.GetMapper();
            WorkflowDao wfdao = new WorkflowDao(mapper);
            ActivityDao activitydao = new ActivityDao(mapper);
            LinkDao linkDao = new LinkDao(mapper);
            ActivityAuthDao authdao = new ActivityAuthDao(mapper);
            ApprovalDao approvalDao = new ApprovalDao(mapper);
            TaskDao taskdao = new TaskDao(mapper);
            List<Activity> activityList = new List<Activity>();
            List<Link> linkList = new List<Link>();
            List<ActivityAuth> authList = new List<ActivityAuth>();
            List<Approval> approvalList = new List<Approval>();
            List<Task> taskList = new List<Task>();
            List<Workflow> workflows = new List<Workflow>();
            //先从缓存取值
            //var item = cache.GetItem(id);
            //if (item != null)
            //{
            //    model = item.Value as WorkflowModel;
            //    return model;
            //}
            workflows = wfdao.Query(form);
            var workflowids = (from wf in workflows select wf.ID).ToList();
            activityList = activitydao.Query(new ActivityQueryForm { WorkflowIDs = workflowids });
            linkList = linkDao.Query(new LinkQueryForm { WorkflowIDs = workflowids });
            approvalList = approvalDao.Query(new ApprovalQueryForm { WorkflowIDs = workflowids });
            authList = authdao.Query(new ActivityAuthQueryForm { WorkflowIDs = workflowids });
            taskList = taskdao.Query(new TaskQueryForm { WorkflowIDs = workflowids });
            #endregion

            foreach (var workflow in workflows)
            {
                var model = BuildWorkflow(workflow, activityList, linkList, authList, approvalList, taskList);
                models.Add(model);
            }
            return models;
        }
Beispiel #37
0
 /// <summary>
 /// 作废(停止)流程
 /// </summary>
 /// <param name="taskid"></param>
 /// <param name="processor"></param>
 public void Stop(string processor)
 {
     if (this.CurrentActivity != null)
     {
         ISqlMapper mapper = MapperHelper.GetMapper();
         WorkflowDao wfdao = new WorkflowDao(mapper);
         TaskDao taskdao = new TaskDao(mapper);
         this.value.Status = (int)WorkflowProcessStatus.Stoped;
         this.value.LastUpdator = processor;
         wfdao.Update(new WorkflowUpdateForm
         {
             Entity = new Workflow
             {
                 LastUpdator = this.value.LastUpdator,
                 Status = this.value.Status,
             },
             WorkflowQueryForm = new WorkflowQueryForm
             {
                 ID = this.value.ID,
             }
         });
         taskdao.Update(new TaskUpdateForm
         {
             Entity = new Task { Status = (int)TaskProcessStatus.Stoped },
             TaskQueryForm = new TaskQueryForm { ActivityID = this.CurrentActivity.Value.ID }
         });
     }
 }
Beispiel #38
0
 /// <summary>
 /// 删除该流程
 /// </summary>
 public void Remove()
 {
     ISqlMapper mapper = MapperHelper.GetMapper();
     WorkflowDao wfdao = new WorkflowDao(mapper);
     ActivityDao activitydao = new ActivityDao(mapper);
     LinkDao linkDao = new LinkDao(mapper);
     ActivityAuthDao authdao = new ActivityAuthDao(mapper);
     ApprovalDao approvalDao = new ApprovalDao(mapper);
     TaskDao taskdao = new TaskDao(mapper);
     string id = this.value.ID;
     var activities = activitydao.Query(new ActivityQueryForm { WorkflowID = id });
     taskdao.Delete(new TaskQueryForm { WorkflowID = id });
     wfdao.Delete(new WorkflowQueryForm { ID = id });
     activitydao.Delete(new ActivityQueryForm { WorkflowID = id });
     linkDao.Delete(new LinkQueryForm { WorkflowID = id });
     approvalDao.Delete(new ApprovalQueryForm { WorkflowID = id });
     authdao.Delete(new ActivityAuthQueryForm { WorkflowID = id });
 }
        public void Process(ActivityModel activity, Approval approval, string processor, IWorkflowAuthority auth)
        {
            if (approval == null) throw new Exception("审批意见不能为null");
            if (string.IsNullOrEmpty(approval.Remark)) throw new Exception("审批意见不能为空");
            //已经处理过就不能再处理
            if (activity.Value.Status == (int)ActivityProcessStatus.Processed) return;
            ISqlMapper mapper = MapperHelper.GetMapper();
            ActivityDao activitydao = new ActivityDao(mapper);
            TaskDao taskdao = new TaskDao(mapper);
            activity.Value.Status = (int)ActivityProcessStatus.Processed;
            activity.Value.ProcessTime = DateTime.Now;
            activity.Value.LastUpdator = processor;
            //新增审批意见
            if (approval != null)
            {
                ApprovalDao ad = new ApprovalDao(mapper);
                approval.Creator = processor;
                approval.ActivityID = activity.Value.ID;
                approval.WorkflowID = activity.Value.WorkflowID;
                ad.Add(approval);
                activity.OwnerWorkflow.Approval.Add(approval);
            }
            //设置当前活动点状态
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = activity.Value.Status, ProcessTime = activity.Value.ProcessTime, LastUpdator = activity.Value.LastUpdator },
                ActivityQueryForm = new ActivityQueryForm { ID = activity.Value.ID }
            });
            //处理任务
            var task = activity.GetUserProcessingTask(processor);
            if (task == null) throw new Exception("环节中没有你的任务,无法进行审批操作");
            task.ProcessTime = DateTime.Now;
            task.Status = (int)TaskProcessStatus.Processed;
            task.LastUpdator = processor;
            taskdao.Update(new TaskUpdateForm
            {
                Entity = new Task { ProcessTime = DateTime.Now, Status = task.Status, LastUpdator = task.LastUpdator },
                TaskQueryForm = new TaskQueryForm { ID = task.ID },
            });
            //设置下个活动点的状态
            if (activity.Children.Count > 0)
            {
                foreach (var next in activity.Children)
                {
                    string nextactivityid = next.Value.ID;
                    var nextActivityModel = next as ActivityModel;
                    nextActivityModel.Value.Status = (int)ActivityProcessStatus.Processing;
                    nextActivityModel.Value.LastUpdator = processor;
                    activitydao.Update(new ActivityUpdateForm
                    {
                        Entity = new Activity { Status = nextActivityModel.Value.Status, LastUpdator = nextActivityModel.Value.LastUpdator },
                        ActivityQueryForm = new ActivityQueryForm { ID = nextactivityid },
                    });

                    List<string> useridList = auth.GetUserIDList(nextActivityModel.Auth);
                    //新增下个活动点的任务
                    var tasklist = nextActivityModel.GetTask(processor, useridList);
                    foreach (var t in tasklist)
                    {
                        taskdao.Add(t);
                        nextActivityModel.Tasks.Add(t);
                    }
                }
            }
        }
        public void TestPersistRoleAssignment()
        {
            TaskEntity entity = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name",
                Subject = "Subject"
            };

            Task task = new Task(entity)
            {
                LoggingService = new Mock<ILoggingService>().Object,
                Priority = Priority.High

            };

            TaskDao dao = new TaskDao(SessionFactory);
            task.Accept(dao);
            task.PotentialOwners.Add(new IdentityId().GetIdentity());
            task.PotentialOwners.Add(new IdentityId().GetIdentity());
            task.Recepients.Add(new IdentityId().GetIdentity());
            task.Recepients.Add(new IdentityId().GetIdentity());
            task.Recepients.Add(new IdentityId().GetIdentity());
            task.Recepients.Add(new IdentityId().GetIdentity());
            task.BusinessAdministrators.Add(new IdentityId().GetIdentity());
            task.Accept(dao);

            using (ISession session = SessionFactory.OpenSession())
            {
                TaskEntity te = session.Query<TaskEntity>().Where(t => t.TaskId == entity.TaskId).FirstOrDefault();
            }
        }
        public void TestTaskReady()
        {
            TaskEntity entity = new TaskEntity
            {
                TaskId = new TaskId(),
                Initiator = new IdentityId().GetIdentity(),
                Priority = Priority.Normal,
                Status = TaskStatus.Created,
                Created = DateTime.UtcNow,
                Name = "Name",
                Subject = "Subject"
            };

            Task task = new Task(entity)
            {
                LoggingService = new Mock<ILoggingService>().Object,
                Priority = Priority.High

            };

            TaskDao dao = new TaskDao(SessionFactory);
            task.Accept(dao);
            Task loaded;
            using (ISession session = SessionFactory.OpenSession())
            {
                TaskEntity te = session.Query<TaskEntity>().Where(t => t.TaskId == entity.TaskId).FirstOrDefault();
                loaded=new Task(te);
            }
            Thread.GetDomain().SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
            IPrincipal p = Thread.CurrentPrincipal;
            loaded.Start();
            task.Accept(dao);
            loaded.Claim();
            task.Accept(dao);
        }
        public void Process(ActivityModel activity, Approval approval, string processor, IWorkflowAuthority auth)
        {
            if (approval == null) throw new Exception("审批意见不能为null");
            if (string.IsNullOrEmpty(approval.Remark)) throw new Exception("审批意见不能为空");
            //已经处理过就不能再处理
            if (activity.Value.Status == (int)ActivityProcessStatus.Processed) return;
            ISqlMapper mapper = MapperHelper.GetMapper();
            ActivityDao activitydao = new ActivityDao(mapper);
            TaskDao taskdao = new TaskDao(mapper);
            activity.Value.Status = (int)ActivityProcessStatus.Started;
            activity.Value.ProcessTime = DateTime.Now;
            activity.Value.LastUpdator = processor;

            //设置当前活动点状态
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = activity.Value.Status, ProcessTime = activity.Value.ProcessTime, LastUpdator = activity.Value.LastUpdator },
                ActivityQueryForm = new ActivityQueryForm { ID = activity.Value.ID }
            });
            //新增审批意见
            if (approval != null)
            {
                ApprovalDao ad = new ApprovalDao(mapper);
                approval.Creator = processor;
                approval.ActivityID = activity.Value.ID;
                approval.WorkflowID = activity.Value.WorkflowID;
                ad.Add(approval);
                activity.OwnerWorkflow.Approval.Add(approval);
            }
            //处理当前流程所有任务,设置为已处理
            var task = activity.GetUserProcessingTask(processor);
            if (task == null) throw new Exception("环节中没有你的任务,无法进行审批操作");
            task.ProcessTime = DateTime.Now;
            task.Status = (int)TaskProcessStatus.Processed;
            task.LastUpdator = processor;
            taskdao.Update(new TaskUpdateForm
            {
                Entity = new Task { ProcessTime = task.ProcessTime, Status = task.Status, LastUpdator = task.LastUpdator },
                TaskQueryForm = new TaskQueryForm { ActivityID = task.ActivityID },
            });
            //把所有活动点的状态清空
            activity.OwnerWorkflow.Root.GetList().ForEach(t => t.Value.Status = activity.Value.Status);
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = activity.Value.Status },
                ActivityQueryForm = new ActivityQueryForm { WorkflowID = activity.Value.WorkflowID }
            });
            activity.OwnerWorkflow.Root.Value.Status = (int)ActivityProcessStatus.Processing;
            var root = activity.OwnerWorkflow.Root;
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = root.Value.Status },
                ActivityQueryForm = new ActivityQueryForm { ID = root.Value.ID },
            });
            //生成退回任务
            Task roottask = new Task
            {
                ActivityID = root.Value.ID,
                Name = root.Value.Name,
                Title = root.Value.Title + "(退回)",
                UserID = activity.OwnerWorkflow.Value.Creator,
                WorkflowID = activity.OwnerWorkflow.Value.ID,
                Status = (int)TaskProcessStatus.Started,
                Creator = processor,
            };
            root.Tasks.Add(roottask);
            taskdao.Add(roottask);
        }
        public WorkflowModel StartNew(string creator, string processid, IWorkflowAuthority iauth)
        {
            var mapper = MapperHelper.GetMapper();
            WorkflowDao workflowdao = new WorkflowDao(mapper);
            ActivityDao activitydao = new ActivityDao(mapper);
            LinkDao linkdao = new LinkDao(mapper);
            ActivityAuthDao aadd = new ActivityAuthDao(mapper);
            TaskDao taskdao = new TaskDao(mapper);
            WorkflowModel model = null;
            Workflow wf = this.value.ConvertTo<Workflow>();
            wf.ID = null;
            wf.Creator = creator;
            wf.Status = (int)WorkflowProcessStatus.Started;
            wf.WorkflowDefinitionID = this.value.ID;
            wf.ProcessID = processid;
            workflowdao.Add(wf);

            var activites = this.ActivityDefinitionList;
            var links = this.LinkDefinitionList;
            List<Activity> activityEntities = new List<Activity>();
            foreach (var a in activites)
            {
                Activity activity = a.Value.ConvertTo<Activity>();
                activity.Creator = creator;
                activity.ID = null;
                activity.WorkflowID = wf.ID;
                activity.ActivityDefinitionID = a.Value.ID;
                activity.Title = a.Value.Title;
                activity.Status = (int)ActivityProcessStatus.Started;

                List<ActivityAuth> authList = new List<ActivityAuth>();

                //如果是开始节点,就设置为已处理
                if (this.Root.Equals(a))
                {
                    activity.Status = (int)ActivityProcessStatus.Processed;
                    activity.ProcessTime = DateTime.Now;
                }
                if (this.Root.Children.Count > 0 && this.Root.Children[0].Equals(a))
                {
                    activity.Status = (int)ActivityProcessStatus.Processing;
                }
                activitydao.Add(activity);
                activityEntities.Add(activity);

                //权限处理
                foreach (var ad in a.AuthDefinition)
                {
                    ActivityAuth auth = ad.ConvertTo<ActivityAuth>();
                    auth.Creator = creator;
                    auth.WorkflowID = wf.ID;
                    auth.ActivityID = activity.ID;
                    auth.ID = null;
                    auth.ActivityAuthDefinitionID = ad.ID;
                    aadd.Add(auth);
                    authList.Add(auth);
                }

                //如果是第二节点,就设置成正在处理
                if (this.Root.Children.Count > 0 && this.Root.Children[0].Equals(a))
                {
                    ActivityModel activitymodel = new ActivityModel
                    {
                        Value = activity,
                    };
                    var idlist = iauth.GetUserIDList(authList);
                    var tasklist = activitymodel.GetTask(creator, idlist);
                    foreach (var task in tasklist)
                    {
                        taskdao.Add(task);
                    }
                }
            }

            foreach (var l in links)
            {
                Link link = l.Value.ConvertTo<Link>();
                link.Creator = creator;
                link.WorkflowID = wf.ID;
                link.ID = null;
                link.LinkDefinitionID = l.Value.ID;
                var fromactivity = activityEntities.Find(t => t.ActivityDefinitionID == l.Value.FromActivityDefinitionID);
                var totactivity = activityEntities.Find(t => t.ActivityDefinitionID == l.Value.ToActivityDefinitionID);
                if (fromactivity != null)
                {
                    link.FromActivityID = fromactivity.ID;
                }
                if (totactivity != null)
                {
                    link.ToAcivityID = totactivity.ID;
                }
                linkdao.Add(link);
            }

            model = WorkflowModel.Load(wf.ID);
            return model;
        }