第四章 系統設計與實作
4.3 系統元件介紹
4.3.1 Profile Management
系統中,主要有兩種 profile,分別為 user profile 和 group profile。User profile 主要是儲存使用者的基本資料和偏好,以及該名使用者對於群組通訊的相關設定,如 即時通訊軟體的優先權設定、有人將該使用者加為群組成員時的處理方式等。同理,
group profile 儲存 group 的基本資料和其偏好設定,如選擇成員的條件等。User profile 主要由該名使用者維護,而 group profile 則由群組的管理者所維護。
這個元件主要負責的任務有二。(1) user profile 和 group profile 的管理,(2) profile 的比對(matching)。
4.3.1.1 Profile 管理
User profile 和 group profile 是這個元件的核心,也在整個系統中,占有極大 的地位。系統中,一有份文件,稱之為「user profile metadata」,metadata 有點 server configuration file 的成份在,但在我們的系統中,metadata 主要的作用是 在描述 user profile 中,所需的資料,並且在 group profile 中,提供設定自動群組 時能夠設定的條件。如圖 7 user profile metadata 經過我們的 parser,產生使用 者介面以提使用者設定。這邊的使用者介面,主要有二部份,一個是使用者偏好設定,
二是 group profile 設定。因此,若臨時希望在 user profile 中多一些欄位資料,或 是 context-aware autogroup 時多一些條件可供選擇,我們只需透過修改 metadata 即可輕易達到,而不須大符改動程式。基於整個系統的統一及國際化考量,所有的 profile 及 metadata 以 Unicode UTF-8 作為編碼。
圖 7 User profile metadata 產生 user interface 和 group profile
圖 8 為 user profile metadata 的一個例子。主要分成三個大部份,分別由 info、
communication 和 group 標籤所描述:
(1)info:描述在 user profile 中我們希望使用者提供的資料,以圖 8 為例,我們 希望使用者提供姓名和地址,同時 info 這部份的資訊,也提供了 context-aware autogroup 的條件設定來源,舉例來說,這邊有姓名和地址,因此在設定選擇條件時,
可以設成「姓名包含陳」,將姓陳的使用者,自動組成群組。「地址包含新竹」把新竹 地區的使用者組在一個群組。當然,亦可以同時設定多個條件,如「姓名包含陳」 AND
「地址包含新竹」,新竹地區且姓陳的使用者。每個 label 標籤指明一個需使用者提供 的資訊,裡面的標籤 datatype 說明這項資訊的資料型態,目前有 string(字串)和 int(數 字)兩種,在設定 context-aware autogroup 時,若資料型態為 string,則會有「包 含」、「不包含」、「等於」這三個運算子,若資料型態為 int,那麼就有會「等於」、「大 於」、「小於」這三個運算子。
(2)communication:希望使用者提供的通訊方式,亦是目前系統所支援的通訊 管道。使用者在這邊可以設定每個通訊軟體(管道)的帳號及優先權,系統會使用優先 權最高的通訊管道傳送訊息。
(3)group:系統在群組方面所參考的依據,其結構與 info 十分類似,一個 label 標籤表示一個選項,透過這些選項的設定,系統會以使用者的期望來運作。以圖 8 為 例,ReceiveInvite 是設定「收到某人邀請你加入群組」時的動作,有三個選項可供使 用者選擇:accept、ask me、reject,當使用者選擇 accept 時,一旦收到邀請,系 統會自動幫你接受邀請;同理,若是選擇 reject,系統則會幫你拒絕;若選擇的是 ask
me,收到邀請時,系統會通知使用者,使用者再根據自己的意願選擇接受或拒絕。
圖 8 User profile metadata
圖 9 為一個 user profile 的例子。根據 metadata,user profile 有三個主要部 份,分別由 info、communication 及 group 標籤所描述,其內容主要就是由使用者 設定後的數值,將其記錄在 user profile 中。
圖 10 為一個 group profile 的例子。同樣的也是記錄通訊群組的設定。如 join_request 標籤記錄有人要求加入群組時的對應動作,圖 10 中的 join_request 值 為 accept,表示有人要求加入時,系統即接受該名使用者,將該名使用者加入此群組。
而 Condition 標籤是 context-aware autogroup 時重要的參考,每個 group profile 可以擁有零至多個 condition 標籤,有多少 condition 標籤即表示這個 group 在 context-aware autogroup 時的條件有多少,condition 中的 field 標籤,其值必定
4.3.1.2 Profile 比對
Profile matching 所要做的,就是將 group profile 和 user profile 拿來做比對,
並回傳結果。至於要比對什麼,則視情況而定,倘若是 context-aware autogroup 時的成員選擇,那麼 profile matching 所要比對的,就是將 group profile 中成員的 選擇條件與 user profile 中相關的資料逐一比較,以決定是否加入群組。
圖 9 User profile
圖 10 Group profile