先定义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>
<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 (1, 1) NOT 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
[id] [int] IDENTITY (1, 1) NOT 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>
<Field>
<FieldName>Source</FieldName>
<FieldType>nvarchar(100)</FieldType>
</Field>
</Fields>
</Schema>
<ContentFormatter>
<ClassName>XsltFormatter</ClassName>
<Arguments>
<Argument>
<Name>XsltBaseDirectoryPath</Name>
<Value>%AppRootPath%</Value>
</Argument>
<Argument>
<Name>XsltFileName</Name>
<Value>MessageFormatter.xslt</Value>
</Argument>
</Arguments>
</ContentFormatter>
<MulticastDelivery>true</MulticastDelivery>
<!--
定义
-->
<Protocols>
<Protocol>
<ProtocolName>SMTP</ProtocolName>
<Fields>
<Field>
<FieldName>Subject</FieldName>
<SqlExpression>'ATiP消息订阅系统:' + Symbol</SqlExpression>
</Field>
<Field>
<FieldName>BodyFormat</FieldName>
<SqlExpression>'HTML'</SqlExpression>
</Field>
<Field>
<FieldName>From</FieldName>
<SqlExpression>'ATiP@nmc.ln139.com.cn'</SqlExpression>
</Field>
<Field>
<FieldName>Priority</FieldName>
<SqlExpression>'Normal'</SqlExpression>
</Field>
<Field>
<FieldName>To</FieldName>
<SqlExpression>DeviceAddress</SqlExpression>
</Field>
</Fields>
</Protocol>
<Protocol>
<ProtocolName>SMS</ProtocolName>
<Fields>
<Field>
<FieldName>Handset</FieldName>
<SqlExpression>DeviceAddress</SqlExpression>
</Field>
<Field>
<FieldName>SymbolName</FieldName>
<SqlExpression>Symbol</SqlExpression>
</Field>
<Field>
<FieldName>ActionCode</FieldName>
<SqlExpression>ActionID</SqlExpression>
</Field>
</Fields>
</Protocol>
<Protocol>
<ProtocolName>WAPPush</ProtocolName>
<Fields>
<Field>
<FieldName>Handset</FieldName>
<SqlExpression>DeviceAddress</SqlExpression>
</Field>
<Field>
<FieldName>SymbolName</FieldName>
<SqlExpression>Symbol</SqlExpression>
</Field>
<Field>
<FieldName>ActionCode</FieldName>
<SqlExpression>ActionID</SqlExpression>
</Field>
</Fields>
</Protocol>
</Protocols>
</NotificationClass>
</NotificationClasses>
<!--
NHP = NonHostedProvider
-->
<Providers>
<!--
SQLHP = Sql server hosted Provider
-->
<!-- 短信笑话 -->
<HostedProvider>
<ProviderName>MessageSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H60M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
set @Symbol='短信笑话'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='短信笑话表'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
/* 得到上次运行时间 */
SELECT @RunTime=actionTime FROM T_Action_History WHERE symbol=@Symbol
/* 更新时间 */
UPDATE T_Action_History SET actionTime=getdate() WHERE symbol=@Symbol
/* 得到消息数据 */
SELECT @Symbol as Symbol ,@ActionID as ActionID,Content as Content ,@Creator Creator , @Source Source , @CreateTime CreateTime FROM
OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').om.usercn99.DailyMessage
WHERE
MsgType='joke' and
insertTime > @RunTime
order by insertTime desc
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<!-- 每日英语 -->
<HostedProvider>
<ProviderName>EveryEnglishSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT12H00M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
set @Symbol='每日英语'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='每日英语'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
/* 得到上次运行时间 */
SELECT @RunTime=actionTime FROM T_Action_History WHERE symbol=@Symbol
/* 更新时间 */
UPDATE T_Action_History SET actionTime=getdate() WHERE symbol=@Symbol
/* 得到消息数据 */
select @Symbol as Symbol ,@ActionID ActionID,itemname + ':' + itemvalue as Content ,@Creator Creator , @Source Source , @CreateTime CreateTime
from OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').om.usercn99.dailyenginfo
where inserttime>@RunTime
order by inserttime
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<!-- 每日励志 -->
<!--
<HostedProvider>
<ProviderName>EveryExcitationSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H30M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
set @Symbol='每日励志'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='每日励志'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
/* 得到上次运行时间 */
SELECT @RunTime=actionTime FROM T_Action_History WHERE symbol=@Symbol
/* 更新时间 */
UPDATE T_Action_History SET actionTime=getdate() WHERE symbol=@Symbol
/* 得到消息数据 */
select @Symbol as Symbol ,@ActionID ActionID,'名言' + char(10) + char(13) + minyan + char(10) + char(13) + '自励' + char(10) + char(13) + zhili + char(10) + char(13) + '每日品文' + char(10) + char(13) + content + char(10) + char(13) + '书摘' + char(10) + char(13) + shuzai as content,@Creator Creator , @Source Source , @CreateTime CreateTime
from OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').om.dbo.dailyreader
where createtime>@RunTime
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
-->
<!-- 网事知多少 -->
<HostedProvider>
<ProviderName>NetInfoSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H05M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
DECLARE @StockID varchar(100)
set @Symbol='网事知多少'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='网事知多少'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
select @RunTime = actionTime from t_action_history where symbol=@Source
update t_action_history set actionTime=getdate() where symbol=@Source
select
@Symbol as Symbol ,
@ActionID ActionID,
Convert(nvarchar(4000),Content) as Content ,
@Creator Creator ,
@Source Source ,
@CreateTime CreateTime
FROM
OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').nsps.dbo.publish
WHERE
Sanctified=1 and ColumnID = 1
and AuthorDate>@RunTime
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<!-- 实时股票 -->
<HostedProvider>
<ProviderName>StockSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H05M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
DECLARE @StockID varchar(100)
set @Symbol='移动股票'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='移动股票表'
select @StockID = StockID from t_stock where modify=1
update t_stock set modify=0 where StockID=@StockID
select
@Symbol as Symbol ,
@ActionID ActionID,
Content as Content ,
@Creator Creator ,
@Source Source ,
@CreateTime CreateTime
FROM
T_Stock
WHERE
StockId=@StockID
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<!-- 辽阳网络篇 -->
<HostedProvider>
<ProviderName>NetInfoSQLHP_LY</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H05M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
DECLARE @StockID varchar(100)
set @Symbol='辽阳网络篇'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='辽阳网络篇'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
select @RunTime = actionTime from t_action_history where symbol=@Source
update t_action_history set actionTime=getdate() where symbol=@Source
select
@Symbol as Symbol ,
@ActionID ActionID,
Convert(nvarchar(4000),Content) as Content ,
@Creator Creator ,
@Source Source ,
@CreateTime CreateTime
FROM
OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').nsps.dbo.publish
WHERE
Sanctified=1 and ColumnID = 18
and AuthorDate>@RunTime
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<NonHostedProvider>
<ProviderName>MessageNHP</ProviderName>
</NonHostedProvider>
</Providers>
<Generator>
<SystemName>%AppServerName%</SystemName>
</Generator>
<Distributors>
<Distributor>
<SystemName>%AppServerName%</SystemName>
</Distributor>
</Distributors>
</Application>
<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>
<Field>
<FieldName>Source</FieldName>
<FieldType>nvarchar(100)</FieldType>
</Field>
</Fields>
</Schema>
<ContentFormatter>
<ClassName>XsltFormatter</ClassName>
<Arguments>
<Argument>
<Name>XsltBaseDirectoryPath</Name>
<Value>%AppRootPath%</Value>
</Argument>
<Argument>
<Name>XsltFileName</Name>
<Value>MessageFormatter.xslt</Value>
</Argument>
</Arguments>
</ContentFormatter>
<MulticastDelivery>true</MulticastDelivery>
<!--
定义
-->
<Protocols>
<Protocol>
<ProtocolName>SMTP</ProtocolName>
<Fields>
<Field>
<FieldName>Subject</FieldName>
<SqlExpression>'ATiP消息订阅系统:' + Symbol</SqlExpression>
</Field>
<Field>
<FieldName>BodyFormat</FieldName>
<SqlExpression>'HTML'</SqlExpression>
</Field>
<Field>
<FieldName>From</FieldName>
<SqlExpression>'ATiP@nmc.ln139.com.cn'</SqlExpression>
</Field>
<Field>
<FieldName>Priority</FieldName>
<SqlExpression>'Normal'</SqlExpression>
</Field>
<Field>
<FieldName>To</FieldName>
<SqlExpression>DeviceAddress</SqlExpression>
</Field>
</Fields>
</Protocol>
<Protocol>
<ProtocolName>SMS</ProtocolName>
<Fields>
<Field>
<FieldName>Handset</FieldName>
<SqlExpression>DeviceAddress</SqlExpression>
</Field>
<Field>
<FieldName>SymbolName</FieldName>
<SqlExpression>Symbol</SqlExpression>
</Field>
<Field>
<FieldName>ActionCode</FieldName>
<SqlExpression>ActionID</SqlExpression>
</Field>
</Fields>
</Protocol>
<Protocol>
<ProtocolName>WAPPush</ProtocolName>
<Fields>
<Field>
<FieldName>Handset</FieldName>
<SqlExpression>DeviceAddress</SqlExpression>
</Field>
<Field>
<FieldName>SymbolName</FieldName>
<SqlExpression>Symbol</SqlExpression>
</Field>
<Field>
<FieldName>ActionCode</FieldName>
<SqlExpression>ActionID</SqlExpression>
</Field>
</Fields>
</Protocol>
</Protocols>
</NotificationClass>
</NotificationClasses>
<!--
NHP = NonHostedProvider
-->
<Providers>
<!--
SQLHP = Sql server hosted Provider
-->
<!-- 短信笑话 -->
<HostedProvider>
<ProviderName>MessageSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H60M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
set @Symbol='短信笑话'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='短信笑话表'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
/* 得到上次运行时间 */
SELECT @RunTime=actionTime FROM T_Action_History WHERE symbol=@Symbol
/* 更新时间 */
UPDATE T_Action_History SET actionTime=getdate() WHERE symbol=@Symbol
/* 得到消息数据 */
SELECT @Symbol as Symbol ,@ActionID as ActionID,Content as Content ,@Creator Creator , @Source Source , @CreateTime CreateTime FROM
OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').om.usercn99.DailyMessage
WHERE
MsgType='joke' and
insertTime > @RunTime
order by insertTime desc
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<!-- 每日英语 -->
<HostedProvider>
<ProviderName>EveryEnglishSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT12H00M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
set @Symbol='每日英语'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='每日英语'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
/* 得到上次运行时间 */
SELECT @RunTime=actionTime FROM T_Action_History WHERE symbol=@Symbol
/* 更新时间 */
UPDATE T_Action_History SET actionTime=getdate() WHERE symbol=@Symbol
/* 得到消息数据 */
select @Symbol as Symbol ,@ActionID ActionID,itemname + ':' + itemvalue as Content ,@Creator Creator , @Source Source , @CreateTime CreateTime
from OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').om.usercn99.dailyenginfo
where inserttime>@RunTime
order by inserttime
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<!-- 每日励志 -->
<!--
<HostedProvider>
<ProviderName>EveryExcitationSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H30M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
set @Symbol='每日励志'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='每日励志'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
/* 得到上次运行时间 */
SELECT @RunTime=actionTime FROM T_Action_History WHERE symbol=@Symbol
/* 更新时间 */
UPDATE T_Action_History SET actionTime=getdate() WHERE symbol=@Symbol
/* 得到消息数据 */
select @Symbol as Symbol ,@ActionID ActionID,'名言' + char(10) + char(13) + minyan + char(10) + char(13) + '自励' + char(10) + char(13) + zhili + char(10) + char(13) + '每日品文' + char(10) + char(13) + content + char(10) + char(13) + '书摘' + char(10) + char(13) + shuzai as content,@Creator Creator , @Source Source , @CreateTime CreateTime
from OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').om.dbo.dailyreader
where createtime>@RunTime
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
-->
<!-- 网事知多少 -->
<HostedProvider>
<ProviderName>NetInfoSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H05M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
DECLARE @StockID varchar(100)
set @Symbol='网事知多少'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='网事知多少'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
select @RunTime = actionTime from t_action_history where symbol=@Source
update t_action_history set actionTime=getdate() where symbol=@Source
select
@Symbol as Symbol ,
@ActionID ActionID,
Convert(nvarchar(4000),Content) as Content ,
@Creator Creator ,
@Source Source ,
@CreateTime CreateTime
FROM
OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').nsps.dbo.publish
WHERE
Sanctified=1 and ColumnID = 1
and AuthorDate>@RunTime
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<!-- 实时股票 -->
<HostedProvider>
<ProviderName>StockSQLHP</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H05M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
DECLARE @StockID varchar(100)
set @Symbol='移动股票'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='移动股票表'
select @StockID = StockID from t_stock where modify=1
update t_stock set modify=0 where StockID=@StockID
select
@Symbol as Symbol ,
@ActionID ActionID,
Content as Content ,
@Creator Creator ,
@Source Source ,
@CreateTime CreateTime
FROM
T_Stock
WHERE
StockId=@StockID
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<!-- 辽阳网络篇 -->
<HostedProvider>
<ProviderName>NetInfoSQLHP_LY</ProviderName>
<ClassName>SQLProvider</ClassName>
<SystemName>nmcproject</SystemName>
<Schedule>
<Interval>P0DT00H05M00S</Interval>
</Schedule>
<Arguments>
<Argument>
<Name>EventsQuery</Name>
<Value>
DECLARE @Symbol nvarchar(20)
DECLARE @ActionID nvarchar(50)
DECLARE @Creator nvarchar(10)
DeCLARE @CreateTime DateTime
DECLARE @Source nvarchar(100)
DECLARE @RunTime DateTime
DECLARE @StockID varchar(100)
set @Symbol='辽阳网络篇'
set @Creator='ROBOT'
set @CreateTime=getUTCDate()
set @ActionID=DateName(MM,@CreateTime)+DateName(dd,@CreateTime)+DateName(hh,@CreateTime)+DateName(ms,@CreateTime)
set @Source='辽阳网络篇'
if not exists (SELECT * FROM T_Action_History where symbol=@Symbol)
INSERT into T_Action_History ( symbol , actionTime ) values (@Symbol,getdate())
select @RunTime = actionTime from t_action_history where symbol=@Source
update t_action_history set actionTime=getdate() where symbol=@Source
select
@Symbol as Symbol ,
@ActionID ActionID,
Convert(nvarchar(4000),Content) as Content ,
@Creator Creator ,
@Source Source ,
@CreateTime CreateTime
FROM
OPENDATASOURCE('SQLOLEDB','Data Source=sql.nmc.ln.cmcc;User ID=*********;Password=*********').nsps.dbo.publish
WHERE
Sanctified=1 and ColumnID = 18
and AuthorDate>@RunTime
</Value>
</Argument>
<Argument>
<Name>EventClassName</Name>
<Value>MessageEC</Value>
</Argument>
</Arguments>
</HostedProvider>
<NonHostedProvider>
<ProviderName>MessageNHP</ProviderName>
</NonHostedProvider>
</Providers>
<Generator>
<SystemName>%AppServerName%</SystemName>
</Generator>
<Distributors>
<Distributor>
<SystemName>%AppServerName%</SystemName>
</Distributor>
</Distributors>
</Application>
说明,在这里,我添加了自定义的两中发送方式 SMS , WAPPush。
下一回,将简单介绍一下Provide的开发。