APP下载

基于Android的电子表单构件的研究与实现

2015-12-23武友新

计算机工程与设计 2015年7期
关键词:表单数据模型控件

胡 星,武友新

(南昌大学 信息工程学院 计算机科学与技术系,江西 南昌330031)

0 引 言

目前,对于不同移动端的应用系统,其电子表单[1]的设计与实现主要是基于原生控件和移动中间件[2]。原生控件是Android系统、iOS系统、Windows Phone等智能手机系统自带的一些原生控件,而移动中间件是基于构件模型,对智能手机的一些原生功能进行了构件化和模块化。

基于智能手机系统的原生控件来设计电子表单,往往是根据不同的功能需求设计出不同的电子表单,每个电子表单都需要单独地进行设计和编码。

基于移动中间件电子表单的设计和开发,主要是用HTML、CSS和JS等相关技术。移动中间件虽然是基于构件模型,但电子表单的设计与开发是基于WebKit浏览器引擎,电子表单主要是由Html元素构成,而不是Android原生控件构成,这样电子表单UI元素加载会延迟,调用手机底层功能缓慢,交互性较差。

目前市场上还没有很成熟的专门针对移动应用的第三方电子表单的软件系统。软件构件普遍存在于计算机软件的开发和应用当中[3],本文是在软件构件的基础上,遵循软件构件的设计原则[4],研究基于Android的电子表单构件模型设计、电子表单构件的实现技术和方法。

1 电子表单构件模型的设计

在讲述电子表单模型的设计之前,先简单介绍下XForms[5],XForms是下一代的基于Web的数据处理技术规范,其可替换传统的HTML 表单,使用XML 数据模型和呈现元素。XForms将电子表单分成3个逻辑块:模型、表现和提交协议,其实就是MVC的设计模式。

根据XForms模型的设计原理,电子表单模型的设计采用MVC的软件架构模式,把电子表单构件模型[6]分为3个基本部分:模型 (model)、视图 (view)和控制器 (controller)。模型为数据模型,视图为电子表单控件,而控制器包括通用数据接口和数据处理机制两个部分。数据模型定义了电子表单数据的结构化模型和数据交互协议,电子表单控件是模块化后的自定义控件和系统原生控件,控制器主要是实现电子表单与服务端的数据交互,主要包括通用数据接口和数据交互机制两部分。

因此,电子表单构件模型可细化为数据模型、模块化控件、通用数据接口、数据交互机制4个主要部分。电子表单构件模型和电子表单构件的实现技术两部分构成了电子表单构件,电子表单构件的实现是基于Android操作系统,由此得到电子表单构件系统框架如图1所示。

图1 电子表单构件系统框架

1.1 数据模型

数据模型是 以XML[7,8](extensible markup language)的形式对电子表单数据进行模块化定义,并对数据与服务端交互协议进行了定义,所以数据模型主要包括数据域和数据交互协议两个部分,如图2所示。

图2 数据模型

图2中数据模型中节点的前缀mf是mobile form 的缩写,由图可知根节点是mf:model,根节点下定义了数据域节点mf:region和数据交互协议节点mf:interaction。

数据域节点mf:region的子节点定义了一个数据对象节点object,也可以定义多个数据对象节点,对象节点object下又定义了自己的属性节点,属性节点中定义了属性节点id和属性数据类型type。通过数据对象节点的id和属性节点的id和数据类型type,数据对象可以与电子表单数据进行绑定。

数据交互协议节点mf:interaction用于定义电子表单与服务器的数据交互协议,属性值包括服务器地址url,交互方式post或者get,节点id。

数据域节点可以包含表单数据,也可以包含url地址所需的参数数据。当数据域节点包含参数数据时,首先需要将参数数据组装到url地址中,然后以post或者get的方式与服务器进行交互。下面以移动应用的登陆模块进行简要说明。

移动应用的登陆模块作为一个简单的电子表单,该电子表单包含用户名输入、密码输入和登陆验证这3个部分。这样登陆电子表单的数据模型定义如图3所示。

图3 登陆模块数据模型

该数据模型的数据域是user节点信息,user节点包括name和password两个子节点,其数据类型为string,表示了登陆表单中用户名输入、密码输入显示的数据内容。数据交互协议表示了进行用户登录验证的方式,该数据模型定义的提交方式为post。当用户输入用户名name和password,点击登录验证按钮时,name和password 分别装载到数据域user节点的子节点name节点和password节点中,然后将其组装到url地址中进行登陆验证。

