Esempio n. 1
0
        /// <summary>
        /// 导出指定AUSchemaID
        /// </summary>
        /// <param name="auSchemaID"></param>
        /// <param name="roleIDs">为null或长度为0时,取出所有角色</param>
        /// <returns></returns>
        public static SCObjectSet ExportAUSchemaRoles(string auSchemaID, string[] roleIDs)
        {
            auSchemaID.NullCheck("auSchemaID");

            var auSchema = AU.Adapters.AUSnapshotAdapter.Instance.LoadAUSchema(auSchemaID, true, DateTime.MinValue).FirstOrDefault();

            if (auSchema == null)
            {
                throw new AUObjectException("指定的管理架构ID无效");
            }

            SCObjectSet objectSet = new SCObjectSet();

            objectSet.Scope = "AUSchemaRoles";
            AU.AUCommon.DoDbAction(() =>
            {
                if (roleIDs != null && roleIDs.Length > 0)
                {
                    objectSet.Objects = new SchemaObjectCollection(AU.Adapters.AUSnapshotAdapter.Instance.LoadAUSchemaRoles(auSchema.ID, roleIDs, false, DateTime.MinValue));                     //包含删除的
                }
                else
                {
                    objectSet.Objects = new SchemaObjectCollection(AU.Adapters.AUSnapshotAdapter.Instance.LoadAUSchemaRoles(auSchema.ID, false, DateTime.MinValue));                     //包含删除的
                }
                objectSet.Membership = ExportQueryHelper.LoadFullMemberships(objectSet.Objects.ToIDArray());
            });

            return(objectSet);
        }
Esempio n. 2
0
        internal void ImportBosses(List <SchemaObjectBase> pendingUsers, SCObjectSet objectSet, IImportContext context)
        {
            int count    = 0;
            int allCount = pendingUsers.Count;

            context.AppendLog("正在查找上司");
            foreach (SCUser user in pendingUsers)
            {
                count++;

                context.SetStatus(count, allCount, "正在查找用户" + user.DisplayName + "的上司");
                foreach (var s in ImportService.Instance.FilterMembership(objectSet.Membership, m => m.ID == user.ID && m.ContainerSchemaType == user.SchemaType))
                {
                    try
                    {
                        ImportService.Instance.WithEffectObject <SCUser>(s.ContainerID, secretary =>
                        {
                            context.AppendLogFormat("正在替用户{0}添加上司{1}\r\n", user.DisplayName, secretary.DisplayName);
                            Actor.AddSecretaryToUser(user, secretary);
                        }, null);
                    }
                    catch (Exception ex)
                    {
                        context.AppendLog("添加上司时出现错误:" + ex.Message);
                    }
                }
            }
        }
Esempio n. 3
0
        private void ImportRoleConditions(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations executor, Dictionary <object, object> mappings, PC.SCRole[] roles)
        {
            if (roles.Length > 0 && objectSet.HasConditions)
            {
                foreach (var r in roles)
                {
                    PC.SCRole role2 = r;
                    if (mappings.ContainsKey(r))
                    {
                        role2 = (PC.SCRole)mappings[r];
                    }

                    var roleConditions = (from c in objectSet.Conditions where c.OwnerID == r.ID select c).ToArray();

                    if (roleConditions.Length > 0)
                    {
                        context.AppendLogFormat("正在替角色{0}添加条件\r\n", role2.ToDescription());
                        PC.Conditions.SCConditionOwner owner = new PC.Conditions.SCConditionOwner()
                        {
                            OwnerID = role2.ID,
                            Type    = "Default"
                        };

                        foreach (var c in roleConditions)
                        {
                            owner.Conditions.Add(c);
                        }

                        PC.Adapters.SCConditionAdapter.Instance.UpdateConditions(owner);
                    }
                }
            }
        }
Esempio n. 4
0
        public static SCObjectSet ExportAUSchemas(string[] auSchemaIDs)
        {
            auSchemaIDs.NullCheck("auSchemaIDs");

            if (auSchemaIDs.Length == 0)
            {
                throw new ArgumentException("至少应包含一个AUSchemaID", "auSchemaIDs");
            }

            SCObjectSet objectSet = new SCObjectSet();

            objectSet.Scope = "AUSchemas";

            AUCommon.DoDbAction(() =>
            {
                var schemas = ExportQueryHelper.LoadObjects(auSchemaIDs, AUCommon.SchemaAUSchema);
                if (schemas.Count > 0)
                {
                    var members          = ExportQueryHelper.LoadMembershipOf(schemas.ToIDArray());            //查找Schema中的角色关系
                    var roles            = ExportQueryHelper.LoadObjects(members.Select(m => m.ID).ToArray(), AUCommon.SchemaAUSchemaRole);
                    objectSet.Objects    = schemas + roles;
                    objectSet.Membership = members;
                }
            });

            return(objectSet);
        }
Esempio n. 5
0
        public void ProcessRequest(HttpContext context)
        {
            var req = context.Request;

            if (req.HttpMethod == "POST" && req.IsAuthenticated)
            {
                AUObjectExportExecutor action = AUObjectExportExecutor.CreateAction(req.Form["context"]);

                SCObjectSet result = action.Execute(context.Request);

                var cateName = action.CategoryName;

                string fileName = cateName + "_" + DateTime.Now.ToString("yyyyMMdd_HHmmss");
                if (TimePointContext.Current.UseCurrentTime == false)
                {
                    fileName += "_" + TimePointContext.Current.SimulatedTime.ToString("yyyyMMdd_HHmmss");
                }

                fileName += ".xml";
                context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + MCS.Web.Library.ResponseExtensions.EncodeFileNameInContentDisposition(context.Response, fileName) + "\"");
                using (var output = context.Response.Output)
                {
                    result.TimeContext = TimePointContext.Current.UseCurrentTime ? DateTime.Now : TimePointContext.Current.SimulatedTime;
                    result.Write(output);
                }
            }
            else
            {
                throw new HttpException("请求的方式错误");
            }
        }
