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

SQL Anywhere Studio MobiLink之二

編輯: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