sharepoint:SharePoint高级内容--访问群体对象模型的开发的一

  访问群体(Audience)是Sharepo Portal server中个性化特性重要基础所以基于基于访问群体对象模型开发场景必然也很常见在这里列举了8个比较常用到功能实现

  按照我对其进行了解顺序排列:

  1、显示访问群体属性   我在访问群体管理页面中创建了好多访问群体现在想要编程方式来看看这些访问群体属性

  下面代码显示了个访问群体 IDname 和 bValid 属性分别是访问群体GUID名称和是否还有效

TopologyManagertopology=TopologyManager;
PortalSiteportal=topology.PortalSites[Uri("http://server_name")];
PortalContextcontext=PortalApplication.GetContext(portal);
//创建个audiencemanager对象
AudienceManagerAudMgr=AudienceManager(context);
ArrayListAudienceIDList;
ArrayListAudienceNamelist=ArrayList;
AudienceNamelist.Add("Engineer");
try
{
 AudienceIDList=AudMgr.GetAudienceIDs(AudienceNamelist);
 (AudienceIDList!=null)
 {
   for(i=0;i<AudienceIDList.Count;i)
   {
     Console.WriteLine(((AudienceNameID)AudienceIDList[i]).AudienceID.);
     Console.WriteLine(((AudienceNameID)AudienceIDList[i]).AudienceName);
     Console.WriteLine(((AudienceNameID)AudienceIDList[i]).bValid.);
   }
  }
}
catch(AudienceExceptione)
{}


  2、编程创建访问群体 下面代码创建了个名为 "Customer Connection"访问群体

TopologyManagertopology=TopologyManager;
PortalSiteportal=topology.PortalSites[Uri("http://server_name")];
PortalContextcontext=PortalApplication.GetContext(portal);
AudienceManagerAudMgr=AudienceManager(context);
AudienceCollectionac=AudMgr.Audiences;
Audiencea=null;
sAudName="Engineer";
sDescription="工程师组";
try
{
 a=ac.Create(sAudName,sDescription);
}
catch(AudienceDuplicateNameExceptione) //如果创建访问群体名已经存在将抛出这个异常
{}
catch(AudienceExceptione1)
{}


  这个访问群体仅仅是被创建出来了这时并没有任何规则和的对应我们需要为其添加规则并进行收集工作这里需要注意收集访问群体只能在Web管理页面中进行这个操作没有相应对象模型可以编程   3、为访问群体添加简单基于AND 和OR规则

  在Web管理页面中仅仅提供了两个规则操作项:满足所有规则用户分组或满足任意规则用户分组 而且当我们使用 Web管理页面时我们被限制为最多使用6条规则当然这在多数情况下已经足够用了但是我们还是希望可以使用多于6条规则^_^

  这种情况下我们可以通过访问群体对象模型来实现对象模型允许您在个访问群体上对应多于6条规则当然也不定非要这种情况下才用到对象模型我们在上面创建好访问群体实际上没有对应任何规则我们可以接着用代码为其添加规则如此就完美了

  下面例子用了 “AND”来连接多条规则当然你也可以改为“OR”了

TopologyManagertopology=TopologyManager;
PortalSiteportal=topology.PortalSites[Uri("http://server_name")];
PortalContextcontext=PortalApplication.GetContext(portal);
AudienceManagerAudMgr=AudienceManager(context);
Audiencea=null;
boolruleListNotEmpty=false;
try
{
 a=AudMgr.Audiences["Engineer"];
}
catch(AudienceArgumentException ex)
{}
ArrayListaRules=a.AudienceRules;
(aRulesnull)
{
 aRules=ArrayList;
}

{
   ruleListNotEmpty=true;
}
//Audience规则AudienceRules这个ArrayList里面实际上放着Microsoft.SharePo.Portal.Audience.AudienceRuleComponent对象
//这个对象包括了规则描述:操作符和值格式是 3个分别对应操作数操作符和值
try
{
//如果已经有规则了,那么已个组操作符'AND'开始扩展
 (ruleListNotEmpty)
 {
    aRules.Add(AudienceRuleComponent(null,"AND",null));
 }
 AudienceRuleComponentr1=AudienceRuleComponent("FirstName","Contains", "a");
 aRules.Add(r1);
 AudienceRuleComponentr2=AudienceRuleComponent(null,"AND", null);
 aRules.Add(r2);
 AudienceRuleComponentr3=AudienceRuleComponent("WorkEmail","Contains", "DepA.com");
 aRules.Add(r3);
 a.AudienceRules=aRules;
 a.Commit;
}
catch(AudienceExceptione)
{}


  注意:如果使用 Audience.AudienceRules.Add 增加条规则然后 Audience类 Commit 思路方法并不能保存这条新规则我们必须在 Commit思路方法前设置AudienceRules属性避免这样做个思路方法就是创建个新规则 ArrayList然后让 Audience.AudienceRules =新规则ArrayList原因大家估计已经可以猜到了只有指定这个属性值方式才能告诉Commit这个访问群体规则变化了(迟钝!)

  下面是 AudienceRuleComponent 对象中支持操作符:

操作符 需要左右两个操作数 (并非针对个组操作)
= Yes
> Yes
>= Yes
< Yes
<= Yes
Contains Yes
Reports Under Yes (左边操作数必须为 'Everyone'即所有用户)
<> Yes
Not Contains Yes
AND No
OR No
( No
) No
Member Of Yes (左边操作数必须为 'DL'即用户)



Tags:  sharepoint教程 什么是sharepoint sharepoint2007 sharepoint

延伸阅读

最新评论

发表评论