Esempio n. 6
0
        internal void AddUsersToGroups(List <SchemaObjectBase> pendingUsers, SCObjectSet objectSet, IImportContext context)
        {
            int count    = 0;
            int allCount = pendingUsers.Count;

            context.AppendLog("正在查找群组");

            foreach (SCUser user in pendingUsers)
            {
                count++;

                context.SetStatus(count, allCount, "正在查找用户" + user.DisplayName + "的群组");
                foreach (var s in ImportService.Instance.FilterMembership(objectSet.Membership, m => m.ID == user.ID && m.ContainerSchemaType == "Groups"))
                {
                    try
                    {
                        ImportService.Instance.WithEffectObject <SCGroup>(s.ContainerID, grp =>
                        {
                            ImportService.Instance.CheckRelation(grp.ID, user.ID, () =>
                            {
                                context.AppendLogFormat("正在将用户{0}添加到群组{1}\r\n", user.ToDescription(), grp.ToDescription());
                                Actor.AddUserToGroup(user, grp);
                            }, () =>
                            {
                                context.AppendLogFormat("群组{0}已经存在用户{1},已跳过。\r\n", grp.ToDescription(), user.ToDescription());
                            });
                        }, null);
                    }
                    catch (Exception ex)
                    {
                        context.AppendLog("添加到群组时出现错误:" + ex.Message);
                    }
                }
            }
        }
Esempio n. 7
0
        /// <summary>
        /// 执行导入操作
        /// </summary>
        /// <param name="objectSet">所有数据</param>
        /// <param name="context">导入的执行上下文</param>
        public override void DoImport(SCObjectSet objectSet, IImportContext context)
        {
            var exec = PC.Executors.SCObjectOperations.InstanceWithPermissions;

            SchemaObjectCollection parentObjects = null;             // 预先查出父级组织

            if (this.IncludeSelf && objectSet.HasObjects && objectSet.HasRelations)
            {
                parentObjects = this.GetParentObjects(objectSet.Relations);
            }

            SchemaObjectCollection memberObjects = null;             // 预先查出成员

            if (this.IncludeMembers && objectSet.HasMembership)
            {
                memberObjects = this.GetMemberObjects(objectSet.Membership);
            }

            int allCount = objectSet.Objects.Count;
            int count    = 0;

            foreach (var grp in objectSet.Objects)
            {
                count++;
                ImportOneGroup(objectSet, context, exec, parentObjects, memberObjects, allCount, count, grp);
            }
        }
Esempio n. 8
0
            private void DoImportMembers(SCObjectSet objectSet, IImportContext context, IDictionary <string, PC.SchemaObjectBase> knownObjects, PC.SCGroup group)
            {
                if (this.ImportMembers && objectSet.HasMembership)
                {
                    var members = ImportService.Instance.FilterMembership(objectSet.Membership, m => m.ContainerID == group.ID && m.Status == SchemaObjectStatus.Normal).ToArray();
                    if (members.Length > 0)
                    {
                        context.SetStatus(Owner.currentSteps, Owner.allSteps, string.Format("正在查找群组 {0} 的固定成员", group.ToDescription()));

                        for (int j = 0; j < members.Length; j++)
                        {
                            try
                            {
                                var gm = members[j];

                                ImportService.Instance.WithEffectObject <PC.SCUser>(gm.ID, knownObjects, user =>
                                {
                                    context.SetSubStatusAndLog(j, members.Length, string.Format("正在向群组 {0} 添加成员 {1} ", group.Name, user.Name));
                                    PC.Executors.SCObjectOperations.Instance.AddUserToGroup(user, group);
                                }, null);
                            }
                            catch (Exception ex2)
                            {
                                context.SetSubStatusAndLog(j, members.Length, string.Format("向群组 {0} 添加成员时出错:", group.ToDescription(), ex2.ToString()));
                            }
                        }
                    }
                }
            }
Esempio n. 9
0
        private void ImportRoleMembers(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations executor, Dictionary <object, object> mappings, PC.SCRole[] roles)
        {
            if (roles.Length > 0)
            {
                foreach (var r in roles)
                {
                    PC.SCRole role2 = r;
                    if (mappings.ContainsKey(r))
                    {
                        role2 = (PC.SCRole)mappings[r];
                    }

                    // 查找角色成员
                    var roleMemberIds = (from m in objectSet.Membership where m.ContainerSchemaType == "Roles" && m.ContainerID == r.ID select m.ID).ToArray();
                    if (roleMemberIds.Length > 0)
                    {
                        var roleMembers = DbUtil.LoadObjects(roleMemberIds);
                        foreach (PC.SCBase obj in roleMembers)
                        {
                            context.AppendLog("正在导入角色成员" + obj.DisplayName ?? obj.Name);
                            executor.AddMemberToRole(obj, role2);
                        }
                    }
                }
            }
        }
Esempio n. 10
0
            public override void ExecuteEachOrganization(SCObjectSet objectSet, IImportContext context, IDictionary <string, PC.SchemaObjectBase> knownObjects, PC.SCOrganization org, Dictionary <string, IList <PC.SCOrganization> > orgToOrgRelations, Dictionary <string, IList <PC.SCUser> > orgToUserRelations, Dictionary <string, IList <PC.SCGroup> > orgToGroupRelations)
            {
                if (orgToGroupRelations.ContainsKey(org.ID))
                {
                    var groups = orgToGroupRelations[org.ID];

                    if (groups.Count > 0)
                    {
                        context.SetStatus(Owner.currentSteps, Owner.allSteps, string.Format("正在查找 {0} 中的群组", org.ToDescription()));
                    }

                    for (int i = 0; i < groups.Count; i++)
                    {
                        var group = groups[i];
                        try
                        {
                            context.SetSubStatusAndLog(i + 1, groups.Count, string.Format("正在向组织 {0} 添加群组 {1}", org.Name, group.Name));

                            PC.Executors.SCObjectOperations.Instance.AddGroup(group, org);

                            knownObjects.Add(group.ID, group);

                            this.DoImportMembers(objectSet, context, knownObjects, group);

                            this.DoImportConditions(objectSet, context, group);
                        }
                        catch (Exception ex)
                        {
                            context.AppendLog(string.Format("向组织 {0} 导入群组 {1} 时出错:", org.ToDescription(), group.Name, ex.ToString()));
                        }
                    }
                }
            }
