Добавление подписки
Объект Subscription предоставляет свойства, позволяющие настроить данные о подписке, такие как идентификатор подписчика, средство индексации полей, определяющих данные подписки и включение подписки для формирования уведомлений.
Метод Add этого объекта записывает данные в базу данных приложений и возвращает сформированный системой SubscriptionId для подписки. SubscriptionId хранится в базе данных в виде 64-разрядного целого значения, но возвращается приложению в виде строки.
Добавление базовой подписки
В следующем примере кода показано использование метода Item класса Subscription для установки значения полей подписки, относящихся к приложению:
// Create the NSInstance object.
NSInstance testInstance = new NSInstance("Tutorial");
// Create the NSApplication object.
NSApplication testApplication =
new NSApplication(testInstance, "Weather");
// Create the Subscription object.
Subscription testSubscription =
new Subscription(testApplication, "WeatherCity");
// Set the properties that describe the subscription record.
testSubscription.Enabled = true;
testSubscription.SubscriberId = "TestUser1";
// Set the subscription data fields (as defined in the ADF),
// using the indexer to set fields by field name.
testSubscription["DeviceName"] = "Work e-mail";
testSubscription["SubscriberLocale"] = "en-US";
testSubscription["City"] = "Shoreline";
// Add the subscription to the database.
testSubscription.Add();
Дополнительный код для запланированной подписки
Некоторые классы подписок поддерживают запланированные подписки. Для запланированных подписок необходимо ввести два дополнительных свойства для предоставления периодичности расписания и даты начала.
Добавьте к вышеприведенному примеру следующий код перед методом Add, чтобы создать запланированную подписку. Свойство ScheduleRecurrence настраивает подписку на ежедневную обработку. Свойство ScheduleStart настраивает подписку на обработку в текущий момент в тихоокеанском часовом поясе. Список поддерживаемых кодов часовых поясов см. в разделе Time Zone Codes.
Примечание. |
---|
Значения свойств ScheduleStart и ScheduleRecurrence класса Subscription должны соответствовать подмножеству служб Notification Services спецификации интерфейса ICalendar. Дополнительные сведения см. в разделах, посвященные свойствам. |
// Set the recurrence of the subscription.
testSubscription.ScheduleRecurrence = "FREQ=DAILY";
// Set the start date and time of the subscription.
StringBuilder scheduleBuilder = new StringBuilder();
scheduleBuilder.AppendFormat("TZID={0}:{1}{2}{3}T{4}{5}{6}",
"4",
DateTime.Now.Year.ToString("D4"),
DateTime.Now.Month.ToString("D2"),
DateTime.Now.Day.ToString("D2"),
DateTime.Now.Hour.ToString("D2"),
DateTime.Now.Minute.ToString("D2"),
DateTime.Now.Second.ToString("D2"));
testSubscription.ScheduleStart = scheduleBuilder.ToString();
Добавление подписки на основе условий
В следующем коде показано создание подписки для класса подписки, использующего условные действия. Свойства RuleName и Condition находятся в классе Subscription. Объекты, используемые для определения условия, например класс OrCondition, находятся в пространстве имен Microsoft.SqlServer.NotificationServices.Rules.
В данном примере показано создание подписки и условия с использованием текстовых значений, занесенных в код. Интерфейс управления подписками может предоставлять раскрывающиеся списки и текстовые поля, чтобы пользователи могли выбирать и вводить значения.
// Create the NSInstance object.
NSInstance testInstance =
new NSInstance("InventoryTrackerInstance");
// Create the NSApplication object.
NSApplication testApplication =
new NSApplication(testInstance, "InventoryTracker");
// Define subscription properties
Subscription s = new Subscription(testApplication, "InventoryTrackerSubscriptions");
s.SubscriberId = "TestUser1";
s.Enabled = true;
s.RuleName = "InventoryTrackerRule";
s["DeviceName"] = "Work e-mail";
s["SubscriberLocale"] = "en-US";
// Define OrCondition
s.Condition = new OrCondition(
new SimpleLeafCondition(new FieldValue("Quantity"),
SimpleOperator.GreaterThanOrEqualTo,
500),
new SimpleLeafCondition(new FieldValue("Quantity"),
SimpleOperator.LessThanOrEqualTo,
35)
);
// Add subscription
s.Add();
Условием подписки может быть объект графика, в котором сочетается множество условий AND, OR или NOT, а также различные типы аргументов и даже другие правила, посредством объектов LinkLeafCondition.
Пример взаимодействия COM
В следующем примере кода показано использование метода SetFieldValue класса Subscription для установки значения полей подписки, относящихся к приложению:
Примечание. |
---|
Взаимодействие COM не поддерживается для подписок на основе условий. |
Dim testInstance, testApplication, testSubscription, subscriptionId
const instanceName = "Tutorial"
const applicationName = "Weather"
const subscriptionClassName = "WeatherCity"
' Create the NSInstance object.
set testInstance = WScript.CreateObject( _
"Microsoft.SqlServer.NotificationServices.NSInstance")
testInstance.Initialize instanceName
' Create the NSApplication object.
set testApplication = WScript.CreateObject( _
"Microsoft.SqlServer.NotificationServices.NSApplication")
testApplication.Initialize (testInstance), applicationName
' Create the Subscription object.
set testSubscription = WScript.CreateObject( _
"Microsoft.SqlServer.NotificationServices.Subscription")
testSubscription.Initialize (testApplication), subscriptionClassName
' Set the properties that describe the subscription record.
testSubscription.SubscriberId = "TestUser2"
testSubscription.Enabled = true
' Set the subscription data fields
testSubscription.SetFieldValue "DeviceName", "Work e-mail"
testSubscription.SetFieldValue "SubscriberLocale", "en-US"
testSubscription.SetFieldValue "City", "Anaheim"
' Add the subscription to the database.
subscriptionId = testSubscription.Add
wscript.echo "Subscription added."
См. также
Основные понятия
Создание объекта Subscription
Обновление подписки
Удаление подписки
Получение сведений о поле подписки
Заполнение списка языковых стандартов подписчиков
Заполнение списка часовых поясов