溫小清+潘永才+劉海龍+汪標+羅雪姣



摘 要:采用當前最為流行的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.