Esempio n. 11
0
            private void DoImportConditions(SCObjectSet objectSet, IImportContext context, PC.SCGroup group)
            {
                if (this.ImportConditions && objectSet.HasConditions)
                {
                    context.SetStatusAndLog(Owner.currentSteps, Owner.allSteps, string.Format("正在替换群组 {0} 的条件", group.Name));

                    try
                    {
                        var owner = PC.Adapters.SCConditionAdapter.Instance.Load(group.ID, "Default") ?? new PC.Conditions.SCConditionOwner()
                        {
                            OwnerID = group.ID, Type = "Default"
                        };

                        PC.Conditions.SCConditionCollection src = new PC.Conditions.SCConditionCollection();
                        src.CopyFrom(ImportService.Instance.FilterConditions(objectSet.Conditions, c => c.OwnerID == group.ID));

                        owner.Conditions.ReplaceItemsWith(src, group.ID, "Default");

                        PC.Adapters.SCConditionAdapter.Instance.UpdateConditions(owner);
                    }
                    catch (Exception ex)
                    {
                        context.AppendLog(string.Format("替换群组 {0} 条件成员时出错:{1}", group.ToDescription(), ex.ToString()));
                    }
                }
            }
Esempio n. 12
0
        public override SCObjectSet Execute(HttpRequest req)
        {
            string[] ids = req.Form.GetValues("id");

            if (ids == null && ids.Length == 0)
            {
                throw new HttpException("当获取功能对象时,必须提供ID参数");
            }

            string appId = req.Form["appId"];

            if (string.IsNullOrEmpty(appId))
            {
                throw new HttpException("当获取功能对象时,必须提供appId参数");
            }

            SCObjectSet objectSet = new SCObjectSet();

            objectSet.Scope = "AppPermissions";

            PC.SCApplication appObj = (PC.SCApplication)PC.Adapters.SchemaObjectAdapter.Instance.Load(appId);
            if (appObj == null || appObj.Status != SchemaObjectStatus.Normal)
            {
                throw new HttpException("指定的应用不存在或者已删除");
            }

            objectSet.Objects = ExportQueryHelper.LoadObjects(ids, null);

            objectSet.Membership = ExportQueryHelper.LoadMembershipFor(ids, appId);
            return(objectSet);
        }
Esempio n. 13
0
        private bool EnsureFileLoaded()
        {
            bool result = false;

            if (this.objectSet == null)
            {
                SCObjectSet aObjectSet = new SCObjectSet();

                try
                {
                    using (System.IO.StreamReader reader = new StreamReader(this.file.InputStream))
                    {
                        aObjectSet.Load(reader);
                    }

                    this.objectSet = aObjectSet;
                    result         = true;
                }
                catch (Exception ex)
                {
                    this.status.StatusText = "上传的文件格式错误无法解析:" + ex.Message;
                    this.status.Response();
                    this.log.AppendFormat("无法读取上传的文件:" + ex.Message);
                }

                this.log.AppendLine("已读取上传的文件,正在查找对象");
                this.status.MinStep     = 0;
                this.status.CurrentStep = 0;
                this.status.MaxStep     = 100;
                this.status.StatusText  = "开始导入";
                this.status.Response();
            }

            return(result);
        }
Esempio n. 14
0
 private void ImportMembers(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations exec, SchemaObjectCollection memberObjects, SchemaObjectBase grp)
 {
     if (this.IncludeMembers && objectSet.HasMembership)
     {
         var memberRelations = objectSet.Membership.FindAll(m => m.ContainerID == grp.ID && m.Status == SchemaObjectStatus.Normal);
         if (memberRelations.Count > 0 && memberObjects != null)
         {
             context.AppendLogFormat("正在试图添加{0}个群组成员\r\n", memberRelations.Count);
             foreach (var r in memberRelations)
             {
                 var user = (SCUser)(from m in memberObjects where m.ID == r.ID select m).FirstOrDefault();
                 if (user != null)
                 {
                     try
                     {
                         exec.AddUserToGroup(user, (SCGroup)grp);
                         context.AppendLogFormat("已经向群组{0}添加群组成员:{1}\r\n", ((SCGroup)grp).DisplayName, user.DisplayName);
                     }
                     catch (Exception ex)
                     {
                         context.AppendLogFormat("无法导入群组 {0} 的成员 {1}: {2}\r\n", ((SCGroup)grp).DisplayName, user.DisplayName, ex.Message);
                     }
                 }
                 else
                 {
                     context.AppendLogFormat("已跳过不存在的成员\r\n");
                 }
             }
         }
     }
 }
Esempio n. 15
0
        public override void DoImport(SCObjectSet objectSet, IImportContext context)
        {
            if (objectSet.HasRelations && objectSet.HasObjects)
            {
                context.SetStatus(0, 1, "正在分析数据。");

                // 查找组织关系
                var pendingOperations = new List <Action <object> >();

                var objects = objectSet.Objects;
                Dictionary <string, IList <PC.SCOrganization> > orgToOrgRelations   = new Dictionary <string, IList <PC.SCOrganization> >();
                Dictionary <string, IList <PC.SCUser> >         orgToUserRelations  = new Dictionary <string, IList <PC.SCUser> >();
                Dictionary <string, IList <PC.SCGroup> >        orgToGroupRelations = new Dictionary <string, IList <PC.SCGroup> >();
                Dictionary <string, PC.SchemaObjectBase>        knownObjects        = new Dictionary <string, PC.SchemaObjectBase>(); // 缓存已知对象,避免多次往返

                context.SetStatus(0, 1, "正在统计需要导入的对象");
                Stat stat = new Stat();                                                                                                                    // 统计信息

                FindFullOURelations(objectSet, orgToOrgRelations, orgToUserRelations, orgToGroupRelations, new PC.SCOrganization[] { this.Parent }, stat); // 爬出所有组织关系

                Dictionary <PC.SCOrganization, IList <PC.SCRelationObject> > userToOrgRelations = new Dictionary <PC.SCOrganization, IList <PC.SCRelationObject> >();

                this.allSteps     = this.CalculateSteps(stat);
                this.currentSteps = 0;
                bool orgValid = false;                 // 必须校验组织
                context.SetStatus(0, this.allSteps, "正在导入数据。");

                // 递归导入组织,并剔除错误的数据
                orgValid = this.PrepareOrganizations(objectSet, context, knownObjects, orgToOrgRelations, this.Parent, this.IncludeOrganizations == false);

                if (this.IncludeAcl)
                {
                    // 递归导入Acl
                    var action = new AclAction(this);
                    action.ExecutePreOperation(objectSet, context, knownObjects, this.Parent, orgToOrgRelations, orgToUserRelations, orgToGroupRelations);
                    this.DoHierarchicalAction(objectSet, context, knownObjects, orgToOrgRelations, orgToUserRelations, orgToGroupRelations, this.Parent, action);
                    action.ExecutePostOperation(objectSet, context, knownObjects, this.Parent, orgToOrgRelations, orgToUserRelations, orgToGroupRelations);
                }

                if (this.IncludeUser)
                {
                    var action = new UserAction(this);
                    action.ImportSecretaries = this.IncludeSecretaries;
                    action.ExecutePreOperation(objectSet, context, knownObjects, this.Parent, orgToOrgRelations, orgToUserRelations, orgToGroupRelations);
                    this.DoHierarchicalAction(objectSet, context, knownObjects, orgToOrgRelations, orgToUserRelations, orgToGroupRelations, this.Parent, action);
                    action.ExecutePostOperation(objectSet, context, knownObjects, this.Parent, orgToOrgRelations, orgToUserRelations, orgToGroupRelations);
                }

                if (this.IncludeGroup)
                {
                    var action = new GroupAction(this);
                    action.ImportMembers    = this.IncludeGroupMembers;
                    action.ImportConditions = this.IncludeGroupConditions;
                    action.ExecutePreOperation(objectSet, context, knownObjects, this.Parent, orgToOrgRelations, orgToUserRelations, orgToGroupRelations);
                    this.DoHierarchicalAction(objectSet, context, knownObjects, orgToOrgRelations, orgToUserRelations, orgToGroupRelations, this.Parent, action);
                    action.ExecutePostOperation(objectSet, context, knownObjects, this.Parent, orgToOrgRelations, orgToUserRelations, orgToGroupRelations);
                }
            }
        }
