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 } }); }
/// <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 } }); } }
/// <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 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 })); }
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)); }
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; } }
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(); }
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); }
/// <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); } }
/// <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)); } }
/// <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); } }
/// <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)); } }
/// <summary> /// 二楼出库--条码校验出错,记录错误标志,及新条码。 /// </summary> public void UpdateTaskCheckBarCode(string TaskID, string BarCode) { using (PersistentManager pm = new PersistentManager()) { TaskDao dao = new TaskDao(); dao.UpdateTaskCheckBarCode(TaskID, BarCode); } }
/// <summary> /// 小车待出库任务数量 /// </summary> /// <param name="strWhere"></param> /// <returns></returns> public int CarTaskInfo() { using (PersistentManager pm = new PersistentManager()) { TaskDao dao = new TaskDao(); return(dao.CarTaskInfo()); } }
/// <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)); } }
/// <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)); } }
/// <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); } }
/// <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); } }
/// <summary> /// 二楼托盘组入库申请,判断是否有排程,小车未接货的任务。 /// </summary> /// <param name="BillNo"></param> /// <returns></returns> public string GetPalletInTask() { using (PersistentManager pm = new PersistentManager()) { TaskDao dao = new TaskDao(); return(dao.GetPalletInTask()); } }
/// <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)); } }
/// <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)); } }
/// <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)); } }
/// <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); } }
/// <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)); } }
/// <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); } }
/// <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)); } }
/// <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)); } }
/// <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); }
/// <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; }
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; }