<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Chris Hernandez's Blog : Audiences</title><link>http://blogs.technet.com/chris_hernandez/archive/tags/Audiences/default.aspx</link><description>Tags: Audiences</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Creating Audience Rules via the Object Model</title><link>http://blogs.technet.com/chris_hernandez/archive/2007/10/03/creating-audience-rules-via-the-object-model.aspx</link><pubDate>Thu, 04 Oct 2007 01:04:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2103469</guid><dc:creator>chrishe</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.technet.com/chris_hernandez/comments/2103469.aspx</comments><wfw:commentRss>http://blogs.technet.com/chris_hernandez/commentrss.aspx?PostID=2103469</wfw:commentRss><description>&lt;P&gt;SharePoint Server (MOSS) was designed as a platform for building applications upon. Using the SharePoint Server Object Model (OM) exposes many different and often more complicated operations than what can be done with the UI only.&lt;/P&gt;
&lt;P&gt;An example of this is with Audience creation. Audiences are an organizational type concept that is associated with the Shared Service Provider (SSP). Audiences can be built up using rules that are exposed within the Admin&amp;nbsp;UI for such properties as Account Name or Title. In this way you may be able to create audiences that comprise of user profiles that all have a property in common and can then use this compiled audience for such things as targeting content.&lt;/P&gt;
&lt;P&gt;The Audience OM allows the creation of audiences that can be more complicated in their evaluation. For example, the Audience OM allows the groupings of audience rules which will result in compiled audiences based on a combination of AND/OR clauses.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create thet test audience.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.testAudience&amp;nbsp; = this.audienceManager.Audiences.Create(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestStringGenerator.GetString(MaxAudienceNameLength),&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TestStringGenerator.GetString(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MaxAudienceDescriptionLength));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.testAudience.GroupOperation =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AudienceGroupOperation.AUDIENCE_OR_OPERATION;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add the desired rule to the test audience.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayList audienceRules = new ArrayList();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AudienceRuleComponent r1 = new AudienceRuleComponent("AccountName", "Contains", this.DLTestAccountName1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; audienceRules.Add(r1);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AudienceRuleComponent r2 = new AudienceRuleComponent(null, "OR", null);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; audienceRules.Add(r2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AudienceRuleComponent r3 = new AudienceRuleComponent("AccountName", "Contains", this.DLTestAccountName2);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; audienceRules.Add(r3);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.testAudience.AudienceRules = audienceRules;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.testAudience.Commit();&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;From the code above you can see that:&lt;/P&gt;
&lt;P mce_keep="true"&gt;this.testAudience.GroupOperation =&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AudienceGroupOperation.AUDIENCE_OR_OPERATION;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Sets the group operation for the audience similar to the Audience Admin UI where you can select&lt;/P&gt;
&lt;P mce_keep="true"&gt;
&lt;TABLE class=ms-authoringcontrols cellSpacing=0 cellPadding=0 width="100%" border=0 class="ms-authoringcontrols"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=ms-authoringcontrols id=ctl00_PlaceHolderMain_rbtAllAnyRules_Label style="PADDING-BOTTOM: 2px" colSpan=2 class="ms-authoringcontrols"&gt;&lt;LABEL for=ctl00_PlaceHolderMain_rbtAllAnyRules&gt;Include users who:&lt;/LABEL&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=ms-formspacer class="ms-formspacer"&gt;&lt;/TD&gt;
&lt;TD class=ms-authoringcontrols width="100%" class="ms-authoringcontrols"&gt;
&lt;TABLE class=ms-authoringcontrols id=ctl00_PlaceHolderMain_rbtAllAnyRules style="BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=0 border=0 class="ms-authoringcontrols" Columns="2"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;INPUT id=ctl00_PlaceHolderMain_rbtAllAnyRules_0 type=radio value=ALL name=ctl00$PlaceHolderMain$rbtAllAnyRules&gt;&lt;LABEL for=ctl00_PlaceHolderMain_rbtAllAnyRules_0&gt;Satisfy all of the rules&lt;/LABEL&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;INPUT id=ctl00_PlaceHolderMain_rbtAllAnyRules_1 type=radio CHECKED value=ANY name=ctl00$PlaceHolderMain$rbtAllAnyRules&gt;&lt;LABEL for=ctl00_PlaceHolderMain_rbtAllAnyRules_1&gt;Satisfy any of the rules&lt;/LABEL&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;But with&amp;nbsp;via OM you can specify groupings by using parentheses () with this:&lt;/P&gt;
&lt;P mce_keep="true"&gt;new AudienceRuleComponent(null, "(", null);&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;lt;some audience rules&amp;gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;new AudienceRuleComponent(null, ")", null);&lt;/P&gt;
&lt;P mce_keep="true"&gt;so that now you can represent an expression like this:&lt;/P&gt;
&lt;P mce_keep="true"&gt;(AccountName contains DLTestAccountName1 OR AccountName contains DLTestAccountName1) &lt;/P&gt;
&lt;P mce_keep="true"&gt;AND &lt;/P&gt;
&lt;P mce_keep="true"&gt;(Title contains TestTitle1 OR Title contains TestTitle2) &lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2103469" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/chris_hernandez/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/chris_hernandez/archive/tags/SSP/default.aspx">SSP</category><category domain="http://blogs.technet.com/chris_hernandez/archive/tags/SharePoint+Server/default.aspx">SharePoint Server</category><category domain="http://blogs.technet.com/chris_hernandez/archive/tags/Audiences/default.aspx">Audiences</category></item></channel></rss>