基于SSi框架的饲料安全追溯系统设计与实现

2017-01-08 09:31丹董
饲料工业 2017年15期
关键词:组件逻辑框架

■田 丹董 玲

(1.沈阳工学院信息与控制学院,辽宁抚顺113122;2.辽宁省农牧业机械研究所有限公司,辽宁沈阳110036)

“民以食为天,食以安为先”,食品是人类生存发展最基本的物质条件,食品安全涉及人类最基本的权利保障,事关每个人的身体健康,也是社会安全稳定的重要组成部分。近年来从苏丹红到三聚氰胺、从抗生素滥用到瘦肉精等重大食品安全问题不断被爆出,食品安全成为社会关注的焦点,提高食品安全性已经刻不容缓。随着人民生活水平提高,动物性食品在食品的消费结构比例越来越高,饲料作为生产动物性食品的主要投入品和安全监管的源头,已成为动物性食品安全的前提和关键。近年来,农药、饲料添加剂和动物激素等的大量使用,对促进养殖业发展和增加养殖业收入发挥了重要作用,但也给动物性食品安全带来了极大隐患[1]。饲料和由此引发的畜产品安全卫生问题日益受到人们关注,饲料安全即食品安全的理念逐渐被越来越多的人所接受。目前饲料安全监管的技术含量不高、专业性不强,加之涉及的部门较多,成为我国食品安全监管的薄弱环节。

可追溯性是指追溯所考虑对象的历史、应用情况或所处场所的能力。饲料由生产到使用经过了原料采购、饲料生产、饲料贮运、饲料销售和饲料消耗等环节,生产链条长,生产过程复杂,每个环节出现问题都会引起安全问题[2-3]。本文参照食品安全追溯系统构建饲料安全追溯系统,采用先进的计算机和互联网技术,以农业部2014年第1号令《饲料质量安全管理规范》为基础,对饲料生产、流通和消耗的全过程信息进行管理,实现生产可记录、来源可追溯、去向可追踪、责任可追究,为企业提供溯源信息的集中化管理,为政府监管提供基础数据支持,为公众提供查询溯源信息的窗口,同时提供诊断预警和质量投诉等功能,架起保障饲料安全的防火墙,促进养殖业的健康发展,为保障人民健康和提高生活水平服务。

1 SSi框架结构

框架是可复用的设计构件,规定了应用的体系结构,阐明了系统构件之间的依赖关系和控制流程。MVC是目前最流行的软件开发框架,将系统分为模型、视图和控制器三部分,每部分相互独立,具有耦合性低、重用性高、易于维护和易于扩展等特点,开发人员能够集中精力于业务逻辑,有利于软件工程化管理和提高开发效率。J2EE领域包含多种MVC框架技术,Struts2、SSH和SSi是主流的应用开框架,本系统基于SSi框架开发,框架结构如图1所示[4-5]。

图1 SSi框架结构

1.1 Struts2

Struts2是继承了Struts设计思想并加入WebWork而形成的新框架,可以作为独立的框架使用,也可以与其他框架整合而形成新框架。本系统将Struts2作为SSi框架的组成部分实现控制层,接收来自表示层的请求,调用业务逻辑方法进行处理。

1.2 Spring

Spring是轻量级容器,是J2EE领域全方位应用程序框架,针对Servlet和EJB等容器存在的部署复杂、运行缓慢、服务繁多和难以测试等问题提供了解决方案。本系统将Spring作为SSi框架的组成部分实现业务逻辑层,完成核心业务处理。

1.3 iBatis

iBatis是Apache的开源项目,iBatis一词来源于“internet”和“abatis”的组合,是O/R Mapping解决方案。iBatis框架针对SQL语句输入输出进行映射,从关系型开始到对象型的思路来解决数据库操作问题,依据持久化的对象得到运行结果。

2 饲料安全追溯系统架构