Esempio n. 16
0
        internal void ImportUsers(List <SchemaObjectBase> pendingUsers, SCObjectSet objectSet, IImportContext context, bool includeOrganizations)
        {
            int count    = 0;
            int allCount = pendingUsers.Count;

            foreach (SCUser item in pendingUsers)
            {
                count++;
                try
                {
                    var summaryName = item.ToDescription();
                    context.SetStatus(count, allCount, "正在导入项目:" + summaryName);

                    if (includeOrganizations && objectSet.HasRelations)
                    {
                        var  user   = (SCUser)item;
                        bool anyOrg = false;
                        foreach (var relation in ImportService.Instance.FilterRelations(objectSet.Relations, r => { return(r.ChildSchemaType == user.SchemaType && r.ParentSchemaType == "Organizations" && r.ID == user.ID); }))
                        {
                            try
                            {
                                ImportService.Instance.WithEffectObject <SCOrganization>(relation.ParentID, (org) =>
                                {
                                    anyOrg = true;

                                    context.AppendLogFormat("正在添加{0}并设置为组织{1}的成员\r\n", summaryName, org.ToDescription());
                                    Actor.AddUser(user, org);
                                }, () =>
                                {
                                    // 未找到组织
                                });
                            }
                            catch (Exception ex)
                            {
                                context.AppendLogFormat("发生了错误" + ex.ToString() + "\r\n");
                            }
                        }

                        if (anyOrg == false)
                        {
                            context.AppendLogFormat("未找到人员{0}的任何组织,将仅添加用户。\r\n", summaryName);
                            this.Actor.AddUser(user, null);
                        }
                    }
                    else
                    {
                        this.Actor.AddUser((SCUser)item, null);
                    }

                    context.AppendLog("已执行导入项目" + summaryName);
                }
                catch (Exception ex)
                {
                    context.AppendLog("对项的操作失败,原因是:" + ex.Message);
                }
            }
        }
Esempio n. 17
0
        private void ImportApplication(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations executor, int allCount, int currentStep, int extStepCount, Dictionary <object, object> mappings, PC.SCApplication app)
        {
            var app2        = this.CopyMode ? AppImportAction.MakeCopy(app) : app;
            var summaryName = app2.DisplayName ?? app.Name;

            context.SetStatus(currentStep, allCount, "正在导入项目:" + summaryName);
            context.AppendLog("正在导入应用" + summaryName);
            executor.AddApplication((PC.SCApplication)app2);

            var permissionRelation = from p in objectSet.Membership where p.ContainerID == app.ID && p.MemberSchemaType == "Permissions" orderby p.InnerSort ascending select p;
            var permissions        = (from o in objectSet.Objects join p in permissionRelation on o.ID equals p.ID select(PC.SCPermission) o).ToArray();

            var roleRelations = from r in objectSet.Membership where r.ContainerID == app.ID && r.MemberSchemaType == "Roles" orderby r.InnerSort ascending select r;
            var roles         = (from o in objectSet.Objects join r in roleRelations on o.ID equals r.ID select(PC.SCRole) o).ToArray();

            var acls = (from acl in objectSet.Acls where acl.Status == SchemaObjectStatus.Normal && acl.ContainerID == app.ID orderby acl.SortID ascending select acl).ToArray();

            int allStepCount = allCount * (extStepCount + 1);
            int step         = currentStep * (extStepCount + 1);

            if (this.IncludePermissions)
            {
                context.SetStatus(step++, allStepCount, "正在查找功能...");
                this.ImportPermissions(context, executor, mappings, app2, permissions, this.CopyMode);
            }

            if (this.IncludeRoles)
            {
                context.SetStatus(step++, allStepCount, "正在查找角色...");
                this.ImportRoles(context, executor, mappings, app2, roles);
            }

            if (this.IncludeAcls)
            {
                context.SetStatus(step++, allStepCount, "正在查找Acl...");
                this.ImportAcl(context, executor, app2, acls);
            }

            if (this.IncludeRoleMembers)
            {
                context.SetStatus(step++, allStepCount, "正在查找角色成员...");
                this.ImportRoleMembers(objectSet, context, executor, mappings, roles);
            }

            if (this.IncludeRoleConditions)
            {
                context.SetStatus(step++, allStepCount, "正在查找角色条件...");
                this.ImportRoleConditions(objectSet, context, executor, mappings, roles);
            }

            if (this.IncludeRoles && this.IncludePermissions && this.IncludeRoleDefinitions)
            {
                context.SetStatus(step++, allStepCount, "正在查找角色功能定义...");
                this.ImportRolePermissions(objectSet, context, executor, mappings, permissions, roles, this.CopyMode);
            }
        }
Esempio n. 18
0
        private static void LookupMemberObjects(SCObjectSet objectSet, string[] memberIDs, string schemaType)
        {
            if (memberIDs != null && memberIDs.Length > 0)
            {
                var members = ExportQueryHelper.LoadObjects(memberIDs, schemaType, false);

                objectSet.Objects.Merge(members);

                //查找角色的固定成员
                var roleMembers = ExportQueryHelper.LoadMembershipOf(memberIDs);

                objectSet.Membership.AddRange(roleMembers);
            }
        }
Esempio n. 19
0
            public override void ExecutePostOperation(SCObjectSet objectSet, IImportContext context, IDictionary <string, PC.SchemaObjectBase> knownObjects, PC.SCOrganization org, Dictionary <string, IList <PC.SCOrganization> > orgToOrgRelations, Dictionary <string, IList <PC.SCUser> > orgToUserRelations, Dictionary <string, IList <PC.SCGroup> > orgToGroupRelations)
            {
                if (this.ImportSecretaries)
                {
                    var allUsers           = this.importedUsers.Values.ToArray();
                    var reducedMemberships = ImportService.Instance.FilterMembership(objectSet.Membership, m => Util.IsUser(m.MemberSchemaType) && Util.IsUser(m.ContainerSchemaType)).ToList();

                    if (reducedMemberships.Count > 0)
                    {
                        int count = reducedMemberships.Count;
                        int step  = 0;
                        context.SetStatus(Owner.currentSteps, Owner.allSteps, "正在查找人员秘书");

                        foreach (var r in reducedMemberships)
                        {
                            step++;
                            try
                            {
                                if (this.importedUsers.ContainsKey(r.ContainerID))
                                {
                                    var boss = this.importedUsers[r.ContainerID];

                                    // 导入的用户是上司的
                                    ImportService.Instance.WithEffectObject <PC.SCUser>(r.ID, knownObjects, secretary =>
                                    {
                                        context.SetSubStatusAndLog(step, count, string.Format("正在替 {0} 添加秘书 {1}", boss.Name, secretary.Name));
                                        PC.Executors.SCObjectOperations.Instance.AddSecretaryToUser(secretary, boss);
                                    }, null);
                                }
                                else if (this.importedUsers.ContainsKey(r.ID))
                                {
                                    var secretary = this.importedUsers[r.ID];

                                    // 作为秘书的
                                    ImportService.Instance.WithEffectObject <PC.SCUser>(r.ContainerID, knownObjects, boss =>
                                    {
                                        context.SetSubStatusAndLog(step, count, string.Format("正在替 {0} 添加秘书 {1}", boss.Name, secretary.Name));
                                        PC.Executors.SCObjectOperations.Instance.AddSecretaryToUser(secretary, boss);
                                    }, null);
                                }
                            }
                            catch (Exception ex)
                            {
                                context.SetSubStatusAndLog(step, count, string.Format("未能完成添加秘书操作:{0}", ex.ToString()));
                            }
                        }
                    }
                }
            }
        public override void DoImport(SCObjectSet objectSet, IImportContext context)
        {
            if (objectSet.HasMembership)
            {
                try
                {
                    var actor = PC.Executors.SCObjectOperations.InstanceWithPermissions;
                    ImportService.Instance.WithEffectObject <PC.SCGroup>(this.groupId, group =>
                    {
                        var pendingMembership = ImportService.Instance.FilterMembership(objectSet.Membership, m => m.ContainerID == this.groupId).ToList();

                        int allCount = pendingMembership.Count;
                        context.SetStatus(0, allCount, "正在寻找当前群组的固定成员。");

                        int count = 0;
                        foreach (var r in pendingMembership)
                        {
                            count++;
                            try
                            {
                                ImportService.Instance.WithEffectObject <PC.SCUser>(r.ID, o =>
                                {
                                    string msg = "正在导入成员: " + o.ToDescription();
                                    context.SetStatus(count, allCount, msg);
                                    context.AppendLog(msg);
                                    actor.AddUserToGroup(o, group);
                                }, () =>
                                {
                                    string msg = string.Format("跳过了不存在的对象 {0} \r\n", r.ID);
                                    context.AppendLog(msg);
                                    context.SetStatus(count, allCount, msg);
                                });
                            }
                            catch (Exception ex)
                            {
                                context.AppendLog("导入成员时出错:" + ex.Message);
                            }
                        }
                    }, () =>
                    {
                        context.AppendLog("指定的群组无效,导入终止。");
                    });
                }
                catch (Exception ex)
                {
                    context.AppendLog("导入遇到错误,已经终止:" + ex.Message.ToString() + Environment.NewLine);
                }
            }
        }
Esempio n. 21
0
 private static void ImportRoleMembers(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations exec, PC.SCRole roleRef, PC.SCRole roleActual)
 {
     foreach (var m in objectSet.Membership)
     {
         if (m.ContainerID == roleRef.ID)
         {
             var objSc = PC.Adapters.SchemaObjectAdapter.Instance.Load(m.ID) as PC.SCBase;
             if (objSc != null)
             {
                 context.AppendLogFormat("正在替角色 {0} 导入角色成员 {1}\r\n", roleActual.DisplayName, objSc.DisplayName);
                 exec.AddMemberToRole(objSc, roleActual);
             }
         }
     }
 }
Esempio n. 22
0
        public override void DoImport(SCObjectSet objectSet, IImportContext context)
        {
            if (objectSet.HasRelations)
            {
                int allCount = objectSet.Objects.Count;
                int count    = 0;

                var pendingOrgs = new List <SchemaObjectBase>(objectSet.Objects.Count);

                foreach (SCOrganization item in ImportService.Instance.FilterNormalObjectsBySchemaCategories(objectSet.Objects, "Organizations"))
                {
                    // 进行过滤,保留当前组织中的组织
                    if (objectSet.Relations.Exists(r => r.ParentID == this.Parent.ID && r.Status == SchemaObjectStatus.Normal && r.ID == item.ID))
                    {
                        pendingOrgs.Add(item);
                    }
                }

                allCount = pendingOrgs.Count;
                if (allCount > 0)
                {
                    context.SetStatus(0, 1, "正在寻找当前组织内的关系。");

                    foreach (SCOrganization item in pendingOrgs)
                    {
                        count++;

                        try
                        {
                            var summaryName = item.ToDescription();
                            context.SetStatus(count, allCount, "正在导入对象:" + summaryName);

                            PC.Executors.SCObjectOperations.InstanceWithPermissions.AddOrganization((PC.SCOrganization)item, this.Parent);

                            context.AppendLog("已执行导入项目" + summaryName);
                        }
                        catch (Exception ex)
                        {
                            context.AppendLog("对项的操作失败,原因是:" + ex.Message);
                        }
                    }
                }
                else
                {
                    context.SetStatus(0, 1, "没有找到符合条件的组织关系。");
                }
            }
        }
