Partager via


Créer des transformations de cartes de performance pour PerformancePoint Services dans SharePoint

Apprenez à créer des transformations personnalisées pour PerformancePoint Services dans SharePoint.

Quelles sont la carte de performance des transformations dans PerformancePoint Services ?

Dans PerformancePoint Services, transformations modifient l'apparence, le contenu ou la fonctionnalité des affichages de carte de performance avant leur affichage dans un tableau de bord. Pour plus d’informations, consultez Types de transformations.

Créer des transformations de cartes de performance PerformancePoint Services

  1. Installer PerformancePoint Services ou copier les DLL qui sont installés avec PerformancePoint Services sur votre ordinateur. Pour plus d’informations, consultez DLL avec bibliothèques de classes.

  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#.

    Vous devez vous connecter à votre DLL avec un nom fort et vous assurer que tous les assemblys référencés par votre DLL aient un nom fort. Pour savoir comment signer un assembly avec un nom fort et comment créer une paire de clés publique/privée, consultez Guide pratique pour créer une paire de clés publique/privée.

  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

  1. Implémentez l’interface IGridViewTransform .

  2. Remplacez la méthode GetId pour retourner l’identificateur de chaîne de votre transformation. GetId doit retourner la même chaîne que l'attribut key qui est enregistré pour la transformation dans le fichier web.config PerformancePoint Services. Pour plus d'informations sur l'inscription des transformations de carte de performance, voir Procédure : enregistrer manuellement des extensions PerformancePoint Services.

  3. Remplacez 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, consultez Types de transformations.

  4. Remplacez 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 Guide pratique pour inscrire manuellement PerformancePoint Services extensions.

L'exemple de code 1: ajouter une colonne à des cartes de performance PerformancePoint Services

L'exemple de code suivant crée une transformation PreQuery qui ajoute une colonne pour les affichages de rendu de carte de performance qui contiennent un indicateur de performance clé au niveau de la feuille de colonne. (Si l'affichage de carte de performance comprend des membres au-dessous des indicateurs de performance clés, la colonne n'est pas ajoutée).

Avant de pouvoir compiler cet exemple de code, vous devez configurer votre environnement de développement comme décrit dans Créer des transformations pour PerformancePoint Services cartes 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 &amp;&amp; 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();
        }
    }
}

L'exemple de code 2: modifier le format des cellules vides dans des cartes de performance PerformancePoint Services

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.

Remarque

Avant de pouvoir compiler cet exemple de code, vous devez configurer votre environnement de développement comme décrit dans Créer des transformations pour PerformancePoint Services cartes de performance. En outre, 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;
                }
            }
        }
    }
}


Voir aussi