Esempio n. 1
0
 /// <summary>
 /// 构造方法
 /// </summary>
 /// <param name="source"></param>
 public OguDataCollection(OguDataCollection <T> source)
 {
     for (int i = 0; i < source.Count; i++)
     {
         this.Add(source[i]);
     }
 }
Esempio n. 2
0
        /// <summary>
        /// 从矩阵中获得对象。这主要取决于上下文中的参数
        /// </summary>
        /// <returns></returns>
        public OguDataCollection <IOguObject> GetObjectsFromMatrix()
        {
            OguDataCollection <IOguObject> result = new OguDataCollection <IOguObject>();

            SOARoleContext context = SOARoleContext.Current;

            if (context != null && context.QueryParams.Count > 0)
            {
                SOARolePropertyRowCollection matchedRows = this.Rows.Query(context.QueryParams);

                matchedRows = matchedRows.ExtractMatrixRows();
                foreach (SOARolePropertyRowUsers rowUsers in matchedRows.GenerateRowsUsers())
                {
                    foreach (IUser user in rowUsers.Users)
                    {
                        if (result.Contains(user) == false)
                        {
                            result.Add(user);
                        }
                    }
                }
            }

            return(result);
        }
Esempio n. 3
0
        private static void FillRoleUsers(string roleName, OguDataCollection <IUser> users)
        {
            SOARole role = new SOARole(roleName);

            WfRoleResourceDescriptor roleResource = new WfRoleResourceDescriptor(role);

            roleResource.FillUsers(users);
        }
Esempio n. 4
0
        private static void FillAURoleUsers(string roleFullCodeName, OguDataCollection <IUser> users)
        {
            WrappedAUSchemaRole role = WrappedAUSchemaRole.FromCodeName(roleFullCodeName);

            if (role != null)
            {
                role.FillUsers(SOARoleContext.CurrentProcess, users);
            }
        }
        private bool ExtractDynamicRoleMatrixRows(string roleName, SOARolePropertyRowCollection extractedRows)
        {
            OguDataCollection <IUser> users = new OguDataCollection <IUser>();

            FillInternalDynamicRoleUsers(roleName, users);

            extractedRows.CopyFrom(this.MergeActivityRowPropertiesByUsers(users));

            return(users.Count > 0);
        }
Esempio n. 6
0
        /// <summary>
        /// 得到用户的所有兼职信息的TopOU
        /// </summary>
        /// <returns></returns>
        public OguDataCollection <IOrganization> GetCurrentAllTopOUs()
        {
            OguDataCollection <IOrganization> result = new OguDataCollection <IOrganization>();

            foreach (IUser user in DeluxeIdentity.CurrentUser.AllRelativeUserInfo)
            {
                result.Add(user.TopOU);
            }

            return(result);
        }
Esempio n. 7
0
        /// <summary>
        /// 在SOARolePropertyRowUsersCollection中填充角色中的人员
        /// </summary>
        /// <param name="existedRowsUsers"></param>
        /// <param name="getType"></param>
        /// <param name="getOp"></param>
        /// <param name="action"></param>
        private void FillRoleTypeUsers(SOARolePropertyRowUsersCollection existedRowsUsers, Func <SOARolePropertyRowUsers, SOARoleOperatorType> getType, Func <SOARolePropertyRowUsers, string> getOp, Action <SOARolePropertyRowUsers, IUser> action)
        {
            foreach (SOARolePropertyRowUsers rowUsers in existedRowsUsers)
            {
                OguDataCollection <IUser> users = new OguDataCollection <IUser>();

                FillRoleTypeOperatorToUsers(getType(rowUsers), getOp(rowUsers), users);

                foreach (IUser userInRole in users)
                {
                    action(rowUsers, userInRole);
                }
            }
        }
        private OguDataCollection <IUser> GetEarliestMergedUsers(SOARolePropertyRowUsers rowUsers, int startIndex)
        {
            OguDataCollection <IUser> result = new OguDataCollection <IUser>();

            foreach (IUser user in rowUsers.Users)
            {
                if (ExistsEarliestUser(user, startIndex) == false)
                {
                    result.Add(user);
                }
            }

            return(result);
        }
Esempio n. 9
0
        //public void Remove(TTaskAssignee assignee)
        //{
        //    List.Remove(assignee);
        //}

        /// <summary>
        /// 根据类别来筛选出用户
        /// </summary>
        /// <param name="type"></param>
        /// <returns></returns>
        public OguDataCollection <TOguObject> GetAssigneesByType(string type)
        {
            OguDataCollection <TOguObject> result = new OguDataCollection <TOguObject>();

            this.ForEach(assingee =>
            {
                if (string.Compare(assingee.Type, type, true) == 0)
                {
                    result.Add(assingee.Assignee);
                }
            });

            return(result);
        }