Esempio n. 23
0
        public override void DoImport(SCObjectSet objectSet, IImportContext context)
        {
            if (string.IsNullOrEmpty(this.ApplicationId))
            {
                throw new HttpException("没有指定ApplicationId的情况下无法导入。");
            }

            var app = (PC.SCApplication)PC.Adapters.SchemaObjectAdapter.Instance.Load(this.ApplicationId);

            if (app == null)
            {
                throw new HttpException("指定的应用并不存在");
            }

            if (objectSet.HasObjects)
            {
                int count    = 0;
                int allCount = 0;
                var exec     = PC.Executors.SCObjectOperations.InstanceWithPermissions;

                IEnumerable <PC.SCSimpleRelationBase> permissionRelations = null;

                if (this.CopyMode)
                {
                    permissionRelations = from r in objectSet.Membership where r.MemberSchemaType == "Permissions" orderby r.InnerSort ascending select r;
                }
                else
                {
                    permissionRelations = from r in objectSet.Membership where r.MemberSchemaType == "Permissions" && r.ContainerID == app.ID orderby r.InnerSort ascending select r;
                }

                var permissions = (from o in objectSet.Objects join p in permissionRelations on o.ID equals p.ID select(PC.SCPermission) o).ToArray();

                allCount = permissions.Length;

                foreach (var p in permissions)
                {
                    count++;
                    PC.SCPermission fun = this.CopyMode ? AppImportAction.MakeCopy(p) : p;

                    // 只导入明确的
                    context.SetStatus(count, allCount, "正在导入权限:" + fun.DisplayName);
                    context.AppendLogFormat("正在导入权限 {0} \r\n", fun.DisplayName ?? fun.Name);
                    exec.AddPermission(fun, app);
                }
            }
        }
