示例#1
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
            });
        }
示例#2
0
        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));
        }
示例#3
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
             }
         });
     }
 }
        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);
        }
示例#6
0
        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);
        }
示例#7
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
            }));
        }
        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));
 }
示例#10
0
        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");
        }
示例#11
0
        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);
            }
        }
示例#12
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);
        }
示例#13
0
        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)));
        }
示例#15
0
        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);
        }
示例#16
0
        /// <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,
            });
        }
示例#18
0
        /// <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"));
 }
示例#20
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;
        }
示例#21
0
        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);
        }
示例#22
0
        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" });
 }
示例#24
0
        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);
        }
示例#25
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 }
         });
     }
 }
示例#26
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 });
 }
示例#27
0
 /// <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);
        }
示例#31
0
 /// <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;
 }