SharePoint で PerformancePoint Services のスコアカード変換を作成するCreate scorecard transforms for PerformancePoint Services in SharePoint

SharePoint で PerformancePoint Services 用のカスタムのスコアカード変換を作成する方法について説明します。Learn how to create custom scorecard transforms for PerformancePoint Services in SharePoint.

PerformancePoint Services のスコアカード変換とはWhat are scorecard transforms in PerformancePoint Services?

PerformancePoint サービス のスコアカード変換では、スコアカード ビューをダッシュボードに表示する前に、その外観、コンテンツ、または機能を変更できます。詳細については、 PerformancePoint Services スコアカード変換の概要 を参照してください。In PerformancePoint Services, scorecard transforms change the appearance, content, or functionality of scorecard views before they render in a dashboard. For more information, see Types of Transforms.

PerformancePoint サービス スコアカードの変換を作成するCreate transforms for PerformancePoint Services scorecards

  1. PerformancePoint サービス をインストールします。または、PerformancePoint サービス と一緒にインストールされた DLL をコンピューターにコピーします。詳細は、 開発シナリオで使用される PerformancePoint Services DLL を参照してください。Install PerformancePoint Services, or copy the DLLs that are installed with PerformancePoint Services to your computer. For more information, see DLLs with Class Libraries.

  2. Visual Studio で、C# クラス ライブラリを作成します。拡張機能用に既にクラス ライブラリを作成済みの場合は、新しい C# クラスを追加します。In Visual Studio, create a C# class library. If you have already created a class library for your extension, add a new C# class.

    DLL には厳密な名前で署名する必要があります。さらに、DLL によって参照されるすべてのアセンブリが厳密な名前を持つことを確認してください。厳密な名前を使用してアセンブリに署名する方法の詳細、および公開/秘密キーのペアを作成する方法の詳細については、 How to: Create a Public/Private Key Pair を参照してください。You must sign your DLL with a strong name, and ensure that all assemblies referenced by your DLL have strong names. To learn how to sign an assembly with a strong name and how to create a public/private key pair, see How to: Create a Public/Private Key Pair.

  3. Microsoft.PerformancePoint.Scorecards.Client.dll をアセンブリ参照としてプロジェクトに追加します。Add Microsoft.PerformancePoint.Scorecards.Client.dll as an assembly reference to the project.

  4. 次の名前空間について using ディレクティブを追加します。Add using directives for the following namespaces:

    • Microsoft.PerformancePoint.ScorecardsMicrosoft.PerformancePoint.Scorecards
  • Microsoft.PerformancePoint.Scorecards.ExtensionsMicrosoft.PerformancePoint.Scorecards.Extensions

  • System.Collections.GenericSystem.Collections.Generic

  1. IGridViewTransform インターフェイスを実装します。Implement the IGridViewTransform interface.

  2. GetId メソッドを上書きして、変換の文字列識別子を返すようにします。 GetId は、PerformancePoint サービス web.config ファイルで変換用に登録されている key 属性と同じ文字列を返す必要があります。スコアカード変換の登録の詳細については、 [方法] PerformancePoint Services の拡張機能を手動で登録する を参照してください。Override the GetId method to return the string identifier for your transform. GetId must return the same string as the key attribute that is registered for the transform in the PerformancePoint Services web.config file. For more information about registering scorecard transforms, see How to: Manually Register PerformancePoint Services Extensions.

  3. GetTransformType メソッドを上書きして、変換の実行タイミングを指定します。変換を実行するポイントは、 GridViewTransformType 列挙に定義されているそのタイプ ( PreQueryPostQuery、または PreRender) によって決まります。詳細については、 PerformancePoint Services スコアカード変換の概要 を参照してください。Override the GetTransformType method to specify when to run the transform. The point at which a transform runs depends on its type, as defined by the GridViewTransformType enumeration: PreQuery, PostQuery, or PreRender. For more information, see Types of Transforms.

  4. Execute メソッドを上書きして、スコアカードを変換する方法を定義します。以下のコード例は、スコアカード ビューに列を追加する方法と、空のスコアカード セルの書式設定を変更する方法を示します。Override the Execute method to define how to transform the scorecard. The following code examples show how to add a column to a scorecard view and how to change the formatting of empty scorecard cells.

DLL の署名と構築を行った後、 [方法] PerformancePoint Services の拡張機能を手動で登録する の説明のとおりに拡張機能をインストールします。After you sign and build your DLL, install the extension as described in How to: Manually Register PerformancePoint Services Extensions.

コード例 1: PerformancePoint サービス スコアカードに列を追加するCode example 1: Add a column to PerformancePoint Services scorecards

以下のコード例は、列のリーフ レベルで KPI を含むレンダリングされたスコアカード ビューに列を追加する PreQuery 変換を作成しています (スコアカード ビューの KPI の下にメンバーが含まれる場合、列は追加されません)。The following code example creates a PreQuery transform that adds a column to rendered scorecard views that contain a KPI at the column leaf level. (If the scorecard view includes members below the KPIs, the column is not added.)

このコード例をコンパイルできるようにするには、 PerformancePoint サービス スコアカードの変換を作成するで説明されているように開発環境を設定する必要があります。Before you can compile this code example, you must configure your development environment as described in Create transforms for PerformancePoint Services 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();
        }
    }
}

コード例 2: PerformancePoint サービス スコアカードの空のセルの書式設定を変更するCode example 2: Change the format of empty cells in PerformancePoint Services scorecards

次のコード例では PreQuery 変換を作成します。この変換は、空のスコアカード セルに灰色の背景色を適用します。The following code example creates a PreQuery transform that applies a grey background color to empty scorecard cells.

注意

このコード例をコンパイルできるようにするには、 PerformancePoint サービス スコアカードの変換を作成するで説明されているように開発環境を設定する必要があります。Before you can compile this code example, you must configure your development environment as described in Create transforms for PerformancePoint Services scorecards. さらに、System.Drawing アセンブリへの参照をプロジェクトに追加する必要があります。In addition, you must add a reference to the System.Drawing assembly to your project.


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

関連項目See also