时间:2022-06-21 10:48:00
1系统整体设计
1.1系统架构依赖于以往数据采集系统设计开发过程中积累的经验以及对育种田间信息采集系统项目需求的提取和分析,本文中所描述的系统采用C/S框架(见图1),客户端利用自身硬件条件方便、快捷地进行数据采集活动,并利用无线网络与服务器直接进行交互。系统框架分为3层,依次为服务器数据库层、应用服务层以及移动应用层。1.1.1服务器数据库层该层是所有数据的来源及归属,主要是对配置信息、育种业务数据等进行归档,提供快速查询的底层接口。本系统服务器端数据库采用的是MicrosoftSQLServer2008,这是一个全面的数据库平台,利用集成的商业智能工具提供了企业级的数据管理。1.1.2应用服务层该层是移动客户端与数据库之间的逻辑层。其负责的主要工作为:对内负责执行数据的存储、访问以及数据优化等操作;对外与移动客户端以及其它设备工具进行数据交互,并为它们提供数据服务。1.1.3移动应用层该层基于Android进行设计开发,目的在于实现多样化的育种数据的获取,为业务逻辑的正确执行提供适当的环境,协调数据采集的各项任务执行,利用WebService完成与服务器数据库之间的数据交互。另外,由于移动信号不稳定,可能导致部分数据无法及时上传,所以移动客户端需要建立数据缓存,待信号较稳定时再行传输。移动客户端的数据缓存是通过移动数据库来完成的。1.2数据库设计总结数据采集系统的特性,在数据表进行设计的过程中,可以将所需要用到的表大致分为系统表、业务数据表以及业务基础表。1.2.1系统表系统表是为了实现系统功能而设置的一些表,是维持系统正常运行的核心内容,主要包括用户信息表、用户权限表、系统功能菜单维护表等,具体如下:SysApp:业务模块信息表,记录了数据采集系统中所有业务模块的基本信息;SysMenu:业务菜单信息记录表,记录了包括菜单的显示属性、菜单级别、操作权限以及菜单属于哪一个业务模块等信息;SysUser:用户信息表,主要记录了使用系统的所有用户的基本信息;SysGroup:用户组信息记录表,记录了按照一定规则划分的用户组的基本信息;SysRoles:系统角色表,该表主要用于定义系统使用人员的角色;SysUserRoles:用户角色关联表,该表主要用于记录用户与用户角色之间的关系,简单的说就是定义用户具有什么样的系统角色;SysPermission:系统操作权限表,该表主要定义了每一个系统角色所具有的权限,包括业务模块操作权限以及数据操作权限。1.2.2业务表及业务基础表业务数据表主要是用于保存各项业务数据的,表中的给个数据项并没有实际的意义,其主要是为了保存业务数据而设定的。业务基础表是为了完成系统业务功能而设计的表,这些表主要是以外键引用的方式被其它业务数据表所使用的,各项业务都对相关的各表有很强的依赖性,是其它业务项得以顺利开展的基础。ST_Year:业务年度参照类型维护表;ST_DataItems:该表主要记录了数据采集业务中所有采集指标的基本信息;ST_TestPoint:该表保存的主要是育种试验点的基本信息;ST_TestGroup:该表保存的主要是育种试验区组的基本信息;ST_PointAndGroup:该表主要是用于构建试验点以及试验区组之间的关系;ST_Field:该表保存的是育种小区的基本信息,包括小区编号及小区所属试验点等内容;ST_Business:业务数据存储表,主要是用于保存各项田间调查业务所采集的数据;ST_AppStructure:业务模块结构信息表,该表定义了业务模块与调查指标以及业务数据表的数据项3者之间的关系,也是动态构建数据表单的数据基础。
2系统核心功能设计
本文中系统功能的划分引入了模块化设计的思想。简单地说,就是将产品的某些要素组合在一起,构成一个具有特定功能的子系统,将这个子系统作为通用性的模块与其他产品要素进行多种组合,构成新的系统,产生多种不同功能或相同功能、不同性能的系列产品。模块化设计是绿色设计方法之一,它已经从理念转变为较成熟的设计方法。将绿色设计与模块化设计结合起来,可以同时满足产品的功能属性和环境属性,一方面可以缩短产品研发与制造周期,增加产品系列,提高产品质量,快速应对市场变化;另一方面,可以减少或消除对环境的不利影响,方便重用、升级、维修和产品废弃后的拆卸、回收和处理。秉承高内聚、低耦合的系统功能划分原则,通过对育种田间信息采集系统需求的深入分析和研究,移动客户端功能划分为访问控制模块、动态表单配置模块、辅助操作模块、数据同步模块、数据管理模块、系统管理模块等6个部分,如图2所示。2.1访问控制模块访问控制(AccessControl)是系统根据用户身份及其所属的预先定义的策略组限制器使用数据资源的能力的手段。其主要目的是为了限制主体对客体的访问,从而保障数据资源在合法范围内得以有效的使用和管理。为此,该模块需要完成两个任务:一是识别和确认访问系统用户的身份;二是决定该用户可以对系统的哪些数据资源进行何种访问。主要的访问控制类型有3种模式:自主访问控制(DAC)、强制访问控制(MAC)和基于角色访问控制(RBAC)[4]。使权限与角色相关联,用户通过成为适当角色的成员而得到其角色的权限。在访问控制模块中,其主要包含了用户登录认证以及用户权限控制两块内容。2.1.1用户登录该模块是为了验证哪些人具有访问系统并获取系统资源的权限,主要是完成访问控制中关于识别和确认访问系统用户身份的任务。2.1.2权限控制该模块主要是根据登录用户的角色为用户进行资源的分配,其主要进行两个方面的工作:一是对用户能够进行操作的业务模块进行配置,防止系统被非法操作;二是控制用户对于数据的访问能力,通常系统数据库中存放了大量的数据,系统只能根据用户所具有的权限获取到相关的数据,而其它超出权限范围的数据则不予提供。2.2动态表单设计在数据采集系统中,数据的采集主要是依靠对表单的操作来实现的。但是在育种采集系统的使用过程中,用户对于数据采集的要求不断地发生变化,这对表单的灵活性和对于需求的应变能力提出了更高的要求。常用的表单都是根据某类调查对象的具体内容而设定的,其指标很固定,指标信息一旦发生变化,就必须重新修改系统代码,这样的表单设计很难适应负责多变的用户需求。动态表单因此而出现,它通过一套灵活、方便且具有更强适应能力的表单管理和设计方法,以实现表单的自由排版、指标设定和修改等一些列操作。动态表单构建的原理如下所述:1)对调查对象进行分析和研究,提取对象特征并进行归类;2)根据分类的结果定义数据表字段信息,并创建数据库表;3)根据分类结果以及数据库定义的字段内容,设置表单绘制时所需要的属性数据,并将结果与数据表结构信息保存到表结构维护表(ST_AppStructure)中;4)构建表单时,提取维护表中各项业务所属的表结构信息;然后,系统根据结构表中的各个字段定义的属性配置数据填报表单。目前,本系统主要实现了一维表单以及二维表单。2.3辅助操作模块该模块主要是用来执行一些业务辅的基本操作,包括了数据库访问、Web服务调用、配置管理以及设备硬件资源调用的模块。2.3.1数据库访问模块该模块是应用程序与数据库之间进行数据交互的主要通道,主要是将下层的数据库常见的操作(如查询、插入、删除、更新等)封装起来,构建出一个通用的数据库访问接口。通过该接口,用户可以方便地建立数据库连接、执行数据库基本操纵、处理异常事务,而不用去处理数据底层的访问。2.3.2服务调用模块Web服务是一种服务导向架构的技术,通过标准的Web协议提供服务,其目的是保证不同平台的应用服务可以互操作。根据W3C的定义,Web服务(Webservice)应当是一个软件系统,用以支持网络间不同机器的互动操作。网络服务通常是由许多应用程序接口(API)所组成的,它们通过网络(如国际互联网In-ternet)的远程服务器端执行客户所提交服务的请求。该模块的功能与数据库访问模块类似,其目的也是为了将服务连接、服务接口调用的比较底层的功能封装起来,为其它模块提供统一的操作接口,方便与服务器之间进行数据交换,降低模块之间的耦合性。2.3.3配置管理模块该模块主要是对系统运行过程中用到的配置文件进行管理,包括系统配置文件以及业务配置文件的读写等工作,并为其它模块提供相应的数据。本系统中采用Properties文件作为配置文件,然后通过Prop-erties类来进行数据解析。2.3.4设备资源调用模块该模块主要是负责调用设备的硬件资源辅助进行数据采集等各方面的工作。将部分平台的API调用进行封装,方便其他模块的使用。其中,主要包括以下工作:调用摄像头,用于进行图像采集以及条码识别等工作;调用GPS模块,来获取当前用户当前的地理位置,并辅助用户快速地进行数据采集或者是获取其它服务。2.4业务数据管理模块该模块主要负责执行与数据相关的各项工作,包括提供数据快速录入、对数据的有效性进行验证以及根据提供的数据情况生成SQL语句等内容。2.4.1数据快速录入对于数据采集系统来说,数据的录入始终是其运行过程中的瓶颈问题。因此,各个数据采集系统总是尽可能地采用各种手段以提高数据录入、采集的速度和准确度[7]。条码是目前普遍使用的一种实现数据快速录入的方法,但是并不适合所有的数据。那些非条码化的数据的录入,仍然是当前所面临的一个重要问题。本文在此不对条码识别的快速录入方案进行探讨,主要是针对非条码化的数据快速录入方案进行说明。从输入法的层面来看,当前移动智能设备中所用的输入法经过多年来的研究和实践,已经取得了重大的突破。综合各家输入法的主要功能,可以发现:移动智能输入法包含了拼音、五笔、笔画、语音等各种输入方式;支持词组、联想词、自造词、模糊输入和字频、词频智能调整的功能;具备了词组自动记忆的功能,可以记忆包括符号、数字和空格、区分大小写的各种字符串和单词……它们从各个方面充分地考虑到了用户的输入习惯,并有针对性地进行了人性化的设计。但是,以上各种数据录入方法并不一定符合特定指标或者是特定场景的输入需求。对于一个数据采集系统来说,不同的业务指标所需要的数据类型各不相同,针对不同的数据类型字的段,其数据录入的形式也不尽相同。在录入不同的业务指标时,用户可能会在不同的录入面板(数字面板、字符面板)之间进行频繁的切换。因此,采集系统中可以有针对性地根据指标特性自动切换输入面板,减少用户的操作,以提高数据录入的速度。从指标数据类型的层面来看,并非是所有的指标业务指标都需要利用输入法的方式来实现数据录入。比如时间类型或者是参照类型的业务指标,其录入的内容在数据范围或者数据形式上具有一定的确定性。因此,在数据录入时可以提供一种选择的方式来实现数据的快速录入。另外,可以采用辅助输入的方式来提高数据录入的效率[8-9]。前面介绍了当前的各种输入都具有自动记忆的功能,但是这种自动记忆是从广义输入的角度上来定义的,其记忆的所有在使用输入法进行输入时的内容,对于具体的业务系统来说实际应用的意义不大。为此,采集系统中从调查指标的层级上来实现数据的联想输入及自动填充;当对每一个具体的指标进行数据录入时,系统会根据录入关键词,从曾经录入的内容中过滤出与关键词相匹配的内容作为备选项,供用户进行选择;在下一次录入时,新录入的内容又将以参照选项的形式供用户提供选择。2.4.2数据验证数据验证是保证系统所录入数据的完整、准确、可靠以及可用的重要手段,其主要验证的内容包括类型验证、空值验证、完整性验证、阈值验证以及关系验证等。在验证的手段上,可以采用判别法来进行空值验证;而类型验证则可以通过正则表达式的方法进行;关系验证主要是通过数学表达式的方法来实现,将各个指标之间的关系利用表达式的形式表示,然后将各个指标的值按照设定的表达式进行计算,判断结构是否符合要求;阈值验证既可以通过判别法,又也可以通过数学表达式的方法来实现。2.4.3SQL语句生成模块与动态表单生成模块相对应,为了最大限度地满足不断变化的用户需求,提供应用程序所需的可扩展性以及灵活性,对数据的存取操作也必须是动态的。该模块的主要目的是为了根据各个业务模块中给定的数据源以及数据表信息,动态地生成SQL语句,实现对数据的动态存取功能。2.5数据同步模块由于在育种数据采集过程中,通常是由不同的人员利用不同的客户端进行数据采集,为了保持各个客户端与服务器数据库之间数据的一致性,本文设计了一套移动数据同步方案。其操作过程如下所述2.5.1同步方式设置根据用户的设定或者之前同步的基本情况,选择相应的同步方式。数据同步的方式主要包括完全同步、增量数据同步、服务器重建同步、客户端重建同步等几种类型。首次进行数据同步时采用的是完全同步的方式,同步完成之后客户端需要保留好服务器本次同步的时间锚,当下次同步时提供给服务器。服务器以此为标记获取自上次同步以来发生变更的数据,并提供给移动客户端;如果移动客户端丢失同步时间锚,则系统将自动采用完全同步的方式。一般来说,同步过程中也都是以增量同步的方式为主。2.5.2同步数据获取同步过程中,首要任务就是能够准确地获取发生变更的数据,并将需要同步的数据按照同步规范对数据进行相应的配置。2.5.3构建同步对象在确定了同步方式和获取了同步数据之后,系统将会生成一个同步对象;然后,调用系统功能模块中的服务器访问模块开始执行数据同步操作,直到同步完成为止。2.5.4同步结果处理在完成与服务器同步交流之后,该模块主要负责移动客户端同步结果的处理。2.6系统管理模块系统管理模块主要是调节软件的运行条件,构建相对稳定、合理的软件环境。该模块主要包括系统安全、系统初始化以及系统升级的内容。
3系统界面
系统主要包括了育种过程中需要进行田间数据采集的查苗记载、田间考察、考种、打分以及收获等几项重要内容。系统业务模块如图3所示。为了能够实现育种数据采集过程中动态变化的需求,系统中实现两种用于进行数据采集工作的数据表单—一维表单以及二维表单。二者都是根据业务表的基本结构信息以及数据指标特征信息动态生成的,如图4所示。
4总结
综上所述,本文设计实现了一种基于手机平台的育种田间数据采集系统技术方案,讨论了育种田间数据快速录入、动态配置表单、数据有效性验证以及保障数据安全的方法,为育种田间数据准确、快速录入提供了解决方案,也为其它类似的系统提供了设计思路。然而,本文尚未实现语音识别和视频流实时读取功能。随着这两种技术的不断发展,在未来的快速录入技术中可以考虑加入语音识别技术来适当取代手工录入。
作者:黄锦 李绍明 单位:中国农业大学 信息与电气工程学院