Freigeben über


Gewusst wie: Erstellen von Scorecardtransformationen für PerformancePoint Services

Letzte Änderung: Dienstag, 30. August 2011

In PerformancePoint Services in Microsoft SharePoint Server 2010 werden die Daten in Scorecards mithilfe von Transformationen geändert, bevor die Ansichten in einem Dashboard gerendert werden.

Gilt für: SharePoint Server 2010

HinweisHinweis

Es wird empfohlen, das Scorecard-Transformationsbeispiel als Vorlage für Ihre benutzerdefinierte Transformation zu verwenden. In diesem Beispiel wird erläutert, wie Sie Objekte in der PerformancePoint Services-API aufrufen, und außerdem werden bewährte Methoden für die PerformancePoint Services-Entwicklung beschrieben.

Erstellen von Scorecardtransformationen

Das folgende Verfahren basiert auf dem AddColumnTransform-Beispiel, mit dem einer Scorecardansicht eine Spalte hinzugefügt wird. Der vollständige Code für die Klasse befindet sich im ersten Beispiel in diesem Thema.

So erstellen Sie eine Scorecardtransformation

  1. Installieren Sie PerformancePoint Services, oder kopieren Sie die DLLs, die mit PerformancePoint Services installiert werden, auf Ihren Computer. Weitere Informationen finden Sie unter PerformancePoint-Dienste-DLLs in Entwicklungsszenarios.

  2. Erstellen Sie in Visual Studio eine C#-Klassenbibliothek. Sollten Sie bereits eine Klassenbibliothek für die Erweiterung erstellt haben, fügen Sie eine neue C#-Klasse hinzu.

  3. Fügen Sie die Datei Microsoft.PerformancePoint.Scorecards.Client.dll dem Projekt als Assemblyverweis hinzu.

  4. Fügen Sie using-Anweisungen für die folgenden Namespaces hinzu:

    • Microsoft.PerformancePoint.Scorecards

    • Microsoft.PerformancePoint.Scorecards.Extensions

    • System.Collections.Generic

  5. Implementieren Sie die IGridViewTransform-Schnittstelle.

  6. Überschreiben Sie die GetId-Methode, um den Textbezeichner für Ihre Transformation zurückzugeben. GetId muss dieselbe Zeichenfolge wie das key-Attribut zurückgeben, das in der Datei web.config von PerformancePoint Services für die Transformation registriert ist. Weitere Informationen zum Registrieren von Scorecardtransformationen finden Sie unter Gewusst wie: Manuelles Registrieren von PerformancePoint-Dienste-Erweiterungen.

  7. Überschreiben Sie die GetTransformType-Methode, um den Ausführungszeitpunkt für die Transformation anzugeben. Der Ausführungszeitpunkt einer Transformation hängt von deren Typ entsprechend der Definition durch die GridViewTransformType-Aufzählung ab: PreQuery, PostQuery oder PreRender. Weitere Informationen finden Sie unter PerformancePoint Services-Scorecardtransformationen (Übersicht).

  8. Überschreiben Sie die Execute-Methode zum Definieren der Transformation der Scorecard. Die folgenden Codebeispiele veranschaulichen das Hinzufügen einer Spalte zur Scorecardansicht und das Ändern der Formatierung leerer Scorecardzellen.

Nachdem Sie die DLL signiert und erstellt haben, installieren Sie die Erweiterung wie unter Gewusst wie: Manuelles Registrieren von PerformancePoint-Dienste-Erweiterungen beschrieben.

Beispiel

Beispiel 1: Hinzufügen einer Spalte zu Scorecardansichten

Das folgende Codebeispiel stammt aus dem Scorecard-Transformationsbeispiel. Es erstellt eine PreQuery-Transformation, mit der einer Scorecardansicht eine Spalte hinzugefügt wird, die einen Key Performance Indicator (KPI) auf der Blattebene der Spalte enthält. (Wenn die Scorecardansicht Elemente unterhalb der KPIs enthält, wird die Spalte nicht hinzugefügt.)

HinweisHinweis

Bevor Sie dieses Codebeispiel kompilieren können, müssen Sie die Entwicklungsumgebung wie unter "So erstellen Sie eine Scorecardtransformation" beschrieben konfigurieren.

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();
        }
    }
}

Beispiel 2: Ändern des Formats leerer Scorecardzellen

Das folgende Codebeispiel erstellt eine PreQuery-Transformation, die leeren Scorecardzellen eine graue Hintergrundfarbe zuordnet.

HinweisHinweis

Bevor Sie dieses Codebeispiel kompilieren können, müssen Sie die Entwicklungsumgebung wie unter "So erstellen Sie eine Scorecardtransformation" beschrieben konfigurieren. Darüber hinaus müssen Sie Ihrem Projekt einen Verweis auf die System.Drawing-Assembly hinzufügen.

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;
                }
            }
        }
    }
}

Code wird kompiliert

Bevor Sie diese Codebeispiele kompilieren können, müssen Sie die Entwicklungsumgebung wie unter "So erstellen Sie eine Scorecardtransformation" beschrieben konfigurieren.

Sicherheit

Sie müssen die DLL mit einem starken Namen signieren. Stellen Sie außerdem sicher, dass alle Assemblys, auf die von der DLL verwiesen wird, ebenfalls starke Namen haben. Informationen dazu, wie Sie eine Assembly mit einem starken Namen signieren und ein öffentliches/privates Schlüsselpaar erstellen, finden Sie unter How to: Create a Public/Private Key Pair.

Siehe auch

Konzepte

PerformancePoint Services-Scorecardtransformationen (Übersicht)

Weitere Ressourcen

PerformancePoint Services-Scorecards

Gewusst wie... in PerformancePoint Services

Codebeispiele für PerformancePoint Services in SharePoint Server 2010