现在的位置: 首页 > 综合 > 正文

[RS]消息订阅应用实例(一)

2011年08月07日 ⁄ 综合 ⁄ 共 8015字 ⁄ 字号 评论关闭

先定义NotificationService 的Config文件

<?xml version="1.0" encoding="UTF-8"?>
<NotificationServicesInstance xmlns="http://www.microsoft.com/MicrosoftNotificationServices/ConfigurationFileSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.microsoft.com/MicrosoftNotificationServices/ConfigurationFileSchema
C:\PROGRA~1\MI02CD~1\v2.0.3008.0\XMLSCH~1\ConfigurationFileSchema.xsd"
>
    
<!-- 系统用参数 -->
    
<ParameterDefaults>
        
<Parameter>
            
<Name>SqlServerName</Name>
            
<Value>%SqlServerName%</Value>
        
</Parameter>
        
<Parameter>
            
<Name>InstanceName</Name>
            
<Value>%InstanceName%</Value>
        
</Parameter>
        
<Parameter>
            
<Name>ApplicationName</Name>
            
<Value>%AppName%</Value>
        
</Parameter>
        
<Parameter>
            
<Name>AppHomePath</Name>
            
<Value>C:\NotificationApp\NSSolution\ATiPDefinition</Value>
        
</Parameter>
    
</ParameterDefaults>
    
<!-- 实例名称 -->
    
<InstanceName>%InstanceName%</InstanceName>
    
<!-- 数据库名 -->
    
<SqlServerSystem>%SqlServerName%</SqlServerSystem>
    
<!-- 应用程序定义 -->
    
<Applications>
        
<Application>
            
<ApplicationName>%ApplicationName%</ApplicationName>
            
<BaseDirectoryPath>%AppHomePath%</BaseDirectoryPath>
            
<ApplicationDefinitionFilePath>ATiP_ADF.xml</ApplicationDefinitionFilePath>
            
<Parameters>
                
<Parameter>
                    
<Name>AppRootPath</Name>
                    
<Value>%AppHomePath%</Value>
                
</Parameter>
                
<Parameter>
                    
<Name>AppServerName</Name>
                    
<Value>%SqlServerName%</Value>
                
</Parameter>
            
</Parameters>
        
</Application>
    
</Applications>
    
<!-- 通信通道 -->
    
<Protocols>
        
<Protocol>
            
<ProtocolName>SMS</ProtocolName>
            
<ClassName>XZSoftware.Project.MessageSubscribe.SMChannelLib.SMChannel</ClassName>
            
<AssemblyName>c:\NotificationApp\NSSolution\SMChannelLib\bin\debug\XZSoftware.Project.MessageSubscribe.SMChannelLib.dll</AssemblyName>
        
</Protocol>
        
<Protocol>
            
<ProtocolName>WAPPush</ProtocolName>
            
<ClassName>XZSoftware.Project.MessageSubscribe.WAPPushChannelLib.WAPPushChannel</ClassName>
            
<AssemblyName>C:\NotificationApp\NSSolution\WAPPushChannelLib\bin\debug\XZSoftware.Project.MessageSubscribe.WAPPushChannelLib.dll</AssemblyName>
        
</Protocol>
    
</Protocols>
    
<!-- 提交通道定义 -->
    
<DeliveryChannels>
        
<DeliveryChannel>
            
<!-- DeliveryChannelName的名字将在程序中体现 -->
            
<DeliveryChannelName>MailChannel</DeliveryChannelName>
            
<ProtocolName>SMTP</ProtocolName>
            
<Arguments>
                
<Argument>
                    
<Name>SmtpServer</Name>
                    
<Value>nmcexch</Value>
                
</Argument>
                
<Argument>
                    
<Name>BodyEncoding</Name>
                    
<Value>utf-8</Value>
                
</Argument>
            
</Arguments>
        
</DeliveryChannel>
        
<DeliveryChannel>
            
<DeliveryChannelName>SMSChannel</DeliveryChannelName>
            
<ProtocolName>SMS</ProtocolName>
        
</DeliveryChannel>
        
<DeliveryChannel>
            
<DeliveryChannelName>WAPPushChannel</DeliveryChannelName>
            
<ProtocolName>WAPPush</ProtocolName>
        
</DeliveryChannel>
    
</DeliveryChannels>
</NotificationServicesInstance>

要先为消息采集创建一个中间、用于记录采集信息的表。