1.2 模块化控件

控件模块化是将电子表单中的常用控件进行模块化和封装,并在控件模块化的基础上,重新定义数据的引用。

电子表单可以分为电子表单头和电子表单体两部分,电子表单头包含编码方式,电子表单体包含命名空间、自定义控件、手机系统原生控件。

电子表单是基于XML,其符合XML1.0的规范,编码方式采用UTF-8方式,使用XML语言描述如下:

电子表单体包括命名空间、自定义控件、系统原生控件。命名空间表示控件的属性资源,对系统属性资源或者自定义属性资源的引用。自定义控件是在原生控件的基础上进行扩展和封装,以满足UI的设计要求,而原生控件则是手机系统自带的一些控件,不需要重新定义数据引用。自定义控件需要重新定义数据引用,可以增加属性ref,表示对数据模型中数据域的引用。根据电子表单结构图,结合XML特性,电子表单体的树形结构可以描述如图4所示。

图4 电子表单体树形结构

1.3 通用数据接口

通用数据接口是指将电子表单从服务端获取数据的接口和电子表单提交数据到服务端的接口通用化。

电子表单显示的数据,其获取的方式是通过调用服务器端编写的通用数据接口代码,调用的方式在数据模型中的mf:interaction节点中进行了定义。通用数据接口包括服务端的数据组装接口,客户端数据调用接口,客户端的数据解析接口。

表单数据在服务端是以表单对象的形式存在的,表单对象的属性类型可能是整数类型、字符串类型或者集合类型。因此,服务端的数据组装接口将查询得到的表单对象转化成XML数据流的形式时,需要在XML 数据流的节点属性上中加上数据类型标志type,用来表示该属性对应的数据类型。

客户端数据调用接口是获取表单数据流的通用化方法,而客户端数据解析接口是将获取的表单数据流解析成表单对象,作为电子表单的数据集进行加载。

根据电子表单从服务端获取数据的接口,可以逆向得到电子表单提交数据到服务端的接口,通用数据接口如图5所示。

1.4 数据交互机制

数据交互机制主要包括数据处理机制、数据绑定机制、数据展现机制3 个部分,下面对这3 个部分进行详细的说明。

图5 通用数据接口

1.4.1 数据处理机制

数据处理机制主要是指如何将客户端数据解析接口获取的表单对象数据装载到数据模型的数据域中,或者将数据域的数据解析成表单对象传递给客户端数据解析接口。

1.4.2 数据绑定机制

数据绑定机制主要是指数据域中的数据如何与电子表单中的控件进行关联。当数据域中的数据与电子表单中的控件进行关联后,相当于在数据域和电子表单间建立了一座桥梁,实现了数据域和电子表单控件数据的互通。

1.4.3 数据展现机制

数据展现机制是建立在数据处理机制和数据绑定机制的基础上,主要是指如何将数据域的数据装载到电子表单控件中,或者将电子表单控件数据装载到数据域中。

2 电子表单构件模型的实现

本文研究的电子表单构件的实现是基于电子表单构件模型,以Android开发技术[9]为基础。下面从电子表单构件模型的组成来介绍电子表单构件模型的实现。

2.1 模块化控件

电子表单组成控件的模块化主要是对控件的属性集和数据操作进行扩展。数据集的扩展主要包括重新定义原有属性集和增加数据引用属性两部分,数据操作扩展是将控件数据注入到数据模型的数据域中,也可以从数据模型的数据域中获取数据注入到控件中。

Android中控件自定义属性集要在XML 文件中进行注册,属性集的注册方法如下:

电子表单可以作为一个整体控件,需要增加数据模型引用属性model,数据交互协议属性action,数据交互协议方法属性method。自定义控件需要增加数据引用属性ref,同时建立ref到控件id的映射,即可以根据属性ref得到控件id值,也可以根据控件id值得到属性ref值。自定义控件和电子表单属性注册方法如图6所示。

图6 自定义属性注册

图6中的declare-styleable节点的name值是该控件对应的视图类的类名,attr节点的name值是属性名,fomat是属性值的数据类型。在XML文件中注册了属性集后,可以在该控件的视图类中通过属性名获取属性值,将属性值注入到控件或者数据模型的数据域中。

