zoukankan      html  css  js  c++  java
  • BusinessUnit, User, Role 中常用的APIs

       前段时间为了做项目调研,写了一些测试API的例子。这些API主要涉及这些模块: BusinessUnit, User, Role。把它分享出来,希望对大家的工作有所帮助。

    APIs

    No

    Module  Name

    Name

    Comments

    1

    BusinessUnit

    GetBUs

    Retrieve all of Bus in current CRM  system.

    2

    DisableBU

    Disable BU entry

    3

    EnableBU

    Enable BU entry

    4

    DeleteBU

    Delete BU entry

    5

    ChangeParentBU

    Change BU entry’s parent

    6

    Role

    GetRoles

    Retrieve all of role entries

    7

    DeleteRole

    Delete role entry

    8

    Team

    GetTeams

    Retrieve all of team entries

    9

    GetTeamRoles

    Retrieve all role of one team

    10

    GraintTeamRole

    Grant some roles to one team

    11

    RevokeTeamRole

    Revoke some roles from one team

    12

    AddTeamMembers

    Add some members into one team

    13

    RemoveTeamMembers

    Remove some members from one team

    14

    ChangeTeamBU

    Change one team’s BU

    15

    RetrieveTeamMembers

    Retrieve all members of one team

    16

    User

    GetUsers

    Get all of users in current CRM system

    17

    GrantUserRole

    Grant some roles to user

    18

    RevokeUserRole

    Revoke some roles from user

    19

    AssignTeamToUser

    Involve user into a team

    20

    RemoveTeamFromUser

    Exclude user from a team

    21

    ChangeUserBU

    Change user’s BU

    Codes

          #region BU
         
            static void GetBUs()
            {
                QueryExpression query = new QueryExpression("businessunit");
                query.ColumnSet = new ColumnSet(true);
                EntityCollection businessUnits = crmSvc.RetrieveMultiple(query);
    
                if (businessUnits == null)
                {  
                    Console.WriteLine("Did not get any BU record");
                    return;
                }
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.WriteLine("|{0,3}|{1,30}|{2,30}|","Num","Name","Parent Name");
                Console.BackgroundColor = ConsoleColor.Black;
                for (int i = 0; i < businessUnits.Entities.Count; i++)
                {
                    Console.WriteLine("|{0,3}|{1,30}|{2,30}|",i, businessUnits.Entities[i].GetAttributeValue<string>("name")
                        , businessUnits.Entities[i].GetAttributeValue<EntityReference>("parentbusinessunitid")==null?"NULL":businessUnits.Entities[i].GetAttributeValue<EntityReference>("parentbusinessunitid").Name);
                }
                Console.WriteLine();
            }
    
            static void DisableBU()
            {
                SetStateRequest request = new SetStateRequest();
                request.EntityMoniker = new EntityReference("businessunit", TEST_BU_1);
                request.State = new OptionSetValue(1);
                request.Status = new OptionSetValue(0);
                SetStateResponse response = crmSvc.Execute(request) as SetStateResponse;
                Console.WriteLine("Disabled operation is done!");
            }
    
            static void EnableBU()
            {
                SetStateRequest request = new SetStateRequest();
                request.EntityMoniker = new EntityReference("businessunit", TEST_BU_1);
                request.State = new OptionSetValue(0);
                request.Status = new OptionSetValue(0);
                SetStateResponse response = crmSvc.Execute(request) as SetStateResponse;
                Console.WriteLine("Enabled operation is done!");
            }
    
    
            static void DeleteBU()
            {
                try
                {
                    crmSvc.Delete("businessunit", TEST_BU_1);
                }
                catch (FaultException ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.WriteLine("Deleted operation is done!");
            }
    
            static void ChangeParentBU()
            {
                SetParentBusinessUnitRequest request = new SetParentBusinessUnitRequest();
                request.BusinessUnitId = TEST_BU_2;
                request.ParentId = TEST_BU_1;
    
                crmSvc.Execute(request);
                Console.WriteLine("Changing BU's parent BU is done!");
            }
    
            #endregion
    
    
            #region Role
            static void GetRoles()
            {
                QueryExpression query = new QueryExpression("role");
                query.ColumnSet = new ColumnSet(true);
                query.LinkEntities.Add(new LinkEntity("role", "businessunit", "businessunitid", "businessunitid", JoinOperator.Inner));
                query.LinkEntities[0].Columns = new ColumnSet(true);
                query.LinkEntities[0].EntityAlias = "bu";
                EntityCollection roles = crmSvc.RetrieveMultiple(query);
    
                if (roles == null)
                {
                    Console.WriteLine("Did not get any Role record");
                    return;
                }
    
                Console.WindowWidth = 192;
                Console.WindowHeight = 54;
    
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", "Num", "Role Name", "BU Name","Id");
                Console.BackgroundColor = ConsoleColor.Black;
                for (int i = 0; i < roles.Entities.Count; i++)
                {
                    Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", i, roles.Entities[i].GetAttributeValue<string>("name")
                                                                , ((Microsoft.Xrm.Sdk.AliasedValue)roles.Entities[i]["bu.name"]).Value
                                                                , roles.Entities[i]["roleid"].ToString());
                }
                Console.WriteLine();
    
            }
    
            static void DeleteRole()
            {
                crmSvc.Delete("role", TEST_ROLE);
            }
            #endregion
    
            #region Team
            static void GetTeams()
            {
                QueryExpression query = new QueryExpression("team");
                query.ColumnSet = new ColumnSet(true);
                query.LinkEntities.Add(new LinkEntity("team", "businessunit", "businessunitid", "businessunitid", JoinOperator.Inner));
                query.LinkEntities[0].Columns = new ColumnSet(true);
                query.LinkEntities[0].EntityAlias = "bu";
    
                EntityCollection teams = crmSvc.RetrieveMultiple(query);
                if (teams == null && teams.Entities.Count == 0)
                {
                    Console.WriteLine("Did not get any Role record");
                    return;
                }
    
                Console.WindowWidth = 192;
                Console.WindowHeight = 54;
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", "Num", "Team Name", "BU Name","Id");
                Console.BackgroundColor = ConsoleColor.Black;
                for (int i = 0; i < teams.Entities.Count; i++)
                {
                    Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", i, teams.Entities[i].GetAttributeValue<string>("name")
                                                                , ((Microsoft.Xrm.Sdk.AliasedValue)teams.Entities[i]["bu.name"]).Value
                                                                , teams.Entities[i]["teamid"]);
                }
                Console.WriteLine();
    
            }
    
    
    
            static void GetTeamRoles()
            {
                QueryExpression query = new QueryExpression("team");
                query.ColumnSet = new ColumnSet(true);
                query.LinkEntities.Add(new LinkEntity("team", "teamroles", "teamid", "teamid", JoinOperator.Inner));
                query.LinkEntities[0].Columns = new ColumnSet(true);
                query.LinkEntities[0].EntityAlias = "multi";
    
                query.LinkEntities[0].AddLink("role", "roleid", "roleid", JoinOperator.Inner);
                query.LinkEntities[0].LinkEntities[0].Columns = new ColumnSet(true);
                query.LinkEntities[0].LinkEntities[0].EntityAlias = "role";
    
                query.LinkEntities[0].LinkEntities[0].AddLink("businessunit", "businessunitid", "businessunitid", JoinOperator.Inner);
                query.LinkEntities[0].LinkEntities[0].LinkEntities[0].Columns = new ColumnSet(true);
                query.LinkEntities[0].LinkEntities[0].LinkEntities[0].EntityAlias = "bu";
    
                query.Criteria.AddCondition(new ConditionExpression("teamid", ConditionOperator.Equal, TEST_TEAM_1));
    
                EntityCollection roles = crmSvc.RetrieveMultiple(query);
    
                if (roles == null)
                {
                    Console.WriteLine("Did not get any Role record");
                    return;
                }
    
                Console.WindowWidth = 192;
                Console.WindowHeight = 54;
    
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}|", "Num", "Role Name", "BU Name","Id");
                Console.BackgroundColor = ConsoleColor.Black;
                for (int i = 0; i < roles.Entities.Count; i++)
                {
                    Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}|", i, ((Microsoft.Xrm.Sdk.AliasedValue)roles.Entities[i]["role.name"]).Value
                                                                , ((Microsoft.Xrm.Sdk.AliasedValue)roles.Entities[i]["bu.name"]).Value
                                                                , ((Microsoft.Xrm.Sdk.AliasedValue)roles.Entities[i]["role.roleid"]).Value);
                }
                Console.WriteLine();
    
            }
    
            static void GraintTeamRole()
            {
                Relationship rp = new Relationship("teamroles_association");
                EntityReferenceCollection roleCollection = new EntityReferenceCollection();
                roleCollection.Add(new EntityReference("role",TEST_USER_ROLE_1));
                roleCollection.Add(new EntityReference("role", TEST_USER_ROLE_2));
    
                crmSvc.Associate("team", TEST_TEAM_1, rp, roleCollection);
                Console.WriteLine("Grainting team role is done!");
            }
    
            static void RevokeTeamRole()
            {
                Relationship rp = new Relationship("teamroles_association");
                EntityReferenceCollection roleCollection = new EntityReferenceCollection();
                roleCollection.Add(new EntityReference("role", TEST_TEAM_ROLE_1));
                roleCollection.Add(new EntityReference("role", TEST_TEAM_ROLE_2));
    
                crmSvc.Disassociate("team", TEST_TEAM_1, rp, roleCollection);
                Console.WriteLine("Revoking team role is done!");
                
            }
    
            static void AddTeamMembers()
            {
                AddMembersTeamRequest request = new AddMembersTeamRequest();
                request.MemberIds=new Guid[]{TEST_SYSTEMUSER_1,TEST_SYSTEMUSER_2};
                request.TeamId = TEST_TEAM_1;
    
                crmSvc.Execute(request);
                Console.WriteLine("Adding team members is done!");
            }
    
            static void RemoveTeamMembers()
            {
                RemoveMembersTeamRequest request = new RemoveMembersTeamRequest();
                request.MemberIds = new Guid[] { TEST_SYSTEMUSER_1};
                request.TeamId = TEST_TEAM_1;
    
                crmSvc.Execute(request);
                Console.WriteLine("Remove team member is done!");
            }
    
            static void ChangeTeamBU()
            {
                SetParentTeamRequest request = new SetParentTeamRequest();
                request.BusinessId = TEST_BU_1;
                request.TeamId = TEST_TEAM_1;
    
                crmSvc.Execute(request);
                Console.WriteLine("Changing Business Unit is done!");
            }
    
            static void RetrieveTeamMembers()
            {
                List<Guid> members = new List<Guid>();
                RetrieveMembersTeamRequest request = new RetrieveMembersTeamRequest();
                request.EntityId = TEST_TEAM_1;
                request.MemberColumnSet = new ColumnSet(true);
    
                RetrieveMembersTeamResponse response = crmSvc.Execute(request) as RetrieveMembersTeamResponse;
                for (int i = 0; i < response.EntityCollection.Entities.Count; i++)
                {
                    members.Add(response.EntityCollection.Entities[i].GetAttributeValue<Guid>("systemuserid"));
                }
    
                //Get user list
                QueryExpression query = new QueryExpression("systemuser");
                query.ColumnSet = new ColumnSet(true);
                query.LinkEntities.Add(new LinkEntity("systemuser", "businessunit", "businessunitid", "businessunitid", JoinOperator.Inner));
                query.LinkEntities[0].Columns = new ColumnSet(true);
                query.LinkEntities[0].EntityAlias = "bu";
    
                query.Criteria.FilterOperator = LogicalOperator.Or;
                foreach (Guid item in members)
                { 
                    query.Criteria.AddCondition(new ConditionExpression("systemuserid",ConditionOperator.Equal,item));
                }
    
                EntityCollection users = crmSvc.RetrieveMultiple(query);
                if (users == null && users.Entities.Count == 0)
                {
                    Console.WriteLine("Did not get any User record");
                    return;
                }
    
                Console.WindowWidth = 192;
                Console.WindowHeight = 54;
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", "Num", "Team Name", "BU Name", "Id");
                Console.BackgroundColor = ConsoleColor.Black;
                for (int i = 0; i < users.Entities.Count; i++)
                {
                    Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", i, users.Entities[i].GetAttributeValue<string>("fullname")
                                                                , ((Microsoft.Xrm.Sdk.AliasedValue)users.Entities[i]["bu.name"]).Value
                                                                , users.Entities[i]["systemuserid"]);
                }
                Console.WriteLine();
    
                Console.WriteLine();
            }   
    
            #endregion
    
            #region systemuser
    
            static void GetUsers()
            {
                QueryExpression query = new QueryExpression("systemuser");
                query.ColumnSet = new ColumnSet(true);
                query.LinkEntities.Add(new LinkEntity("systemuser", "businessunit", "businessunitid", "businessunitid", JoinOperator.Inner));
                query.LinkEntities[0].Columns = new ColumnSet(true);
                query.LinkEntities[0].EntityAlias = "bu";
    
                EntityCollection users = crmSvc.RetrieveMultiple(query);
                if (users == null && users.Entities.Count == 0)
                {
                    Console.WriteLine("Did not get any User record");
                    return;
                }
    
                Console.WindowWidth = 192;
                Console.WindowHeight = 54;
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", "Num", "Team Name", "BU Name","Id");
                Console.BackgroundColor = ConsoleColor.Black;
                for (int i = 0; i < users.Entities.Count; i++)
                {
                    Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", i, users.Entities[i].GetAttributeValue<string>("fullname")
                                                                , ((Microsoft.Xrm.Sdk.AliasedValue)users.Entities[i]["bu.name"]).Value
                                                                , users.Entities[i]["systemuserid"]);
                }
                Console.WriteLine();
            }
    
            static void GrantUserRole()
            {
                Relationship rp1 = new Relationship("systemuserroles_association");
                EntityReferenceCollection roleList = new EntityReferenceCollection();
                roleList.Add(new EntityReference("role", TEST_USER_ROLE_1));
                roleList.Add(new EntityReference("role", TEST_USER_ROLE_2));
    
                crmSvc.Associate("systemuser", TEST_USER_1, rp1, roleList);
                Console.WriteLine("Granting user role is done!");
    
            }
    
            static void RevokeUserRole()
            {
                Relationship rp1 = new Relationship("systemuserroles_association");
                EntityReferenceCollection roleList = new EntityReferenceCollection();
                roleList.Add(new EntityReference("role", TEST_USER_ROLE_1));
                roleList.Add(new EntityReference("role", TEST_USER_ROLE_2));
    
                crmSvc.Disassociate("systemuser", TEST_USER_1, rp1, roleList);
                Console.WriteLine("Granting user role is done!");
            }
    
            static void AssignTeamToUser()
            {
                Relationship rp1 = new Relationship("teammembership_association");
                EntityReferenceCollection teamList = new EntityReferenceCollection();
                teamList.Add(new EntityReference("team",TEST_TEAM_1));
                
                crmSvc.Associate("systemuser",TEST_USER_1,rp1,teamList);
                Console.WriteLine("Assigning team is done!");
            }
    
            static void RemoveTeamFromUser()
            { 
                Relationship rp1 = new Relationship("teammembership_association");
                EntityReferenceCollection teamList = new EntityReferenceCollection();
                teamList.Add(new EntityReference("team",TEST_TEAM_1));
                
                crmSvc.Disassociate("systemuser",TEST_USER_1,rp1,teamList);
                Console.WriteLine("Removing team is done!");
            }
    
            static void ChangeUserBU()
            {
                SetBusinessSystemUserRequest request = new SetBusinessSystemUserRequest();
                request.BusinessId = TEST_BU_1;
                request.UserId = TEST_USER_1;
                request.ReassignPrincipal = new EntityReference("systemuser",TEST_USER_1);
                crmSvc.Execute(request);
                Console.WriteLine("Changing user's bu is done!");
            }
    
    
    
    
    
            #endregion
    
            #region Announcemnets
    
            static void GetAnnouncements()
            {
                QueryExpression query = new QueryExpression("businessunitnewsarticle");
                query.ColumnSet = new ColumnSet(true);
    
                EntityCollection news = crmSvc.RetrieveMultiple(query);
                if (news == null || news.Entities.Count == 0)
                {
                    Console.WriteLine("Did not get any new from crm!");
                    return;
                }
    
                Console.WindowWidth = 192;
                Console.WindowHeight = 54;
                Console.BackgroundColor = ConsoleColor.Blue;
                Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", "Num", "Title", "Expired Date","Id");
                Console.BackgroundColor = ConsoleColor.Black;
                for (int i = 0; i < news.Entities.Count; i++)
                {
                    Console.WriteLine("|{0,3}|{1,30}|{2,30}|{3,38}", i, news.Entities[i].GetAttributeValue<string>("articletitle")
                        , news.Entities[i].GetAttributeValue<DateTime>("activeuntil")!=null?news.Entities[i].GetAttributeValue<DateTime>("activeuntil").ToString("yyyy-MM-dd"):"NULL"
                        , news.Entities[i].GetAttributeValue<Guid>("businessunitnewsarticleid"));
                }
            }
    
            static void AddAnnouncements()
            {
                Entity news = new Entity("businessunitnewsarticle");
                news["articletitle"] = "Test Announcement 3";
                news["newsarticle"] = "Announcement Body";
                news["activeuntil"]=DateTime.Now.AddDays(10);
                crmSvc.Create(news);
    
                Console.WriteLine("Adding Announcement is done!");
            }
    
            static void DeleteAnnouncements()
            {
    
                //Entity news = new Entity("businessunitnewsarticle");
                //news["articletitle"] = "Test Announcement 3";
                //news["newsarticle"] = "Announcement Body";
                //news["activeuntil"] = DateTime.Now;
                //news.Id=crmSvc.Create(news);
    
                crmSvc.Delete("businessunitnewsarticle", TEST_ANNOUNCEMENT_1);
                Console.WriteLine("Deleting Announcement is done!");
            }
    
            static void UpdateAnnouncements()
            {
                Entity news = crmSvc.Retrieve("businessunitnewsarticle",TEST_ANNOUNCEMENT_1,new ColumnSet(true));
                news["newsarticle"]+="_update!";
                crmSvc.Update(news);
                Console.WriteLine("Updating Announcement is done!");
    
            }
    
            #endregion
    
            #region System Job
    
            static void GetSystemJobList()
            {
                FetchExpression fetch = new FetchExpression(@"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>
                                                                  <entity name='asyncoperation'>
                                                                    <attribute name='asyncoperationid' />
                                                                    <attribute name='name' />
                                                                    <attribute name='regardingobjectid' />
                                                                    <attribute name='operationtype' />
                                                                    <attribute name='statuscode' />
                                                                    <attribute name='ownerid' />
                                                                    <attribute name='startedon' />
                                                                    <attribute name='statecode' />
                                                                    <attribute name='messagename' />
                                                                    <attribute name='friendlymessage' />
                                                                    <attribute name='message' />
                                                                    <order attribute='startedon' descending='true' />
                                                                  </entity>
                                                                </fetch>");
                var result = crmSvc.RetrieveMultiple(fetch);
                
                foreach (Entity item in result.Entities)
                {
                    Console.BackgroundColor = ConsoleColor.Blue;
                    Console.WriteLine(" ");
                    Console.BackgroundColor = ConsoleColor.Black;
    
                    Console.WriteLine("{0}:{1}", "NAME", item["name"]);
                    Console.WriteLine("{0}:{1}", "OPERATIONTYPE", ParseOperationType(((OptionSetValue)item["operationtype"]).Value));
                    Console.WriteLine("{0}:{1}", "STATECODE", ParseOperationState(((OptionSetValue)item["statecode"]).Value));
                    Console.WriteLine("{0}:{1}", "STATUSCODE", ParseOperationStatus(((OptionSetValue)item["statuscode"]).Value));
    
                    if(item.Contains("friendlymessage"))
                        Console.WriteLine("{0}:{1}", "FRIENDLY MESSAGE", item["friendlymessage"]!=null?item["friendlymessage"]:"NULL");
                    if (item.Contains("message"))
                    Console.WriteLine("{0}:{1}", "MESSAGE", item["message"]!=null?item["message"]:"NULL");
    
                }
    
                //Console.WriteLine(result.Entities.Count);
            }
    
            static string  ParseOperationType(int value)
            {
                string result=string.Empty;
                Type operationType = typeof(AsyncOperationType);
                foreach (var field in operationType.GetFields())
                {
                    if ((int)field.GetValue(operationType) == value)
                    {
                        result = field.Name;
                        break;
                    }
                }
                return result;
            }
    
            static string ParseOperationStatus(int value)
            {
                string result = string.Empty;
                Type operationStatus = typeof(AsyncOperationStatus);
                foreach (var field in operationStatus.GetFields())
                {
                    if ((int)field.GetValue(operationStatus) == value)
                    {
                        result = field.Name;
                        break;
                    }
                }
                return result;
            }
    
            static string ParseOperationState(int value)
            {
                var tmp = (AsyncOperationState)value;
                return tmp.ToString();
    
            }
               
    
            #endregion
    
            #region Common Functions
    
    
            #endregion

  • 相关阅读:
    Transform XML using XSLT
    HyperV Remote Management Configuration utility
    UI testing via Reflection in .NET
    Auto Test: Test Case Structure
    UI Testing via windows API
    风讯CMS常见问题锦集
    深入了解ASP.NET运行内幕 .txt
    公布一个简单的日志记录方法 【转】要研究
    服务器asp.net权限设置问题及解决方法时间:
    C#如何去掉字符串中所有空格
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3206632.html
Copyright © 2011-2022 走看看