Ejemplo n.º 1
0
 public void Execute(IUser receiveUser, string title, string content, SysProcessInstance pi, SysActivityInstance ai, SysWorkItem wi, RemindTemplateModel model)
 {
     try
     {
         SysInternalMail mail = new SysInternalMail {
             MailId     = this.context.GetNextIdentity_Int(false),
             Subject    = title,
             Body       = content,
             CreateTime = new DateTime?(DateTime.Now)
         };
         SysInternalMailSender sender = new SysInternalMailSender {
             SenderId = this.context.GetNextIdentity_Int(false),
             MailId   = new int?(mail.MailId),
             State    = 1,
             SendTime = new DateTime?(DateTime.Now),
             UserId   = 1
         };
         SysInternalMailReceiver receiver = new SysInternalMailReceiver {
             ReceiverId  = this.context.GetNextIdentity_Int(false),
             ReceiveTime = new DateTime?(DateTime.Now),
             State       = 1,
             SenderId    = new int?(sender.SenderId),
             IsRead      = false,
             UserId      = new int?(receiveUser.User_ID)
         };
         this.context.Insert(mail);
         this.context.Insert(sender);
         this.context.Insert(receiver);
     }
     catch (Exception exception)
     {
         throw new ApplicationException("处理自定义提醒错误:" + exception.Message);
     }
 }
Ejemplo n.º 2
0
        public override IList <IUser> GetUsers(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            string assemblyName = part.Param_AssemblyName;
            string className    = part.Param_ClassName;

            return(CustomHandlerLoader.GetHandlerWithName <IParticipantFunc>(assemblyName, className, new object[0]).GetUsers(part, pi, ai));
        }
Ejemplo n.º 3
0
        public List <int> ExecutePython(SysProcessInstance pi, string scriptText)
        {
            List <int> list = new List <int>();

            if (!string.IsNullOrEmpty(scriptText))
            {
                EntityCache cache         = new EntityCache(this);
                SysEntity   processEntity = pi.Process.ProcessEntity;
                EntityData  data          = cache.GetObject(processEntity, pi.ObjectId);
                try
                {
                    ScriptEngine engine = Python.CreateEngine();
                    ScriptScope  scope  = engine.CreateScope();
                    scope.SetVariable("manager", this);
                    scope.SetVariable("pi_data", data);
                    scope.SetVariable("userIdList", list);
                    engine.CreateScriptSourceFromString(scriptText).Execute(scope);
                }
                catch (Exception exception)
                {
                    throw new ApplicationException("Python执行错误:" + exception.Message, exception);
                }
            }
            return(list);
        }
        public string GetWorkItemDisplayText(SysWorkItem wi, SysProcessInstance pi, SysActivityInstance ai)
        {
            string str6;

            try
            {
                SysActivity activity = ai.Activity;
                if (activity == null)
                {
                    throw new ApplicationException(string.Format("活动实例:{0}找不到对应活动", ai.ActivityInstanceId));
                }
                SysProcess process = pi.Process;
                if (process == null)
                {
                    throw new ApplicationException(string.Format("活动:{0}找不到对应流程", activity.ActivityId));
                }
                string activityName = activity.ActivityName;
                string processName  = process.ProcessName;
                if (process.ProcessCategory == 2)
                {
                    return(string.Format("[{0}][{1}]{2}", processName, activityName, pi.FormInstance.FormTitle));
                }
                EntityCache cache             = new EntityCache(this._manager);
                SysEntity   processEntity     = process.ProcessEntity;
                string      objectDisplayName = cache.GetObjectDisplayName(processEntity, wi.RelativeObjectId.Value);
                str6 = string.Format("[{0}][{1}]{2}", processName, activityName, objectDisplayName);
            }
            catch (Exception exception)
            {
                throw exception;
            }
            return(str6);
        }
        public SysProcessInstance GetProcessInstanceCacheByWorkItem(int workItemId, out SysWorkItem work_item)
        {
            Func <SysWorkItem, bool> predicate = null;
            SysWorkItem item = this._context.FindById <SysWorkItem>(new object[] { workItemId });

            if (item == null)
            {
                throw new ApplicationException("工作项ID不正确");
            }
            Func <SysActivityInstance, bool> func = null;
            SysActivityInstance ai = this._context.FindById <SysActivityInstance>(new object[] { item.ActivityInstanceId });

            if (ai == null)
            {
                throw new ApplicationException("工作项ID不正确");
            }
            SysProcessInstance processInstanceCache = this.GetProcessInstanceCache(ai.ProcessInstanceId.Value);

            if (func == null)
            {
                func = i => i.ActivityInstanceId == ai.ActivityInstanceId;
            }
            SysActivityInstance instance2 = processInstanceCache.ActivityInstances.FirstOrDefault <SysActivityInstance>(func);

            if (predicate == null)
            {
                predicate = i => i.WorkItemId == workItemId;
            }
            work_item = instance2.WorkItems.FirstOrDefault <SysWorkItem>(predicate);
            return(processInstanceCache);
        }
        public override void ProcessMessage(SysWorkflowMessage msg)
        {
            SysWorkItem        wI = this._engine.WI;
            SysProcessInstance pI = this._engine.PI;

            if (!wI.Status.HasValue)
            {
                wI.Status = 0;
            }
            if (wI.Status.Value != 0x63)
            {
                throw new ApplicationException("该工作项的状态已变更");
            }
            Queue <WorkflowMessage> queue = new Queue <WorkflowMessage>(10);

            if (msg.NextApproveUserList.Count > 0)
            {
                WorkflowMessage item = this._engine.NewCompleteWorkItemWithNextUsersMessage(wI, msg.NextApproveUserList);
                queue.Enqueue(item);
            }
            else
            {
                WorkflowMessage message2 = this._engine.NewCompleteWorkItemMessage(wI);
                queue.Enqueue(message2);
            }
            while (queue.Count > 0)
            {
                queue.Dequeue().Execute(queue);
            }
            this._engine.ProcessInstanceCache.ClearCache(pI.ProcessInstanceId);
        }