CREATE TABLE [T_Action_History] (
    
[id] [int] IDENTITY (11NOT NULL ,
    
[symbol] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    
[actionTime] [datetime] NOT NULL CONSTRAINT [DF_T_Action_History_actionTime] DEFAULT (getdate()),
    
[arg1] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    
[arg2] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    
[arg3] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    
[arg4] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
    
[arg5] [nvarchar] (3000) COLLATE Chinese_PRC_CI_AS NULL 
ON [PRIMARY]
GO


定义ADF

<?xml version="1.0" encoding="UTF-8"?>
<Application xmlns="http://www.microsoft.com/MicrosoftNotificationServices/ApplicationDefinitionFileSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.microsoft.com/MicrosoftNotificationServices/ApplicationDefinitionFileSchema
C:\PROGRA~1\MI02CD~1\v2.0.3008.0\XMLSCH~1\ApplicationDefinitionFileSchema.xsd"
>
    
<!-- 
    1.添加Event定义 
    EC = EventClass
    
-->
    
<EventClasses>
        
<EventClass>
            
<EventClassName>MessageEC</EventClassName>
            
<Schema>
                
<Field>
                    
<FieldName>Symbol</FieldName>
                    
<FieldType>nvarchar(20)</FieldType>
                
</Field>
                
<Field>
                    
<FieldName>ActionID</FieldName>
                    
<FieldType>nvarchar(50)</FieldType>
                
</Field>
                
<Field>
                    
<FieldName>Content</FieldName>
                    
<FieldType>nvarchar(4000)</FieldType>
                
</Field>
                
<Field>
                    
<FieldName>Creator</FieldName>
                    
<FieldType>nvarchar(50)</FieldType>
                
</Field>
                
<Field>
                    
<FieldName>Source</FieldName>
                    
<FieldType>nvarchar(100)</FieldType>
                
</Field>
                
<Field>
                    
<FieldName>CreateTime</FieldName>
                    
<FieldType>DateTime</FieldType>
                
</Field>
            
</Schema>
            
<IndexSqlSchema>
                
<SqlStatement>
                    Create Index MessageEC_index on MessageEC( symbol )
                
</SqlStatement>
            
</IndexSqlSchema>
        
</EventClass>
    
</EventClasses>
    
<!--
    2.添加Subscription定义
    SC = SubscriptionClass
    
-->
    
<SubscriptionClasses>
        
<SubscriptionClass>
            
<SubscriptionClassName>MessageSC</SubscriptionClassName>
            
<Schema>
                
<Field>
                    
<FieldName>DeviceName</FieldName>
                    
<FieldType>nvarchar(20)</FieldType>
                
</Field>
                
<Field>
                    
<FieldName>SubscriberLocale</FieldName>
                    
<FieldType>nvarchar(20)</FieldType>
                
</Field>
                
<Field>
                    
<FieldName>Symbol</FieldName>
                    
<FieldType>nvarchar(20)</FieldType>
                
</Field>
            
</Schema>
            
<!--
            EventRule定义
            ER = EventRule
            NCER = NotificationClass EventRule
            
-->
            
<EventRules>
                
<EventRule>
                    
<RuleName>MessageNCER</RuleName>
                    
<Action>
                    select dbo.MessageNCNotify(s.SubscriberId,s.DeviceName,s.SubscriberLocale,e.Symbol,e.ActionID,e.Content,e.Creator,e.Source)
                    FROM MessageSC s , MessageEC e
                    WHERE s.Symbol=e.Symbol
                    
</Action>
                    
<EventClassName>MessageEC</EventClassName>
                
</EventRule>
            
</EventRules>
        
</SubscriptionClass>
    
</SubscriptionClasses>
    
<!--
    3.定义Notification
    NC = NotificationClass
    
-->
    
<NotificationClasses>
        
<NotificationClass>
            
<NotificationClassName>MessageNC</NotificationClassName>
            
<Schema>
                
<Fields>
                    
<Field>
                        
<FieldName>Symbol</FieldName>
                        
<FieldType>nvarchar(20)</FieldType>
                    
</Field>
                    
<Field>
                        
<FieldName>ActionID</FieldName>
                        
<FieldType>nvarchar(50)</FieldType>
                    
</Field>
                    
<Field>
                        
<FieldName>Content</FieldName>
                        
<FieldType>nvarchar(4000)</FieldType>
                    
</Field>
                    
<Field>
                        
<FieldName>Creator</FieldName>
                        
<FieldType>nvarchar(50)</FieldType>
                    
</Field>
<

抱歉!评论已关闭.