zoukankan      html  css  js  c++  java
  • SharePoint高级内容访问群体对象模型的开发之二

    4、为访问群体添加复杂的基于AND 、OR和()的规则
      我们可以使用括号与AND ,OR共同作用,组合出更复杂的规则来。 Sharepoint Portal Server的对象模型可以支持最多三层括号的嵌套。
    注意:如果一个访问群体对应复杂的规则,您就不能在Web管理页面中查看或编辑其属性了。不过不用担心,您仍可以在Web管理页面中查看其包含的成员。

    下面是个组合出复杂规则的例子
    TopologyManager topology = new TopologyManager();
    PortalSite portal 
    = topology.PortalSites[new Uri("http://server_name")];
    PortalContext context 
    = PortalApplication.GetContext(portal);
    AudienceManager AudMgr 
    = new AudienceManager(context);
    Audience a 
    = null;
    bool ruleListNotEmpty = false;
    try
    {
      a 
    = AudMgr.Audiences["Engineer"];
    }
    catch(AudienceArgumentException  ex)
    {}
    ArrayList aRules 
    = a.AudienceRules;
    if( aRules == null )
    {
      aRules 
    = new ArrayList();
    }
    else
    {
          ruleListNotEmpty 
    = true;
    }
    try
    {
      
    if (ruleListNotEmpty)
      {
            aRules.Add(
    new AudienceRuleComponent(null"AND"null));
      }
      AudienceRuleComponent r0 
    = new AudienceRuleComponent(null"("null);
      aRules.Add(r0); 

      AudienceRuleComponent r1 
    = new AudienceRuleComponent("FirstName""Contains",  "a");
      aRules.Add(r1); 

      AudienceRuleComponent r2 
    = new AudienceRuleComponent(null"AND",  null);
      aRules.Add(r2); 

      AudienceRuleComponent r3 
    = new AudienceRuleComponent("WorkEmail""Contains",  "DepA.com");
      aRules.Add(r3); 

      AudienceRuleComponent r4 
    = new AudienceRuleComponent(null")"null);
      aRules.Add(r4);

      AudienceRuleComponent r5 
    = new AudienceRuleComponent(null"OR"null);
      aRules.Add(r5);

      AudienceRuleComponent r6 
    = new AudienceRuleComponent(null"("null);
      aRules.Add(r6);

      AudienceRuleComponent r7 
    = new AudienceRuleComponent("FirstName""Contains",  "b");
      aRules.Add(r7); 

      AudienceRuleComponent r8 
    = new AudienceRuleComponent(null"AND",  null);
      aRules.Add(r8); 

      AudienceRuleComponent r9 
    = new AudienceRuleComponent("WorkEmail""Contains",  "DepB.com");
      aRules.Add(r9);

      AudienceRuleComponent r10 
    = new AudienceRuleComponent(null")"null);
      aRules.Add(r10);
      a.AudienceRules 
    = aRules;
      a.Commit();

    }
    catch(AudienceException e)
    {}
    5、获取访问群体的成员

    下面的代码将访问群体的成员的WindowsNT系统名称显示了出来。
    TopologyManager topology = new TopologyManager();
    PortalSite portal 
    = topology.PortalSites[new Uri("http://server_name")];
    PortalContext context 
    = PortalApplication.GetContext(portal);
    AudienceManager AudMgr 
    = new AudienceManager(context);
    try
    {
      ArrayList memarray 
    = AudMgr.Audiences["Engineer"].GetMembership();

      
    foreach(UserInfo o in memarray)
      {
         Console.WriteLine(o.NTName);
      }
    }
    catch(AudienceException e)
    {}
    6、显示用户所隶属于的访问群体

    已此类推,我们也可以显示一个用户所隶属于德所有访问群体。
    TopologyManager topology = new TopologyManager();
    PortalSite portal 
    = topology.PortalSites[new Uri("http://server_name")];
    PortalContext context 
    = PortalApplication.GetContext(portal);
    AudienceManager AudMgr 
    = new AudienceManager(context);
    try
    {
    //传入一个Windows帐号名来获取隶属于的访问群体组。
    //如果要获取当前用户的隶属访问群体组,只要不指定任何参数直接GetUserAudienceIDs()就可以了
      ArrayList audienceIDNames = AudMgr.GetUserAudienceIDs("domain_name\\alias");
      ArrayList audienceNames 
    = new ArrayList();


         
    for (int i=0; i<audienceIDNames.Count; i++)
         {
             AudienceNameID arrTemp 
    = (AudienceNameID) audienceIDNames[i];
             audienceNames.Add(arrTemp.AudienceName);
             Console.WriteLine(audienceNames[i].ToString());
         }

    }
    catch(AudienceException e)
    {}

    7、得到规程操作符的显示名称和内部名称

    可以用下面的代码看看这些操作符在Web管理页面中怎么叫。
    TopologyManager topology = new TopologyManager();
    PortalSite portal 
    = topology.PortalSites[new Uri("http://server_name")];
    PortalContext context 
    = PortalApplication.GetContext(portal);
    AudienceManager AudMgr 
    = new AudienceManager(context);

    ArrayList OpList  
    = AudMgr.AudienceOperatorList;

    for (int list=0; list < OpList.Count; list++)
    {
      Console.WriteLine(list.ToString());
      Console.WriteLine(
    "  Name: {0}" , ((AudienceOperator)OpList[list]).OperatorName);
      Console.WriteLine(
    "  DisplayName:  {0}" ,  ((AudienceOperator)OpList[list]).OperatorDisplayName);
    }

    8、得到规则操作符左侧操作数允许使用的名称

    可以用下面的代码看看可以用作规则操作符左侧操作数的所有内容。包括在Web管理页面中显示的名称和我们在编程时使用的内部名称。上面有提到的“Everyone”,“DL”就包括在这里,还有好多活动目录中有的属性,值得细细去查看。
    TopologyManager topology = new TopologyManager();
    PortalSite portal 
    = topology.PortalSites[new Uri("http://server_name")];
    PortalContext context 
    = PortalApplication.GetContext(portal);
    AudienceManager AudMgr 
    = new AudienceManager(context);

    ArrayList LeftContentList;
    LeftContentList 
    = AudMgr.AudienceLeftContentList;

    for (int list=0; list < LeftContentList.Count; list++)
    {
      Console.WriteLine(list.ToString());
      Console.WriteLine(
    "  Name: " + ((AudienceLeftContent)LeftContentList[list]).Name);
      Console.WriteLine(
    "  DisplayName: " + ((AudienceLeftContent)LeftContentList[list]).DisplayName);
      Console.WriteLine(
    "  DataType: " + ((AudienceLeftContent)LeftContentList[list]).DataType);
      Console.WriteLine(
    "  DataLength: " + ((AudienceLeftContent)LeftContentList[list]).DataLength);
      Console.WriteLine(
    "  bProperty: " + ((AudienceLeftContent)LeftContentList[list]).bProperty);
    }
    (完)

  • 相关阅读:
    HTTP断点续传 规格严格
    Java Shutdown 规格严格
    linux 命令源码 规格严格
    JTable调整列宽 规格严格
    linux 多CPU 规格严格
    Hello can not find git path 规格严格
    Kill 规格严格
    拜拜牛人 规格严格
    Swing 规格严格
    Debugging hangs in JVM (on AIX but methodology applicable to other platforms) 规格严格
  • 原文地址:https://www.cnblogs.com/Sunmoonfire/p/531759.html
Copyright © 2011-2022 走看看