移动系统中离线数据技术研究
2018-11-22唐广花李强
唐广花 李强
摘 要:文章通过对移动应用中离线数据技术的研究,结合电力、公路等外业管理系统的业务需求,提出了移动应用系统中采用离线数据技术的总体解决方案,从而解决当前移动应用系统在信号不稳定区域的应用问题。
关键词:外业管理;离线数据;移动应用
中图分类号:TP393.02 文献标志码:A 文章编号:2095-2945(2018)31-0045-02
Abstract: Based on the research of off-line data technology in mobile application and the business requirement of electric power and highway field management system, this paper puts forward the overall solution of off-line data technology in mobile application system, thus solving the application problem of the current mobile application system in the region with unstable signal.
Keywords: field management; offline data; mobile applications
1 概述
随着智能手机及其他智能移动终端的普及,伴随而来的是APP呈现爆发式增长。然而,当前大部分的APP都是在线使用,而部分行业,外业工作人员很多时候需要在崇山峻岭的野外,甚至是隧道中进行户外作业,这些地方通讯信号还没完全覆盖或者网络很不稳定,在线的APP将无法进行正常的操作,因此在这些APP中必须采用离线数据处理技术,让工作人员能够在无网络的情况下保持顺畅的数据录入及查詢工作。
2 移动应用系统离线数据技术分析
2.1 离线数据技术分析
当前,用于移动APP的离线数据存储技术的发展已经比较成熟,常见的离线数据存储技术主要有SQLite数据库技术、基于LocalStorage客户端本地文件存储技术以及IndexedDB移动数据库技术等等。
各种离线数据技术各有千秋,SQLite功能强大但操作比较麻烦,基于LocalStorage本地文件方式操作简单但是只能存储数量级较小的数据,相对而言IndexedDB既可以存储大量的数据又操作便捷,IndexedDB能够在客户端存储大量的结构化数据,数据以对象的方式进行保存和管理,IndexedDB创建了一套使用索引高效检索的API,通过API可以高效地对数据进行保存和读取,同时支持查询和搜索,所以使用IndexedDB做为移动端数据库比较合适。
2.2 离线应用系统总体方案
2.2.1 业务模式
外业人员使用移动APP基于离线状态独立开展外业处理(数据采集等),移动端APP通过本地数据库临时存储离线状态下新录入的业务数据,回到网络状况好的环境下,启动数据同步,将移动端数据提交到服务器数据中,内业人员及管理人员通过PC端对数据进行后续的处理及应用。
2.2.2 实现思路
移动端APP基于IndexedDB数据库存储数据,建立移动端与服务器端的数据操作规则(哪些数据在移动端进行新增和修改,哪些数据只能在Web端修改等),据此规则建立基于http的数据同步服务(Webservice)并部署至外网,移动端通过Webservice与服务器进行数据交换。
2.2.3 系统结构(见图1)
3 离线数据的实现方案
3.1 数据规则定义
为了让数据在移动端的离线操作和PC Web端的在线操作之间达到统一,而不出现混乱,就必须在数据的访问、修改、交换上定义一定的规则,从数据交换的角度,移动端的所有数据可以分为基础数据、业务数据两大类,其访问、修改及交换的规则如下:
基础数据:只能在PC端进行修改,移动端只能访问不可修改,在进行数据交换时,只需从服务器下载至移动端,无需从移动端上传服务器。
业务数据:对于本地新增的部分业务数据,在数据与服务器进行交换前可以任意修改,当数据上传服务器之后,在移动端只能查询,不能再进行编辑,只能在pc端进行修改。非本设备新增的业务数据一律不能编辑、只能查询。在进行数据交换时,需要上传本地新增的部分数据,还需要从服务器下载必要的业务数据到移动端,以备查阅。
3.2 数据结构设计
为了实现移动端与服务器数据的交换,保证交换的规则和交换效率,数据库结构的设计需要在实现原有业务需求的基础上增加以下的设计:
(1)增加一个数据交换定义表,用于记录移动端数据与服务器的交换规则,后续的数据管理及交换都按此表中的定义进行操作,数据定义表主要包含表名称、说明、交换规则等字段,表结构及数据示例如表1:
(2)在所有的业务数据库表上增加同步状态标志字
段,用来标记哪些记录为新增的(需要上传的),哪些是同步完成(不能再在移动端进行修改)的记录,字段类型为整数,移动端新增的记录该字段默认为0,同步完成后的相应记录的状态标记字段设为1,一般业务数据表结构及数据如表2:
3.3 离线数据访问实现
IndexedDB以对象的方式存取数据,它创建了一套API,通过API实现数据的基本操作,使用起来简单且直观。通过indexedDB.open(数据库名称,版本号)打开移动端数据库,建立与数据库的连接。在indexedDB中没有表的概念,而是objectStore,一个数据库中可以包含多个objectStore,objectStore是一个灵活的数据结构,可以存放多种类型数据。一个objectStore相当于一张表,里面存储的每条数据和一个键相关联。
3.4 数据同步
当移动终端处于离线操作时,采集的数据只能临时保存在本机,无法存储到更加安全的服务器上,也不能进行后续的业务处理,同时本地的基础数据等也会因为服务器上的数据更新而变得过时,所以当移动设备进入网络状况较好的区域时,需要尽快进行数据同步,将采集的数据上传至服务器,同时从服务器下载最新的其他數据。让本机和服务器的数据都保持最新状态。数据同步主要分为数据上传和数据下载两个部分,通过调用部署在服务器上的webservice的相关方法来实现。
3.4.1 数据上传
将本地新增数据上传至服务器,保存到服务器数据库中,上传数据的整个流程:(1)获取数据:根据数据定义表中定义的数据上传表清单(这些表中有可能有新增数据),逐个表进行获取数据,只读取各表中数据同步状态为0的数据;(2)数据上传:将获取到的数据转换成JSON格式或者xml格式的文件包,通过调用数据同步服务的提交数据方法,将数据提交给服务,通过服务(Webservice)将数据传输给服务器;(3)数据接收:服务器接收到上传的数据包后,进行解析,将上传的数据逐个插入到对应的表中,在数据插入前先开启事务,如果发生异常,全部回滚,返回失败标记给移动端;当全部数据正常插入后,结束事务,返回成功标记给移动端;(4)数据状态更新:当数据同步服务反馈数据同步成功后,移动端将本次上传数据对应的状态全部修改为1。
3.4.2 数据下载
下载基础数据及必要的业务数据到移动端,替换现有数据,数据下载流程:(1)请求下载:通过调用Webserice的数据下载接口,发起数据下载请求;(2)数据准备:Webservice获取服务器上最新的数据(只获取同步定义表中列举的表中的全部数据),转换成JSON格式或者XML格式的数据包;(3)数据传输:通过http协议将数据包从服务器下载至移动端;(4)数据替换:解析收到的数据包后,开启事务,将移动端对应表中原有的数据全部删除,将下载的新数据添加到对应的表中,如发生异常,回滚事务,将移动端数据还原为下载之前的状态,正常完成数据替换后,更新移动端数据同步时间。
4 结束语
本文基于外业APP系统,对数据离线技术及实现方案进行了探索,以indexdb作为移动终端的数据库,提出了离线应用系统数据处理的基本框架,从数据交换规则定义、数据结构设计、移动数据库访问、数据同步等方面对实现应用系统的离线数据处理方案进行了分析,为移动应用系统使用离线数据库提供了实现思路。
参考文献:
[1]穆鑫鑫,蒋同海,程力,等.基于JSON的离线数据同步策略及应用[J].计算机系统应用,2017,12.
[2]李青岩.Android下的移动空间数据存取方法研究[D].江西理工大学,2015.
[3]霍冰鹏.基于HTML5的离线存储技术[J].十堰职业技术学院学报,2013,4.