Как создать преобразования системы показателей для PerformancePoint Services в SharePoint
Узнайте, как создать специальные преобразования системы показателей для PerformancePoint Services в SharePoint.
Что такое системы показателей преобразований в Службы PerformancePoint Services ?
В Службы PerformancePoint Services преобразований системы показателей изменение внешнего вида, содержимого или функций представлений систем показателей перед их отображением в панели мониторинга. Дополнительные сведения см. в разделе Типы преобразований.
Создание преобразований для Службы PerformancePoint Services систем показателей
Установка Службы PerformancePoint Services или копирование библиотеки DLL, которые устанавливаются вместе с Службы PerformancePoint Services на своем компьютере. Дополнительные сведения см. в разделе Библиотеки DLL с библиотеками классов.
В Visual Studio создайте библиотеку классов C#. Если библиотека классов для расширения уже создана, добавьте новый класс C#.
Необходимо подписать библиотеки DLL со строгим именем и убедитесь, что все сборки библиотеки DLL имеют строгих имен. Сведения о том, как подписать сборку со строгим именем и как создать пару открытого и закрытого ключей, см. в статье Практическое руководство. Создание пары открытого и закрытого ключей.
Добавьте файл Microsoft.PerformancePoint.Scorecards.Client.dll как ссылку на сборку в проект.
Добавьте директивы using для следующих пространств имен:
Microsoft.PerformancePoint.Scorecards
Microsoft.PerformancePoint.Scorecards.Extensions
System.Collections.Generic;
Реализуйте интерфейс IGridViewTransform .
Переопределите метод GetId , чтобы вернуть идентификатор строки для преобразования. GetId должен возвращать ту же строку в качестве атрибута key, который зарегистрирован для преобразования в файле web.config Службы PerformancePoint Services. Дополнительные сведения о регистрации преобразования системы показателей можно Регистрация расширений служб PerformancePoint вручную.
Переопределите метод GetTransformType , чтобы указать, когда следует выполнять преобразование. Точка, в которой выполняется преобразование, зависит от его типа, определенного перечислением GridViewTransformType : PreQuery, PostQuery или PreRender. Дополнительные сведения см. в разделе Типы преобразований.
Переопределите метод Execute , чтобы определить способ преобразования системы показателей. В следующих примерах кода показано добавление столбца в представление системы показателей и изменение форматирования пустых ячеек системы показателей.
После подписания и сборки библиотеки DLL установите расширение, как описано в разделе Практическое руководство. Регистрация расширений PerformancePoint Services вручную.
Пример кода 1: Добавление столбца к Службы PerformancePoint Services систем показателей
В следующем примере кода создается PreQuery преобразования, которое добавляет столбец представления отображаемой системы показателей, содержащих ключевых индикаторов Производительности на уровне. (Если представления системы показателей включает элементам, расположенным ключевых показателей эффективности, столбец не добавлена.)
Прежде чем скомпилировать этот пример кода, необходимо настроить среду разработки, как описано в разделе Создание преобразований для PerformancePoint Services систем показателей.
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();
}
}
}
Код в примере 2: изменение формата пустые ячейки в системах показателей Службы PerformancePoint Services
Следующий пример кода создает преобразование PreQuery, которое применяет к пустым ячейкам системы показателей серый цвет фона.
Примечание.
Прежде чем скомпилировать этот пример кода, необходимо настроить среду разработки, как описано в разделе Создание преобразований для PerformancePoint Services систем показателей. Кроме того необходимо добавить ссылку на сборку System.Drawing в проект.
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;
}
}
}
}
}