/// <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 <InitApprovalResultForm> QueryMyApply(QueryMyApplyServiceForm form) { List <InitApprovalResultForm> list = new List <InitApprovalResultForm>(); ISqlMapper mapper = Common.GetMapperFromSession(); UserBLL userbll = new UserBLL(); WorkflowDao wfdao = new WorkflowDao(mapper); ProjectDao projectdao = new ProjectDao(mapper); switch (form.Status) { case 4: //已终审(经理审批) form.ManagerAppvoal = true; break; case 5: //审批不通过 form.Disagree = true; break; case 1: case 2: case 3: form.WorkflowStatus = form.Status; break; case 6: form.Tracking = true; break; } var users = TableCacheHelper.GetDataFromCache <User>(typeof(UserDao)); var projects = projectdao.QueryMyApply(form); var projectids = (from w in projects select w.ID).Distinct().ToList(); return(Query(projectids, null, form.UserID)); }
/// <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 } }); } }
public void GetDataFromCacheTest() { var list = TableCacheHelper.GetDataFromCache <Workflow>(typeof(WorkflowDao)); if (list.Count == 0) { return; } WorkflowDao dao = new WorkflowDao(); string key = typeof(Workflow).FullName; var item = cache.GetItem(key); CacheEntity <Workflow> cacheentity = item.Value as CacheEntity <Workflow>; Assert.IsNotNull(item); Assert.AreEqual(list, cacheentity.List); DateTime dt = DateTime.Now; dao.Update(new WorkflowUpdateForm { Entity = new Workflow { LastUpdateTime = dt }, WorkflowQueryForm = new WorkflowQueryForm { ID = list[0].ID } }); list = TableCacheHelper.GetDataFromCache <Workflow>(typeof(WorkflowDao)); item = cache.GetItem(key); cacheentity = item.Value as CacheEntity <Workflow>; Assert.AreEqual(dt.ToString("yyyyMMddHHmmss"), cacheentity.LastUpdateTime.Value.ToString("yyyyMMddHHmmss")); }
public void UpdateWorkflow(Workflow workflow) { MetaManagerServices.GetConfigurationManagementService().CheckOutDomainObject(workflow.Id, typeof(Workflow)); Workflow readWorkflow = WorkflowDao.FindById(workflow.Id); XDocument x = XDocument.Load(XmlReader.Create(new StringReader(readWorkflow.WorkflowXoml))); var dialogs = from d in x.Descendants() where d.Attribute("DialogId") != null select d; foreach (XElement element in dialogs) { Dialog d = DialogDao.FindById(new Guid(element.Attribute("DialogId").Value)); element.Name = XName.Get(WorkflowTypeFactory.GetDialogActivityClassName(d), element.Name.NamespaceName); } var serviceMethods = from s in x.Descendants() where s.Attribute("ServiceMethodId") != null select s; foreach (XElement element in serviceMethods) { ServiceMethod s = ServiceMethodDao.FindById(new Guid(element.Attribute("ServiceMethodId").Value)); element.Name = XName.Get(WorkflowTypeFactory.GetServiceMethodActivityClassName(s), element.Name.NamespaceName); } readWorkflow.WorkflowXoml = x.ToString(); WorkflowDao.SaveOrUpdate(readWorkflow); }
public List <FullTask> Query(QueryMyTaskServiceForm form) { ISqlMapper mapper = Common.GetMapperFromSession(); FullTaskDao dao = new FullTaskDao(mapper); WorkflowDao wfdao = new WorkflowDao(mapper); Customer_ProjectDao cpdao = new Customer_ProjectDao(mapper); CustomerDao customerdao = new CustomerDao(mapper); var tasks = dao.QueryTaskByRelationship(form); var workflowids = (from t in tasks select t.WorkflowID).ToList(); var workflows = wfdao.Query(new WorkflowQueryForm { IDs = workflowids }); var projectids = (from w in workflows select w.ProcessID).ToList(); var cps = cpdao.Query(new Customer_ProjectQueryForm { ProjectIDs = projectids }); var customerids = (from cp in cps select cp.CustomerID).ToList(); var customers = customerdao.Query(new CustomerQueryForm { IDs = customerids }); foreach (var task in tasks) { var customername = (from cp in cps join c in customers on cp.CustomerID equals c.ID join w in workflows on cp.ProjectID equals w.ProcessID where w.ID.Equals(task.WorkflowID) && (cp.Type == 1 || cp.Type == 2) select c.Name.Trim()).ToList(); task.Title = String.Join(",", customername); } return(tasks); }
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 })); }
public void CleanUp() { WorkflowDao dao = new WorkflowDao(); dao.Delete(new WorkflowQueryForm { ID = "1" }); }
public List<string> Handle(ActivityAuth auth) { ISqlMapper mapper = Common.GetMapperFromSession(); WorkflowDao dao = new WorkflowDao(mapper); Workflow wf = dao.Query(new WorkflowQueryForm { ID = auth.WorkflowID }).FirstOrDefault(); string userid = wf.Creator; UserleaderWorkflowAuthority authority = new UserleaderWorkflowAuthority(); return authority.GetUserIDs(userid, Convert.ToInt32(auth.Value)); }
private void button1_Click(object sender, EventArgs e) { WorkflowDao dao = new WorkflowDao(); var wf = new WorkflowQueryForm(); wf.ID = "1c74c3e0ce2d4c5f983fab3dc6063223"; var list = dao.Query(wf); WorkflowModel model = WorkflowModel.Load("1c74c3e0ce2d4c5f983fab3dc6063223"); }
public void UpdateWorkflows(Cdc.MetaManager.DataAccess.Domain.Module module) { IList <Workflow> workflows = WorkflowDao.FindWorkflows(module.Application.Id, module.Name, null); foreach (Workflow workflow in workflows) { UpdateWorkflow(workflow); } }
/// <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); }
private void button1_Click(object sender, EventArgs e) { WorkflowDao dao = new WorkflowDao(); var wf = new WorkflowQueryForm(); wf.ID = "1c74c3e0ce2d4c5f983fab3dc6063223"; var list = dao.Query(wf); WorkflowModel model = WorkflowModel.Load("1c74c3e0ce2d4c5f983fab3dc6063223"); }
public List <string> Handle(ActivityAuth auth) { ISqlMapper mapper = Common.GetMapperFromSession(); WorkflowDao dao = new WorkflowDao(mapper); Workflow wf = dao.Query(new WorkflowQueryForm { ID = auth.WorkflowID }).FirstOrDefault(); string userid = wf.Creator; UserleaderWorkflowAuthority authority = new UserleaderWorkflowAuthority(); return(authority.GetUserIDs(userid, Convert.ToInt32(auth.Value))); }
public Workflow GetWorkflowById(Guid workflowId) { Workflow workflow = WorkflowDao.FindById(workflowId); NHibernateUtil.Initialize(workflow.Dialogs); NHibernateUtil.Initialize(workflow.ServiceMethods); NHibernateUtil.Initialize(workflow.Subworkflows); NHibernateUtil.Initialize(workflow.Module); NHibernateUtil.Initialize(workflow.Module.Application); MetaManagerUtil.InitializePropertyMap(workflow.RequestMap); return(workflow); }
/// <summary> /// 把流程实体新增到数据库 /// </summary> /// <returns></returns> public bool Create() { ISqlMapper mapper = MapperHelper.GetMapper(); WorkflowDao workflowdao = new WorkflowDao(mapper); ActivityDao activitydao = new ActivityDao(mapper); LinkDao linkdao = new LinkDao(mapper); ActivityAuthDao authdao = new ActivityAuthDao(mapper); workflowdao.Add(this.Value); var activities = this.Root.GetList(); List <Link> linkList = new List <Link>(); //保存节点 foreach (var activity in activities) { activitydao.Add(activity.Value); var activityinstance = activity as ActivityModel; //保存连接 if (activityinstance.PreLinks != null) { foreach (var link in activityinstance.PreLinks) { if (!linkList.Contains(link.Value)) { linkList.Add(link.Value); } } } if (activityinstance.NextLinks != null) { foreach (var link in activityinstance.NextLinks) { if (!linkList.Contains(link.Value)) { linkList.Add(link.Value); } } } //保存权限 foreach (var auth in activityinstance.Auth) { authdao.Add(auth); } } foreach (var link in linkList) { linkdao.Add(link); } return(true); }
public void Init() { WorkflowDao dao = new WorkflowDao(); dao.Delete(new WorkflowQueryForm { ID = "1" }); dao.Add(new Workflow { ID = "1", WorkflowDefinitionID = "1", Name = "UnitTest", CreateTime = DateTime.Now, LastUpdateTime = DateTime.Now, }); }
/// <summary> /// 继续流程 /// </summary> /// <param name="lastupdator"></param> public void ContinueWorkflow(string lastupdator) { ISqlMapper mapper = MapperHelper.GetMapper(); WorkflowDao workflowdao = new WorkflowDao(mapper); this.value.LastUpdator = lastupdator; this.value.Status = (int)WorkflowProcessStatus.Processing; workflowdao.Update(new WorkflowUpdateForm { Entity = new Workflow { Status = this.value.Status, LastUpdator = this.value.LastUpdator, }, WorkflowQueryForm = new WorkflowQueryForm { ID = this.value.ID } }); }
public void GetDataFromCacheTest() { var list = TableCacheHelper.GetDataFromCache<Workflow>(typeof(WorkflowDao)); if (list.Count == 0) { return; } WorkflowDao dao = new WorkflowDao(); string key = typeof(Workflow).FullName; var item = cache.GetItem(key); CacheEntity<Workflow> cacheentity = item.Value as CacheEntity<Workflow>; Assert.IsNotNull(item); Assert.AreEqual(list, cacheentity.List); DateTime dt = DateTime.Now; dao.Update(new WorkflowUpdateForm { Entity = new Workflow { LastUpdateTime = dt }, WorkflowQueryForm = new WorkflowQueryForm { ID = list[0].ID } }); list = TableCacheHelper.GetDataFromCache<Workflow>(typeof(WorkflowDao)); item = cache.GetItem(key); cacheentity = item.Value as CacheEntity<Workflow>; Assert.AreEqual(dt.ToString("yyyyMMddHHmmss"), cacheentity.LastUpdateTime.Value.ToString("yyyyMMddHHmmss")); }
/// <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 List <InitApprovalResultForm> Query(List <string> projectids, List <string> taskids, string currentuserid) { #region init dao List <InitApprovalResultForm> result = new List <InitApprovalResultForm>(); if (projectids == null || projectids.Count == 0) { return(new List <InitApprovalResultForm>()); } ISqlMapper mapper = Common.GetMapperFromSession(); ProjectDao dao = new ProjectDao(mapper); Customer_ProjectDao cpdao = new Customer_ProjectDao(mapper); Customer_AssetDao cadao = new Customer_AssetDao(mapper); Asset_ProjectDao apdao = new Asset_ProjectDao(mapper); WorkflowDao workflowdao = new WorkflowDao(mapper); ActivityDao activitydao = new ActivityDao(mapper); ApprovalDao appvoraldao = new ApprovalDao(mapper); TaskDao taskdao = new TaskDao(mapper); UserInfoDao uidao = new UserInfoDao(mapper); User_RoleDao urdao = new User_RoleDao(mapper); TrackingChangeOwnerDao tcodao = new TrackingChangeOwnerDao(mapper); TrackingMortgageDao tmdao = new TrackingMortgageDao(mapper); LinkDao linkdao = new LinkDao(mapper); Role_Module_ActionDao rmadao = new Role_Module_ActionDao(mapper); ReturnBackConfirmDao rbcdao = new ReturnBackConfirmDao(mapper); CreditReceiverInfoDao cridao = new CreditReceiverInfoDao(mapper); #endregion #region 查询数据 List <Customer_Project> cps = new List <Customer_Project>(); List <Customer_Asset> cas = new List <Customer_Asset>(); List <Asset_Project> aps = new List <Asset_Project>(); List <Activity> activities = new List <Activity>(); List <Approval> approvals = new List <Approval>(); List <Task> tasks = new List <Task>(); List <TrackingChangeOwner> tco = new List <TrackingChangeOwner>(); List <TrackingMortgage> tm = new List <TrackingMortgage>(); List <string> projectidlist = new List <string>(); List <string> workflowids = new List <string>(); List <CreditReceiverInfo> criList = new List <CreditReceiverInfo>(); List <Link> links = new List <Link>(); List <ReturnBackConfirm> returnBackMoneyInfo = new List <ReturnBackConfirm>(); List <Workflow> workflows = null; List <Project> list = null; var rma = rmadao.Query(new Role_Module_ActionQueryForm { }); if (taskids != null && taskids.Count > 0) { tasks = taskdao.Query(new TaskQueryForm { IDs = taskids }); workflowids = (from t in tasks select t.WorkflowID).Distinct().ToList(); workflows = workflowdao.Query(new WorkflowQueryForm { IDs = workflowids }); activities = activitydao.Query(new ActivityQueryForm { WorkflowIDs = workflowids }); approvals = appvoraldao.Query(new ApprovalQueryForm { WorkflowIDs = workflowids }); projectidlist = (from w in workflows select w.ProcessID).ToList(); list = dao.Query(new ProjectQueryForm { IDs = projectidlist }); } else if (projectids != null && projectids.Count > 0) { list = dao.Query(new ProjectQueryForm { IDs = projectids }); projectidlist = (from p in list select p.ID).ToList(); workflows = workflowdao.Query(new WorkflowQueryForm { ProcessIDs = projectidlist }); workflowids = (from w in workflows select w.ID).ToList(); if (workflowids.Count > 0) { activities = activitydao.Query(new ActivityQueryForm { WorkflowIDs = workflowids }); approvals = appvoraldao.Query(new ApprovalQueryForm { WorkflowIDs = workflowids }); tasks = taskdao.Query(new TaskQueryForm { WorkflowIDs = workflowids }); } } else { return(result); } if (projectidlist.Count > 0) { cps = cpdao.Query(new Customer_ProjectQueryForm { ProjectIDs = projectidlist }); cas = cadao.Query(new Customer_AssetQueryForm { ProjectIDs = projectidlist }); aps = apdao.Query(new Asset_ProjectQueryForm { ProjectIDs = projectidlist }); } var users = uidao.Query(new UserInfoQueryForm { }); var userroles = urdao.Query(new User_RoleQueryForm { }); criList = cridao.Query(new CreditReceiverInfoQueryForm { ProjectIDs = projectids }); tco = tcodao.Query(new TrackingChangeOwnerQueryForm { ProjectIDs = projectidlist }); tm = tmdao.Query(new TrackingMortgageQueryForm { ProjectIDs = projectidlist }); returnBackMoneyInfo = rbcdao.Query(new ReturnBackConfirmQueryForm { ProjectIDs = projectidlist }); //从缓存中取得 var customers = TableCacheHelper.GetDataFromCache <Customer>(typeof(CustomerDao)); var assets = TableCacheHelper.GetDataFromCache <Asset>(typeof(AssetDao)); #endregion #region 处理废单权限 //处理废单权限 var hasDisplayDiscard = (from ur in userroles join r in rma on ur.RoleID equals r.RoleID where r.ModuleID == "4" && r.ActionID == "4" && ur.UserID == currentuserid select r).FirstOrDefault(); #endregion foreach (Project project in list) { var data = QueryDetail(project, customers, assets, cps, cas, aps, workflows, activities, approvals, tasks, users, userroles, tco, tm, returnBackMoneyInfo, criList, currentuserid); if (hasDisplayDiscard != null) { data.DisplayDiscard = true; } result.Add(data); } return(result); }
public string Add(AddProjectServiceForm form) { ISqlMapper mapper = Common.GetMapperFromSession(); List<Customer_Project> customers = new List<Customer_Project>(); List<Customer> updateCustomers = new List<Customer>(); WorkflowDao workflowdao = new WorkflowDao(mapper); UserBLL userbll = new UserBLL(); var user = userbll.GetCurrentUser(); string userid = user.User.ID; form.Project.Report = form.Report; var result = bll.Save(form.Project, form.Assets, form.Buyers, form.Sellers, form.ThirdParty, form.Guarantor, form.Project.CreditReceiverInfo, userid); //处理流程 WorkflowDefinitionModel wfdm = WorkflowDefinitionModel.LoadByName("额度申请"); Workflow wf = workflowdao.Query(new WorkflowQueryForm { ProcessID = result }).FirstOrDefault(); WorkflowModel workflow = null; if (wf == null) { workflow = wfdm.StartNew(user.User.ID, result, new WorkflowAuthority()); //如果流程当前处理人等于申请人,就直接审批通过,进入下一个流程 var task = workflow.CurrentActivity.Tasks.Find(t => t.UserID == userid); if (task != null) { workflow.ProcessActivity(new Approval { Creator = user.User.ID, LastUpdator = user.User.ID, Remark = form.Report, Status = (int)ApprovalStatus.Agree, ActivityID = workflow.CurrentActivity.Value.ID, WorkflowID = workflow.Value.ID, }, user.User.ID, new WorkflowAuthority()); } } else { workflow = WorkflowModel.Load(wf.ID); //如果流程当前处理人等于申请人,就直接审批通过,进入下一个流程 var task = workflow.CurrentActivity.Tasks.Find(t => t.UserID == userid); if (task != null) { workflow.ProcessActivity(new Approval { Creator = user.User.ID, LastUpdator = user.User.ID, Status = (int)ApprovalStatus.None, ActivityID = workflow.CurrentActivity.Value.ID, WorkflowID = workflow.Value.ID, }, user.User.ID, new WorkflowAuthority()); task = workflow.CurrentActivity.Tasks.Find(t => t.UserID == userid); if (task != null) { workflow.ProcessActivity(new Approval { Creator = user.User.ID, LastUpdator = user.User.ID, Remark = form.Report, Status = (int)ApprovalStatus.Agree, ActivityID = workflow.CurrentActivity.Value.ID, WorkflowID = workflow.Value.ID, }, user.User.ID, new WorkflowAuthority()); } } } return result; }
public void CleanUp() { WorkflowDao dao = new WorkflowDao(); dao.Delete(new WorkflowQueryForm { ID = "1" }); }
public string Add(AddProjectServiceForm form) { ISqlMapper mapper = Common.GetMapperFromSession(); List <Customer_Project> customers = new List <Customer_Project>(); List <Customer> updateCustomers = new List <Customer>(); WorkflowDao workflowdao = new WorkflowDao(mapper); UserBLL userbll = new UserBLL(); var user = userbll.GetCurrentUser(); string userid = user.User.ID; form.Project.Report = form.Report; var result = bll.Save(form.Project, form.Assets, form.Buyers, form.Sellers, form.ThirdParty, form.Guarantor, form.Project.CreditReceiverInfo, userid); //处理流程 WorkflowDefinitionModel wfdm = WorkflowDefinitionModel.LoadByName("额度申请"); Workflow wf = workflowdao.Query(new WorkflowQueryForm { ProcessID = result }).FirstOrDefault(); WorkflowModel workflow = null; if (wf == null) { workflow = wfdm.StartNew(user.User.ID, result, new WorkflowAuthority()); //如果流程当前处理人等于申请人,就直接审批通过,进入下一个流程 var task = workflow.CurrentActivity.Tasks.Find(t => t.UserID == userid); if (task != null) { workflow.ProcessActivity(new Approval { Creator = user.User.ID, LastUpdator = user.User.ID, Remark = form.Report, Status = (int)ApprovalStatus.Agree, ActivityID = workflow.CurrentActivity.Value.ID, WorkflowID = workflow.Value.ID, }, user.User.ID, new WorkflowAuthority()); } } else { workflow = WorkflowModel.Load(wf.ID); //如果流程当前处理人等于申请人,就直接审批通过,进入下一个流程 var task = workflow.CurrentActivity.Tasks.Find(t => t.UserID == userid); if (task != null) { workflow.ProcessActivity(new Approval { Creator = user.User.ID, LastUpdator = user.User.ID, Status = (int)ApprovalStatus.None, ActivityID = workflow.CurrentActivity.Value.ID, WorkflowID = workflow.Value.ID, }, user.User.ID, new WorkflowAuthority()); task = workflow.CurrentActivity.Tasks.Find(t => t.UserID == userid); if (task != null) { workflow.ProcessActivity(new Approval { Creator = user.User.ID, LastUpdator = user.User.ID, Remark = form.Report, Status = (int)ApprovalStatus.Agree, ActivityID = workflow.CurrentActivity.Value.ID, WorkflowID = workflow.Value.ID, }, user.User.ID, new WorkflowAuthority()); } } } return(result); }
/// <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 }); }
/// <summary> /// 结束流程 /// </summary> /// <param name="lastupdator"></param> public void FinishWorkflow(string lastupdator) { ISqlMapper mapper = MapperHelper.GetMapper(); WorkflowDao workflowdao = new WorkflowDao(mapper); this.value.LastUpdator = lastupdator; this.value.Status = (int)WorkflowProcessStatus.Processed; workflowdao.Update(new WorkflowUpdateForm { Entity = new Workflow { Status = this.value.Status, LastUpdator = this.value.LastUpdator, }, WorkflowQueryForm = new WorkflowQueryForm { ID = this.value.ID } }); }
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; }
public void Init() { WorkflowDao dao = new WorkflowDao(); dao.Delete(new WorkflowQueryForm { ID = "1" }); dao.Add(new Workflow { ID = "1", WorkflowDefinitionID = "1", Name = "UnitTest", CreateTime = DateTime.Now, LastUpdateTime = DateTime.Now, }); }
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); }
/// <summary> /// 把流程实体新增到数据库 /// </summary> /// <returns></returns> public bool Create() { ISqlMapper mapper = MapperHelper.GetMapper(); WorkflowDao workflowdao = new WorkflowDao(mapper); ActivityDao activitydao = new ActivityDao(mapper); LinkDao linkdao = new LinkDao(mapper); ActivityAuthDao authdao = new ActivityAuthDao(mapper); workflowdao.Add(this.Value); var activities = this.Root.GetList(); List<Link> linkList = new List<Link>(); //保存节点 foreach (var activity in activities) { activitydao.Add(activity.Value); var activityinstance = activity as ActivityModel; //保存连接 if (activityinstance.PreLinks != null) { foreach (var link in activityinstance.PreLinks) { if (!linkList.Contains(link.Value)) { linkList.Add(link.Value); } } } if (activityinstance.NextLinks != null) { foreach (var link in activityinstance.NextLinks) { if (!linkList.Contains(link.Value)) { linkList.Add(link.Value); } } } //保存权限 foreach (var auth in activityinstance.Auth) { authdao.Add(auth); } } foreach (var link in linkList) { linkdao.Add(link); } return true; }