Freigeben über


Erstellen von Scorecardtransformationen für PerformancePoint-Dienste in SharePoint

In diesem Artikel erfahren Sie, wie benutzerdefinierte Scorecardtransformationen für PerformancePoint-Dienste in SharePoint erstellt werden.

Was sind Scorecardtransformationen für PerformancePoint-Dienste?

Ändern im PerformancePoint-Dienste scorecardtransformationen die Darstellung, Inhalte oder Ansichten vor dem Rendern in einem Dashboard. Weitere Informationen finden Sie unter Typen von Transformationen.

Erstellen von Transformationen für PerformancePoint-Dienste scorecards

  1. Installieren Sie PerformancePoint-Dienste oder kopieren Sie die DLLs, die mit PerformancePoint-Dienste auf Ihrem Computer installiert sind. Weitere Informationen finden Sie unter DLLs mit Klassenbibliotheken.

  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.

    Sie müssen die DLL mit einem starken Namen signieren, und stellen Sie sicher, dass alle Assemblys, die durch die DLL mit starkem Namen haben. Informationen zum Signieren einer Assembly mit einem starken Namen und zum Erstellen eines Paars aus öffentlichem und privatem Schlüssel finden Sie unter Vorgehensweise: Erstellen eines öffentlichen/privaten Schlüsselpaars.

  3. Add Microsoft.PerformancePoint.Scorecards.Client.dll as an assembly reference to the project.

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

  • Microsoft.PerformancePoint.Scorecards

  • Microsoft.PerformancePoint.Scorecards.Extensions

  • System.Collections.Generic

  1. Implementieren Sie die IGridViewTransform-Schnittstelle .

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

  3. Überschreiben Sie die GetTransformType-Methode , um anzugeben, wann die Transformation ausgeführt werden soll. 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 Typen von Transformationen.

  4. Überschreiben Sie die Execute-Methode , um zu definieren, wie die Scorecard transformiert werden soll. Die folgenden Codebeispiele veranschaulichen das Hinzufügen einer Spalte zur Scorecardansicht und das Ändern der Formatierung leerer Scorecardzellen.

Nachdem Sie Ihre DLL signiert und erstellt haben, installieren Sie die Erweiterung wie unter How to: Manually Register PerformancePoint-Dienste Extensions beschrieben.

Codebeispiel 1: Hinzufügen einer Spalte zu PerformancePoint-Dienste Scorecards

Das folgende Codebeispiel erstellt eine Transformation PreQuery einer Spalte zu Scorecardansichten gerenderten hinzu, die einen KPI auf spaltenblattebene enthalten. (Wenn die Scorecardansicht Elemente unter der KPIs enthält, wird die Spalte nicht hinzugefügt.)

Bevor Sie dieses Codebeispiel kompilieren können, müssen Sie Ihre Entwicklungsumgebung wie unter Erstellen von Transformationen für PerformancePoint-Dienste Scorecards 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 &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();
        }
    }
}

Codebeispiel 2: Ändern Sie das Format der leeren Zellen in PerformancePoint-Dienste Scorecards

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

Hinweis

Bevor Sie dieses Codebeispiel kompilieren können, müssen Sie Ihre Entwicklungsumgebung wie unter Erstellen von Transformationen für PerformancePoint-Dienste Scorecards beschrieben konfigurieren. Darüber hinaus müssen Sie einen Verweis auf die System.Drawing-Assembly zu dem Projekt 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;
                }
            }
        }
    }
}


Siehe auch