日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 辦公軟件教程 > 詳細頁面

SharePoint 訪問群體對象模型的開發

SharePoint 訪問群體對象模型的開發

更新時間:2024-02-08 文章作者:未知 信息來源:網絡 閱讀次數:

SharePoint發行版本有SharePoint2003、SharePoint2007、Sharepoint 2010、SharePoint2013和SharePoint2016。SharePoint提供了功能強大的團隊協作環境,使得組織能夠在整個組織內部實現整合、組織、查找和提供 SharePoint站點。

訪問群體(Audience)是Sharepoint Portal server中個性化特性的重要基礎。所以基于基于訪問群體對象模型的開發場景必然也很常見。在這里列舉了8個比較常用到的功能實現。
按照我對其進行了解的順序排列:
1、顯示訪問群體屬性

我在訪問群體管理頁面中創建了好多的訪問群體,現在想要編程的方式來看看這些訪問群體的屬性。

下面的代碼顯示了一個訪問群體的 ID,name, 和 bValid 屬性。分別是訪問群體的GUID,名稱和是否還有效。

TopologyManager?topology?=?new?TopologyManager();
PortalSite?portal?=?topology.PortalSites[new?Uri("http://server_name")];
PortalContext?context?=?PortalApplication.GetContext(portal);

//創建一個?audience?manager對象
AudienceManager?AudMgr?=?new?AudienceManager(context);
ArrayList?AudienceIDList;
ArrayList?AudienceNamelist?=?new?ArrayList();
AudienceNamelist.Add("Engineer");
try
{
???AudienceIDList?=?AudMgr.GetAudienceIDs(AudienceNamelist);
???if?(AudienceIDList?!=?null)
???{
???????for?(int?i=0;?i?<>
???????{
??????????Console.WriteLine(((AudienceNameID)AudienceIDList[i]).AudienceID.ToString());
??????????Console.WriteLine(((AudienceNameID)AudienceIDList[i]).AudienceName);
???????????Console.WriteLine(((AudienceNameID)AudienceIDList[i]).bValid.ToString());
???????}
????}
}
catch(AudienceException?e)
{}

2、編程創建訪問群體

?
下面的代碼創建了一個名為 "Customer Connection"的訪問群體。

TopologyManager?topology?=?new?TopologyManager();
PortalSite?portal?=?topology.PortalSites[new?Uri("http://server_name")];
PortalContext?context?=?PortalApplication.GetContext(portal);
AudienceManager?AudMgr?=?new?AudienceManager(context);
AudienceCollection?ac?=?AudMgr.Audiences;
Audience?a?=?null;
string?sAudName?=?"Engineer";
string?sDescription?=?"工程師組";
try
{
???a?=?ac.Create(?sAudName,?sDescription?);
}
catch(AudienceDuplicateNameException?e)??//如果創建的訪問群體名已經存在,將拋出這個異常
{}
catch(AudienceException?e1)
{}

這個訪問群體僅僅是被創建出來了,這時并沒有任何的規則與之對應。我們需要為其添加規則并進行收集工作。這里需要注意,收集訪問群體只能在Web管理頁面中進行,這個操作沒有相應的對象模型可以編程。

3、為訪問群體添加簡單的基于AND 和OR的規則

在Web管理頁面中僅僅提供了兩個規則的操作項:滿足所有規則的用戶分組或滿足任意規則的用戶分組。 而且,當我們使用 Web管理頁面時,我們被限制為最多使用6條規則。當然,這在多數情況下已經足夠用了。但是我們還是希望可以使用多于6條的規則^_^
?
這種情況下我們可以通過訪問群體對象模型來實現。對象模型允許您在一個訪問群體上對應多于6條的規則。當然也不一定非要這種情況下才用到對象模型。我們在上面創建好的訪問群體實際上沒有對應任何規則,我們可以接著用代碼為其添加規則,如此就完美了。

?下面的例子用了 “AND”來連接多條規則,當然你也可以改為“OR”了。

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;
}
//Audience的規則AudienceRules這個ArrayList里面,實際上放著Microsoft.SharePoint.Portal.Audience.AudienceRuleComponent對象。

//這個對象包括了規則的描述:操作符和值。格式是三個字符串,分別對應操作數,操作符和值。
try
{
?//如果已經有規則了,那么已一個組操作符'AND'開始擴展
??if?(ruleListNotEmpty)
??{
????????aRules.Add(new?AudienceRuleComponent(null,?"AND",?null));
??}
??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);
??a.AudienceRules?=?aRules;
??a.Commit();
}
catch(AudienceException?e)
{}

?
注意:如果使用 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',即用戶)

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<>
?????{
?????????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?<>
{
??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?<>
{
??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);
}
Sharepoint 可以幫助企業用戶輕松完成日常工作。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 香港台湾日本三级纶理在线视 | 欧美高清在线视频一区二区 | 久久国产中文字幕 | 天天爱天天操天天射 | 午夜肉伦伦影院在线观看 | 国产乱辈通伦影片在线播放亚洲 | 国产视频1 | 狠狠综合久久综合网站 | 日本xxxxx在线观看 | 三级大片在线观看 | 中文字幕日韩精品一区口 | 亚洲免费网站在线观看 | 亚洲天天综合网 | 国产精品酒店视频免费看 | 在线观看精品国产入口 | 国产综合激情在线亚洲第一页 | 久久东京| 在线观看 a国v | 国产精品九九 | 99久久精品国产片久人 | 国产性感美女在线观看 | 欧美三级网| 亚洲欧美一区二区三区 | 91在线视频免费观看 | 免费爱爱小视频 | 成人小视频免费观看 | 精品综合久久久久久98 | 嫩草嫩草嫩草 | 久久频精品99香蕉国产 | 成人免费观看高清在线毛片 | 免费日韩 | 国产亚洲精品久久久久久久久激情 | 3344成年在线视频免费播放男男 | 日本三级在在线观看 | 欧美日韩国产超高清免费看片 | 欧美三级艳星xxxxxx | 人人91| 日韩1页| 国产成人精品视频一区 | 4虎影院永久地址www | 欧美日韩国产在线观看一区二区三区 |