管理資料管理

現在,您已經瞭解 Weave 的主要元件了,接著讓我們來探討一些功能在高階層面的處理方式。

Nest 生態系統中幾乎每天作業的所有功能都會對應至資源和特性,屬於 Weave 結構定義的一部分。Data Management 設定檔會管理使用發布訂閱模型的所有特徵要求。這些要求是資料管理設定檔的專屬訊息

在這個模式中,發布者會宣傳特性 (待觀看的資料),而訂閱者對所發布特徵的變動 (正在觀看的資料) 做出反應。這項功能稱為即時特徵管理

資料管理設定檔是 Weave 的主軸,一般稱為 Weave Data Management (WDM)。

要求

要求 是 WDM 即時特性管理的關鍵元素。「要求」是一種特性的「標準要求」,並包含預期回應。

標準請求分為三種:

  • 通知 標準要求告知訂閱者某項特性特徵,或與該特性有關的特定事件。
  • 更新標準要求以變更特性屬性的狀態。
  • 查看 標準要求以查看特性特徵。

通訊協定角色

WDM 通訊協定角色分為兩種:發布商及訂閱者。這些角色是在特性層級指派。

發布者

WDM publisher 角色可產生一或多組結構定義版本的執行個體,並向一或多個訂閱者提供服務,並將結構定義變更的通知傳送至相關的訂閱者。這些通知是通知標準要求。

舉例來說,假設 Trait A 是由 Resource 1 發布,並由 Resource 2 訂閱。如圖 1 所示,如果 Trait A 有所變更:

  1. WDM 會將來自資源 1 的 notify 要求 傳送給 Trait A 的所有訂閱者,通知變更。
  2. 每個訂閱者都會據此更新他們的 Trait A 例項。
WDM 發布商通知要求
圖 1 - WDM 發布者要求

結構定義中其他特性也發生同樣的情況。舉例來說。

  1. WDM 會將來自資源 2 的 notify 要求 傳送至 Trait B 的所有訂閱者,通知變更。
  2. 每個訂閱者都會據此更新他們的 Trait B 例項。

訂閱者

WDM 的 subscriber 角色會查看及使用一或多個由外部發布的結構定義版本執行個體。它可以使用 update 要求來變更已發布結構定義的版本版本,或發出應用程式專屬的指令

舉例來說,假設資源 2 想要變更由資源 1 所發布的 Trait A。如圖圖 2 所示,如何變更 Trait A:

  1. WDM 會將 update 要求 從資源 2 傳送至資源 1,以要求對 Trait A 進行變更。
  2. 資源 1 的「小點 A」已變更。
  3. WDM 會將來自資源 1 的 notify 要求 傳送給 Trait A 的所有訂閱者,通知變更。
  4. 每個訂閱者都會據此更新他們的 Trait A 例項。
WDM 訂閱者檢視與更新
圖 2 - WDM 訂閱者要求

訂閱者也可以傳送 view 要求 給該特性的發布商,藉此查看該特性的 屬性,並且讓這些特性的例項與發布者同步。

訂閱類型

WDM 訂閱分為兩種類型。訂閱是透過訂閱 要求建立。圖 3 說明建立單向訂閱的基本訊息流程。

WDM 單程訂閱
圖 3 - WDM 單向訂閱

單程

單向訂閱項目包含訂閱者向一或多個發布商發出的要求。例如從行動裝置擷取住家狀態 (結構) 的行動裝置。

共同

相互訂閱是指資源相互訂閱,而每個資源都同時是發布者和訂閱者。以 Nest Guard 和 Nest Detect 為例,這是 Nest Secure 系統的一部分。雙向訂閱可讓兩種資源管理已發布的結構定義,並以效率更高的方式管理訂閱項目的健康狀態和有效性,且效率比兩種單向訂閱項目更高。

範例

我們來看看一個簡單的範例,說明 WDM 如何使用行動應用程式處理裝置語言代碼的變更。

這個範例中有三個資源和兩項特性,如圖 4 所示:

  • 裝置 (訂閱者)
  • 服務 (發布商)
  • 行動應用程式 (訂閱者)
  • 個地區功能特性 個可用的語言代碼屬性
  • 語言代碼設定 有效語言代碼屬性

這兩種特性都會由 Service 資源發布,並由裝置和行動應用程式資源訂閱。每個訂閱者都會以單一訂閱項目的形式,在 Service 資源上向特性發布商進行訂閱。

這個範例中的所有資源都屬於同一組的 Weave 布料

WDM 範例
圖 4 - WDM 範例

更新流程

假設使用者使用其行動應用程式,透過已連結的行動應用程式將裝置的語言代碼從 en_US 變更為 fr_FR。如圖 5 所示,WDM 內的更新流程如下:

  1. 行動應用程式資源 (訂閱者) 向 Service 資源 (發布商) 傳送 update 要求 ,以將 Locale Settings 的「有效地區」屬性設定變更為 fr_FR,這是 Local Capility 特性的「Local 語言代碼」屬性的有效值之一。
  2. Service 資源會在本機結構定義中,變更 Locale Settings 特性的 Active Locale 屬性。
  3. Service 資源會將「通知」要求傳送至 ,通知任何變更相關設定的本機訂閱者。
  4. 裝置和行動應用程式資源 (訂閱者) 都會收到 Service 資源的通知要求 ,並在本機結構定義中更新 Local Settings 設定特性的 Active Locale 屬性。
WDM 更新流程序列
圖 5 - WDM 更新流程

WDM 的優點

如果你只想變更行動應用程式的語言代碼,則情況可能相當複雜。不過,只要將版本結構定義、發布訂閱模式和要求結合在一起至 WDM 設定檔,Weave 就能確保所有資源的資料完整性。

此外,它也能確保即時性,因此只要重新啟動裝置,就會立即通知所有訂閱者其已發布的特性,並觀察訂閱特徵的狀態,並在結構定義中反映所有狀態,而且功能不會遺失。

不再訂閱

如果資源取消了該特性,就會保留該屬性的最後一個已知版本。該發布商不會再收到該發布商的通知 請求 但是還是可以傳送更新請求 給該發布商

即使是從未訂閱的特性,也可以向該要求傳送資源。舉例來說,某項資源可能不需要瞭解特性的狀態,但可能會傳送 update 要求 來變更該特性的變動以回應外部事件。

重點回顧

您學到的內容:

  • Weave Data Management (WDM) 是即時特徵管理的 Weave 設定檔,可確保所有資源的即時性和資料完整性
  • 要求 是針對標準性操作的標準要求,有預期的回應
  • WDM 具有兩個通訊協定角色:
    • 出版商 — 特定特性的可靠資料來源,可傳送 notify 要求
    • 訂閱者:觀察已發布的結構定義、傳送 view update 指令 要求
  • WDM 提供兩種訂閱模式:
    • 單向 - 要求從訂閱者傳送到發布商
    • 雙向 - 裝置互相訂閱
  • 訂閱項目是由訂閱要求所建立
  • 即使沒有訂閱,資源也可以傳送 WDM 訊息到特性訊息

如需詳細資訊,請參閱: