Code Samples for the Report

The code samples for this document are located at:

https://www.blackbaud.com/files/support/infinitydevcasestudies/ProspectPlanStageDurationsReports.zip

Projects

The code samples include a Blackbaud Infinity catalog project. The project includes the specs necessary to load the report into the application. Reports are primarily defined by RDL files and these are included in the project as resources. But there are also specs which define the relationship of the Blackbaud Infinity feature to the RDL (Report Specs). There are also specs to expose the report in the Blackbaud Infinity application UI (Page Specs and Task Specs with the Report Spec). Finally there are specs to assist with loading the features into the Blackbaud Infinity application (Package Specs).

Because Visual Studio 2010 does not provide much functionality for editing RDL files, the RDL files for this sample were edited in another flavor of Visual Studio, Business Intelligence Development StudioReport Builder 2 could also have been used. Those files were copied to the catalog project.

The UI for the report's parameter is implemented with a Blackbaud Infinity UI Model. This requires a Blackbaud Infinity UI model project. That project is contained in the same solution as the catalog project.

The solution also contains a project for Blackbaud Data Warehouse revisions extensions. Because Visual Studio 2010 does not provide much functionality for editing SSIS packages, the files for the ETL extensions to the data warehouse were edited in Business Intelligence Development Studio. Rather than copy those to the Visual Studio 2010 solution, those files were maintained in a separate project.

Files

There are some environment-specific post-build commands in the projects. To use the samples, you will have to modify those for your environment. Once built, these files must be copied to application folders:

Custom.AppFx.PlanStageDurations.Catalog.dll

from the catalog project build

builds to Custom.AppFx.PlanStageDurations.Catalog\Custom.AppFx.PlanStageDurations.Catalog\bin\Debug

copy to Blackbaud\bbappfx\vroot\bin

Custom.AppFx.PlanStageDurations.UIModel.dll

from the UI model project build

builds to Custom.AppFx.PlanStageDurations.Catalog\Custom.AppFx.PlanStageDurations.UIModel\obj\Debug

copy to Blackbaud\bbappfx\vroot\bin

ProspectPlanStageDurationsReportOLTPVersion.html

ProspectPlanStageDurationsReportDataWarehouseVersion1.html

ProspectPlanStageDurationsReportDataWarehouseVersion2.html

from the UI model project

located in

Custom.AppFx.PlanStageDurations.Catalog\Custom.AppFx.PlanStageDurations.UIModel\htmlforms

copy to Blackbaud\bbappfx\vroot\browser\htmlforms

Revisions.dll

from the data warehouse revisions project build

builds to

Custom.AppFx.PlanStageDurations.Catalog\Custom.AppFx.PlanStageDurations.Revisions\Revisions\obj\Debug

copy to Blackbaud\bbappfx\MSBuild\Datamarts\BBDW\Extend\Revisions

BBDW_FACT_INTERACTIONACTUALTIMES_EXT.dtsx

BBDW_FACT_PROSPECTPLANSTAGE_EXT.dtsx

BBDW_FACT_PROSPECTPLANSTAGEOCCURRENCE_EXT.dtsx

from the Analysis Services project

copy to Blackbaud\bbappfx\MSBuild\Datamarts\BBDW\Extend\SSIS

Deployment

Two versions of the report use the data warehouse and extensions to the warehouse. After the Revisions.dll and SSIS packages are copied to the application folders, the data warehouse must be redeployed and the ETL must be reset and refreshed.

Deploy Blackbaud Data Warehouse

Note: There are no revisions in the sample to support custom security. So you will have to ensure the report user has permissions in the data warehouse database. This includes permissions to execute the stored procedures used by the reports.

All three versions include specs to expose the reports in a Blackbaud Infinity application. There are three packages in the catalog project DLL, one for each version. Each package must be loaded.

Package Specs

Warning: The loading mechanism for Report Specs overrides the data sources in the RDL when it loads the RDL. The data warehouse versions use two data sets. The extra data set uses the OLTP database as a data source. The reason for this is to avoid an extra extension to the warehouse just to support code table names used by the report parameter. So once you load the report, you will have to reconfigure that data source for the those reports in Reporting Services. You could instead remove the data set and populate the acceptable values for the parameter through the UI model only. But then there would be no drop-down for those values when the report is accessed through Reporting Services.