定義排程規則
如果您的應用程式支援排程訂閱,您必須定義至少一個排程規則。
排程規則是一或多項針對排程訂閱來建立通知之 Transact-SQL 查詢的具名集合。排程規則可以選擇性地操作訂閱紀事輯中的資料。排程規則是在每個配量期間執行的,它們只會評估排程評估時間是在這個配量之內的訂閱。
附註: |
---|
排程規則確切的引發時間,會隨著配量持續時間而不同。 |
每個訂閱類別都可以包含一或多個排程規則。不過,您不能在排程規則之間,指定規則引發順序。排程規則可以依照任何順序來引發。
排程規則的處理
排程訂閱會在排程時間產生它們的相關通知,排程時間通常是在建立訂閱時,由訂閱者來指定。Notification Services 利用下列程序來從排程規則產生通知:
- 事件到達。
- Notification Services 會針對每個事件類別,各建立一個事件批次,之後,再將每個事件批次插入對應的事件資料表中。
- Notification Services 會針對每個事件類別來執行事件紀事輯規則,這會更新事件紀事輯。
- Notification Services 會引發排程規則,且只會評估預期處理的訂閱。排程規則是針對事件紀事輯來運作,而不是針對只含有目前事件批次的事件類別檢視來運作。
- 排程規則會將產生的通知插入通知資料表中;這項資料用來建立和散發通知。
由於通知只會在排定的時間產生,因此,排程規則對定期的資訊更新有益。每日氣象預測和每週投資組合報表,都是應該使用排程規則的應用程式範例。
定義排程規則
排程規則是訂閱類別的一部份。當您定義訂閱類別時,您必須定義至少一個規則 (排程規則或事件驅動規則)。若要定義排程規則,請建立一個排程規則項目。之後,您必須提供名稱、要執行的動作,以及動作的逾時值。
若要定義排程規則
- 如果您利用 XML 來定義應用程式,請利用 ScheduledRule Element (ADF) 來定義排程規則。
- 如果您以程式設計的方式定義排程規則,請利用 SubscriptionScheduledRule 類別來建立個別的排程規則物件,再利用 SubscriptionScheduledRules 屬性將它們加入訂閱類別中。
- 如果您以程式設計的方式定義含條件式動作的排程規則,請利用 SubscriptionConditionScheduledRule 類別來建立個別的排程規則物件,再利用 SubscriptionConditionScheduledRules 屬性將它們加入訂閱類別中。
命名排程規則
每個排程規則都必須有在應用程式內的唯一名稱。這個名稱用來識別每個規則,以便進行管理。
若要命名排程規則
- 如果您利用 XML 來定義排程規則,請利用 RuleName Element for ScheduledRule (ADF) 來定義排程規則名稱。
- 如果您以程式設計的方式定義排程規則,請在 SubscriptionScheduledRule 類別 (NMO) 中定義排程規則名稱。
- 如果您以程式設計的方式定義含條件式動作的排程規則,請利用 SubscriptionConditionScheduledRule 類別 (NMO) 來定義排程名稱。
定義動作或條件式動作
動作是 Notification Services 在每次引發規則時所執行的查詢。訂閱規則可以包含簡單動作以及比較複雜的條件式動作:
- 動作包含一項 Transact-SQL 查詢,用來根據訂閱欄位和事件欄位是否相符,以產生通知。當訂閱者建立訂閱時,它們會定義預先定義之查詢的參數。如需有關定義簡單動作的資訊,請參閱<定義動作>。
- 條件式動作也有一項 Transact-SQL 查詢,但這個查詢用來定義一份檢視,供訂閱者從中定義它們的訂閱。訂閱者並不提供預先定義之查詢的參數,而是選取它們想要的欄位,再利用一組預先決定的運算子來定義它們自己的條件。如需有關定義條件式動作的資訊,請參閱<定義條件動作>。
指定逾時值
動作逾時值用來指定允許動作或條件式動作中的陳述式完成的時間長度。如果陳述式並未在逾時之前完成,Notification Services 會回復交易,將排程規則標示為失敗,要將錯誤寫入事件記錄中。
若要指定逾時值
- 如果您利用 XML 來定義排程規則,請利用 ActionTimeout Element for ScheduledRule (ADF) 來定義逾時值。
- 如果您以程式設計的方式定義排程規則,請利用 Microsoft.SqlServer.Management.Nmo.SubscriptionScheduledRule.ActionTimeout 屬性 (NMO) 來定義逾時值。
- 如果您以程式設計的方式定義含條件式動作之排程規則,請利用 Microsoft.SqlServer.Management.Nmo.SubscriptionConditionScheduledRule.ActionTimeout 屬性 (NMO) 來定義逾時值。
請參閱
概念
定義事件規則
定義動作
定義條件動作
定義訂閱規則
定義事件類別的紀事輯