Partager via


Procédure : Créer des transformations de cartes de performances pour les services PerformancePoint Services

Dernière modification : mardi 30 août 2011

Dans Services PerformancePoint dans Microsoft SharePoint Server 2010, les transformations de cartes de performance modifient l’apparence, le contenu ou la fonctionnalité des affichages de cartes de performance avant leur affichage dans un tableau de bord.

S’applique à : SharePoint Server 2010

Notes

Nous vous recommandons d’utiliser l’exemple de transformations de cartes de performance en guise de modèle pour votre transformation personnalisée. Il montre comment appeler des objets dans l’API PerformancePoint Services et illustre les meilleures pratiques pour le développement PerformancePoint Services.

Création de transformations de cartes de performance

La procédure suivante est basée sur l’exemple AddColumnTransform, qui ajoute une colonne aux affichages de cartes de performance. Le code complet pour la classe est fourni dans le premier exemple dans cette rubrique.

Pour créer une transformation de carte de performance

  1. Installez PerformancePoint Services ou copiez les DLL installées avec PerformancePoint Services sur votre ordinateur. Pour plus d’informations, voir DLL PerformancePoint Services utilisées dans les scénarios de développement.

  2. Dans Visual Studio, créez une bibliothèque de classes C#. Si vous avez déjà créé une bibliothèque de classes pour votre extension, ajoutez une nouvelle classe C#.

  3. Ajoutez le fichier Microsoft.PerformancePoint.Scorecards.Client.dll au projet comme référence d’assembly.

  4. Ajoutez des directives using pour les espaces de noms suivants :

    • Microsoft.PerformancePoint.Scorecards

    • Microsoft.PerformancePoint.Scorecards.Extensions

    • System.Collections.Generic

  5. Implémentez l’interface IGridViewTransform.

  6. Substituez la méthode GetId pour renvoyer l’identificateur de chaîne pour votre transformation. GetId doit renvoyer la même chaîne que l’attribut key enregistré pour la transformation dans le fichier web.config PerformancePoint Services. Pour plus d’informations sur l’enregistrement de transformations de cartes de performance, voir Procédure : enregistrer manuellement des extensions PerformancePoint Services.

  7. Substituez la méthode GetTransformType pour spécifier quand exécuter la transformation. Le point auquel une transformation s’exécute dépend de son type, tel que défini par l’énumération GridViewTransformType : PreQuery, PostQuery ou PreRender. Pour plus d’informations, voir Vue d’ensemble des transformations de carte de performance des services PerformancePoint Services.

  8. Substituez la méthode Execute pour définir comment transformer la carte de performance. L’exemple de code suivant montre comment ajouter une colonne à un affichage de carte de performance et comment modifier la mise en forme de cellules de cartes de performance vides.

Après avoir signé et généré votre DLL, installez l’extension comme décrit dans Procédure : enregistrer manuellement des extensions PerformancePoint Services.

Exemple

Exemple 1 : ajout d’une colonne à des affichages de cartes de performance

L’exemple de code suivant est tiré de l’exemple de transformations de cartes de performance. Il crée une transformation PreQuery qui ajoute une colonne à des affichages de cartes de performance qui contiennent un indicateur de performance clé au niveau feuille de colonne. (Si l’affichage de carte de performance inclut des membres au-dessous des indicateurs de performance clés, la colonne n’est pas ajoutée.)

Notes

Pour pouvoir compiler cet exemple de code, vous devez configurer votre environnement de développement comme décrit dans la procédure « Pour créer une transformation de carte de performance ».

using System;
using System.Collections.Generic;
using Microsoft.PerformancePoint.Scorecards;
using Microsoft.PerformancePoint.Scorecards.Extensions;

namespace Microsoft.PerformancePoint.SDK.Samples.ScorecardTransforms.PreQuery
{

    // Represents the class that adds columns of data to a scorecard view. 
    public class AddColumnTransform : IGridViewTransform
    {

        // Set transform type to PreQuery.
        public GridViewTransformType GetTransformType()
        {
            return GridViewTransformType.PreQuery;
        }

        // Return the string identifier of your transform. This value must
        // match the key attribute registered in the web.config file.
        public string GetId()
        {
            return "AddColumn";
        }

