EEP App離線功能
訊光科技
前言
不少客戶問到EEP App是否具備離線數據的功能,當初在規劃Cordova方案時,就考量了這個需求。離線數據的應用有很多種,一種是連線時將輕量數據儲存於裝置中,讓裝置離線時可以短暫使用,並在裝置連線時可以同步數據;另一種是在裝置中安裝輕型的資料庫,裝置直接使用裝置中的數據,系統的背景須於連線時去執行數據的同步動作。當然前者比後者來的簡單方便許多,只是功能就沒有後者強大,端看企業要何種應用。
EEP App所提供的離線功能,主要還是針對第一種的輕量數據進行緩存,並且提供離線的新增/更改/刪除功能,緩存的數據可以設定同步的時機,共有每次:每次連線都同步;每天:每天同步一次;智慧:根據資料最後異動時間智慧同步。
應用
離線App的應用主要要解決兩個問題:一是使用App時可能因為沒有通訊訊號造成App無法使用;另一個問題是,需要批次輸入資料的功能,可以降低主機負荷或經常保持連線的通訊成本。除此之外,EEP的Mobile也可以讓App第一次登入後(認證User的機器與帳號),自動緩存App所要使用的一些重要資料,在離線的狀況下也可以登入並操作App,無須再重新登入或Server端的驗證,非常適合不需要經常更新資料的獨立性App應用。
離線功能
針對EEP App的離線功能,說明如下:
1. 離線讀取功能 在EEP的JQDataGrid/ JQRefval/JQSelect等有RemoteName的組件,也就是需要向主機存取資料的組件,增加了CacheMode(緩存模式)與CacheDateTimeField(緩存時間欄位屬性),其中CacheMode有多種的緩存模式,在On-Line(有網路且Server正常提供服務)的情況下:
(1) All:代表每次Online時都會重新從Server上讀取數據並保存到本地。 (2) Daily:在On-Line情況下,每天只讀取一次並保存到本地,讀過之後同一天不會再去讀取,改用本地資料。 (3) Smart:設定一個日期時間欄位(以CacheDateTimeField屬性來設定),用來記錄該資料的最新時間,當Server的資料比本地資料更新的時候,會自動重新讀取並保存下來。 (4) None:不進行Cache的緩存處理。如果在Off-Line(沒有網路或Server無法正常服務)的情況下,所有的數據都會直接從本地直接讀取。 CacheDateTimeField,這個屬性用來設定一個緩存時間欄位名稱,當CacheMode為Smart時,須指定一個資料時間欄位,系統會用Max(CacheDateTimeField的欄位)來做為該資料的最新日期時間來與本地的數據比對。
2. 離線login功能第一次Login需要Online進行帳密確認,第二次以後可以不必Login,並可以自動Cache下Menu功能表單,打開功能項目時因為頁面在本地,所以即使在Offline的情況下,也可以使用本地的資料來讀取,當然條件是之前已經有Cache到本地來,所以在安裝APP第一次Login時,最好將重要的基本資料進行一次Cache即可,可以開發一個數據下載的頁面並使用上述的離線讀取功能即可。
3. 離線更改功能可以在JQDataGrid上的Toolitem中,增加一個Name為grid-offlineSend的按鈕,系統會自動產生一個"離線異動"的按鈕,當User在離線狀態下,新增/更改/刪除資料時,該按鈕會自動累加異動Count(會有一個數字呈現),當在Online狀況下,User可以按下這個按鈕來送出離線更改的資料到Server上,這樣就可以進行離線的新增/更改/刪除的功能了。
案例設計
我們就以盤點系統為例,並以手機的Mobile來做一個介面,盤點人員只要輸入年月即可以查詢出當月所要盤點的料品帳上庫存,盤點人員可以在離線的狀態下輸入盤點量,在線上回存到資料庫中。設計方式說明如下:
1. Table Schema說明,如下: Inventory (YearMonth年月,ItemNo品號(Key),ItemName品名,Position儲位,AccQty庫存量,InvQty排點量)。
2. 使用Wizard拉出ServerPackage及JQMobileForm,如下:
3. 在Mobile表單的DataGrid中,設定DataGrid.CacheMode屬性為All(代表每次都會重新抓取資料)。
4. 在DataGrid的ToolItem增加一個按鈕,請設定Name為Grid-offlineSend,如下,用來顯示OnLine/Offline的狀態,並可以透過這個按鈕回存資料。
5. 轉成Cordova的APK(或IPA)之後,發佈到手機上然後Login打開盤點作業,可以取得盤點的資料。(如下圖)
6. 關閉網路離線後,打開盤點系統,一樣可以修改資料,但上面的Icon會顯示"Offline"的狀態,此時,盤點者進行盤點輸入工作(如下圖),並會累加Icon上面的修改資料數。
7. 接著重新開啟網路並重新登入並開啟頁面時,離線資料的狀態還會保留著,只要在On-Line情況下按下這個Icon就可以回存資料到主機。(如下圖)
8. 如下圖,按下"Reflash"重新整理後,抓取到相同資料,更新完畢。
結語
有了EEP App的離線功能,我們就可以利用手機App來實現一些離線應用,如偏遠或網路品質很差的地方進行離線的臨時作業;或是提供不常異動的離線資料供使用者查詢;可以用來提升App大量線上讀取數據的效能,讓大多數的基本數據先行緩存;離線系統也可以用來降低On-Line系統每個用戶所付出的高額通訊成本等等。當然,以目前EEP的離線功能僅限於輕量數據的應用,未來也許會隨著本地裝置資料庫的普及,來與裝置資料庫互動同步,來處理更大量數據的離線處理。 |