趙澤俊
摘要:物料管理是工廠管理中重要的環(huán)節(jié)之一。實(shí)時(shí)獲取與處理物料的信息能有效提高工廠的生產(chǎn)效率和管理水平。因此,為了提高工廠對(duì)物料的管理水平,解決對(duì)工廠庫(kù)存物料信息的實(shí)時(shí)跟蹤等問題,根據(jù)工廠的物料出庫(kù)入庫(kù)的流程,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)在ASP.NET平臺(tái)下、基于SignalR框架和MVC模式對(duì)物料數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)控預(yù)警的系統(tǒng)。該系統(tǒng)通過實(shí)時(shí)通訊將物料相關(guān)數(shù)據(jù)通過服務(wù)器傳遞,實(shí)現(xiàn)物料相關(guān)數(shù)據(jù)的實(shí)時(shí)更新與顯示,達(dá)到監(jiān)控以及預(yù)警物料數(shù)據(jù)的效果,并在工廠的管理中得到很好的應(yīng)用。
關(guān)鍵詞:物料管理;物料預(yù)警;SignalR;ASP.NET;MVC
中圖分類號(hào):TP311.52? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)22-0107-03
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Design of Material Warning System Based on SignalR
ZHAO Ze-jun
(Shanghai Open University, Shanghai 200433, China)
Abstract: Material management is one of the important links in factory management. Real-time obtaining and processing of the information of the materials can effectively improve the production efficiency and management level of the factory. Therefore, in order to improve the management level of the materials in the factory, and solve the problem of real-time tracking of material information of the factory inventory, this paper designs and implements a system for real-time monitoring and early warning of materials data based on SignalR framework and MVC mode under ASP.NET platform according to the process of the outgoing and inputting of factory materials. The system transfers the related data of material through the servers by real-time communication, realizes the real-time updating and display of the related data of material, achieves the effect of monitoring and early warning of material data, and is well applied in the management of factories.
Key words: Material management; Warning of material data; SignalR; ASP.NET; MVC
1 背景
在工廠的物料管理中,物料庫(kù)存數(shù)量會(huì)隨著入庫(kù)和出庫(kù)流程發(fā)生變動(dòng);對(duì)于管理人員而言,物料的庫(kù)存數(shù)量一方面可以反映庫(kù)存的情況,一方面也可以反映出物料在生產(chǎn)線上的使用情況,因此需設(shè)計(jì)一個(gè)可以實(shí)時(shí)監(jiān)控物料信息的系統(tǒng)來滿足工廠對(duì)物料管理的需求。在以往的系統(tǒng)設(shè)計(jì)技術(shù)中,通過定時(shí)向服務(wù)器請(qǐng)求數(shù)據(jù)的方式不僅增加了服務(wù)器的運(yùn)行壓力,在實(shí)際運(yùn)用中為了滿足性能的要求,數(shù)據(jù)請(qǐng)求的時(shí)間設(shè)置過長(zhǎng),無法達(dá)到實(shí)時(shí)預(yù)警的效果[1-2]。為了解決在物料管理中的實(shí)時(shí)對(duì)物料當(dāng)前庫(kù)存信息的預(yù)警問題,本文設(shè)計(jì)的物料預(yù)警系統(tǒng)是利用Asp.Net平臺(tái)、基于支持Web通信的SignalR框架[1]決實(shí)時(shí)預(yù)警的問題。SignalR能在通過瀏覽器和服務(wù)器之間建立通信通道,用戶可以在瀏覽器和服務(wù)端之間快速、便捷地傳遞消息和數(shù)據(jù)[3]。
2 SignalR概述
SignalR是Asp.Net的一個(gè)提供了Web即時(shí)通信的服務(wù)的類庫(kù),集成了基于瀏覽器的客戶端和Asp.Net服務(wù)端的庫(kù),實(shí)現(xiàn)客戶端與服務(wù)端的雙向?qū)υ挕ignalR提供了一個(gè)簡(jiǎn)單的API,用于服務(wù)端的.Net代碼遠(yuǎn)程過程調(diào)用客戶端瀏覽器的JavaScript函數(shù)[4],并且提供了連接斷開事件、分組連接等API實(shí)現(xiàn)連接管理。SignalR可以應(yīng)用需要實(shí)時(shí)數(shù)據(jù)的業(yè)務(wù)場(chǎng)景,如聊天室、儀表盤、監(jiān)控程序等。
SignalR結(jié)構(gòu)可以抽象為Hub層、持久連接層、傳輸層和Internet協(xié)議層[5]。最高一層是Hub層,提供API用于服務(wù)端調(diào)用客戶端瀏覽器的JavaScript函數(shù),使用Hub的API可以向指定的客戶端發(fā)送消息,避免直接向所有的客戶端廣播消息;持久連接層相對(duì)較低的一層,其作用是保持客戶端與服務(wù)器之間的持久連接,并在連接上發(fā)送數(shù)據(jù);傳輸層包括WebSockets、Server-SentEvents、ForeverFrame、長(zhǎng)輪詢傳輸方式,SignalR在傳輸方式上會(huì)優(yōu)先使用WebSockets、Server-SentEvents兩種傳輸方式,只有在這兩種傳輸方式失敗的情況下才會(huì)用ForeverFrame、長(zhǎng)輪詢,保證連接的實(shí)時(shí)性、可靠性和穩(wěn)定性;具體結(jié)構(gòu)如圖1所示。
3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
3.1 系統(tǒng)功能設(shè)計(jì)
根據(jù)調(diào)研,物料的基本單位為箱子,每個(gè)箱子都有條形碼,因此物料預(yù)警系統(tǒng)以掃描條形碼來實(shí)現(xiàn)物料的入庫(kù)和出庫(kù)操作,通過入庫(kù)出庫(kù)操作更新物料的數(shù)據(jù),然后向?yàn)g覽器發(fā)送更新的物料數(shù)據(jù),達(dá)到預(yù)警的效果。物料預(yù)警系統(tǒng)的用戶對(duì)象是管理員、組長(zhǎng)、組員。管理員負(fù)責(zé)系統(tǒng)的管理,主要職責(zé)是維護(hù)人員、權(quán)限管理、管理物料所屬的項(xiàng)目信息、查詢所有物料的操作日志以及監(jiān)控所有小組的物料數(shù)量;組長(zhǎng)負(fù)責(zé)查看屬于自己小組的物料預(yù)警、物料查詢以及查看自己小組的物料操作日志;小組組員負(fù)責(zé)處理物料入庫(kù)和物料出庫(kù)操作。
在系統(tǒng)的功能模塊設(shè)計(jì)中,最重要的是物料預(yù)警模塊的設(shè)計(jì),小組組長(zhǎng)和管理員對(duì)物料預(yù)警的范圍不同,小組組長(zhǎng)需要的是能預(yù)警屬于自己的物料信息,而管理員需要的是能預(yù)警所有物料的信息,因此在實(shí)現(xiàn)系統(tǒng)的功能時(shí)需要將不同的小組組長(zhǎng)和管理員的身份區(qū)分,向其發(fā)送所需的數(shù)據(jù)。
3.2 系統(tǒng)架構(gòu)設(shè)計(jì)
系統(tǒng)采用在設(shè)計(jì)Web應(yīng)用系統(tǒng)中被廣泛應(yīng)用的三層架構(gòu)設(shè)計(jì),分層模式的設(shè)計(jì)可以有效降低組件之間耦合性,更有利于組件的重用[8]。物料預(yù)警系統(tǒng)分為三層:視圖層、服務(wù)層和數(shù)據(jù)層,具體架構(gòu)如圖3所示。
系統(tǒng)圖架構(gòu)采用Asp.net的MVC5框架實(shí)現(xiàn)業(yè)務(wù)的管理功能,使用SignalR實(shí)現(xiàn)物料的預(yù)警功能。在MVC5的框架中,用戶通過瀏覽器發(fā)送請(qǐng)求,輸U(kuò)RL以controller/action/id的形式向服務(wù)層的控制器Controller請(qǐng)求數(shù)據(jù),通過URL路由的解析映射到對(duì)應(yīng)的控制器和action;控制器通過數(shù)據(jù)層獲取數(shù)據(jù)后選擇對(duì)應(yīng)的視圖cshtml,解析成靜態(tài)頁面展示給用戶。
在整個(gè)系統(tǒng)設(shè)計(jì)中,SignalR是十分重要的,因?yàn)樵摻M件是實(shí)現(xiàn)實(shí)時(shí)更新物料數(shù)據(jù)和預(yù)警的基礎(chǔ),因此結(jié)合MVC框架設(shè)計(jì)添加客戶端和服務(wù)端的SignalR組件。在向用戶顯示的視圖層,在顯示物料預(yù)警的視圖,通過SignalR客戶端接收組件和SignalR的客戶端支持組件(JavaScript組件)向服務(wù)層請(qǐng)求和接收數(shù)據(jù)。在服務(wù)層的SignalR服務(wù)中包含Hub類、持久連接類和物料監(jiān)視器,其中Hub類負(fù)責(zé)調(diào)用客戶端的組件向其發(fā)送數(shù)據(jù),持久連接類負(fù)責(zé)和瀏覽器保持連接,物料監(jiān)視器是使用SqlDependency 監(jiān)聽數(shù)據(jù)庫(kù)中的物料數(shù)據(jù),當(dāng)物料數(shù)據(jù)更新時(shí)通過SignalR向客戶端發(fā)送數(shù)據(jù)。
為了方便小組組員可以在局域網(wǎng)內(nèi)進(jìn)行操作,需要設(shè)計(jì)WebService,通過手持的PDA與服務(wù)器進(jìn)行數(shù)據(jù)入庫(kù)和出庫(kù)的操作。
3.3 詳細(xì)設(shè)計(jì)
設(shè)計(jì)物料預(yù)警系統(tǒng)最主要兩點(diǎn)是設(shè)計(jì)物料入庫(kù)出庫(kù)的處理和監(jiān)視物料信息并傳遞到客戶端(瀏覽器)的流程。
3.3.1 物料出庫(kù)入庫(kù)流程設(shè)計(jì)
工廠的操作小組組員在處理物料箱子時(shí),通過手持PDA通過WebService向服務(wù)器傳遞箱子編號(hào)和操作的類型(入庫(kù)和出庫(kù)),服務(wù)端判斷操作類型然后修改數(shù)據(jù)庫(kù)中箱子表的狀態(tài)。當(dāng)箱子的狀態(tài)發(fā)送更變時(shí),數(shù)據(jù)庫(kù)的觸發(fā)器通過修改的狀態(tài)和箱子所屬的物料編號(hào)調(diào)整物料表中對(duì)應(yīng)的物料的當(dāng)前數(shù)量。具體流程如圖4所示。
3.3.2 物料預(yù)警流程設(shè)計(jì)
物料預(yù)警系統(tǒng)采用的是B/S的架構(gòu)設(shè)計(jì),因此對(duì)于用戶而言,客戶端也就是瀏覽器。物料預(yù)警的程序流程設(shè)計(jì)如圖5所示。
用戶在登陸后通過SignalR的JavaScript創(chuàng)建connection.chatHub對(duì)象,通過這個(gè)對(duì)象向服務(wù)端請(qǐng)求和接收數(shù)據(jù)。由于物料屬于不同的小組,因此需要為登陸的用戶劃分不同的群組,服務(wù)端根據(jù)不同的群組加載所需要的物料信息數(shù)據(jù)。在服務(wù)端的Hub類中創(chuàng)建AddGroup函數(shù),用戶訪問瀏覽器通過SignalR連接對(duì)象的server.addGroup函數(shù)向服務(wù)端的AddGroup函數(shù)傳遞群組編號(hào),請(qǐng)求加入到對(duì)應(yīng)的群組中。
在服務(wù)端將用戶所屬群組編號(hào)加入對(duì)應(yīng)的群組后,用戶在通過瀏覽器向服務(wù)端Hub類的sendGroupMsg函數(shù)請(qǐng)求數(shù)據(jù),服務(wù)端通過物料監(jiān)視器采用SqlDependencys組件來監(jiān)聽數(shù)據(jù)庫(kù)中物料表的數(shù)據(jù)變動(dòng)情況,將最新的數(shù)據(jù)返回sendGroupMsg。最后服務(wù)端的Hub類中的sendGroupMsg函數(shù)將最新的物料數(shù)據(jù)以Json格式返回到客戶端瀏覽器??蛻舳嗽诮邮盏轿锪系腏son數(shù)據(jù)后解析,最終以圖表向用戶展示。在解析的過程中,判斷物料信息中是否包含紅色狀態(tài)的物料,如果存在則播放報(bào)警音頻,提示組長(zhǎng)和管理員物料庫(kù)存緊張,需要補(bǔ)充庫(kù)存。
3.4 系統(tǒng)實(shí)現(xiàn)
本文設(shè)計(jì)物料預(yù)警系統(tǒng)在Asp.Net平臺(tái),使用Microsoft Visual Studio2015工具開發(fā),使用部署在操作系統(tǒng)為Windows Server的服務(wù)器上,通過IIS發(fā)布物料預(yù)警系統(tǒng)站點(diǎn)。
界面采用Html5和JavaScript展示,為用戶提供人性化的操作界面。物料隨著出庫(kù)和入庫(kù)的操作,實(shí)時(shí)更新數(shù)據(jù)庫(kù)中的物料數(shù)據(jù)。預(yù)警界面會(huì)實(shí)時(shí)更新數(shù)據(jù),并通過直觀的方式方便用戶了解物料庫(kù)存的情況。系統(tǒng)為用戶展示信息時(shí),通過物料的狀態(tài)顯示不同的顏色,綠色代表庫(kù)存充足,黃色代表庫(kù)存略微緊張,紅色代表庫(kù)存緊張,需要補(bǔ)充。表示物料使用情況的進(jìn)度條按照當(dāng)前數(shù)量占庫(kù)存最大數(shù)量的百分百顯示,用戶在查看物料當(dāng)前庫(kù)存數(shù)量的同時(shí)也能夠直觀地了解目前物料的使用比例。物料庫(kù)存信息預(yù)警界面如圖6所示。
4 結(jié)論
本文提出的物料預(yù)警系統(tǒng)是在對(duì)SignalR框架的研究的基礎(chǔ)上,利用其Web的通信框架設(shè)計(jì)的,實(shí)現(xiàn)物料信息實(shí)時(shí)監(jiān)控的功能。該系統(tǒng)運(yùn)行穩(wěn)定,并且在工廠中得到很好的應(yīng)用,有效解決了管理者對(duì)物料庫(kù)存的管理、監(jiān)控和預(yù)警的問題。該系統(tǒng)能夠使用戶直觀地觀察到物料的庫(kù)存情況,了解在生成過程中物料的使用情況,為管理者做出決策提供數(shù)據(jù)支持,有利于工廠提高生成效率和產(chǎn)品質(zhì)量。
參考文獻(xiàn):
[1] 錢思宇. 基于Web的倉(cāng)儲(chǔ)監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[J]. 化工自動(dòng)化及儀表, 2011, 38(9): 1078-1080, 1146.
[2] 仰燕蘭, 金曉雪, 葉樺. ASP.NET AJAX框架研究及其在Web開發(fā)中的應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2011, 38(6): 195-198.
[3] 李燕. 基于ASP.NET SignalR的實(shí)時(shí)Web功能的實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2016, 12(24): 62-63.
[4] 何文學(xué), 羅晟勇, 彭天玲. SignalR技術(shù)在光伏監(jiān)控系統(tǒng)中的研究與應(yīng)用[J]. 計(jì)算技術(shù)與自動(dòng)化, 2016, 35(1): 14-17.
[5] 張強(qiáng). 在線醫(yī)療系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 天津: 天津大學(xué), 2016.
[6] JOSE M Aguilar. SignalR Programming in Microsoft ASP.NET[M]. 2014.
[7] Roberto Vespa. SignalR Real-time Application Cookbook[M]. 2014.
[8] 黃志國(guó), 柯敏毅. 基于ASP_NET MVC的設(shè)備維護(hù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 軟件導(dǎo)刊,2019(6): 121-124.
【通聯(lián)編輯:謝媛媛】