Compartilhar via


Criar transformações de scorecard para os Serviços PerformancePoint no SharePoint

Saiba como criar transformações de scorecard personalizadas para os Serviços PerformancePoint no SharePoint.

Cite scorecard transforma em PerformancePoint Services ?

PerformancePoint Services, transformações scorecard alterar a aparência, o conteúdo ou a funcionalidade dos modos de exibição do scorecard antes de processar em um painel. Para obter mais informações, consulte Tipos de Transformações.

Criar scorecards PerformancePoint Services transformações

  1. Instale o PerformancePoint Services ou copie as DLLs que são instaladas com PerformancePoint Services ao seu computador. Para obter mais informações, consulte DLLs com bibliotecas de classe.

  2. Em Visual Studio, crie uma biblioteca de classes c#. Se você já criou uma biblioteca de classes para sua extensão, adicione uma nova classe c#.

    Você deve entrar sua DLL com um nome forte e verifique se todos os assemblies referenciados pelo seu DLL têm nomes de alta segurança. Para saber como assinar um assembly com um nome forte e como criar um par de chaves público/privado, confira Como criar um par de chaves público/privado.

  3. Adicione Microsoft.PerformancePoint.Scorecards.Client.dll como uma referência de assembly ao projeto.

  4. Adicione as diretivas de using para os seguintes namespaces:

  • Microsoft.PerformancePoint.Scorecards

  • Microsoft.PerformancePoint.Scorecards.Extensions

  • System.Collections.Generic

  1. Implemente a interface IGridViewTransform .

  2. Substitua o método GetId para retornar o identificador de cadeia de caracteres para sua transformação. GetId deve retornar a mesma cadeia de caracteres que o atributo de chave registrado para a transformação no arquivo Serviços PerformancePoint web.config. Para obter mais informações sobre como registrar transformações de scorecard, consulte Como registrar manualmente Serviços PerformancePoint extensões.

  3. Substitua o método GetTransformType para especificar quando executar a transformação. O ponto no qual uma transformação executa depende de seu tipo, conforme definido pela enumeração GridViewTransformType : PreQuery, PostQueryou PreRender. Para obter mais informações, consulte Tipos de Transformações.

  4. Substitua o método Execute para definir como transformar o scorecard. Os exemplos de código a seguir mostram como adicionar uma coluna a um modo de exibição de scorecard e como alterar a formatação das células vazias do scorecard.

Depois de assinar e criar sua DLL, instale a extensão conforme descrito em Como registrar manualmente Serviços PerformancePoint extensões.

O exemplo de código 1: adicionar uma coluna a PerformancePoint Services scorecards

O exemplo de código a seguir cria uma transformação de PreQuery que adiciona uma coluna para modos de exibição do scorecard renderizada que contêm um KPI no nível de folha de coluna. (Se o modo de exibição do scorecard incluir membros abaixo os KPIs, a coluna não é adicionada.)

Antes de compilar este exemplo de código, você deve configurar seu ambiente de desenvolvimento, conforme descrito em Criar transformações para Serviços PerformancePoint scorecards.


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

O exemplo de código 2: alterar o formato das células vazias em scorecards PerformancePoint Services

O exemplo de código a seguir cria uma transformação de PreQuery que se aplica a uma cor de plano de fundo cinza a células vazias do scorecard.

Observação

Antes de compilar este exemplo de código, você deve configurar seu ambiente de desenvolvimento, conforme descrito em Criar transformações para Serviços PerformancePoint scorecards. Além disso, você deve adicionar uma referência para o assembly System.Drawing ao seu projeto.


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


Confira também