程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> SQL Anywhere Studio MobiLink 之(2)

SQL Anywhere Studio MobiLink 之(2)

編輯:SyBase綜合文章

實現業務規則的重要性

 

MobiLink的一個主要優點是具有利用其事件驅動的架構定制同步過程的能力。您能夠提供自定義腳本為任何特殊事件指定相應處理方法。MobiLink 提供了非常精細的控制;比如說,在涉及100個表的同步過程中,差不多有數千個不同的事件可用。當然,大多數事件無需腳本,采用默認操作即可;在本案例中,為以下事件編寫了自定義腳本:

 

事件名稱 
腳本用途 

upload_insert 
為每一個表指定如何處理每一個已上傳的插入 

upload_update 
為每一個表指定如何處理每一個已上傳的更新 

upload_delete 
為每一個表指定如何處理每一個已上傳的刪除 

upload_statistics 
為每一個表記錄上傳行數 

begin_download 
確定要下載的表和行的集合 

download_cursor 
為每一個表選擇下載的行 

download_delete_cursor 
為每一個表選擇要從遠程數據庫刪除的行的主鍵 

end_download 
記錄哪一個表和行的集合在變更前不需下載 

download_statistics 
為每一個表記錄所下載的行數 

handle_error 
對可能發生的特定錯誤進行特殊處理

 

完善的應用程序通常在同步過程上運用復雜的業務規則,Mobile Inspector也不例外。為業務規則使用的MobiLink腳本就像“僅District Supervisors可獲得District Supervisor Inspection表中的行”一樣直觀,當然也可實現更復雜的規則。例如,以下download_cursor腳本選擇Inspect 行的規則為:該行(1)被分配給特殊檢查小組,並且(2a)尚未被下載,或(2b)自上次下載後已更新。此腳本中的SELECT語句使用 BRI_RECD_SYNC_IDS 表識別已分配給該小組的行;而之前更長的begin_download腳本動態填充該表,從而使其可在類似於本例所示的腳本中使用:

 

SELECT BRI_INSPCTN.INSPCTN_ID, 

BRI_INSPCTN.STRCTR_ID, 

BRI_INSPCTN.INSPCTN_DT, 

... 

BRI_INSPCTN.APRVL_DT 

FROM WIGINS_UNIT.BRI_INSPCTN 

WHERE EXISTS 

( SELECT * 

FROM WIGINS_UNIT.BRI_RECD_SYNC_IDS, 

WIGINS_UNIT.BRI_TMP_SYNC_VRBLS 

WHERE BRI_TMP_SYNC_VRBLS.SESSION_ID 

= TO_NUMBER ( USERENV ( SESSIONID ) ) 

AND BRI_RECD_SYNC_IDS.GLOBAL_DB_ID 

= BRI_TMP_SYNC_VRBLS.GLOBAL_DB_ID 
-- for this remote 

AND BRI_RECD_SYNC_IDS.STRCTR_ID 

= BRI_INSPCTN.STRCTR_ID 
-- matches on structure id 

AND BRI_RECD_SYNC_IDS.INSPCTN_ID 

= BRI_INSPCTN.INSPCTN_ID 
-- matches on inspection id 

AND ( BRI_RECD_SYNC_IDS.FRST_DOWNLOAD_TS 

= '1900-01-01' 
-- not yet been downloaded 

OR BRI_INSPCTN.LST_MDFD_TS 

>= ? ) )
-- updated since the last synch

 

 

MobiLink服務器調用Mobilink腳本,但實際上由中心或“統一”數據庫服務器執行腳本,並為MobiLink服務器往返傳遞行。NC DOT 使用兩組Mobilink服務器和兩組腳本實現三層數據庫架構。在最上面的一級,用Oracle PL/SQL編寫的腳本運行於中心的Oracle 9i服務器;上例為此類腳本之一。行被傳遞到中心站點處運行的Mobilink服務器,並從那裡傳遞到檢查辦公室的小組負責人的平板電腦上。

 

 

 

在現場,有另一個在每位小組負責人的平板電腦上運行的Mobilink服務器。該服務器調用運行在同一台電腦上的ASA數據庫服務器中的SQL腳本;這些行傳遞到MobiLink服務器,並從那裡通過無線連接傳送給小組成員。通過這樣的設置,小組負責人的數據庫在以Oracle同步時作為遠程數據庫,而在與小組成員同步時作為統一數據庫。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved