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, veja 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, veja DLLs com Bibliotecas de Classes.

  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 uma assemblagem com um nome forte e como criar um par de chaves públicas/privadas, consulte Como: Criar um Par de Chaves Públicas/Privadas.

  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 devolver o identificador de cadeia para a transformação. GetId tem de devolver a mesma cadeia que o atributo de chave registado para a transformação no ficheiro Serviços PerformancePoint web.config. Para obter mais informações sobre como registar transformações de tabelas de indicadores, consulte Como: Registar 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, veja Tipos de Transformações.

  4. Substitua o método Execute para definir como transformar a tabela de indicadores. 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 a DLL, instale a extensão conforme descrito em Como: Registar 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 poder compilar este exemplo de código, tem de configurar o ambiente de desenvolvimento conforme descrito em Criar transformações para Serviços PerformancePoint tabelas de indicadores.


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 poder compilar este exemplo de código, tem de configurar o ambiente de desenvolvimento conforme descrito em Criar transformações para Serviços PerformancePoint tabelas de indicadores. 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