本站小編為你精心準備了連鎖醫藥經銷模式研究參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
0引言
醫藥經銷企業為了提高其市場占有率,先后購并了十幾家醫藥商業網點,形成了遍布全省及一些周邊地區的龐大的銷售網絡,新的經營模式必然會帶來許多新的管理難題,特別是如何能夠跨越時空,從總部角度真正做到對異地的藥品連鎖店進行細致、及時而有效的管理,這已經成為目前躋身大市場的企業管理瓶頸。為了提高企業的工作效率和原有系統的利用率,加強企業的管理和競爭優勢,就必須對這些原有的系統進行有效的改進和整合,建立一套完善的、能夠準確反映出現有經銷模式和經銷過程的系統,來克服原有系統存在的種種弊端…。本文針對醫藥經銷過程的信息共享和平臺異構等問題,開發了基于J2EE平臺和MVC設計模式的連鎖醫藥經銷系統。本系統不僅實現了靈活的銷售管理和內部調撥管理機制,而且是一個可擴展、可移植、易維護的高性能的應用系統江”。
l系統的需求分析
藥品經營管理系統由醫藥總公司系統和分店零售管理子系統構成。總公司負責藥品的采購、調撥、庫存、財務、銷售查詢等的管理。分店零售子系統主要是對銷售、庫存賬目以及從總公司接收調撥單等各種資源信息的管理。
(1)總公司系統用例分析:采用UML中用例模型來描述角色所理解的功能。系統包括7個角色:開票員、收款員、業務員和保管員、財務記賬員、系統管理員、經理等。各種角色對系統的用例描述為:①開票員:負責開銷售單和查詢藥品信息等;②收款員:進行調撥單點單收款,打印與庫房對賬清單,打印日結賬清單,“班次結賬”是為確定并清除該班次的收款信息;③業務員:負責開進貨單,并可查詢進貨單:④保管員:負責對進貨單、銷售單點單入庫,清點庫存進行保管賬查詢和定期打印盤點表;⑤財務記賬員:銷售單、入庫單點單入商品賬,查詢商品賬,往來賬記賬和查詢管理:⑥系統管理員:對藥品信息管理、客戶信息管理、人員管理及權限管理等;⑦經理:可以查詢銷售業績,根據銷售制定進貨計劃,對將來的發展制定規劃。
(2)零售子系統的用例分析:該系統的角色有收款員、系統管理員、業務員、營業員和普通用戶。為了更安全、更快的實現數據收集和更新,本系統采用Web瀏覽器作為客戶端,Web瀏覽器的操作主要是經授權的收款員,把最新的銷售信息上傳到數據庫,從而及時反映銷售變化。各種角色對系統的用例描述為:①收款員:開銷售單、查詢銷售記錄,在各班次交班前需要將收款的金額點清,并和計算機統計的金額一致,“班次結賬”是為確定并清除該班次的收款信息,最后,在每天下班前,按柜組統計零售日銷售信息,如果與柜組賬目不符,要打印該柜組日銷售清單;②系統管理員:可以進行銷售記錄查詢,對藥品信息管理,對人員及權限管理等:③業務員:負責開要貨申請和將調撥單點單入庫;④營業員:保管賬查詢和定期打印盤點表;⑤普通用戶:查詢藥品信息。藥品是由公司統一進貨,藥店只需從公司調撥,而且銷售情況也由公司統一管理,這樣,藥店只有簡單的財務管理。
2系統的總體設計
2.1系統的體系結構設計本系統采用MVC(模型一視圖.控制)設計模式,將輸入、處理、輸出流程按照模型、視圖、控制的方式進行分離,這樣系統被分為模型層、視圖層、控制層3個層。模型層進行業務流程/狀態的處理以及業務規則的制定,視圖層代表用戶交互界面,控制層則從用戶接收請求,將模型與視圖匹配在一起,由控制層確保用戶界面于模型問的對應聯系,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據,增加了代碼的重用性61。本系統體系結構圖如圖l所示。在系統體系結構的設計中,我們將J2EE架構和MVC設計模式結合在一起,采用一個免費的開源Web層的應用框架Structs實現,MVC設計模式具體對應到J2EE架構如下:JSP對應視圖層,處理表現,因為整個應用系統主要通過JSP來與外界進行交互;Servlet對應控制層,處理客戶請求,并作為JSP與EJB之間的中間樞紐,調用運行在EJB服務器中的EJB構件,EJB對應模型層,主要進行業務及數據的處理“1。本系統構建的連鎖醫藥經銷系統采用的是JBuilder8.0開發工具,應用服務器采用WeblogicServer8.0,數據庫是Ora-cle9i,具有穩定性、擴展性好,易維護的特點。
2.2數據對象及業務邏輯設計(1)此系統中涉及的總公司與各藥店零售子系統的有關數據設計的內容相似,下面就以零售子系統為例進行說明數據庫設計的主要內容,如表1所示。(2)該連鎖管理系統主要由兩個子系統組成:總公司管理子系統和分店零售子系統,總公司管理子系統需要實現的業務邏輯有:開進貨單、調撥單、調撥單點單入賬、庫存賬查詢、商品賬查詢、經理查詢系統、藥品信息管理、供應商信息管理和人員權限設置等;分店零售子系統需要是實現的業務邏輯有:開銷售單、調撥單點單入庫、庫存查詢和人員權限設置等。為了實現靈活的內部調撥管理機制,系統在總部與分部之間采用藥品庫存報警和自動補貨等功能。
2.3要貨申請流程設計本系統的一個重要工作流程是要貨申請流程。當零售藥店的時間觸發器(觸發時間由管理員設定)檢查到藥品的庫存低于庫存臨界值時,就會觸發要貨,生成要貨申請表(可以選擇管理員或自動生成)發送到總公司,總公司對申請表處理后發出響應,開出調撥單及發送藥品,如果總公司缺貨,總公司可以向供應商發送采購請求消息,并等待供應商響應消息后,開出調撥單。
2.4性能優化設計對被頻繁訪問的業務數據進行緩存,減少數據庫交互次數,以改善系統性能”“”。在連鎖藥品經銷系統中,比如:藥品信息、供應商信息、用戶權限信息等。如果每次訪問這些數據時,都通過EJB或JDBC去取,那將會引起遠程調用,訪問數據庫等既耗時又耗資源的操作,給系統造成較大的負擔,對這些被用戶頻繁訪問的業務數據,建立中間層數據緩存非常有用,可以減少與數據庫的交互次數,從而改善系統的性能。因此,如何對這些業務數據進行有效緩存,成了改善系統性能的又一關鍵所在。我們在系統開發中,引入一個叫CacheProxy的中間件對事務進行統一管理,CacheProxy的原理類似于操作系統中的高速緩存的實現原理,每種需要緩存的數據都有自己的緩存池,可以根據實際需要設定緩存池的最大記錄數,采用LRU(最近最少使用)的淘汰策略進行管理,當緩存的數據所對應的數據庫中的記錄被更新時,共享緩存會在數據庫一級探測出沖突的存在,比如借助于數據庫觸發器,由觸發器通知Ca-ehProxy并刷新緩存中的相應數據。在本系統中,大部分數據是需要共享的,而且需要被多次瀏覽,因此使用緩存是有益的,系統性能也將能夠提升,但緩存并非總能夠改善系統性能,如果數據是排他性的(不能共享),比如個人賬號信息,則緩存毫無意義,另外,比如在兩次更新緩存期間很少訪問到緩存中的內容,此時,如果使用緩存,則它所帶來的優勢可能很小,甚至對性能造成不好的影響。
3實現的關鍵技術
3.1生成要貨申請以某零售藥店向公司的要貨請求為例,要貨請求單的生成可以根據時間觸發器觸發庫存查看的結果,由自動生成采購頁面(autecreatePP.jsp)調用相應對象實體的方法自動生成,也可以由管理員根據要采購的貨物信息,在生成采購頁面(createPP.jsp)中填寫采購量,然后創建要貨申請單。當要貨申請單生成后,生成調用系統包中的toXML方法將其轉換成XML文件形式,再調用sendMessage方法將其發送給總公司。
3.2實現消息傳輸本系統采用Java信息服務(Javamessageservice,JMS)技術,信息服務的優點是不同客戶與服務器之間可以進行方便地通信,信息的發送方或者接收方并不需要知道對方的信息。JMS技術有兩種信息發送機制,分別是隊列與主題信息發送機制,其中,隊列機制可以使信息滯后接收,而且只能將同一信息發送給一個用戶“1,根據需求,我們可以采用隊列機制來實現零售系統的要貨申請單和總公司對其響應的調撥單的消息傳輸,這樣既解決了總公司和對應的零售藥店必須同時在線傳送的問題,也能使得每個藥店只能收到屬于自己的調撥單信息。
3.2.1消息格式總公司管理系統和各零售子系統之間的消息格式采用基于cXMLl.1標準的XML文檔。系統包括OrderRequest.xml(零售系統對公司的采購請求消息)和OrderResponse.xml(公司對零售系統采購請求的響應消息)兩種消息。
3.2.2消息傳輸的JMS實現為每個零售點在WebLogicServer創建~個隊列信息域。
(1)消息發送實現消息發送是零售藥店將生成的要貨請求單OrderRe—quest.xml文檔發送給總公司,由系統工具包msgSend.class類實現,msgSend.java中關鍵是sendMessage方法,其主要代碼為:Contextcontext=getlnitialContext(url.tostrin90);/+url是消息接收方的端口地址對象•/Queuequeue=fQueue)context.100kup(stringQueue);/+string—Queue是消息隊列名+/QueueConntextFactoryqueuefactory=(QueueConntextFactory)context.100kup(JMSFACToRY)/.用于創建信息域的聯接+/QueueConectionqcon=queuefactory.createQueueOonteetionO;QueueSessionqsession=qcon.createQueueSession(false,Ses-sion.AUTOACKNOWLEDGE);/+創建一個消息對話+/QueueSenderqsender=qsession.createSender(queue);/’創建信息發送對象•/TextMessagemsg=qsession.createTextMessage0;qcon.startO;msg.setText(stringXML);/*添加XML文檔到消息中’/qsender.send(msg);/’發送消息+/
(2)消息接收實現由系統工具包的msgReceive.class類實現,與域消息發送的實現類似,msgReceive.java中receiveMessage方法的主要代碼如下:QueueReceiverqreceiver=qsession.createReceiVer(queue);msg=(TextMessage)qreceiver.receive0;/+接收TextMessage’/StringstringXML=msg.getText0;/宰提取msg中的XML文檔+/
(3)XML解析實現包括零售系統的要貨申請單的XML文檔和總公司對其響應的調撥單的XML文檔的解析。由系統工具包中的parser-OrderRequest.class和parserOrderResponse.class實現。以paser-OrderRequest.java為例,其中的主要方法如下:publicvoidstartDocumentO;嚴對XML文檔開始事件的處理+/publicvoidendDocumentO;/.實現XML文檔結束事件的處理+/publicvoidstartElement0;/.對標記開始事件的處理+/publicvoidendElement();嚴實現對標記結束事件的處理+/publicvoidcharacters();/.實現對標記文本解析+/publicstaticOrderRequestgetOrderRequest0;/+解析并得到OrderRequest對象01",or為解析后的調撥單對象+/
4結束語
基于J2EE平臺和MVC設計模式開發的醫藥經銷系統,由于采用J2EE平臺帶來的跨平臺性、互操作性,企業可以實現遺留應用的功能和數據的復用。本文提出了一個基于J2EE平臺的重構開發信息集成的優化設計解決方案,并給出具體的實現方法,使得系統在遺留系統的重用性,新系統的伸縮性等方面都有很大提高。該系統經正式使用后,收到了良好的效果,極大地提高了醫藥經銷系統的管理和工作效率。