Partager via


Procédure : ajouter des règles complexes à une audience à l'aide des opérateurs AND, OR, et ( )

L'interface utilisateur vous apporte seulement deux options pour définir des règles pour des audiences : inclure les utilisateurs qui satisfont à toutes les règles, ou inclure les utilisateurs qui satisfont à au moins une des règles. Bien que cela puisse être suffisant pour certaines situations, le plus souvent, vous devez inclure les utilisateurs qui satisfont à des règles complexes. Les règles complexes utilisent les deux opérateurs AND et OR, et elles peuvent également utiliser des parenthèses ( ) pour regrouper les règles et leur donner ainsi une signification différente.

Dans les cas où vous devez créer des règles complexes, vous pouvez utiliser le modèle objet Audience. Le modèle objet prend en charge un maximum de trois niveaux d'imbrication des parenthèses.

L'exemple code suivant ajoute des règles complexes pour une audience appelée « John and Joe Connection ». Cet exemple utilise les opérateurs AND, OR et ( ) pour combiner plusieurs règles et pour les regrouper.

Notes

Si vous créez une audience avec des règles complexes, vous ne pouvez pas afficher ou modifier ses propriétés ni la supprimer à l'aide de l'interface utilisateur. Toutefois, vous pouvez utiliser l'interface utilisateur pour afficher ses données d'appartenance.

Remplacez nom_serveur et les autres chaînes par des valeurs réelles avant d'exécuter l'exemple de code. Ajoutez aussi les références suivantes dans votre projet Microsoft Visual Studio :

  • Microsoft.Office.Server

  • Microsoft.SharePoint

  • System.Web

Exemple

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint.Administration;
using Microsoft.Office.Server.Audience;
using Microsoft.SharePoint;
using Microsoft.Office.Server;
using System.Web;
using System.Collections;

namespace AudienceConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (SPSite site = new SPSite("https://servername"))
                {
                    ServerContext context = ServerContext.GetContext(site);
                    AudienceManager AudMgr = new AudienceManager(context);

                    AudienceCollection ac = AudMgr.Audiences;
                    Audience a = null;
                    bool ruleListNotEmpty = false;

                    try
                    {
                        a = AudMgr.Audiences["John and Joe Connection"];
                    }
                    catch (AudienceArgumentException ex)
                    {
                        //your exception handling code here
                    }

                    ArrayList aRules = a.AudienceRules;
                    if (aRules == null)
                    {
                        aRules = new ArrayList();
                    }
                    else
                    {
                        ruleListNotEmpty = true;
                    }


                    try
                    {
                        //if the rule is not emply, start with a group operator 'AND' to append
                        if (ruleListNotEmpty)
                        {
                            aRules.Add(new AudienceRuleComponent(null, "AND", null));
                        }

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

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

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

                        AudienceRuleComponent r3 = new AudienceRuleComponent("WorkEmail", "Contains", "example.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", "Joe");
                        aRules.Add(r7);

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

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

                        AudienceRuleComponent r10 = new AudienceRuleComponent(null, ")", null);
                        aRules.Add(r10);
                        a.AudienceRules = aRules;
                        a.Commit();
                    }
                    catch (AudienceException e)
                    {
                        //Your exception handling code here
                    }
                }
            }

            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
                Console.Read();
            }

        }

    }
}

Voir aussi

Autres ressources

Ciblage du contenu au moyen des audiences