电子表单和自定义控件注册了自定义属性后,在Android布局文件引用格式是:包名+类名。

2.2 通用数据接口

通用数据接口分为服务端的数据组装、客户端的数据调用和数据解析接口3个部分,下面分别介绍这3个接口的实现。

服务端的数据组装接口主要是将查询到的表单对象数据组装成XML格式的数据流,或者将XML 格式的数据流解析成表单对象,运用了XStream[10]技术。通过XStream技术编写数据组装接口方法,而运用WebService技术可以将数据组装接口方法部署到Axis[11]服务器上。Axis是一个独立的SOAP[12](简单对象访问协议)服务器和一个嵌入Servlet引擎的服务器。客户端通过Post或者Get请求调用Axis的WebService接口方法,由此得到客户端数据调用接口如图7所示。

客户端数据调用接口图中HttpPost/HttpGet以HTTP协议的形式调用服务端的WebService方法,其包括URL和FormEntity两部分。

图7 客户端数据调用接口

URL对应于数据模型中数据交互协议节点属性action的值url,url一般是WebService接口方法的地址,其向服务端请求的方式是post或者get。

FormEntity包括Params和Result两部分,Params是向服务器发送请求所需的参数,可以是数据模型中数据域的值,也可以是自定义的参数变量值,而Result是服务端发送给客户端或者客户端提交给服务端的XML数据。

客户端数据解析接口则是将从客户端数据调用接口获得的XML数据流运用XStream 技术解析成表单对象,或者将从数据处理机制获取的表单对象解析成XML数据流。

2.3 数据交互机制

数据交互机制包括数据处理机制、数据绑定机制、数据展现机制3个部分。因为数据展现机制是建立在数据处理机制和数据绑定机制的基础上,下面将先介绍数据处理机制和数据绑定机制的实现,最后介绍数据展现机制的实现。

2.3.1 数据处理机制

数据处理机制的实现包括将表单对象装载到数据域,或者将数据域中的数据转化成表单对象。

表单对象对应类的类名,属性名和对象节点的名称,属性节点的名称保持一致,而表单对象的属性数据类型和属性节点的type值保持一致。表单对象装载到数据域,主要运用了DOM[13,14](document object model)技术。数据对象转化成表单对象,除了用到了DOM 技术外,还用到了JAVA 反射机制,得到的数据处理机制的实现方法如图8所示。

2.3.2 数据绑定机制

模块化控件的实现,可以自定义数据引用属性,数据绑定机制正是在这些控件上定义数据引用属性,用于绑定数据域中的对象数据。

构成电子表单的自定义控件增加了数据引用属性ref,ref根据对象节点id和属性id绑定数据域中的对象数据。图3登陆模块的数据模型,登陆电子表单与该数据模型的对象数据绑定如图9所示。

图8 数据处理机制

图9 登陆电子表单

2.3.3 数据展现机制

数据展现机制的实现是建立在数据处理机制和数据绑定机制的基础上,主要包括将数据域中的数据装载到电子表单,或者将电子表单的数据转载的数据域中,主要运用了DOM 技术。

电子表单从数据域获取数据并显示,可以分为下面3个过程:

(1)通过DOM 技术获取数据域中的数据对象结构图;

(2)根据电子表单控件中的ref值和数据对象结构图获取对象节点的属性值;

(3)控件属性id和属性ref存在映射关系,根据属性ref获取控件id值并将对象节点的属性值装载到控件上。

电子表单的数据装载到数据域中,也可以分为下面3个过程:

(1)根据属性ref获取控件id并根据控件id获取控件装载的数据;

(2)通过DOM 技术获取数据域中的数据对象结构图;

(3)根据电子表单控件中的ref值和数据对象结构图将控件数据转载到数据域中的数据对象。

根据上面数据展现机制的实现过程,得到数据展现机制如图10所示。

图10 数据展现机制

3 结束语

本文中Android的电子表单构件的研究与实现,遵循了软件构件的设计原则,定义了电子表单构件模型。构件模型中的数据模型进行了结构化定义,组成控件进行了模块化处理,电子表单的数据获取方式进行了通用化处理,数据交互机制进行了整体化和模块化处理。这样,做到了电子表单模型和电子表单通用控件的重用,简化了电子表单的设计,提高和增强电子表单在不同的应用系统中的自适应度及通用性,提高了代码的复用性。

