王艳平 李鹏
摘要:该文主要论述了特种设备现场检验移动办公系统在没有网络情况下的数据临时存储,以及有网络情况下移动设备与应用服务器的数据同步要求,提出了DB4O作为嵌入式数据库来实现特种设备现场检验数据临时存储的方法,详细描述了MobiLink数据同步技术应用于特种设备现场检验的实现过程。
关键词:特种设备;现场检验;临时存储;数据同步
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)20-4785-03
Research on Data Synchronization for Mobile Working System of Especial Equipment Field Test
WANG Yan-ping1, LI Peng2
(1. Wuhan Institute of Especial Equipment Supervise and Test, Wuhan 430040, China; 2. Wuhan Read Software Industry Limited Compa ny, Wuhan 430074, China)
Abstract: This paper discusses the require of temporary data storage at no network signal and data synchronization between mobile equip ment and application server at good network signal for especial equipment field test and mobile working system. The method of embedded database using DB4O to realize temporary data storage for especial equipment field test is briefly introduced in this paper. The implementa tion process of especial equipment field test by applying the technology of data synchronization based on MobiLink is described in detail.
Key words: especial equipment; field test ; temporary storage; data synchronization
随着3G网络技术的快速发展及平板电脑、智能手机等移动终端的不断改进,移动办公已大量应用在各行各业中,基于3G无线传输的特种设备现场检验移动办公系统已研制成功并投入使用。但在使用过程中发现,特种设备检验现场如电梯井道内、起重机械作业现场等经常没有网络信号或信号比较弱,同时为保障特种设备注册信息、检验信息集中统一,满足国家有关特种设备动态监管要求,现场检验数据需与监管中心数据库实时传输、数据同步,导致特种设备现场检验移动办公系统无法有效应用。伴随着特种设备现场检验移动办公系统研究的深入,以及数据存储、同步处理技术的快速发展,特种设备现场检验办公系统也具备了克服这些难点的条件。一方面,大数据量的离线临时存储技术使在一些山区、井道等等没有网络覆盖的特殊地区数据采集和处理成为可能。另一方面,数据智能同步技术使数据的双向同步、单向同步、数据压缩传输等问题,得到了解决。
1数据的临时存储
数据临时存储是指检验人员在采集数据后,由于人为原因或者是数据完整性检测失败或者是网络信号原因等特殊情况下,数据没有立即同步到应用服务器上。系统会智能的对这些场景进行智能识别,同时智能的将数据存储在移动设备上的一种技术。
特种设备现场检验时,检验原始记录数据采集、检验报告数据处理量很大,既要采集使用单位、维保单位、持证人员、注册设备等信息,还要处理检验数据,因此需要充分利用移动设备的强大功能,摒弃以前采用的瘦客户端模式,大量数据处理最好在本地设备进行。另一方面,特种设备在检验现场如电梯机房、井道、底坑等网络信号通常很微弱的地方采集数据时,移动设备没必要也不能与应用服务器良好交互,数据必须临时存储在移动设备上。
该文使用DB4O作为嵌入式数据库来实现数据的临时存储。DB4O是一个嵌入式数据库引擎,是100%原生的面向对象数据引擎,在移动商务办公中得到了迅速而广泛的应用。下面是利用DB4O实现设备注册信息的示例代码。
ObjectContainer db = Db4o.openFile("xcjy.yap");
Field f = new Field();
f.setCode(getCurrentDate());
f.setParentCode("@");
f.setOrgName("使用单位名称");
f.setCode("设备注册代码");
f.setName("设备名称");//保存对象
db.set(f);}finally{
//关闭连接db.close();}
2数据同步
通常情况下,数据同步大致分为2种:一种是单向同步,即移动设备数据智能同步到应用服务器,另外一种是双向同步,即移动设备与应用服务器之间实现双向同步。
特种设备现场检验移动办公系统应用了这2种同步方式。在特种设备检验前,移动设备应智能同步到应用服务器,下载最新的特种设备注册信息,为现场检验做准备;现场检验完成后,检验信息、现场核实及实际发生变更的注册设备、使用单位、维保单位、持证人员等信息需由移动设备实时上传到应用服务器上。移动客户端会对这些临时的本地数据做完整性校验,直到移动客户端识别到网络信号,同步中间件服务器会实时检测已经通过完整性校验的数据。如果检测到数据,同步服务器会立即工作,将数据同步到应用服务器。如图1。
图1移动设备与服务器数据同步关系图
目前主要利用MobiLink Server同步服务器来实现数据的同步。MobiLink是一个基于服务器的同步化引擎,它可以通过串行口、TCP/IP、HTTP、HotSync、ScoutSync或ActiveSync连接与远程客户通信。使用象MobiLink这样的通用同步技术可以极大地削减开发费用,因为MobiLink能够处理高级的同步操作,比如瞬象(snapshot)和时间戳同步、主键维持、冲突的检测和解决等。在服务器端,所有的MobiLink同步逻辑都是通过使用后台数据库的SQL的事件处理的(MobiLink通过ODBC连接数据库,所以事实上支持所有的SQL数据库),通过使用Certicom的SSL/TLS Plus来支持公钥加密功能(使用椭圆曲线加密系统技术)。
通常检验前后数据需要智能的同步,但是对信息量最大的检验报告,依然需要手动的同步。检验完成时需通过移动设备人为的将检验报告数据与应用服务器同步,或者定期检验需要核实上一周期的检验报告情况时,是人为的将应用服务器的数据与移动设备同步。下面来看看压力容器产品监检原始记录实现过程:
public Form f = new Form("曳引驱动电梯定期检验原始记录");
f.setLayout(new BorderLayout());
tp = new TabbedPane(检验项目);//tab分页标签
Container pair = new Container();
TableLayout layout = new TableLayout(8,2);
TableLayout.Constraint constraint = layout.createConstraint();
Label l = new Label("序号");
pair.addComponent(title);
Label l1 = new Label("检验项目");
Label l2 = new Label("基本信息");
pair.addComponent(title2);
Label l3 = new Label("设计单位资格");
cbxsbmc.addItem("制造单位资质");
cbxsbmc.addItem("设计变更");
cbxsbmc.addItem("材质证明书");
cbxsbmc.addItem("材料代用");
cbxsbmc.addItem("焊接工艺评定");代码执行后效果如下图2所示。
图2压力容器产品监检原始记录
下面是通过移动设备终端与远程应用服务器进行同步的实现过程:
public String downData(String in0) throws RemoteException {
Object[] inputObject = new Object[1];
inputObject[0] = in0;
Operation op = Operation.newInstance(_qname_searchData, _type_searchData, _type_searchDataResponse);
op.setProperty(Operation.SOAPACTION_URI_PROPERTY, "");
Object resultObj;
try {resultObj = op.invoke(inputObject);
} catch (JAXRPCException e) {
Throwable cause = e.getLinkedCause();
if (cause instanceof RemoteException) {
throw(java.rmi.RemoteException) cause;
}throw e;
}String result;
Object outObj = ((Object[])resultObj)[0];
result = (java.lang.String)outObj;
return result;
}
在实现过程中,检验数据传输之前要尽量做到移动设备提前验证数据,保证数据传输到应用服务器之后是有效的、正确的。同时在数据传输时一定要注意数据压缩处理,从而可以有效的减少无线宽带占用率和通信成本。
3结论
移动设备终端数据的临时存储,以及数据同步是开发特种设备现场检验移动办公系统的重中之重,该文描述了开发特种设备现场检验移动办公系统时遇到的一些难点以及技术解决方案,希望该文对大家开发应用类似系统有所帮助。
参考文献:
[1]周全力,邹少俊,徐桂芳,等.基于3G无线传输的特种设备现场检验移动办公系统研究与应用[J].中国特种设备安全,2011(1):11-14.
[2]陈帅,刘文菊.开源世界里的面向对象数据库db4o[J].电脑知识与技术,2007(15):604-605.
[3]骆社周,刘威,赵新,等.基于Windows Mobile 5.0无线移动办公系统的设计与研发——以北京城市学院无线移动办公系统的开发为例[J].北京城市学院学报,2008(2):85-88.
[4]索红光,王雷全.智能客户端系统中数据同步策略的研究与实现[J].计算机工程与设计,2007(2):109-111.
[5]茅敏涛.基于Mobilink实现分布式数据库同步的研究[J].计算机应用与软件,2009(6):152-154.
[6]黄高磊,傅家祥.基于MobiLink移动数据库同步技术研究[J].计算机与数字工程,2008(11): 63-65.
[7]张绍成,薛建生.移动商务系统中数据有效性验证功能的客户端实现[J].辽宁大学学报:自然科学版,2009(1):52-54.