饲料安全追溯系统的目标是“源头可追溯、生产有记录、流向可跟踪、信息可查询、产品可召回、责任可追究”,实质是饲料安全信息管理系统,运用计算机和网络通信技术,对饲料追溯链的信息进行管理和监控。基于架构的设计思想,系统逻辑上由信息采集层、信息处理层、信息服务层和信息用户层等构成,参照相关文献[6-8],设计的系统架构如图2所示。

图2 饲料安全追溯系统架构

2.1 信息采集层

基于数据信息采集技术,将饲料追溯链条各环节的信息采集到数据库系统中。信息采集包括两种方法,一种是自动采集,通过计算机串口将数字化设备上的信息直接采集到系统中;二是手工录入,不具备自动采集条件的使用这种方法。

2.2 信息处理层

信息处理层是系统架构的核心,运用数据编码技术、数据交换技术和数字化管理技术,依据《饲料质量管理规范》构建质量安全信息管理系统,系统由6个子系统构成。其中,原料采购管理子系统,管理饲料原料、添加剂和供应商等信息;生产过程控制子系统,建立配方标准和设备档案数据库,根据工艺流程记录生产信息;产品质量控制子系统,对质量巡查信息实时保存,全面保存出厂检验、质量抽查和产品留样信息;贮存运输管理子系统,管理出入库记录、销售台账和运输车辆等信息;饲料销售管理子系统,管理销售客户、产品投诉和产品召回等信息;饲料消耗管理子系统,全面记录饲料消耗的时间、数量、环境和用途等信息。

2.3 信息服务层

基于多平台追溯技术和系统集成技术,将信息处理层的信息向用户提供服务。信息处理层包括6个子系统,需要将这些功能集成,通过统一的饲料安全追溯系统,并使用局域网络、专用网络、互联网络和移动网络等多种通信方式服务。

2.4 信息用户层

系统包括采购、生产、贮运、销售、饲养、监管和大众等多种用户,为了保证系统安全,通过统一认证和授权管理为不同用户提供不同的功能和操作权限。对于查询和跟踪用户,可以使用智能手机;对于信息操作管理用户,建议使用电脑。

3 饲料安全追溯系统实现

饲料安全追溯系统包括6个子系统,每个子系统又包括若干功能,限于文章篇幅,本文仅实现生产过程控制子系统的营养素配比标准模块,其他模块实现可参照本模块。

3.1 iBatis实现数据持久层

数据持久化与具体数据库表的逻辑结构相关。基于SQLServer数据管理系统的营养素配比标准表的逻辑结构设计结果如表1所示。

表1 营养素配比标准表(Nutrient Ratio Standard)

iBatis持久化主要包括四项工作[9-10]:

① 编写JDBC连接属性文件*.properties,用来配置数据库连接信息。数据库连接信息不写在class中,而是放入JDBC连接属性文件,程序从属性文件读入取值,以实现“运行时动态加载”。文件内容以“键=值”(key-value)的格式。通常的配置信息包括数据库用户名和密码、初始化连接数量和最大连接数量、连接超时等待时间,连接池中最大空闲的连接数和最小空闲的连接数等。

② 编写总体配置文件sqlMapConfig.xml,用来完成数据库操作相关资源配置。SqlMap的配置是iBatis中应用的核心,用XML文件统一配置不同的属性。SqlMapConfig.xml作为总体配置文件,主要负责描述数据连接信息及Sq1Map.xml的位置。SqlMapConfig.xml文件包括三类结点[12]:<settings>节点定义数据库操作的相关信息;<transactionManager>节点定义iBatis的事务管理器;<sqlMap>节点指定映射文件的位置。

③编写实体类映射文件,用来填写SQL语句。实体类映射文件用于完成对数据库对象的操作,包括要执行各种SQL语句,存储过程,输入参数映射,返回结果映射,缓存机制,并且能通过几种相对比较复杂的配置实现对象之间的关联关系和延迟加载,实现了数据存储逻辑与上层逻辑代码分离。映射文件包括Mapped Statements、Parameter Maps、Result Maps 和Cache Models等配置。映射文件可以很简单,也可以很复杂,这是iBatis与其他持久化的工具相比具有的灵活性和高性能。