[1]ZHANG Xiangyu.Analysis and design of next generation eform system [J].Beijing:Beijing University of Posts and Telecommunications,2008:6-8(in Chinese).[张翔宇.新一代电子表单系统的分析与设计[D].北京:北京邮电大学,2008:6-8.]

[2]WU Qing,YIN Yuyu.Model and methodology of adaptive middleware for ubiquitous computing [M].Hangzhou:Zhejiang University Press,2010:10-16 (in Chinese).[吴卿,殷昱煜.面向普适环境的自适应中间件模型与方法 [M].杭州:浙江大学出版社,2010:10-16.]

[3]XIA Yubin,WANG Ling.Ruanjian Goujian Jishu [M].Beijing:Tsinghua University Press,Beijing Jiaotong University Press,2011:5-10 (in Chinese). [夏榆滨,王玲.软件构件技术 [M].北京:清华大学出版社,北京交通大学出版社,2011:5-10.]

[4]LI Ya.Research on the application of software reuse technology based on components[D].Chongqing:Chongqing University,2007:31-33 (in Chinese).[黎娅.基于构件的软件复用技术应用研究 [D].重庆:重庆大学,2007:31-33.]

[5]SONG Quanwang.Visual smart form system based on Xforms[D].Beijing:Beijing University of Posts and Telecommunications,2011:7-15 (in Chinese).[宋全旺.基于Xforms标准的可视化智能表单系统原型的研究与设计 [D].北京:北京邮电大学,2011:7-15.]

[6]LUO Lie.Design and implementation of electronic form model[J].Jiangxi Communication Science,2011 (3):2-4 (in Chinese).[罗烈.电子表单模型的设计与实现 [J].江西通信科技,2011 (3):2-4.]

[7]Pardede E,Rahayu JW,Taniar D.XML data update management in XML-enabled database [J].Journal of Computer and System Sciences,2008,74 (2):170-178.

[8]LIN Xudong.Semantic-based research on XML query and normalization [D].Beijing:Beijing Jiaotong University,2010:17-21 (in Chinese).[蔺旭东.基于语义的XML 查询及规范化研究 [D].北京:北京交通大学,2010:17-21.]

[9]WU Xiangxiang.Research and application of software development approaches based on android platform [D].Beijing:Beijing University of Posts and Telecommunications,2011:6-8(in Chinese).[吴想想.基于Android平台软件开发方法的研究与应用 [D].北京:北京邮电大学,2011:6-8.]

[10]Walnes J,Schaible J,Talevi M,et al.XStream[DB/OL].http://xstream.codehaus.org,2011.

[11]ZHAI Feng, HAO Kegang,GE Wei.Developing Web services on axis with SOAP [J].Computer Applications and Software,2008,25 (11):157-158 (in Chinese). [翟峰,郝克刚,葛玮.基于SOAP构建Axis上的WebServices[J].计算机应用与软件,2008,25 (11):157-158.]

[12]ZHANG Qiyong,WANG Dong.Research on XML &SOAPbased information exchanging platform [J].Computer Applications and Software,2007,24 (10):39-40 (in Chinese).[张奇勇,王东.基于XML 及SOAP 的信息交换平台研究[J].计算机应用与软件,2007,24 (10):39-40.]

[13]WEI Xiaojuan,RAN Jing,LI Aihua,et al.XML parse and application based on DOM [J].Computer Technology and Development,2007,17 (4):86-87 (in Chinese).[蔚晓娟,冉静,李爱华,等.基于DOM 的XML解析与应用 [J].计算机技术与发展,2007,17 (4):86-87.]

[14]LIAN Xiaogang.Design and implementation of Web information extraction based on DOM [D].Wuhan:Huazhong University of Science and Technology,2009:13-16 (in Chinese).[连小刚.基于DOM 的Web信息抽取系统设计与实现 [D].武汉:华中科技大学,2009:13-16.]

猜你喜欢

表单数据模型控件
电子表单系统应用分析
面板数据模型截面相关检验方法综述
关于.net控件数组的探讨
浅谈网页制作中表单的教学
加热炉炉内跟踪数据模型优化
ASP.NET服务器端验证控件的使用
面向集成管理的出版原图数据模型
动态表单技术在教学管理中的应用*
基于Java可视化测绘生产流程表单的设计及实现
一种顾及级联时空变化描述的土地利用变更数据模型