Esempio n. 10
0
        internal static void FillInternalDynamicRoleUsers(string roleName, OguDataCollection <IUser> users)
        {
            SOARoleContext context = SOARoleContext.Current;

            WfDynamicResourceDescriptor dynResource = new WfDynamicResourceDescriptor();

            if (context != null)
            {
                dynResource.SetProcessInstance(context.Process);
            }

            dynResource.Condition.Expression = roleName;

            dynResource.FillUsers(users);
        }
Esempio n. 11
0
        public object ToType(Type conversionType, IFormatProvider provider)
        {
            object result = null;

            if (typeof(OguDataCollection <IUser>) == conversionType)
            {
                result = new OguDataCollection <IUser>();
                this.ForEach(obj =>
                             { if (obj is IUser)
                               {
                                   ((OguDataCollection <IUser>)result).Add((IUser)obj);
                               }
                             });
            }
            else
            if (typeof(OguDataCollection <IOrganization>) == conversionType)
            {
                result = new OguDataCollection <IOrganization>();
                this.ForEach(obj =>
                             { if (obj is IOrganization)
                               {
                                   ((OguDataCollection <IOrganization>)result).Add((IOrganization)obj);
                               }
                             });
            }
            else
            if (typeof(OguDataCollection <IGroup>) == conversionType)
            {
                result = new OguDataCollection <IGroup>();
                this.ForEach(obj =>
                             { if (obj is IGroup)
                               {
                                   ((OguDataCollection <IGroup>)result).Add((IGroup)obj);
                               }
                             });
            }
            else
            if (typeof(OguDataCollection <IOguObject>) == conversionType)
            {
                result = new OguDataCollection <IOguObject>();
                this.ForEach(obj => ((OguDataCollection <IOguObject>)result).Add(obj));
            }

            return(result);
        }
Esempio n. 12
0
        private static OguDataCollection <IUser> CalculateRowOperators()
        {
            OguDataCollection <IUser> result = new OguDataCollection <IUser>();

            if (ObjectContextCache.Instance.ContainsKey("RoleMatrixCurrentRow"))
            {
                SOARolePropertyRow row = (SOARolePropertyRow)ObjectContextCache.Instance["RoleMatrixCurrentRow"];

                SOARolePropertyRowCollection rows = new SOARolePropertyRowCollection();
                rows.Add(row);

                SOARolePropertyRowUsersCollection rowsUsers = rows.GenerateRowsUsers();

                rowsUsers.ForEach(ru => result.CopyFrom(ru.Users));
            }

            return(result);
        }
        private void MergeEarliestRows()
        {
            List <SOARolePropertyRowUsers> tempList = new List <SOARolePropertyRowUsers>();

            for (int i = this.Count - 1; i >= 0; i--)
            {
                SOARolePropertyRowUsers rowUsers = this[i];

                //得到当前行中,在后续环节中不存在的用户
                OguDataCollection <IUser> mergedUsers = GetEarliestMergedUsers(rowUsers, i - 1);

                if (rowUsers.Row.IsMergeable())
                {
                    //本行可合并,并且本行经过合并后,还有人存在...
                    if (mergedUsers.Count > 0)
                    {
                        tempList.Add(rowUsers);

                        //以合并后的人为准
                        if (mergedUsers.Count != rowUsers.Users.Count)
                        {
                            rowUsers.Users.Clear();
                            rowUsers.Users.CopyFrom(mergedUsers);
                        }
                    }
                    //合并后没有人存在时,则舍弃该行
                }
                else
                {
                    tempList.Add(rowUsers);
                }
            }

            this.Clear();
            this.CopyFrom(tempList);
        }
Esempio n. 14
0
        /// <summary>
        /// 将角色类型的操作人填充到用户集合中
        /// </summary>
        /// <param name="users"></param>
        /// <param name="operatorType"></param>
        /// <param name="operatorDesp"></param>
        private static void FillRoleTypeOperatorToUsers(SOARoleOperatorType operatorType, string operatorDesp, OguDataCollection <IUser> users)
        {
            switch (operatorType)
            {
            case SOARoleOperatorType.Role:
                if (operatorDesp.IndexOf(":") < 0)
                {
                    SOARolePropertyRow.FillInternalDynamicRoleUsers(operatorDesp, users);
                }
                else
                {
                    FillRoleUsers(operatorDesp, users);
                }
                break;

            case SOARoleOperatorType.AURole:
                FillAURoleUsers(operatorDesp, users);
                break;
            }
        }
Esempio n. 15
0
 private static void FillMatchedUsers(IEnumerable <string> objectIDs, Dictionary <string, IUser> userDicts, OguDataCollection <IUser> target)
 {
     foreach (string id in objectIDs)
     {
         IUser user = null;
         if (userDicts.TryGetValue(id, out user))
         {
             target.Add((IUser)OguUser.CreateWrapperObject(user));
         }
     }
 }