Aggiunta di una sottoscrizione

L'oggetto Subscription espone proprietà che consentono di impostare le informazioni delle sottoscrizioni quali l'ID del sottoscrittore, un indicizzatore per i campi che definiscono i dati delle sottoscrizioni e se la sottoscrizione è attivata per la generazione di notifiche.

Il metodo Add di questo oggetto scrive tali dati nel database dell'applicazione e restituisce la proprietà SubscriptionId generata dal sistema per la sottoscrizione. La proprietà SubscriptionId viene archiviata come valore integer a 64 bit nel database, ma viene restituita nell'applicazione come stringa.

Aggiunta di una sottoscrizione di base

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare il metodo Item della classe Subscription per impostare il valore dei campi della sottoscrizione specifici dell'applicazione:

// 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();

Codice aggiuntivo per una sottoscrizione pianificata

Alcune classi di sottoscrizione supportano le sottoscrizioni pianificate. Per tali sottoscrizioni è necessario fornire due proprietà aggiuntive per definire la frequenza e la data di inizio della pianificazione.

Aggiungere il codice seguente all'esempio sopra riportato, prima del metodo Add, per creare una sottoscrizione pianificata. La proprietà ScheduleRecurrence consente di configurare l'elaborazione giornaliera della sottoscrizione. La proprietà ScheduleStart consente di configurare l'elaborazione della sottoscrizione in corrispondenza dell'ora corrente con il fuso orario della costa del Pacifico (USA). Per un elenco dei codici di fuso orario supportati, vedere Time Zone Codes.

[!NOTA] I valori delle proprietà ScheduleStart e ScheduleRecurrence della classe Subscription devono essere conformi al subset di Notification Services della specifica dell'interfaccia ICalendar. Per ulteriori informazioni, vedere gli argomenti relativi alle proprietà.

// 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();

Aggiunta di una sottoscrizione basata su condizioni

Nel codice riportato di seguito viene illustrato come creare una sottoscrizione per una classe di sottoscrizione che utilizza le azioni condizionali. Le proprietà RuleName e Condition appartengono alla classe Subscription. Gli oggetti utilizzati per definire la condizione, ad esempio la classe OrCondition, appartengono alla spazio dei nomi Microsoft.SqlServer.NotificationServices.Rules.

In questo esempio viene illustrato come creare una sottoscrizione e una condizione tramite valori di testo specificati a livello di codice. L'interfaccia per la gestione delle sottoscrizioni può includere elenchi a discesa e caselle di testo che consentono la selezione e l'immissione di valori.

// 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();

La condizione della sottoscrizione può essere una struttura ramificata complessa di un oggetto in cui vengono combinate molte condizioni AND, OR e NOT nonché vari tipi di argomento e persino altre regole, tramite gli oggetti LinkLeafCondition.

Esempio di interoperabilità COM

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare il metodo SetFieldValue della classe Subscription per impostare il valore dei campi della sottoscrizione specifici dell'applicazione:

[!NOTA] L'interoperabilità COM non è supportata per le sottoscrizioni basate su condizioni.

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."

Vedere anche

Concetti

Creazione di un oggetto di sottoscrizione
Aggiornamento di una sottoscrizione
Eliminazione di una sottoscrizione
Recupero di informazioni sul campo sottoscrizione
Popolamento di un elenco delle impostazioni internazionali dei sottoscrittori
Popolamento di elenco di fusi orari

Guida in linea e informazioni

Assistenza su SQL Server 2005