        // Run the transform to add a column. 
        public void Execute(GridViewData viewData, PropertyBag parameters, IGlobalCache cache)
        {
            // Verify the scorecard definition.
            if (viewData == null)
            {
                throw new ArgumentException("Parameter cannot be null", "viewData");
            }
                     
            List<GridHeaderItem> leafRowHeaders = viewData.RootRowHeader.GetAllLeafHeadersInTree();

            foreach (GridHeaderItem rowHeader in leafRowHeaders)
            {
                if (rowHeader.HeaderType == ScorecardNodeTypes.Kpi)
                {
                    Kpi kpi = cache.GetKpi(rowHeader.LinkedKpiLocation);
                    if (kpi != null && viewData.RootColumnHeader != null)
                    {

                        // Create the column header and add it to the root.
                        GridHeaderItem theNewColumn = GridHeaderItem.CreateDetailsHeader(kpi.Owner.DisplayName);

                        // Set the GUIDs for the data headers.
                        // Setting the DefinitionGuid property to the
                        // same value as the root column header enables
                        // Dashboard Designer to display the scorecard. 
                        // Note: Do not try to modify or delete the new
                        // column from within Dashboard Designer.
                        theNewColumn.DefinitionGuid = viewData.RootColumnHeader.DefinitionGuid;
                        theNewColumn.Parent = viewData.RootColumnHeader;
                        theNewColumn.Guid = new Guid();

                        // Insert the column at the end of the collection
                        // of child elements.
                        if (viewData.RootColumnHeader.Children.Count != 0)
                        {
                            viewData.RootColumnHeader.Children.Insert(viewData.RootColumnHeader.Children.Count, theNewColumn);
                        }
                                                                         
                        break;
                    }
                }
            }
            viewData.RootColumnHeader.LinkAndIndexTreeFromRoot();
        }
    }
}

Exemple 2 : modification de la mise en forme de cellules de cartes de performance vides

L’exemple de code suivant crée une transformation PreQuery qui applique une couleur d’arrière-plan grise aux cellules de cartes de performance vides.

Notes

Pour pouvoir compiler cet exemple de code, vous devez configurer votre environnement de développement comme décrit dans la procédure « Pour créer une transformation de carte de performance ». De plus, vous devez ajouter une référence à l’assembly System.Drawing à votre projet.

using System;
using System.Collections.Generic;
using Microsoft.PerformancePoint.Scorecards;
using Microsoft.PerformancePoint.Scorecards.Extensions;

namespace Microsoft.PerformancePoint.SDK.Samples
{

    // Represents a transform that applies a grey background color to empty scorecard cells.
    public class GreyEmptiesTransform : IGridViewTransform
    {

        // Set the transform type to "PreRender".
        public GridViewTransformType GetTransformType()
        {
            return GridViewTransformType.PreRender;
        }

        // Return the string identifier of the transform.
        public string GetId()
        {
            return "GreyEmptyCells";
        }

        // Run the transform.
        public void Execute(GridViewData viewData, PropertyBag parameters, IGlobalCache cache)
        {
            // Validate parameters. 
            if (viewData == null)
            {
                throw new ArgumentException("Parameter cannot be null", "viewData");
            }

            // Get the headers under the root row header.
            List<GridHeaderItem> nonLeafRowHeaders = viewData.RootRowHeader.GetAllHeadersInTree();

            // Get the leaf headers under the root column header.
            List<GridHeaderItem> leafColumnHeaders = viewData.RootColumnHeader.GetAllLeafHeadersInTree();

            foreach (GridHeaderItem rowHeader in nonLeafRowHeaders)
            {
                foreach (GridHeaderItem columnHeader in leafColumnHeaders)
                {
                    // Get scorecard cells.
                    GridCell cell = viewData.Cells[rowHeader, columnHeader];

                    if (cell.IsCellEmpty || string.IsNullOrEmpty(cell.ActualValue.ToString()))
                    {
                        GridFormatInfo emptyFormat = new GridFormatInfo(viewData.DefaultCellFormatInfo);
                        emptyFormat.BackColor = new GridColor(System.Drawing.Color.Gray);
                        cell.FormatInfo = emptyFormat;
                    }
                    viewData.Cells[rowHeader, columnHeader] = cell;
                }
            }
        }
    }
}

Compilation du code

Pour pouvoir compiler ces exemples de code, vous devez configurer votre environnement de développement comme décrit dans la procédure « Pour créer une transformation de carte de performance ».

Sécurité

Vous devez signer votre DLL avec un nom fort. De plus, assurez-vous que tous les assemblys référencés par votre DLL ont des noms forts. Pour plus d’informations sur la façon de signer un assembly avec un nom fort et sur la façon de créer une paire de clés publique/privée, voir How to: Create a Public/Private Key Pair.

Voir aussi

Concepts

Vue d’ensemble des transformations de carte de performance des services PerformancePoint Services

Autres ressources

Cartes de performance PerformancePoint Services

Comment faire... dans PerformancePoint Services

Exemples de code pour les pour les services PerformancePoint Services dans SharePoint Server 2010