Compartir a través de


Procedimiento para crear transformaciones del cuadro de mandos para PerformancePoint Services

Última modificación: martes, 30 de agosto de 2011

Hace referencia a: SharePoint Server 2010

En PerformancePoint Services de Microsoft SharePoint Server 2010, las transformaciones del cuadro de mandos cambian la apariencia, el contenido o la funcionalidad de las visualizaciones de cuadro de mandos antes de presentarse en un panel.

Se aplica a: PerformancePoint Services para SharePoint Server, versión Enterprise

Nota

Se recomienda el uso del ejemplo de transformaciones del cuadro de mandos como una plantilla para la transformación personalizada. En él se explica la forma de llamar a objetos en la API de PerformancePoint Services y se muestran los procedimientos recomendados para el desarrollo de PerformancePoint Services.

Creación de transformaciones de cuadros de mandos

El siguiente procedimiento se basa en el ejemplo AddColumnTransform, que agrega una columna a visualizaciones de cuadro de mandos. El código completo de la clase se proporciona en el primer ejemplo de este tema.

Para crear una transformación de cuadro de mandos

  1. Instale PerformancePoint Services o copie los archivos DLL que se instalan junto con PerformancePoint Services en el equipo. Para obtener más información, vea Archivos DLL de PerformancePoint Services usados en escenarios de desarrollo.

  2. En Visual Studio, cree una biblioteca de clases C#. Si ya creó una biblioteca de clases para la extensión, agregue una nueva clase C#.

  3. Agregue Microsoft.PerformancePoint.Scorecards.Client.dll como referencia de ensamblado al proyecto.

  4. Agregue directivas using para los siguientes espacios de nombres:

    • Microsoft.PerformancePoint.Scorecards

    • Microsoft.PerformancePoint.Scorecards.Extensions

    • System.Collections.Generic

  5. Implemente la interfaz IGridViewTransform.

  6. Invalide el método GetId con el fin de devolver el identificador de cadena para la transformación. GetId debe devolver la misma cadena que el atributo key registrado para la transformación en el archivo web.config de PerformancePoint Services. Para obtener más información sobre la forma de registrar transformaciones de cuadros de mandos, vea Procedimiento para registrar manualmente las extensiones de PerformancePoint Services.

  7. Invalide el método GetTransformType para especificar el momento en que se debe ejecutar la transformación. El punto en el que se ejecuta una transformación depende del tipo, tal como se define en la enumeración GridViewTransformType: PreQuery, PostQuery o PreRender. Para obtener más información, vea Información general sobre transformaciones de cuadro de mandos de PerformancePoint Services.

  8. Invalide el método Execute para definir la forma de transformar el cuadro de mandos. En los siguientes ejemplos de código, se muestra cómo agregar una columna a una visualización de cuadro de mandos y cómo cambiar el formato de las celdas vacías del cuadro de mandos.

Después de firmar y crear el archivo DLL, instale la extensión como se describe en Procedimiento para registrar manualmente las extensiones de PerformancePoint Services.

Ejemplo

Ejemplo 1: agregar una columna a las visualizaciones de cuadro de mandos

El siguiente ejemplo de código proviene del ejemplo de transformaciones del cuadro de mandos. Crea una transformación de PreQuery que agrega una columna a una visualización de cuadro de mandos presentada que contiene un KPI en el nivel hoja de la columna. (Si la visualización del cuadro de mandos incluye miembros que se encuentran por debajo de los KPI, la columna no se agregará).

Nota

Para poder compilar este ejemplo de código, debe configurar el entorno de desarrollo tal como se describe en el procedimiento para crear una transformación del cuadro de mandos.

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

Ejemplo 2: cambiar el formato de las celdas vacías del cuadro de mandos

El siguiente ejemplo de código crea una transformación de PreQuery que aplica un color de fondo gris a las celdas vacías del cuadro de mandos.

Nota

Para poder compilar este ejemplo de código, debe configurar el entorno de desarrollo tal como se describe en "Para crear una transformación de cuadro de mandos". Además, debe agregar una referencia al ensamblado System.Drawing en el proyecto.

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

Compilación de código

Para poder compilar estos ejemplos de código, debe configurar el entorno de desarrollo tal como se describe en "Para crear una transformación de cuadro de mandos".

Seguridad

Debe firmar el DLL con un nombre seguro. Además, asegúrese de que todos los ensamblados a los que hace referencia el DLL tengan nombres seguros. Para obtener información sobre cómo firmar un ensamblado con un nombre seguro y cómo crear un par de claves pública y privada, vea How to: Create a Public/Private Key Pair.

Vea también

Conceptos

Información general sobre transformaciones de cuadro de mandos de PerformancePoint Services

Otros recursos

Cuadros de mandos de PerformancePoint Services

Cómo... en PerformancePoint Services

Ejemplos de código para PerformancePoint Services en SharePoint Server 2010