Ejemplo n.º 7
0
        public IDepartment GetDepartment(SysProcessInstance pi)
        {
            if (pi == null)
            {
                throw new ArgumentNullException("pi");
            }
            if (!pi.StartUserId.HasValue)
            {
                throw new ApplicationException("启动用户为空");
            }
            int   userId   = pi.StartUserId.Value;
            IUser userById = base._orgProxy.GetUserById(userId);

            if (userById == null)
            {
                throw new ApplicationException("启动用户不存在");
            }
            if (!userById.Department_ID.HasValue)
            {
                throw new ApplicationException(string.Format("未设置用户{0}({1})的部门", userById.User_Name, userById.User_ID));
            }
            IDepartment departmentById = base._orgProxy.GetDepartmentById(userById.Department_ID.Value);

            if (departmentById == null)
            {
                throw new ApplicationException(string.Format("部门{0}不存在", userById.Department_ID.Value));
            }
            return(departmentById);
        }
        public string GetWorkItemCompletePageUrl(SysWorkItem wi, SysProcessInstance pi, SysActivityInstance ai, bool isRelative = true)
        {
            string str3;

            try
            {
                SysActivity activity = ai.Activity;
                if (activity == null)
                {
                    throw new ApplicationException(string.Format("活动实例:{0}找不到对应活动", ai.ActivityInstanceId));
                }
                if (pi.Process.ProcessCategory == 2)
                {
                    return(string.Format("../FormWorkflow/FormInstanceApprove.aspx?id={0}", wi.WorkItemId));
                }
                long?   pageid = activity.PageId;
                SysPage page   = pi.Process.ProcessEntity.Pages.FirstOrDefault <SysPage>(p => p.ControlId == pageid);
                if (page == null)
                {
                    throw new ApplicationException(string.Format("活动:{0}找不到对应页面", activity.ActivityId));
                }
                if (!isRelative)
                {
                    return(string.Format("{0}_{1}/{2}.aspx?id={3}", new object[] { page.OwnerEntity.OwnerModule.EntityCategory.CategoryName, page.OwnerEntity.OwnerModule.ModuleName, page.PageName, wi.WorkItemId }));
                }
                str3 = string.Format("../{0}_{1}/{2}.aspx?id={3}", new object[] { page.OwnerEntity.OwnerModule.EntityCategory.CategoryName, page.OwnerEntity.OwnerModule.ModuleName, page.PageName, wi.WorkItemId });
            }
            catch (Exception exception)
            {
                throw exception;
            }
            return(str3);
        }
