Crear transformaciones del cuadro de mandos para PerformancePoint Services en SharePoint
Aprenda a crear transformaciones de cuadro de mandos personalizadas para PerformancePoint Services en SharePoint.
¿Qué son las transformaciones de cuadros de mandos en PerformancePoint Services?
En PerformancePoint Services, las transformaciones de cuadros de mandos cambian el aspecto, el contenido o las funciones de las vistas de los cuadros de mandos antes de su presentación en un panel. Para obtener más información, vea Tipos de transformaciones.
Crear transformaciones para cuadros de mandos de PerformancePoint Services
Instale PerformancePoint Services o copie las DLL que se instalan con PerformancePoint Services en su PC. Para obtener más información, vea ARCHIVOS DLL con bibliotecas de clases.
En Visual Studio, cree una biblioteca de clases de C#. Si ya ha creado una biblioteca de clases para su extensión, agregue una nueva clase C#.
Se recomienda firmar la DLL con un nombre seguro y asegurarse de que todos los ensamblados a los que hace referencia su DLL tengan también 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, consulte How to: Create a Public/Private Key Pair.
Agregue Microsoft.PerformancePoint.Scorecards.Client.dll como una referencia de ensamblado al proyecto.
Agregue directivas using para los siguientes espacios de nombres:
Microsoft.PerformancePoint.Scorecards
Microsoft.PerformancePoint.Scorecards.Extensions
System.Collections.Generic
Implemente la interfaz IGridViewTransform .
Invalide el método GetId para devolver el identificador de cadena de la transformación. GetId tiene que devolver la misma cadena que el atributo key registrado para la transformación en el archivo web.config de PerformancePoint Services. Para más información sobre el registro de transformaciones de cuadros de mandos, consulte Procedimiento para registrar manualmente las extensiones de PerformancePoint Services.
Invalide el método GetTransformType para especificar cuándo ejecutar la transformación. El momento en que se ejecuta una transformación depende de su tipo, según lo define la enumeración GridViewTransformType : PreQuery, PostQuery o PreRender. Para obtener más información, vea Tipos de transformaciones.
Invalide el método Execute para definir cómo transformar el cuadro de mandos. Los siguientes ejemplos de código muestran cómo agregar una columna a una vista de cuadro de mandos y cómo cambiar el formato de celdas de cuadros de mando vacías.
Después de firmar y compilar el archivo DLL, instale la extensión como se describe en How to: Manually Register PerformancePoint Services Extensions (Cómo: Registrar manualmente extensiones de PerformancePoint Services).
Ejemplo de código 1: Agregar una columna a cuadros de mandos de PerformancePoint Services
El siguiente ejemplo de código crea una transformación PreQuery que agrega una columna a vistas presentadas de cuadros de mandos que contienen un KPI a nivel hoja de columna. (Si la vista del cuadro de mandos incluye miembros debajo de los KPI, la columna no se agregará).
Para poder compilar este ejemplo de código, debe configurar el entorno de desarrollo como se describe en Crear transformaciones para PerformancePoint Services cuadros 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 de código 2: Cambiar el formato de celdas vacías en cuadros de mandos de in PerformancePoint Services
El siguiente ejemplo de código crea una transformación 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 como se describe en Crear transformaciones para PerformancePoint Services cuadros de mandos. Además, necesita agregar una referencia al ensamblado System.Drawing para su 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;
}
}
}
}
}