Esempio n. 24
0
            public override void ExecuteEachOrganization(SCObjectSet objectSet, IImportContext context, IDictionary <string, PC.SchemaObjectBase> knownObjects, PC.SCOrganization org, Dictionary <string, IList <PC.SCOrganization> > orgToOrgRelations, Dictionary <string, IList <PC.SCUser> > orgToUserRelations, Dictionary <string, IList <PC.SCGroup> > orgToGroupRelations)
            {
                if (orgToUserRelations.ContainsKey(org.ID))
                {
                    var users = orgToUserRelations[org.ID];

                    if (users.Count > 0)
                    {
                        context.SetStatus(Owner.currentSteps, Owner.allSteps, string.Format("正在查找 {0} 中的用户", org.ToDescription()));
                    }

                    for (int i = 0; i < users.Count; i++)
                    {
                        var user = users[i];
                        try
                        {
                            if (this.importedUsers.ContainsKey(user.ID) == false)
                            {
                                context.SetSubStatusAndLog(i + 1, users.Count, string.Format("正在向组织 {0} 导入用户 {1}", org.Name, user.Name));

                                PC.Executors.SCObjectOperations.Instance.AddUser(user, org);
                                this.importedUsers.Add(user.ID, user);

                                if (knownObjects.ContainsKey(user.ID) == false)
                                {
                                    knownObjects.Add(user.ID, user);
                                }
                            }
                            else
                            {
                                context.SetSubStatusAndLog(i + 1, users.Count, string.Format("正在向组织 {0} 添加用户 {1}", org.Name, user.Name));
                                PC.Executors.SCObjectOperations.Instance.AddUserToOrganization(user, org);

                                if (knownObjects.ContainsKey(user.ID) == false)
                                {
                                    knownObjects.Add(user.ID, user);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            context.AppendLog(string.Format("向组织 {0} 导入用户 {1} 时出错:", org.Name, user.Name, ex.ToString()));
                        }
                    }
                }
            }
Esempio n. 25
0
        public override SCObjectSet Execute(HttpRequest req)
        {
            string[] ids = req.Form.GetValues("id");

            if (ids == null || ids.Length < 0)
            {
                throw new HttpException("当获取应用数据时,必须提供ID参数");
            }

            SCObjectSet objectSet = new SCObjectSet();

            objectSet.Scope = "AllApps";

            objectSet.Objects = ExportQueryHelper.LoadObjects(ids, "Applications");

            // 查找应用下的角色和功能
            objectSet.Membership = ExportQueryHelper.LoadMembershipOf(ids, "Applications");

            var memberObjects = ExportQueryHelper.LoadObjects((from obj in objectSet.Membership select obj.ID).ToArray(), null);

            objectSet.Acls = ExportQueryHelper.LoadAclsFor(ids);             // ACL

            foreach (var obj in memberObjects)
            {
                if (objectSet.Objects.ContainsKey(obj.ID) == false)
                {
                    objectSet.Objects.Add(obj);                     // 成员对象(角色和功能)
                }
            }

            var roleIds = (from m in memberObjects where m is PC.SCRole select m.ID).ToArray();

            if (roleIds.Length > 0)
            {
                var roleMembers = ExportQueryHelper.LoadMembershipOf(roleIds);

                objectSet.Membership.CopyFrom(roleMembers);                       // 角色→固定成员

                objectSet.Conditions = ExportQueryHelper.LoadConditions(roleIds); // 角色→条件

                objectSet.Relations = ExportQueryHelper.LoadFullRelations(roleIds);
            }

            return(objectSet);
        }
Esempio n. 26
0
        public override void DoImport(SCObjectSet objectSet, IImportContext context)
        {
            var executor = PC.Executors.SCObjectOperations.InstanceWithPermissions;

            var apps = ImportService.Instance.FilterNormalObjectsBySchemaCategories(objectSet.Objects, "Applications").ToList();

            int allCount = apps.Count;
            int step     = 0;

            context.AppendLog("发现" + allCount + "个应用");
            Dictionary <object, object> mappings = new Dictionary <object, object>();           // 保存新旧对象的对应关系

            // 统计需要哪些附加动作
            int extStepCount = 0;

            if (this.IncludePermissions)
            {
                extStepCount++;
            }
            if (this.IncludeRoles)
            {
                extStepCount++;
            }
            if (this.IncludeRoleMembers)
            {
                extStepCount++;
            }
            if (this.IncludeRoleDefinitions)
            {
                extStepCount++;
            }
            if (this.IncludeRoleConditions)
            {
                extStepCount++;
            }
            if (this.IncludeAcls)
            {
                extStepCount++;
            }

            foreach (PC.SCApplication app in apps)
            {
                this.ImportApplication(objectSet, context, executor, allCount, step++, extStepCount, mappings, app);
            }
        }
Esempio n. 27
0
        /// <summary>
        /// 获取所有组织节点表
        /// </summary>
        /// <param name="objectSet"></param>
        /// <param name="childOrgs">向其中写入组织的子组织</param>
        /// <param name="childUsers">向其中写入组织的子用户</param>
        /// <param name="childGroups">向其中写入组织的子群组</param>
        /// <param name="parents"></param>
        /// <param name="stat"></param>
        private static void FindFullOURelations(SCObjectSet objectSet, Dictionary <string, IList <PC.SCOrganization> > childOrgs, Dictionary <string, IList <PC.SCUser> > childUsers, Dictionary <string, IList <PC.SCGroup> > childGroups, IEnumerable <PC.SCOrganization> parents, Stat stat)
        {
            var objects = objectSet.Objects;

            foreach (var item in parents)
            {
                List <PC.SCOrganization> orgs   = new List <PC.SCOrganization>();
                List <PC.SCUser>         users  = new List <PC.SCUser>();
                List <PC.SCGroup>        groups = new List <PC.SCGroup>();
                foreach (var r in objectSet.Relations.FindAll(r => r.ParentID == item.ID && r.Status == SchemaObjectStatus.Normal).OrderBy(r => r.InnerSort))
                {
                    if (Util.IsOrganization(r.ChildSchemaType))
                    {
                        if (objects.ContainsKey(r.ID))
                        {
                            orgs.Add((PC.SCOrganization)objects[r.ID]);
                            stat.OrgsCount++;
                        }
                    }
                    else if (Util.IsGroup(r.ChildSchemaType))
                    {
                        if (objects.ContainsKey(r.ID))
                        {
                            groups.Add((PC.SCGroup)objects[r.ID]);
                            stat.GroupsCount++;
                        }
                    }
                    else if (Util.IsUser(r.ChildSchemaType))
                    {
                        if (objects.ContainsKey(r.ID))
                        {
                            users.Add((PC.SCUser)objects[r.ID]);
                            stat.UsersCount++;
                        }
                    }
                }

                childOrgs.Add(item.ID, orgs);
                childGroups.Add(item.ID, groups);
                childUsers.Add(item.ID, users);

                FindFullOURelations(objectSet, childOrgs, childUsers, childGroups, orgs, stat);
            }
        }
Esempio n. 28
0
        public static SCObjectSet ExportAdminUnits(string auSchemaID, string[] unitIDs, bool deep)
        {
            auSchemaID.NullCheck("auSchemaID");

            SCObjectSet objectSet = new SCObjectSet();

            objectSet.Scope = "AdminUnits";

            objectSet.Objects = AU.Adapters.AUSnapshotAdapter.Instance.LoadAUBySchemaID(auSchemaID, unitIDs, true, DateTime.MinValue);

            if (objectSet.Objects.Count > 0)
            {
                var ids = objectSet.Objects.ToIDArray();

                if (deep)
                {
                    var allSubUnits = Adapters.AUSnapshotAdapter.Instance.LoadCurrentSubUnitsDeeply(ids, DateTime.MinValue);
                    objectSet.Objects.Merge(allSubUnits);
                }

                AUCommon.DoDbAction(() =>
                {
                    objectSet.Relations = ExportQueryHelper.LoadFullRelations(ids);

                    objectSet.Membership = ExportQueryHelper.LoadFullMemberships(ids, false);                     //包含删除的

                    objectSet.Acls = ExportQueryHelper.LoadAclsFor(ids);

                    //查找角色
                    var roleIDs  = objectSet.Membership.Where(m => m.MemberSchemaType == AU.AUCommon.SchemaAdminUnitRole).Select(m => m.ID).ToArray();
                    var scopeIDs = objectSet.Membership.Where(m => m.MemberSchemaType == AU.AUCommon.SchemaAUAdminScope).Select(m => m.ID).ToArray();

                    LookupMemberObjects(objectSet, roleIDs, AUCommon.SchemaAdminUnitRole);

                    LookupMemberObjects(objectSet, scopeIDs, AUCommon.SchemaAUAdminScope);

                    objectSet.Conditions = ExportQueryHelper.LoadConditions(scopeIDs);
                });
            }

            return(objectSet);
        }
Esempio n. 29
0
        private void ImportOneGroup(SCObjectSet objectSet, IImportContext context, PC.Executors.ISCObjectOperations exec, SchemaObjectCollection parentObjects, SchemaObjectCollection memberObjects, int allCount, int count, SchemaObjectBase grp)
        {
            if (grp.SchemaType == "Groups")
            {
                try
                {
                    var summaryName = grp.Properties.GetValue <string>("Name", "未命名");
                    context.SetStatus(count, allCount, "正在导入对象:" + summaryName);

                    if (this.IncludeSelf)
                    {
                        SCRelationObject parentOrgRelation = (SCRelationObject)objectSet.Relations.Find(m => ((SCRelationObject)m).ParentSchemaType == "Organizations" && ((SCRelationObject)m).ChildSchemaType == "Groups" && ((SCRelationObject)m).ID == grp.ID);
                        if (parentOrgRelation == null)
                        {
                            throw new HttpException("未找到群组的父级组织");
                        }

                        var parentOrg = (SCOrganization)(parentObjects != null ? (from p in parentObjects where p.ID == parentOrgRelation.ParentID select p).FirstOrDefault() : null);
                        if (parentOrg == null || parentOrg.Status != SchemaObjectStatus.Normal)
                        {
                            throw new HttpException("群组的父级组织不存在或者已删除,未能导入群组。");
                        }

                        exec.AddGroup((SCGroup)grp, parentOrg);

                        context.AppendLog("已执行导入对象" + summaryName);
                    }

                    ImportMembers(objectSet, context, exec, memberObjects, grp);

                    ImportConditions(objectSet, context, grp);
                }
                catch (Exception ex)
                {
                    context.AppendLog("对项的操作失败,原因是:" + ex.Message);
                }
            }
            else
            {
                context.AppendLog("已跳过不是群组的项");
            }
        }
Esempio n. 30
0
		public static SCObjectSet ExportAUSchemas(string category)
		{
			SCObjectSet objectSet = new SCObjectSet();
			objectSet.Scope = "AUSchemas";

			var schemas = Adapters.AUSnapshotAdapter.Instance.LoadAUSchemaByCategory(category, true, DateTime.MinValue);

			AUCommon.DoDbAction(() =>
			{
				if (schemas.Count > 0)
				{
					var members = ExportQueryHelper.LoadMembershipOf(schemas.ToIDArray()); //查找Schema中的角色关系
					var roles = ExportQueryHelper.LoadObjects(members.Select(m => m.ID).ToArray(), AUCommon.SchemaAUSchemaRole);
					objectSet.Objects = schemas + roles;
					objectSet.Membership = members;
				}
			});

			return objectSet;
		}
Esempio n. 31
0
        private void ImportConditions(SCObjectSet objectSet, IImportContext context, SchemaObjectBase grp)
        {
            if (this.IncludeConditions && objectSet.HasConditions)
            {
                PC.Conditions.SCConditionOwner owner = new PC.Conditions.SCConditionOwner()
                {
                    OwnerID = grp.ID,
                    Type    = "Default"
                };
                var conditions = from c in objectSet.Conditions where c.OwnerID == grp.ID && c.Type == "Default" select c;
                foreach (var c in conditions)
                {
                    owner.Conditions.Add(c);
                }

                context.AppendLog("正在添加条件表达式");
                PC.Adapters.SCConditionAdapter.Instance.UpdateConditions(owner);
                context.AppendLog("添加条件表达式结束。");
            }
        }
Esempio n. 32
0
		/// <summary>
		/// 导出指定AUSchemaID
		/// </summary>
		/// <param name="auSchemaID"></param>
		/// <param name="roleIDs">为null或长度为0时,取出所有角色</param>
		/// <returns></returns>
		public static SCObjectSet ExportAUSchemaRoles(string auSchemaID, string[] roleIDs)
		{
			auSchemaID.NullCheck("auSchemaID");

			var auSchema = AU.Adapters.AUSnapshotAdapter.Instance.LoadAUSchema(auSchemaID, true, DateTime.MinValue).FirstOrDefault();

			if (auSchema == null)
				throw new AUObjectException("指定的管理架构ID无效");

			SCObjectSet objectSet = new SCObjectSet();
			objectSet.Scope = "AUSchemaRoles";
			AU.AUCommon.DoDbAction(() =>
			{
				if (roleIDs != null && roleIDs.Length > 0)
					objectSet.Objects = new SchemaObjectCollection(AU.Adapters.AUSnapshotAdapter.Instance.LoadAUSchemaRoles(auSchema.ID, roleIDs, false, DateTime.MinValue)); //包含删除的
				else
					objectSet.Objects = new SchemaObjectCollection(AU.Adapters.AUSnapshotAdapter.Instance.LoadAUSchemaRoles(auSchema.ID, false, DateTime.MinValue)); //包含删除的

				objectSet.Membership = ExportQueryHelper.LoadFullMemberships(objectSet.Objects.ToIDArray());
			});

			return objectSet;
		}
Esempio n. 33
0
		public static SCObjectSet ExportAUSchemas(string[] auSchemaIDs)
		{
			auSchemaIDs.NullCheck("auSchemaIDs");

			if (auSchemaIDs.Length == 0)
				throw new ArgumentException("至少应包含一个AUSchemaID", "auSchemaIDs");

			SCObjectSet objectSet = new SCObjectSet();
			objectSet.Scope = "AUSchemas";

			AUCommon.DoDbAction(() =>
			{
				var schemas = ExportQueryHelper.LoadObjects(auSchemaIDs, AUCommon.SchemaAUSchema);
				if (schemas.Count > 0)
				{
					var members = ExportQueryHelper.LoadMembershipOf(schemas.ToIDArray()); //查找Schema中的角色关系
					var roles = ExportQueryHelper.LoadObjects(members.Select(m => m.ID).ToArray(), AUCommon.SchemaAUSchemaRole);
					objectSet.Objects = schemas + roles;
					objectSet.Membership = members;
				}
			});

			return objectSet;
		}
Esempio n. 34
0
		public static SCObjectSet ExportAdminUnits(string auSchemaID, string[] unitIDs, bool deep)
		{
			auSchemaID.NullCheck("auSchemaID");

			SCObjectSet objectSet = new SCObjectSet();
			objectSet.Scope = "AdminUnits";

			objectSet.Objects = AU.Adapters.AUSnapshotAdapter.Instance.LoadAUBySchemaID(auSchemaID, unitIDs, true, DateTime.MinValue);

			if (objectSet.Objects.Count > 0)
			{
				var ids = objectSet.Objects.ToIDArray();

				if (deep)
				{
					var allSubUnits = Adapters.AUSnapshotAdapter.Instance.LoadCurrentSubUnitsDeeply(ids, DateTime.MinValue);
					objectSet.Objects.Merge(allSubUnits);
				}

				AUCommon.DoDbAction(() =>
				{
					objectSet.Relations = ExportQueryHelper.LoadFullRelations(ids);

					objectSet.Membership = ExportQueryHelper.LoadFullMemberships(ids, false); //包含删除的

					objectSet.Acls = ExportQueryHelper.LoadAclsFor(ids);

					//查找角色
					var roleIDs = objectSet.Membership.Where(m => m.MemberSchemaType == AU.AUCommon.SchemaAdminUnitRole).Select(m => m.ID).ToArray();
					var scopeIDs = objectSet.Membership.Where(m => m.MemberSchemaType == AU.AUCommon.SchemaAUAdminScope).Select(m => m.ID).ToArray();

					LookupMemberObjects(objectSet, roleIDs, AUCommon.SchemaAdminUnitRole);

					LookupMemberObjects(objectSet, scopeIDs, AUCommon.SchemaAUAdminScope);

					objectSet.Conditions = ExportQueryHelper.LoadConditions(scopeIDs);
				});
			}

			return objectSet;
		}
Esempio n. 35
0
		private static void LookupMemberObjects(SCObjectSet objectSet, string[] memberIDs, string schemaType)
		{
			if (memberIDs != null && memberIDs.Length > 0)
			{
				var members = ExportQueryHelper.LoadObjects(memberIDs, schemaType, false);

				objectSet.Objects.Merge(members);

				//查找角色的固定成员
				var roleMembers = ExportQueryHelper.LoadMembershipOf(memberIDs);

				objectSet.Membership.AddRange(roleMembers);
			}
		}