Ejemplo n.º 9
0
        public IDepartment GetDepartment(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            IDepartment department = null;

            if (part.Param_Participant == null)
            {
                throw new ApplicationException("父部门参与人未指定基于参于人");
            }
            SysProcessParticipant participant = part.Param_Participant;

            if (participant.FunctionType == 3)
            {
                department = new SpecDepartmentFunc(base._context).GetDepartment(participant, pi, ai);
            }
            else if (participant.FunctionType == 2)
            {
                department = new StartDepartmentFunc(base._context).GetDepartment(pi);
            }
            else if (participant.FunctionType == 5)
            {
                department = this.GetDepartment(participant, pi, ai);
            }
            else
            {
                if (participant.FunctionType != 10)
                {
                    throw new ApplicationException("在ParentDepartmentFunc的GetDepartment中FunctionType有误!");
                }
                department = new SpecialLevelParentDeptFunc(base._context).GetDepartment(participant, pi, ai);
            }
            return(base._orgProxy.GetDepartmentById(department.Parent_ID.Value));
        }
        public override IList <IUser> GetUsers(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            if (ai.ToTransitionInstances.Count != 1)
            {
                throw new ApplicationException(string.Format("连接线实例不正确,AI:{0}", ai.ActivityInstanceId));
            }
            SysTransitionInstance instance            = ai.ToTransitionInstances.First <SysTransitionInstance>();
            SysActivityInstance   preActivityInstance = instance.PreActivityInstance;

            if (preActivityInstance == null)
            {
                throw new ApplicationException(string.Format("获得上一个活动实例失败,ID:{0}", instance.PostActivityInstanceId));
            }
            if (preActivityInstance.Activity == null)
            {
                throw new ApplicationException(string.Format("获得上一个活动定义失败,ID:{0}", preActivityInstance.ActivityId));
            }
            List <int>   list   = (from p in preActivityInstance.WorkItems select p.OwnerId.Value).Distinct <int>().ToList <int>();
            List <IUser> source = new List <IUser>();

            foreach (int num in list)
            {
                IUser userById = base._orgProxy.GetUserById(num);
                if (userById != null)
                {
                    source.Add(userById);
                }
            }
            return(source.ToList <IUser>());
        }
        public override IList <IUser> GetUsers(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            List <IUser> source = new List <IUser>();

            using (IEnumerator <SysActivityParticipant> enumerator = ai.Activity.ActivityParticipants.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    Func <SysProcessParticipant, bool> predicate = null;
                    SysActivityParticipant             p         = enumerator.Current;
                    if (predicate == null)
                    {
                        predicate = i => i.ParticipantId == p.ParticipantId;
                    }
                    SysProcessParticipant participant = pi.Process.ProcessParticipants.FirstOrDefault <SysProcessParticipant>(predicate);
                    if (participant != null)
                    {
                        int?         wiOwnerId  = null;
                        List <IUser> collection = ParticipantHelper.GetUsers(base._context, participant, pi, ai, wiOwnerId);
                        source.AddRange(collection);
                    }
                }
            }
            return(source.Distinct <IUser>().ToList <IUser>());
        }
 public void AddWorkItemGroup(SysWorkItemApproveGroup group, SysProcessInstance pi, SysActivityInstance ai)
 {
     this._context.Insert(group);
     group.ActivityInstance = ai;
     ai.ApproveGroups.Add(group);
     group.WorkItems = new List <SysWorkItem>();
 }
Ejemplo n.º 13
0
        /// <summary>
        /// 绑定流程实例
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rProcess_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            Label    lblProcess       = e.Item.FindControl("lblProcess") as Label;
            Label    lblApproveResult = e.Item.FindControl("lblApproveResult") as Label;
            Label    lblStartTime     = e.Item.FindControl("lblStartTime") as Label;
            Repeater rActivity        = e.Item.FindControl("rActivity") as Repeater;

            SysProcessInstance pi = e.Item.DataItem as SysProcessInstance;

            lblProcess.Text       = pi.Process.ProcessName;
            lblApproveResult.Text = GetCheckState(pi.ApproveResult);
            lblStartTime.Text     = string.Format("{0:yyyy/MM/dd HH:mm}", pi.StartTime);

            var result = pi.ActivityInstances.Where(p => p.Activity.ActivityType == (int)ActivityType.Approve)
                         .OrderBy(p => p.StartTime)
                         .Select(p => new
            {
                p.StartTime,
                ActivityId         = p.ActivityId,
                ActivityName       = p.Activity.ActivityName,
                ActivityInstanceId = p.ActivityInstanceId,
                AI            = p,
                ApproveResult = GetCheckState(p),
            }).ToList();

            rActivity.DataSource = result.ToList();
            rActivity.DataBind();
        }