④编写DAO实现类,即iBatis要操作的对象。数据访问对象(DAO,Data Access Objects)是面向对象的接口,用于完成对数据库的操作,处于业务逻辑与数据库资源之间,提高了类的独立性。数据库中需要操作的每一张表都需要编写DAO实现类。DAO与业务逻辑层传递的是一个实体对象,是数据库表在程序中的一个映射[13-14]。针对每个属性get和set方法作为访问接口,实体对象类不需要继承iBatis的类或实现iBatis接口,提高了类的独立性。“营养素配比标准表NutrientRatioStandard”对应实体的DAO实现如下:

3.2 Spring实现业务逻辑层

系统的业务需求决定了业务逻辑组件所包含的方法,用户的每个业务请求通常对应一个业务逻辑方法。实现具体的业务逻辑包括以下三步:

①定义业务逻辑组件接口。接口是一系列方法的声明,提高了软件系统的灵活性和扩展性。营养素配比标准管理包括4个用户请求,分别是添加、修改、删除和查询。业务逻辑组件需要定义这4个方法,系统的控制器组件面向这4个接口编程,就可实现控制器组件与业务逻辑组件的实现类分离。

②业务逻辑组件实现类。实现类就是实现了接口中那些方法的方法体,业务逻辑组件接口必须通过实现类来完成具体的业务功能。为了让业务逻辑组件接受Spring容器注入DAO组件,需要为业务逻辑组件提供对应的setter方法。业务逻辑类通过数据持久层实现对数据库的操作,因此,业务逻辑方法需要捕获数据持久层异常,并抛出用户自定义异常,从而为操作者提供更丰富的提示信息。

③配置业务逻辑组件。包括三种配置,一,将业务逻辑组件实现类部署在Spring容器中,并为业务逻辑方法增加控制;二,配置业务逻辑组件所依赖的DAO组件;三,为业务逻辑组件增加事务控制,Spring为BeanNameAutoProxyCreator后处理器传入事务拦截器,将目标Bean生成事务代理,因此,首先定义Bean-NameAutoProxyCreator后处理器,然后配置事务管理器Bean和配置事务拦截器Bean。

3.3 Struts2实现控制层

Struts2控制层基于拦截器机制,FilterDispacher是核心控制器,负责拦截所有的用户请求,包含了框架内部的控制流程和处理机制。开发需要编写相关的配置文件,供核心控制器使用。“营养素配比标准查询”的控制过程如图3所示:用户通过Web浏览器提出请求,过滤器查找请求并根据配置文件Struts.xml确定Action,拦截器调用业务逻辑NrsAction.java请求应用功能,Action的execute方法用来获取查询结果,通过视图界面queryNRS.jsp返回结果。

图3 Struts2控制过程

4 结语

针对当前饲料安全监督管理的实际需要,构建了符合我国国情的饲料安全追溯系统,实现了对饲料链条各环节信息的综合管理,达到溯源、跟踪和预警的目的。通过设计信息采集层、信息处理层、信息服务层和信息用户层组成的系统架构,解决了系统功能和相关技术问题;基于SSi框架实现,使得界面展示、业务逻辑处理、数据读取完全分离,最大限度地发挥各自优势,降低了各层间的耦合度,增强了系统的稳定性和健壮性,有利于后期的扩展与维护。数据采集是本系统开发的重要工作,涉及到设备数字化、协议、通信和解析等若干问题,本文没有涉及,需要系统开发时进一步深入研究。另外,系统用户较多,知识水平不同,对系统的需求也不同,需要用户的积极配合,提供详实可靠的基础数据,系统才能有效运行。

猜你喜欢
组件逻辑框架
刑事印证证明准确达成的逻辑反思
无人机智能巡检在光伏电站组件诊断中的应用
框架
逻辑
创新的逻辑
广义框架的不相交性
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
女人买买买的神逻辑
关于原点对称的不规则Gabor框架的构造