(以下內容來自開發者分享,不代表 OpenHarmony 專案群作業委員會觀點)
成翔
OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)作為分布式作業系統,讓多個設備之間能夠相互感知,進而整合成一個超級終端,從而實作設備與設備之間取長補短、相互幫助,為用戶提供自然流暢的分布式體驗,
那么超級終端中,設備的能力和狀態如何管理?設備之間如何進行資訊協同?要回答這些問題,就不得不提我們本期的主角——DeviceProfile,
一、什么是DeviceProfile?
超級終端中的設備之間如何能實作取長補短、相互幫助?首先,就必須知道每個設備的能力,以及設備是否在線,對此,OpenHarmony 提出了“設備畫像”,也就是通過 DeviceProfile 來記錄設備的能力和狀態等資訊,
DeviceProfile 是設備硬體能力和系統軟體特征的管理器,記錄的典型設備資訊有設備型別、設備名稱、存盤容量、是否折疊屏、有無螢屏、解析度、設備安全等級、設備 OS 型別、OS 版本號等,
(備注:DeviceProfile 支持分布式部署在多個設備上,所以 DeviceProfile 也稱為分布式 DeviceProfile)
二、DeviceProfile的組成結構
接下來,我們來看看 DeviceProfile 的組成結構,
圖1 DeviceProfile的組成結構
如圖 1 所示, DeviceProfile 主要包含以下模塊:
? 資料管理:提供設備資訊的插入、洗掉、查詢、同步等資料管理功能;
? 訂閱管理:訂閱和取消訂閱遠端設備的同步完成事件和資料變更事件;
? 安全管理:管控本地設備 DeviceProfile 的訪問權限,保障資料在可信范圍內獲取,
三、DeviceProfile的典型業務流程
分布式 DeviceProfile 基于分布式軟總線、分布式資料管理、分布式 Profile 等技術特性,構建統一的設備資訊管理機制,支持對設備資訊的插入、洗掉、查詢、跨設備同步、同步完成及資料變更事件監聽等操作,
圖 2 展示了兩個設備的分布式 DeviceProfile 及其內部業務流程,
圖2 分布式DeviceProfile
在介紹業務流程之前,先讓我們來認識一下圖 2 中涉及到的幾個模塊,
? DP Client 和 CS(Content Sensor)都是 DeviceProfile 一部分,DP Client 是 DeviceProfile 的客戶端,其他服務可以通過 DP Client 來呼叫 DeviceProfile 的介面進行資料同步、資料變更等,CS 負責采集本設備的設備資訊;
? HiChain:設備互信認證服務,管理設備的可信群組;
? 分布式資料管理服務:DeviceProfile 通過分布式資料管理服務插入、更新、查詢、洗掉及同步設備資訊,
接下來,我們就來詳細介紹分布式 DeviceProfile 的典型業務流程,
1. 插入/洗掉本地設備資訊
CS 模塊定期探測本地設備的能力資訊,當設備能力發生變化時,CS 發送給本地 DeviceProfile,本地 DeviceProfile 再通過分布式資料管理服務插入或更新設備資訊,
當設備的某項能力很久未使用,本地 DeviceProfile 會通過分布式資料管理服務洗掉設備資訊,
設備資訊插入的內部流程圖如圖 3 所示,本地 DeviceProfile 通過 PutDeviceProfile 介面,請求寫入一條設備資訊記錄,如果資料庫已經初始化完成,DeviceProfileStorageManager 會直接呼叫 OnLineSyncTable 的 PutDeviceProfile 寫入資料庫,如果資料庫經初始化未完成,則先將資料寫入臨時快取,等初始化完成后再寫入資料庫,并清理快取,
圖3 設備資訊插入流程圖
2. 跨設備同步設備資訊
跨設備同步設備資訊分為兩種場景:
(1)設備上線時自動觸發同步
如圖 2,當 Device B 上線時,Device A 的 DeviceProfile 會從分布式軟總線收到上線通知,DeviceProfile 的安全管理模塊通過與 HiChain 互動,獲知 Device B 在可信群組內,此時,自動觸發同步,Device A 將自己的設備資訊推送給 Device B 實作同步,同樣的,Device A 上線時,Device B 也會收到上線通知,觸發 Device B 主動推送自己的設備資訊給 Device A 實作同步,
(2)通過 DP Client 呼叫介面觸發同步
系統服務也可以通過 DP Client 呼叫 SyncDeviceProfile 介面,觸發兩個設備的分布式資料庫的資料同步,
跨設備同步設備資訊的內部流程如圖 4 所示,設備 A 的 DeviceProfile 通過 SyncDeviceProfile 介面發起同步請求,再通過 CheckTrustGroup 介面獲取本設備(即設備 A)和需要同步設備(即設備 B)的可信群組資訊,如果兩個設備的 GroupType 型別為 1(同賬號組網)或者 256(點對點無賬號組網),并且 Visibility(可見性)為 public,則說明兩個設備之間可信,設備 A 將自己的設備資訊推送給設備 B,
圖4 跨設備同步設備資訊
3. 查詢設備資訊
跨設備同步設備資訊之后,本地設備上除了自己設備的資訊,還有遠端設備的資訊,因而,在本地設備上就可以查詢本地和遠端設備資訊,DeviceProfile 通過 deviceid 來判斷是否為遠端設備,DeviceProfile 提供的查詢介面為 GetDeviceProfile 介面,具體查詢流程如圖 5 所示,
圖5 查詢遠端設備資訊
4. 訂閱同步完成/資料變更事件
DeviceProfile 提供兩類事件的訂閱和取消訂閱功能:
? 同步完成事件
跨設備同步設備資訊時,支持訂閱同步完成事件,比如 Device A 同步 Device B 的設備資訊,如果 Device B 訂閱了同步完成事件,則同步完成后 Device B 會收到 Device A 發送的同步完成通知,如果 Device B 取消訂閱同步完成事件,則后續同步完成后不再收到通知,
DeviceProfile 提供的同步完成事件訂閱介面為 SubscribeProfileEvent 介面,取消訂閱的介面為 UnsubscribeProfileEvent 介面,
? 資料變更事件
DeviceProfile 支持遠程訂閱資料變更事件,比如,Device B 可以訂閱 Device A 的資料變更事件,當 Device A 的資料發生變更,Device B 會收到資料變更通知,如果 Device B 取消訂閱資料變更事件,則后續不再收到資料變更通知,
DeviceProfile 提供的資料變更事件訂閱介面為 SubscribeProfileChange 介面,取消訂閱的介面為 SubscribeProfileChange 介面,
同步完成事件、資料變更事件的訂閱流程相似,圖 6 展示了同步完成事件的訂閱流程,
圖6 同步完成事件的訂閱流程
四、結束語
本期我們介紹了 DeviceProfile 的概念、組成和典型的業務流程,你是否已經了解了呢?
還想深入了解的開發者,可以參考以下鏈接查看 DeviceProfile 的實作代碼和介紹:https://gitee.com/openharmony/device_profile_core

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464109.html
標籤:其他