Ejemplo n.º 14
0
        public IDepartment GetDepartment(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            if (part == null)
            {
                throw new ArgumentNullException("part");
            }
            SysProcessParticipant participant = part.Param_Participant;

            if (participant == null)
            {
                throw new ApplicationException("部门经理参与人未指定基于参于人");
            }
            if (participant.FunctionType == 3)
            {
                SpecDepartmentFunc func = new SpecDepartmentFunc(base._context);
                return(func.GetDepartment(participant, pi, ai));
            }
            if (participant.FunctionType == 2)
            {
                StartDepartmentFunc func2 = new StartDepartmentFunc(base._context);
                return(func2.GetDepartment(pi));
            }
            if (participant.FunctionType == 5)
            {
                ParentDepartmentFunc func3 = new ParentDepartmentFunc(base._context);
                return(func3.GetDepartment(participant, pi, ai));
            }
            if (participant.FunctionType != 10)
            {
                throw new ApplicationException("部门经理参与人获得部门失败,可能是参数类型错误");
            }
            SpecialLevelParentDeptFunc func4 = new SpecialLevelParentDeptFunc(base._context);

            return(func4.GetDepartment(participant, pi, ai));
        }
        public T_WorkItemBase InsertWorkItemBase(SysWorkItem wi, SysProcessInstance pi, SysActivityInstance ai)
        {
            T_WorkItemBase base4;

            try
            {
                int num  = this._context.GetNextIdentity_Int(false);
                int num2 = this._context.GetNextIdentity_Int(false);
                wi.WorkItemId     = num;
                wi.WorkItemBaseId = new int?(num2);
                string         str   = this.GetWorkItemDisplayText(wi, pi, ai);
                string         str2  = this.GetWorkItemCompletePageUrl(wi, pi, ai, true);
                T_WorkItemBase base2 = new T_WorkItemBase {
                    WorkItemBase_Id   = num2,
                    WorkItemBase_Name = str,
                    Title             = str,
                    CompletePageUrl   = str2,
                    CreateTime        = new DateTime?(DateTime.Now),
                    StartTime         = new DateTime?(DateTime.Now),
                    EndTime           = null,
                    IsAllDay          = true,
                    WorkItemId        = num.ToString(),
                    OwnerId           = wi.OwnerId,
                    State             = wi.Status
                };
                this._context.Insert(base2);
                base4 = base2;
            }
            catch (Exception exception)
            {
                throw exception;
            }
            return(base4);
        }
Ejemplo n.º 16
0
        internal virtual int StartFormProcess(int startUserId, int formInstanceId)
        {
            IOrgProxy proxy        = OrgProxyFactory.GetProxy(this._context);
            int       nextIdentity = this._manager.GetNextIdentity();
            IUser     userById     = proxy.GetUserById(startUserId);

            if (userById == null)
            {
                throw new ApplicationException("用户不存在");
            }
            if (!userById.Department_ID.HasValue)
            {
                throw new ApplicationException("未指定用户部门");
            }
            IDepartment departmentById = proxy.GetDepartmentById(userById.Department_ID.Value);

            if (departmentById == null)
            {
                throw new ApplicationException("用户部门无效");
            }
            SysFormInstance fi = this._context.FindById <SysFormInstance>(new object[] { formInstanceId });

            if (fi == null)
            {
                throw new ApplicationException("表单实例不存在");
            }
            if (!fi.ObjectId.HasValue)
            {
                throw new ApplicationException("表单实例未关联对象ID");
            }
            fi.State = 1;
            this.ProcessInstanceCache.UpdateFormInstance(fi);
            SysProcessInstance instance2 = new SysProcessInstance {
                StartTime         = new DateTime?(DateTime.Now),
                EndTime           = null,
                InstanceStatus    = 0,
                ObjectId          = fi.ObjectId.Value,
                FormInstanceId    = new int?(fi.FormInstanceId),
                FormInstance      = fi,
                ProcessId         = new long?(this._process.ProcessId),
                ProcessInstanceId = nextIdentity,
                StartUserId       = new int?(startUserId),
                StartDeptId       = new int?(departmentById.Department_ID),
                WwfInstanceId     = null
            };

            this._pi = instance2;
            this._pi.FormInstance = fi;
            this._piCacheFactory.AddProcessInstance(this._pi);
            Queue <WorkflowMessage> queue = new Queue <WorkflowMessage>(10);
            WorkflowMessage         item  = this.NewStartProcessMessage();

            queue.Enqueue(item);
            while (queue.Count > 0)
            {
                queue.Dequeue().Execute(queue);
            }
            this._piCacheFactory.ClearCache(nextIdentity);
            return(nextIdentity);
        }
Ejemplo n.º 17
0
        internal void RejectApproveWorkItem(int workItemId, string approveComment, long nextActivityId)
        {
            SysWorkItem item;

            this._pi = this._piCacheFactory.GetProcessInstanceCacheByWorkItem(workItemId, out item);
            if (!item.Status.HasValue)
            {
                item.Status = 0;
            }
            if (item.Status.Value == 1)
            {
                throw new ApplicationException("该工作项已完成");
            }
            if (item.Status.Value == 3)
            {
                throw new ApplicationException("该工作项已被系统取消");
            }
            if (item.Status.Value != 0)
            {
                throw new ApplicationException("该工作项已完成或被取消");
            }
            this.AddInstanceData(item, ApproveResultEnum.Reject, approveComment);
            Queue <WorkflowMessage> queue   = new Queue <WorkflowMessage>(10);
            WorkflowMessage         message = this.NewRejectWorkItemWithNextActivityApproveMessage(item, nextActivityId);

            queue.Enqueue(message);
            while (queue.Count > 0)
            {
                queue.Dequeue().Execute(queue);
            }
            this._piCacheFactory.ClearCache(this._pi.ProcessInstanceId);
        }
        private SysProcessInstance LoadProcessInstance(int processInstanceId)
        {
            SysProcessInstance pi = this._context.FindById <SysProcessInstance>(new object[] { processInstanceId });

            if (pi == null)
            {
                throw new ApplicationException("流程实例ID不正确");
            }
            if (pi.FormInstanceId.HasValue)
            {
                pi.FormInstance = this._context.FindById <SysFormInstance>(new object[] { pi.FormInstanceId });
                if (pi.FormInstance == null)
                {
                    throw new ApplicationException("流程实例关联表单实例不存在");
                }
            }
            SysProcess processCache = this._processCache.GetProcessCache(pi.ProcessId.Value);

            pi.Process = processCache;
            string condition = string.Format("ProcessInstanceId = {0}", pi.ProcessInstanceId);

            pi.ActivityInstances = this._context.Where <SysActivityInstance>(condition, new DbParameter[0]);
            foreach (SysActivityInstance instance2 in pi.ActivityInstances)
            {
                this.LoadActivityInstance(instance2, pi, processCache);
            }
            return(pi);
        }
Ejemplo n.º 19
0
        public override IList <IUser> GetUsers(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            IUser startUser = this.GetStartUser(pi);

            return(new List <IUser> {
                startUser
            });
        }
Ejemplo n.º 20
0
 protected void Dispose(bool disposing)
 {
     if (this._pi != null)
     {
         this._piCacheFactory.ClearCache(this._pi.ProcessInstanceId);
         this._pi = null;
     }
 }
Ejemplo n.º 21
0
 internal ProcessEngine(ProcessInstanceCacheFactory runtimeContext, SysProcess process)
 {
     this._context        = runtimeContext.Context;
     this._process        = process;
     this._piCacheFactory = runtimeContext;
     this._manager        = this._piCacheFactory.Manager;
     this._pi             = null;
 }
 public ProcessRemindHandlerBase(ProcessInstanceCacheFactory cache, SysProcessInstance pi, SysActivityInstance ai, UseTimeType useTime, SysWorkItem wi = null, int?result = new int?())
 {
     this.creator         = new RemindTemplateModelCreator(cache, pi, ai, useTime, wi, result);
     this._piCacheFactory = cache;
     this._context        = cache.Context;
     this._manager        = cache.Manager;
     this.InitRemindList();
 }
Ejemplo n.º 23
0
        public override IList <IUser> GetUsers(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            IDepartment department = this.GetDepartment(part, pi, ai);

            if (department == null)
            {
                throw new ApplicationException("在SpecialLevelParentDeptFunc中未能找到指定层级的上级部门!");
            }
            return(base._orgProxy.GetDepartmentUsers(department.Department_ID));
        }
Ejemplo n.º 24
0
        public override IList <IUser> GetUsers(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            IDepartment department = this.GetDepartment(pi);

            if (department == null)
            {
                throw new ApplicationException("在StartDepartmentFunc的GetUsers中获取部门有误!");
            }
            return(base._orgProxy.GetDepartmentUsers(department.Department_ID));
        }
        protected SysActivityInstance CreatePostActivityInstance(SysProcessInstance pi, SysActivity postActivity)
        {
            if (postActivity == null)
            {
                throw new ApplicationException("无此活动");
            }
            SysActivityInstance postAi = this.CreateActivityInstance(pi, postActivity);

            this.RedirectNextApproveUsers(this.AI, postAi);
            return(postAi);
        }
