应用案例
企业要求实现通过ReportingService将报表的内容以手机短信的方式发送到订阅者的手机上进行浏览。
其中短信发送功能已经实现(提供了WebService,在这里不做讨论)
因为以短信的方式发送,暂时用ReportingServices的CSV格式采集数据。

一.需求分析
其中短信发送功能已经实现(提供了WebService,在这里不做讨论)
因为以短信的方式发送,暂时用ReportingServices的CSV格式采集数据。
订阅用的参数,在这里主要用到了一个手机号,为了说明简单,这里只让用户输入一个手机号
二.程序设计
namespace Lnnmc.ReportingServices.ShortMessageDeliveryProvider
1.记录用户订阅信息的SubscriptionData类
    string Handset{get;} : 用户手机号 (不附合要求,该功能去掉)
    string[] Groups{get;} : 当前报表订阅的组名
    string[] Users{get;} : 当前订阅的用户名
    void FromSettings(Setting[] settings) : 从settings中解释出用户订阅数据
    Setting[] ToSettingArray() : 将用户订阅数据生成setting数组
2.实现IExtension, IDeliveryExtension的ShortMessageProvider类
    string LocalizedName{get;} : 在RS的传递下拉框中显示的名称
    void SetConfiguration(string configuration) : 从rsreportserver.config中得到当前Delivery的配置信息
    Setting[] ExtensionSettings : 定义服务器端的默认Setting配置
    IDeliveryReportServerInformation ReportServerInformation : 可以得到当前RS服务器上的一些可用的Render类型
    bool Deliver(Notification notification) : 这个方法就是用来执行发送的
    Setting[] ValidateUserData(Setting[] settings) : 验证用户输入的setting是否有效
3.实现UI接口WebControl, ISubscriptionBaseUIUserControl, IExtension的ShortMessageUIProvider类
    string LocalizedName{get;} : 显示在报表传递属性中的传递者下拉框中
    void SetConfiguration(string configuration) : 从RSWebApplication.config得到UI的配置信息
    string Description{get;} : 订阅后,显示在订阅列表中的"描述"字段里
    Setting[] UserData{get;set;} : 这个很关键,是得到UI上的用户配置数据(订阅时),得到原来的用户配置数据(编辑时)。
三.程序开发

SubscriptionData 源代码

[RS]Delivery Extension开发笔记using System;
[RS]Delivery Extension开发笔记
using System.Collections.Generic;
[RS]Delivery Extension开发笔记
using System.Collections;
[RS]Delivery Extension开发笔记
using System.Text;
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
using System.Collections.Specialized;
[RS]Delivery Extension开发笔记
using Microsoft.ReportingServices.Interfaces;
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
namespace Lnnmc.ReportingServices.ShortMessageDeliveryProvider

ShortMessageProvider源代码

[RS]Delivery Extension开发笔记// #define CSV
[RS]Delivery Extension开发笔记
#define IMAGE
[RS]Delivery Extension开发笔记
#undef  IMAGE
[RS]Delivery Extension开发笔记
#define EXCEL
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
using System;
[RS]Delivery Extension开发笔记
using System.Xml;
[RS]Delivery Extension开发笔记
using System.Collections.Generic;
[RS]Delivery Extension开发笔记
using System.Text;
[RS]Delivery Extension开发笔记
using System.IO;
[RS]Delivery Extension开发笔记
using Microsoft.ReportingServices.Interfaces;
[RS]Delivery Extension开发笔记
using System.Drawing;
[RS]Delivery Extension开发笔记
using System.Drawing.Imaging;
[RS]Delivery Extension开发笔记
using System.Data;
[RS]Delivery Extension开发笔记
using System.Data.SqlClient;
[RS]Delivery Extension开发笔记
using Microsoft.Office.Interop.Excel;
[RS]Delivery Extension开发笔记
using System.Windows.Forms;
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
namespace Lnnmc.ReportingServices.ShortMessageDeliveryProvider

ShortMessageUIProvider源代码

[RS]Delivery Extension开发笔记using System;
[RS]Delivery Extension开发笔记
using System.Collections.Generic;
[RS]Delivery Extension开发笔记
using System.Text;
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
using Microsoft.ReportingServices.Interfaces;
[RS]Delivery Extension开发笔记
using System.Web.UI.WebControls;
[RS]Delivery Extension开发笔记
using System.Web.UI.HtmlControls;
[RS]Delivery Extension开发笔记
using System.Xml;
[RS]Delivery Extension开发笔记
using System.Data;
[RS]Delivery Extension开发笔记
using System.Data.SqlClient;
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
namespace Lnnmc.ReportingServices.ShortMessageDeliveryProvider

实际开发过程中发现,Excel的一些处理只能在WinForm程序中进行(具体为啥没搞清楚)所以,在处理生成的Excel时,只能单独做了一个WinApp

ReportMmsParser.exe 的源代码

[RS]Delivery Extension开发笔记using System;
[RS]Delivery Extension开发笔记
using System.Collections.Generic;
[RS]Delivery Extension开发笔记
using System.Windows.Forms;
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
namespace ReportMmsParser

 

[RS]Delivery Extension开发笔记using System;
[RS]Delivery Extension开发笔记
using System.IO;
[RS]Delivery Extension开发笔记
using System.Drawing.Imaging;
[RS]Delivery Extension开发笔记
using System.Diagnostics;
[RS]Delivery Extension开发笔记
using System.Collections.Generic;
[RS]Delivery Extension开发笔记
using System.ComponentModel;
[RS]Delivery Extension开发笔记
using System.Data;
[RS]Delivery Extension开发笔记
using System.Drawing;
[RS]Delivery Extension开发笔记
using System.Text;
[RS]Delivery Extension开发笔记
using System.Windows.Forms;
[RS]Delivery Extension开发笔记
using Microsoft.Office.Interop;
[RS]Delivery Extension开发笔记
using Microsoft.Office.Interop.Excel;
[RS]Delivery Extension开发笔记
[RS]Delivery Extension开发笔记
namespace ReportMmsParser



四.程序部署
五.程序测试


本次开发,参考了RS自带的PrinterDelivery例程

相关文章: