温小清+潘永才+刘海龙+汪标+罗雪姣
摘 要:采用当前最为流行的Java EE开源框架Struts2+Hibernate+Spring组合,并整合Java开源工作流JBPM和兼容各种浏览器的前端通用UI框架Jquery easyui,完成食品药品电子监管平台的设计。 整个平台采用B/S架构,并结合开源Java开源容器Tomcat,将食品药品溯源和行政许可监管打印工作通过网页实现,方便、直观友好地呈现给用户。该平台极大增强了用户体验,减轻了工作人员的工作量。
关键词:Java EE;Struts2;Hibernate;Spring;JBPM;电子监管
中图分类号:TP273 文献标识码:A 文章编号:2095-1302(2015)01-00-03
0 引 言
食品药品是人类赖以生存和发展的必需品,食品药品安全直接关系人民群众的身体健康和生命安全,体现了人民群众最关心、最直接、最现实的利益。传统的食品药品监管由人工手动录入,效率非常低下,加快食品药品监管信息化与电子监管建设,不仅能够帮助各级监管部门及时、全面地掌握食品药品的生产经营及零售情况,更好地进行日常监管,而且能够及时、方便、准确地进行追溯查询和迅速召回,更好地处理食品药品突发事件,还能够及时为各级领导提供食品药品监管信息,为公众提供食品药品信息检索、监管码查询和真伪鉴别等信息查询服务,对强化食品药品监管、提高监管水平与效能、保证人民群众用药安全有效具有十分重要的意义。在当前食品药品质量事件多发、监管手段不够和基层监管力量不足的情况下,显得尤为紧迫。
1 平台建设思路
行政执法:以网格化监管为基准原则,配以执法人员绩效考核机制,督促相关人员可有序、严格地,采用人机交互或企业互动方式执法。
信息惠民:采用政民互动,加强消费者安全意识的同时辅助执法人员进行执法考察;信息透明,数据对消费者开放,做到可溯源的目的。
多领域监管:支持食药品生产环境监管、生鲜或肉制品等在加工或饲养过程监管、流通领域监管、市场环节监管、消费环节监管等。
2 系统业务架构
以企业信息基础库、四品一械产品基础信息库、行政区域数据字典、量化评级指标库等四大资源为基础手段;结合行政执法、信息监测、应急管理、公共服务、决策支持及内部管理等六大业务系统为辅助;全方位覆盖食品、药品、保健品、化妆品及医疗器械等四品一械行业;系统制定流程化的行政许可方案,各个环节的流程可根据当地的具体情况自省定制,更好地保证食药行政人员可以更便利,更有效得完成既定目标,为后续的行政监管工作提供安全入门保障。
整体业务架构流程如图1所示:
图1 业务架构流程图
建立许可:食药局用户对前来办理许可证的新商户进行许可受理,现场核查、审核、打印许可证、归档入库等流程。
变更许可:当商户经营的项目范围变化后,食药局用户根据变化内容对原有许可证进行变更、核查审核、打印归档等流程。
延续许可:商户经营范围内的许可证到期之后,如果继续经营,需要进入系统进行相应的延续许可操作。
注销许可:商户不再经营许可证内项目时,需要进入系统办理注销许可申请并存档。
现场核查:食药局执法人员对办理许可证的经营单位进行实地现场核查。
听证:当现场核查有争议时选择听证。
补证许可:商户许可证意外丢失需要办理补证手续。
撤回申请:商户不再需要许可证后,可对已经申请的许可证进行撤回。
行政流程如图2所示:
图2 行政流程图
3 系统技术架构
数据库方面由于监管平台涉及的用户群体比较庞大,数据量和并发数量相对较多,可以选择甲骨文公司的Oracle数据库。Oracle数据库采用并行服务器模式,安全性、稳定性和可扩展性都很强,并且由于其跨平台和具有强大的分布式处理功能,经常作为大型网站的首选关系型数据库。
应用开发方面选择J2EE技术,Java语言以其特有的安全性、跨平台性、一次编写到处执行和具有诸多开源框架的特性已经成为电子商务平台的首选语言。该平台在应用架构技术实现上依赖于目前最为流行的Struts2+Hibernate+Spring组合;应用架构采用具有高度可扩展性的控制器层+业务逻辑层+DAO层的分层架构;工作流程采用开源Java工作流框架JBPM;前端部分采用通用的前端UI框架easyUI+jsp实现,广泛兼容各种不同的浏览器和移动设备。系统技术架构见图3。
图3 系统技术架构
4 平台架构设计
该平台服务器采用Java EE的分层结构,分为视图层、控制层、业务逻辑层和DAO层。分层体系将业务规则、数据访问等工作放到中间层处理,客户不直接与数据库进行交互,而是通过控制器与中间层建立连接,再由中间层与数据库交互。
中间层采用Struts2+Spring3+Hibernate4。其中:
控制层负责表现层与业务逻辑层的交互,调用业务逻辑层,并将业务数据返回给表现层来显示。此处选择struts2的action作为控制器,web.xml配置如下:
<filter>
<filter-name>
struts2
</filter-name>
<filter-class>
org.apache.struts2.dispatcher
.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
首先用户通过http向服务器发送请求,服务器获得请求后根据xml中的映射地址将其提交给Struts2进行处理,Struts2对请求路径进行action控制器匹配并执行相应的方法,将返回的结果交给视图,经过解析渲染后最终以html页面的方式呈现给用户。
Service层(业务逻辑层),负责实现业务逻辑,对DAO对象进行模块封装。此处业务对象由Spring进行管理,利用Spring的依赖注入将业务代码注入到控制层完成业务逻辑。事务控制采用Spring的声明式事务,配置在业务层,代码如下:
<bean name="transactionManager" class=" org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory"
ref="sessionFactory"></property>
</bean>
<aop:config>
<aop:pointcut id="transactionPointcut"expression=
"(execution(* fda.service..*Impl.*(..)))" />
<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config>
Dao层(数据访问对象层),负责与持久化对象交互,封装了对数据的增、删、改、查原子操作,此处数据源选择druid数据源,该数据源可监控网站访问情况。
PO层(持久化对象层),通过实体/关系映射工具将关系型数据库的数据映射成对象,实现以面向对象的方式操作数据库,此处采用Hibernate作为O/R Mapping框架,相关配置代码如下:
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="url" value="${jdbc_url}" />
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
<property name="initialSize" value="0" />
<property name="maxActive" value="20" />
<property name="minIdle" value="0" />
<property name="maxWait" value="60000" />
<property name="validationQuery"
value="${validationQuery}" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis"
value="60000" />
<property
name="minEvictableIdleTimeMillis" value="25200000" />
<property name="removeAbandoned" value="true" />
<property name="removeAbandonedTimeout"
value="1800" />
<property name="logAbandoned" value="true" /> <property name="filters" value="stat" />
</bean>
<!-- 配置hibernate session工厂 -->
<property name="dataSource"
ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.hbm2ddl.auto">
${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.dialect">
${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">
${hibernate.show_sql}</prop>
<prop key="hibernate.format_sql">
${hibernate.format_sql}</prop>
<prop key="hibernate.use_sql_comments">
${hibernate.use_sql_comments}</prop>
</props>
</property>
</bean>
映射文件采用注解方式,配置如下:
<property name="packagesToScan">
<list>
<value>fda.model</value>
</list>
</property>
视图层采用通用的Jquery easyUI框架获取控制层传回来的数据进行页面解析渲染,最终向客户端显示相应的视图。
5 系统主要模块
(1)食品经营户信息:包括食品经营户总台账、食品总台账和同步经营户;
(2)准入检查:包括食品索证、供货商索证和备案监管;
(3)信息查询:包括食品流向查询、食品分布查询、库存查询、进货台帐查询、销售台帐查询和过期证照查询;
(4)应急处理:整改通知发布、锁定和解锁功能;
(5)通知公告:警示信息发布和食药文件发布;
(6)食品检测:包括检测计划上报、检测信息发布、不合格食品检测信息;
(7)登记管理:设立许可、撤回许可、变更许可、延续许可、注销许可、excel导入许可和补证许可;
(8)许可证打印:包括文书打印和证照打印。
6 结 语
电子监管平台有利于食药局部门对与食品药品等产品质量的远程监控,减少食品药品监管的盲点;能加强与经营企业信息的共享与交流,快速应对要害事件;有利于食品药品管理部门对自身管理的效率,大大提高企业经营流通效率,降低企业经营成本;有利于对假冒伪劣产品的有效监管。电子监管平台的使用将大大改善人们的日常生活,提高人们对食品和药品安全使用的信心。
参考文献
[1]王朋,赵保华,韩仙玉.基于SSH2的动态工作流模型的研究[J].电脑与信息技术,2013,21(3):7-10.
[2]吴慰娜.基于工作流的“一站式服务”行政许可系统[J].计算机工程,2006,32(18):267-269..
[3]李勇.“一站式”行政许可系统总体设计研究[J].电子政务,2008(7):94-101.
[4]韩江.基于 SSH2架构的 Java Web 通用权限管理的设计[J].智能计算机与应用,2014(2):112-114.
[5]高亮,刘旸,宗传玉,等.基于SSH2与JBPM的OA系统应用研究[J].微处理机,2011(4):38-40.
[6]梁永潮,朱宇,张坤鳌.基于SSH2动态工作流模型的研究与设计[J].电脑知识与技术,2011(19):4719-4723.
[7]李君,王宇新.基于JBPM的工作流管理系统的设计与实现[J].信息通信,2013(4):85-86.
[8]袁雄伟,钟宝荣.Spring MVC框架下公文审批中应用JBPM工作流引擎[J].信息系统工程,2013(3):88-90.