Ejemplo n.º 26
0
 internal ProcessEngine(ProcessInstanceCacheFactory runtimeContext, SysProcessInstance processInstance)
 {
     if (processInstance.Process == null)
     {
         processInstance.Process = runtimeContext.PCacheFactory.GetProcessCache(processInstance.ProcessId.Value);
     }
     this._context        = runtimeContext.Context;
     this._process        = processInstance.Process;
     this._piCacheFactory = runtimeContext;
     this._manager        = this._piCacheFactory.Manager;
     this._pi             = processInstance;
 }
 public void AddActivityInstance(SysProcessInstance pi, SysActivityInstance ai)
 {
     this._context.Insert(ai);
     ai.Activity        = pi.Process.Activities.FirstOrDefault <SysActivity>(i => i.ActivityId == ai.ActivityId);
     ai.ProcessInstance = pi;
     pi.ActivityInstances.Add(ai);
     ai.WorkItems               = new List <SysWorkItem>();
     ai.ApproveGroups           = new List <SysWorkItemApproveGroup>();
     ai.FromTransitionInstances = new List <SysTransitionInstance>();
     ai.ToTransitionInstances   = new List <SysTransitionInstance>();
     ai.UserDefinedApproveUsers = new List <SysActivityInstanceApproveUsers>();
 }
        private SysActivityInstance CreatePostAcitivtyInstance(SysProcessInstance pi, SysTransition tran)
        {
            if (!tran.PostActivityId.HasValue)
            {
                throw new ApplicationException("后续活动为空");
            }
            SysActivity         postActivity = pi.Process.Activities.FirstOrDefault <SysActivity>(p => p.ActivityId == tran.PostActivityId.Value);
            SysActivityInstance postAi       = this.CreatePostActivityInstance(pi, postActivity);

            this.CreateTransitionInstance(postAi, tran);
            return(postAi);
        }
Ejemplo n.º 29
0
        public override IList <IUser> GetUsers(SysProcessParticipant part, SysProcessInstance pi, SysActivityInstance ai)
        {
            if (!this._wiOwnerId.HasValue)
            {
                throw new ApplicationException("计划工作项负责人参与人失败");
            }
            IUser userById = base._orgProxy.GetUserById(this._wiOwnerId.Value);

            return(new List <IUser> {
                userById
            });
        }
Ejemplo n.º 30
0
        private int StartProcessAsync(SysProcess process, int startUserId, int relativeObjectId, List <IApproveUser> nextApproveUserList)
        {
            int num3;

            try
            {
                int num = this._context.GetNextIdentity_Int(false);
                SysProcessInstance instance = new SysProcessInstance {
                    StartTime         = new DateTime?(DateTime.Now),
                    InstanceStatus    = 0,
                    ObjectId          = relativeObjectId,
                    ProcessId         = new long?(process.ProcessId),
                    ProcessInstanceId = num,
                    StartUserId       = new int?(startUserId)
                };
                if (process.ProcessCategory == 2)
                {
                    instance.FormInstanceId = new int?(relativeObjectId);
                    T_User user = this._context.FindById <T_User>(new object[] { startUserId });
                    if (user != null)
                    {
                        T_Department department = this._context.FindById <T_Department>(new object[] { user.Department_ID });
                        if (department != null)
                        {
                            instance.StartDeptId = new int?(department.Department_ID);
                        }
                    }
                }
                int num2 = this._context.GetNextIdentity_Int(false);
                SysWorkflowMessage msg = new SysWorkflowMessage {
                    ProcessId         = process.ProcessId,
                    ProcessInstanceId = num,
                    CreateTime        = DateTime.Now,
                    MessageId         = num2,
                    MessageType       = WorkflowMessageTypeEnum.StartingProcess,
                    OperationUserId   = startUserId,
                    State             = SysWorkflowMessageStateEnum.Inited
                };
                if ((nextApproveUserList != null) && (nextApproveUserList.Count > 0))
                {
                    msg.NextApproveUserList.AddRange(nextApproveUserList);
                }
                this.SaveWorkflowMessage(msg);
                this._context.Insert(instance);
                num3 = num;
            }
            catch (Exception exception)
            {
                AppLogHelper.Error(startUserId, exception, "启动流程[{0}]失败, 流程id={1}, 对象id={2}", new object[] { process.ProcessId, process.ProcessName, relativeObjectId });
                throw;
            }
            return(num3);
        }