新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 软件开发 > 数据库 > Sybase教程 > 正文:SQL Anywhere Studio MobiLink 之(2)

SQL Anywhere Studio MobiLink 之(2)

新客网 XKER.COM 2007-08-06 来源: Breck Carter 收藏本文

实现业务规则的重要性

 

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同步时作为远程数据库,而在与小组成员同步时作为统一数据库。 (责任编辑:卢兆林)

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