




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于移動端的分布式監(jiān)控系統(tǒng)設計第1章緒論 11.1研究背景及意義 11.2國內(nèi)外研究現(xiàn)狀 11.3論文研究目標及內(nèi)容 21.4本文章節(jié)安排 3第2章關(guān)鍵技術(shù)介紹 42.1數(shù)據(jù)采集與監(jiān)視控制系統(tǒng) 42.2消息隊列遙測傳輸協(xié)議 42.3Spring框架 52.4Vue框架 52.5Uniapp框架 52.6PostgreSQL數(shù)據(jù)庫 62.7本章小結(jié) 6第3章系統(tǒng)需求分析與概要設計 83.1整體需求分析 83.2數(shù)據(jù)處理需求分析 83.3數(shù)據(jù)告警需求分析 93.4數(shù)據(jù)可視化需求分析 103.5系統(tǒng)總體架構(gòu)設計 103.6數(shù)據(jù)層設計 113.6.1數(shù)據(jù)采集相關(guān)表的設計 113.6.2用戶相關(guān)表的設計 123.6.3告警功能相關(guān)表的設計 143.7邏輯層設計 143.8展示層設計 153.9本章小結(jié) 16第4章系統(tǒng)詳細設計與實現(xiàn) 174.1采集信息獲取 174.2數(shù)據(jù)處理和存儲 184.3客戶端UI組件設計與實現(xiàn) 214.3.1Lys-list組件 214.3.2Lys-list-item組件 224.4客戶端渲染數(shù)據(jù)并實現(xiàn)操作面板 254.5可視化數(shù)據(jù)監(jiān)控面板 284.6告警處理 294.7功能測試 304.8本章小結(jié) 34結(jié)論 35緒論研究背景及意義集中式的生產(chǎn)系統(tǒng)通常較小,此時對于其數(shù)據(jù)的管理與監(jiān)控系統(tǒng)實現(xiàn)起來較為簡單,既可采用人工方式,也可采用較小的普通的數(shù)據(jù)監(jiān)控系統(tǒng)管理。但對于像變電站,天然氣管線,油田、物流包裝運輸?shù)确植季嚯x遠,生產(chǎn)單位分散的大型生產(chǎn)系統(tǒng),其生產(chǎn)過程中相應產(chǎn)生的數(shù)據(jù)采集、監(jiān)視和控制的需求并不能被簡單解決。SCADA系統(tǒng)(SupervisoryControlAndDataAcquisitionSystem)正是為這些系統(tǒng)提供這些所需功能的系統(tǒng)。SCADA系統(tǒng)隨著計算機技術(shù)發(fā)展而誕生,主要用于生產(chǎn)過程的控制與調(diào)度自動化。SCADA系統(tǒng)對現(xiàn)場的運行設備進行監(jiān)視和控制,以實現(xiàn)數(shù)據(jù)采集、設備控制、測量、參數(shù)調(diào)節(jié)以及各類信號報警等各項功能。隨近年來移動設備的普及,負責物流包裝的工廠的業(yè)務系統(tǒng)也變得更加復雜,在網(wǎng)頁端使用SCADA系統(tǒng)已經(jīng)并不能滿足企業(yè)和工廠快速增長的業(yè)務場景。在移動設備上使用SCADA系統(tǒng)對工廠中相關(guān)的數(shù)據(jù)進行監(jiān)視與控制的需求也變得愈發(fā)明顯。對于現(xiàn)在繁雜的移動端設備的種類與平臺,常規(guī)的SCADA系統(tǒng)采用的開發(fā)框架由于存在平臺兼容性問題,通常并不能滿足其在移動端的使用需求,而多平臺app的開發(fā)更是復雜且需要大量成本的事情。而這種情況下,跨端開發(fā)通常是較優(yōu)的選擇。因此實現(xiàn)通過采用多平臺兼容的框架對系統(tǒng)進行開發(fā)則顯得尤為重要。本課題旨在設計一個基于Uniapp框架的移動端多平臺的分布式監(jiān)控系統(tǒng),對現(xiàn)有的物流包裝的生產(chǎn)系統(tǒng)中的數(shù)據(jù)進行管理,監(jiān)控并提供告警服務,以便利現(xiàn)實中的生產(chǎn)過程。國內(nèi)外研究現(xiàn)狀基于計算機技術(shù)的SCADA系統(tǒng)隨著軟硬件技術(shù)的發(fā)展不斷迭代。迄今為止,國內(nèi)SCADA系統(tǒng)的發(fā)展已經(jīng)到了第四代。相對于一代到三代主要為自己的系統(tǒng)提供服務,第四代采用例如面向?qū)ο笳Z言、卷積神經(jīng)網(wǎng)、嵌入式系統(tǒng)開發(fā)、數(shù)據(jù)庫技術(shù)等多種計算機技術(shù),擁有著多體系交融的特點。第四代擁有著更加廣泛的集成對象,除傳統(tǒng)SCADA系統(tǒng)提供的數(shù)據(jù)管理與進程管理等功能以外,還敞開自身體系,可以與第三方軟硬件進行對接。前三代中,主站主要負責管理進程,PLC操作層則對其進行實際上的實現(xiàn)。隨著計算機技術(shù)的進步,四代廣泛應用工業(yè)以太網(wǎng),現(xiàn)場總線、現(xiàn)場智能設備將與可編程邏輯控制器一起完成現(xiàn)場操控的網(wǎng)絡化和分散化,完成網(wǎng)絡化散布式混合操控。通過對系統(tǒng)中功能的切割,工程師可以便捷地將各種設備分配到其對應的操作單位。然后操作員就可以對操作單位進行修正與調(diào)試。此外,控制單元是分布式部署,被控設備可以就近部署在控制單元周圍,以節(jié)約成本,并提高設備操作的響應速度。SCADA系統(tǒng)是由復雜的軟硬件之間進行互相的功能配合而成,也常被叫做組態(tài)軟件。國外SCADA組態(tài)軟件常見的有IFIX、WinCCOA、InTouch。國內(nèi)常見的SCADA組態(tài)軟件有三維力控、組態(tài)王KingView、紫金橋等。IFIX是Intellution自動化軟件產(chǎn)品家族,從屬于GE-IP。其為生產(chǎn)系統(tǒng)提供了集成與協(xié)同工作的環(huán)境。其特點是降低了自動化項目開發(fā)與系統(tǒng)升級維護的時間成本,與低三方工具集成成本低,方便生產(chǎn)力的提高。WinCCOA從屬于西門子工業(yè)自動化品牌SIMATIC系列,特點是處理信息與數(shù)據(jù)的能力超強,適用于大型與超大型的項目或生產(chǎn)系統(tǒng)。擁有SIL3安全資格認證,擅長進行完全方面集成。并且具有較高的開放性,可以讓用戶根據(jù)自己的需求定制自己需要的SCADA系統(tǒng)。InTouch由Wonderware公司開發(fā)。世界上有數(shù)十萬套InTouch系統(tǒng)正在運行,其可靠性與穩(wěn)定性相當高。在強大的網(wǎng)絡功能的支持下,InTouch具有最大限度的開放性。除此之外,InTouch自身帶有數(shù)據(jù)庫,并支持SQL語言。三維力控軟件由國內(nèi)的力控科技開發(fā)。擁有著驅(qū)動圖形顯示的核心3D組件,并可以提供鏈路的3D展示功能,包括鏈路以及端口信息。具有場景編輯功能,以滿足用戶需求,此外,可以在第三方平臺上提供告警信息的集中展示。組態(tài)王KingView由國內(nèi)的亞控公司開發(fā)。具有簡單易用的向?qū)綀蟊?,豐富的設備支持庫等,并且支持工業(yè)庫和關(guān)系數(shù)據(jù)庫。紫金橋由紫金橋公司開發(fā)??梢詾榉植际降纳a(chǎn)系統(tǒng)提供功能,具有完善的驅(qū)動與相關(guān)接口,且其圖形系統(tǒng)簡單易于使用,并且整個軟件可以通過web端直接瀏覽。由于國內(nèi)計算機技術(shù)起步較晚,國內(nèi)的SCADA系統(tǒng)與軟件開發(fā)也并沒有國外那樣豐富的生態(tài)與實踐經(jīng)驗,將組態(tài)軟件在移動端進行實現(xiàn)依然是我國的生產(chǎn)系統(tǒng)需要解決的問題。本文即是要對此問題進行解決,設計并實現(xiàn)一個支持數(shù)據(jù)管理與數(shù)據(jù)告警等功能的多平臺的移動端應用。論文研究目標及內(nèi)容本文主要研究內(nèi)容如下:(1)在現(xiàn)有的監(jiān)控與數(shù)據(jù)采集(SCADA)服務端和Web客戶端的基礎(chǔ)上,基于Uniapp框架,設計并實現(xiàn)監(jiān)控業(yè)務的多移動端App,并調(diào)試對應的多客戶端(微信小程序客戶端、Android客戶端、iOS客戶端)。(2)在現(xiàn)有的監(jiān)控與數(shù)據(jù)采集(SCADA)服務端中,構(gòu)建數(shù)據(jù)的流程化處理框架,提供告警規(guī)則管理、告警檢查、數(shù)據(jù)告警等功能。(3)基于自動化測試技術(shù),構(gòu)建針對本系統(tǒng)的自動化測試環(huán)境,并對其進行測試。本文章節(jié)安排本課題設計并實現(xiàn)了基于移動端的分布式監(jiān)控系統(tǒng)。本文的章節(jié)以及內(nèi)容安排如下:緒論:通過對本文相關(guān)背景的介紹,結(jié)合國內(nèi)外現(xiàn)有的SCADA系統(tǒng),提出了研究目標,并簡要說明論文的章節(jié)結(jié)構(gòu)。關(guān)鍵技術(shù)介紹:對本課題所要用到的理論與技術(shù)進行介紹。主要包括數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)、消息隊列遙測傳輸協(xié)議、Spring框架、Vue框架、Uniapp框架以及數(shù)據(jù)庫技術(shù)。系統(tǒng)需求分析與概要設計:結(jié)合實際生產(chǎn)系統(tǒng)的需求,并考慮SCADA系統(tǒng)的組成以及特點,分別從數(shù)據(jù)處理需求、數(shù)據(jù)告警需求、數(shù)據(jù)可視化需求方面對系統(tǒng)進行需求分析。并將系統(tǒng)分為數(shù)據(jù)層、邏輯層與展示層,并對其進行了總體與部分的概要設計。系統(tǒng)詳細設計與實現(xiàn):依次說明并詳細實現(xiàn)以下功能,包括采集設備信息獲取,服務端數(shù)據(jù)處理與儲存,客戶端UI組件與實現(xiàn),客戶端渲染數(shù)據(jù)與操作面板的實現(xiàn),可視化數(shù)據(jù)監(jiān)控面板、報警功能。并在最后測試整個系統(tǒng)。關(guān)鍵技術(shù)介紹在已有SCADA系統(tǒng)設備支持與數(shù)據(jù)庫的前提下,本系統(tǒng)采用傳統(tǒng)的前后端分離模式開發(fā),其中,服務端使用傳統(tǒng)的SpringMVC模式進行開發(fā),并采用mqtt協(xié)議(消息隊列遙測傳輸協(xié)議)與現(xiàn)場采集設備進行通信,采用PostgreSQL數(shù)據(jù)庫對數(shù)據(jù)進行持久化以及管理??蛻舳朔矫鎰t是采用Uiapp框架開發(fā),對應使用的UI庫為uni-ui。數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)SCADA系統(tǒng)是一種用于遠程監(jiān)視和控制過程的工業(yè)軟件,主要用于公用事業(yè)和制造業(yè)的過程、警報和事件的監(jiān)測。典型的SCADA系統(tǒng)由人機交互界面(HMI)、SCADA服務器、PLC(可編程邏輯控制器)和實際的現(xiàn)場設備組成。該系統(tǒng)可以為現(xiàn)有的生產(chǎn)系統(tǒng)實現(xiàn)自動化。例如利用框架中的自動化來代替許多水電公司的人工操作,并利用其特點減少過程中可能出現(xiàn)的失誤,以削減勞動成本。SCADA系統(tǒng)為生產(chǎn)系統(tǒng)提供了許多優(yōu)于手工勞動的好處,例如時間戳等通過網(wǎng)絡獲取實時數(shù)據(jù)的穩(wěn)定備份,數(shù)據(jù)流量冗余調(diào)整,以及安全警報系統(tǒng)等。相對于人工勞動,SCADA系統(tǒng)通過使用測試腳本檢測整個工廠中的問題或錯誤。如果處理過程中產(chǎn)生中斷事件,相關(guān)負責人可通過SCADA系統(tǒng)立即識別故障來源。本系統(tǒng)即是在現(xiàn)有的SCADA系統(tǒng)上進行的開發(fā),并實現(xiàn)數(shù)據(jù)管理,告警處理等相關(guān)的功能。消息隊列遙測傳輸協(xié)議MQTT(消息隊列遙測傳輸協(xié)議),構(gòu)建于TCP/IP協(xié)議上。通過采用發(fā)布與訂閱模式,實現(xiàn)了設備間一對多的實時消息通訊,MQTT的使用相關(guān)代碼編寫簡單,在有限的帶寬下,即可實現(xiàn)訂閱者與發(fā)布者間的實時可靠的消息服務。MQTT的數(shù)據(jù)傳輸體量較小。MQTT的報文格式?jīng)Q定了其對于帶寬的開銷很小,協(xié)議交換最小化。因此MQTT協(xié)議非常嵌合低運算能力和帶寬的嵌入式設備的使用場景,主要使用場景是在物聯(lián)網(wǎng)領(lǐng)域中采集設備與服務器的數(shù)據(jù)交換和消息采集。在本系統(tǒng)中,服務端通過向mqtt協(xié)議服務器提交訂閱設備相關(guān)的主題,服務器在收到采集設備發(fā)布的報文時,會將其分發(fā)到訂閱了該主題的服務端中,以此實現(xiàn)采集設備與服務端的通信。Spring框架Spring作為輕量級Java開發(fā)框架,為Java應用的開發(fā)提供了基礎(chǔ)的架構(gòu)支持。Spring框架用于簡化Java程序的開發(fā)流程并對程序編寫中的業(yè)務層和其它層進行解耦,讓Java開發(fā)者專注于程序本身的編寫。Spring采用面向切面開發(fā)(AOP)的方式。因此開發(fā)者可以方便的在程序運行的過程中對其進行操作,例如實現(xiàn)事務的權(quán)限驗證,對某個程序進行監(jiān)控等操作。此外,Spring也通過對多種技術(shù)的使用來對數(shù)據(jù)庫進行相關(guān)的各種操作。在本系統(tǒng)的服務端的設計中,即是采用了Spring框架的MVC模式,并對其稍作改動,在邏輯層面上以對代碼進行清晰的劃分,并且Spring框架還為本系統(tǒng)中權(quán)限管理相關(guān)的功能以及系統(tǒng)測試的相關(guān)代碼提供了基礎(chǔ)。Vue框架Vue主要用來設計前端頁面,是一套重點在于視圖層的漸進式框架。Vue項目的設計方式?jīng)Q定了其易于上手的特點,也很容易與其他項目進行合并。此外,在和其他工具以及各種工具庫一起工作時,Vue依然能為前端頁面提供完全的服務,并可以幫助開發(fā)者在頁面追溯造成異常的根源。Vue實現(xiàn)了響應式頁面,通過Object.definedProperty中的setter/getter方法對數(shù)據(jù)進行代理,以此監(jiān)視數(shù)據(jù)的變化。因此vue可以立即監(jiān)測到數(shù)據(jù)的變化,并會對視圖進行自動更新。除此以外vue通過規(guī)范的單文件組件(SFC規(guī)范)進行編程,使組件更容易進行復用,并使組件的維護變得簡單。Vue采用了虛擬DOM技術(shù),并且是聲明式的渲染。當vue接管的數(shù)據(jù)變化時,會通過虛擬DOM與要更新的數(shù)據(jù)視圖之間的比較得出重新渲染組件的最低成本,并自動對DOM進行渲染,以此提高渲染的效率?;谝陨咸匦?,熟悉JavaScript與CSS以后可以使用Vue框架對自己的軟件進行快速的實現(xiàn),在本系統(tǒng)中,移動端開發(fā)采用的Uniapp框架主要的代碼標準與文件標準和Vue框架相同,因此通過對Vue框架的學習即可無障礙的使用Uniapp框架。Uniapp框架Uniapp由DCloud公司開發(fā),支持iOS、Android、各種小程序、快應用等多個平臺。參考vue的代碼風格和開發(fā)模式,只需要編寫一套最基礎(chǔ)的代碼,該框架會自動生成多平臺對應的編譯結(jié)果,并保證代碼的完好運行。uni-app框架在國內(nèi)的生態(tài)比較豐富,有許多現(xiàn)有的可用的跨端組件供選用,可以為開發(fā)者提供更多成熟的組件。在開發(fā)app的時候,開發(fā)效率遠遠優(yōu)于原生開發(fā),一個人可以完成安卓,ios等多平臺APP的開發(fā)。且Uniapp學習成本較低,只需要掌握vue開發(fā)習慣或是有vue開發(fā)的經(jīng)驗,即可快速上手Uniapp。相對于傳統(tǒng)的原生APP開發(fā)模式與HTML5APP框架開發(fā)模式,Uniapp框架屬于混合模式移動應用,其優(yōu)勢有以下幾點:能調(diào)用部分系統(tǒng)硬件,多端兼容,維護相對容易學習成本低,開發(fā)周期短性能較于WebApp模式更優(yōu),且與原生開發(fā)的性能相接近同類型下的框架技術(shù)還有React-Native和Flutter,雖然采用雙渲染引擎(內(nèi)置webview與weex引擎)的uniapp性能上并不如flutter引擎優(yōu)秀,但uniapp在中國國內(nèi)生態(tài)較好,uni-app體系里包含中國開發(fā)者需要的許多功能,比如全端推送,國內(nèi)第三方賬號登陸、各種ui庫等。且uniapp使用Vue.js開發(fā),具有和vue相近的特點:簡單易學,響應式數(shù)據(jù)綁定,組件化編程等。本系統(tǒng)的客戶端即是采用uniapp框架進行開發(fā),并且使用了DCloud官方提供的多端兼容的ui庫uni-ui框架。通過將前端數(shù)據(jù)與頁面元素進行綁定,該框架負責了數(shù)據(jù)的展示和消息提示,此外還采用了vue的插件vue-resource中的$http對象中的方法與后端進行數(shù)據(jù)交互。此外,還采用了秋云圖表組件庫,作為uniapp可視化的首選組件庫,其為數(shù)據(jù)的可視化展示提供了相當豐富的組件。除以上的UI組件外,本文還結(jié)合實際需求,適當自定義新的組件以滿足需求。PostgreSQL數(shù)據(jù)庫PostgreSQL是一個的開源對象關(guān)系型數(shù)據(jù)庫系統(tǒng)。其不僅保證了多種操作系統(tǒng)的兼容與穩(wěn)定易用的架構(gòu),還為多種類型的數(shù)據(jù)提供良好的支持與處理接口。此外,還可以通過安裝插件以實現(xiàn)更為豐富的功能。其免費且開源的特性也在社區(qū)中廣受好評。本系統(tǒng)中使用了PostgreSql數(shù)據(jù)庫對數(shù)據(jù)進行持久化存儲與管理,PostgreSql適用于像本系統(tǒng)一樣需要執(zhí)行復雜查詢并且對讀寫速度和數(shù)據(jù)一致性都要求較高的系統(tǒng),對重負載的處理性能較好。本章小結(jié)本章介紹了數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)的理論、消息隊列遙測傳輸協(xié)議、Spring框架、Vue框架、Uniapp框架以及PostgreSQL數(shù)據(jù)庫等技術(shù),并簡單說明了采用這些技術(shù)的理由。系統(tǒng)需求分析與概要設計整體需求分析基于網(wǎng)頁端的分布式數(shù)據(jù)監(jiān)控系統(tǒng)通常有豐富的現(xiàn)有資源和生態(tài)以供使用,但這些系統(tǒng)通常在移動端的表現(xiàn)不佳,所以依然有在移動端監(jiān)控并處理數(shù)據(jù)的需求。為負責物流裝配的公司內(nèi)目標用戶在移動端(包括微信小程序端、安卓端、ios端)提供監(jiān)控數(shù)據(jù)服務,支持用戶的數(shù)據(jù)管理操作并提供數(shù)據(jù)報警的服務即是本課題要達成的目標。結(jié)合移動端的特點來看,該系統(tǒng)需要為目標用戶提供以下功能:提供可視化的操作面板,方便快捷地管理監(jiān)控目標,可自定義監(jiān)控指標以及告警閾值,并對不同級別的事件進行不同優(yōu)先級別的數(shù)據(jù)實時報警,及時通知事件相關(guān)負責人,并保存事件日志以便后續(xù)查檔案與分析。數(shù)據(jù)處理需求分析數(shù)據(jù)處理是指明確監(jiān)控數(shù)據(jù)的采集來源,然后確定采集的數(shù)據(jù)指標以盡可能的正確真實地反映目標狀態(tài)的狀態(tài)。所以確認監(jiān)控目標以及需要的監(jiān)控指標是其中的關(guān)鍵,且不同實體對應的監(jiān)控指標也不盡相同,因此需要進一步列表細分。本監(jiān)控系統(tǒng)的數(shù)據(jù)采集源是現(xiàn)場設備,不同廠區(qū),不同類型的現(xiàn)場設備采集的數(shù)據(jù)通過mqtt協(xié)議傳送到后臺服務端,經(jīng)過相關(guān)告警規(guī)則的過濾并儲存,然后前端查詢處理后將其渲染到頁面中即是整個數(shù)據(jù)處理的大致流程。由于現(xiàn)場設備不同,其能采集的數(shù)據(jù)類型,數(shù)據(jù)種類也不盡相同。根據(jù)要采集的屬性的共同點,提取出共同要素,即:采集屬性序號、采集屬性地址、采集屬性名稱、采集屬性描述、采集屬性數(shù)據(jù)范圍,此外,我們還根據(jù)采集屬性應用的方向不同,為其進行了分類,如下表示例所示:表3.1部分采集屬性示例采集屬性序號采集屬性地址采集屬性名稱采集屬性描述采集屬性數(shù)據(jù)范圍采集屬性類型1DB10.DBW0轉(zhuǎn)位計數(shù)-高位碼垛轉(zhuǎn)位計數(shù)0-14設備狀態(tài)2DB10.DBW2編組計數(shù)-高位碼垛編組計數(shù)0-14設備狀態(tài)3DB10.DBW4當前層數(shù)-高位碼垛當前層數(shù)0-12設備狀態(tài)26DB100.DBD46轉(zhuǎn)位輸送機接觸器損耗(%)-高位碼垛轉(zhuǎn)位輸送機接觸器損耗(%)0-100預備性防護27DB100.DBD50升降機制動接觸器損耗(%)-高位碼垛升降機制動接觸器損耗(%)0-100預備性防護28DB100.DBD54推袋電磁閥損耗(%)-高位碼垛推袋電磁閥損耗(%)0-100預備性防護29DB100.DBD58位置檢測開關(guān)損耗(%)-高位碼垛位置檢測開關(guān)損耗(%)0-100預備性防護30DB100.DBX28.0轉(zhuǎn)位電磁閥預警-高位碼垛轉(zhuǎn)位電磁閥預警0-1預防性維護32DB100.DBX28.2升降機制動接觸器預警-高位碼垛升降機制動接觸器預警0-1預防性維護33DB100.DBX28.3推袋電磁閥預警-高位碼垛推袋電磁閥預警0-1預防性維護在本系統(tǒng)中,除去對實時數(shù)據(jù)的接收、過濾與列表型展示方式外,系統(tǒng)還需要對采集到的實時值進行可視化的圖表展示,以便于用戶對數(shù)據(jù)變化趨勢的掌握和統(tǒng)計。數(shù)據(jù)告警需求分析監(jiān)控系統(tǒng)的數(shù)據(jù)實時采集并通過mqtt協(xié)議上傳到服務端,服務端會對其進行實時分析,將其的值與用戶自定義的閾值進行比較。發(fā)生數(shù)據(jù)報警事件時,系統(tǒng)會根據(jù)數(shù)據(jù)越域的程度以及預設定的嚴重程度對客戶端發(fā)送不同告警等級的通知,客戶端接收到告警通知后即時進行通知推送,方便用戶對其進行處理,同時客戶端后臺對事件進行日志記錄,方便用戶以后查閱。告警管理可分為以下幾個功能:自定義告警規(guī)則:客戶端提供針對不同采集屬性的自定義告警規(guī)則,包括告警閾值、規(guī)則函數(shù)、針對的采集屬性、嚴重級別等。告警判斷:服務端根據(jù)數(shù)據(jù)庫中設定的報警規(guī)則與報警函數(shù)實時對采集數(shù)據(jù)進行過濾,并選擇相應的處理方式。報警處理:數(shù)據(jù)觸發(fā)告警時,系統(tǒng)需要發(fā)送報警信息給事件的相關(guān)負責人,包含觸發(fā)報警的原始數(shù)據(jù),觸發(fā)函數(shù),報警級別;告警日志:對告警信息存儲和持久化以后,先相關(guān)負責人即可對此進行統(tǒng)計、處理、追責等操作。告警事件提醒:為優(yōu)化用戶體驗,若告警事件一段時間未被相關(guān)負責人及時處理,將自動提升告警級別,以提醒事件負責人。反之,若告警事件被負責人及時預定處理,則告警應當靜默一個合理的時間段以等待負責人的處理。告警流程如下圖所示:(插圖:圖3.1告警處理流程圖)數(shù)據(jù)可視化需求分析在各種原始數(shù)據(jù)、例如設備、用戶、廠區(qū)相關(guān)數(shù)據(jù)等,對其的渲染方式并不能采用網(wǎng)頁端常規(guī)的采用的形式。為此需要有一個清晰明了、簡介好用的數(shù)據(jù)操作頁面,以支持用戶的各種操作。常規(guī)基于SCADA的監(jiān)控系統(tǒng)通常是基于網(wǎng)頁端的,而本課題需要設計一個基于移動端(微信小程序端,安卓端,ios端)的方便易用的監(jiān)控系統(tǒng)的客戶端,為此需要結(jié)合移動端的特點去以可視化、交互化的方式設計監(jiān)控系統(tǒng)的數(shù)據(jù)的展現(xiàn)形式以及簡單易用的操作界面,以方便用戶清晰直觀地管理整個系統(tǒng)。(插圖:圖3.2數(shù)據(jù)可視化例圖)對于本監(jiān)控系統(tǒng),需要考慮的可視化需求有以下幾點:結(jié)合移動端的操作特點,擬定出方便用戶管理的操作界面并實現(xiàn);用戶并不能一直緊盯數(shù)據(jù)界面,因此為保證數(shù)據(jù)告警服務的正常運行需要提供后臺進程的服務;以圖表的形式提供對采集數(shù)據(jù)的可視化表現(xiàn),并提供一定的數(shù)據(jù)分析、數(shù)據(jù)統(tǒng)計等基礎(chǔ)操作,以幫助相關(guān)負責人在生產(chǎn)系統(tǒng)進行相關(guān)的工作,提升其工作效率。系統(tǒng)總體架構(gòu)設計現(xiàn)將整個分布式監(jiān)控系統(tǒng)的核心問題總結(jié)為以下幾個問題:服務端應當如何從采集設備上實時獲取數(shù)據(jù),服務端需要怎樣實現(xiàn)數(shù)據(jù)的持久化以支持復雜條件下的查詢,客戶端應當如何與服務端進行層次分明的數(shù)據(jù)交流,如何處理客戶端設置的告警規(guī)則以實現(xiàn)數(shù)據(jù)的實時報警?;谝陨蠁栴},我們可以發(fā)現(xiàn)系統(tǒng)中存在著兩條重要的數(shù)據(jù)流向:由用戶各種需求產(chǎn)生的自上而下的傳遞的配置信息,和現(xiàn)場采集數(shù)據(jù)自下而上傳遞的原始數(shù)據(jù)集。由這兩條主要的信息流的導向,系統(tǒng)參考傳統(tǒng)的MVC設計模式進行分層,分為數(shù)據(jù)層,控制層與展示層。數(shù)據(jù)層對現(xiàn)實中的實體對象進行抽象并且提取要素,負責實際對數(shù)據(jù)庫的操作;展示層提供接口并負責與用戶的交互,在此系統(tǒng)中,我們將其抽象到移動客戶端(app與小程序等的操作界面)中進行具體的實現(xiàn),控制器層接收并處理展示層的請求,將處理后的請求下傳到數(shù)據(jù)層。此外,邏輯層還負責了與采集設備的交流。由此如所示建立整個系統(tǒng)的主要框架。(插圖,圖4.1:系統(tǒng)對架構(gòu)的設計圖)配置信息從最上層的展示層(移動端界面)由用戶的操作(自定義告警規(guī)則等)產(chǎn)生,通過網(wǎng)絡請求傳送到服務端,由邏輯層進行處理和存儲。在系統(tǒng)初始化以及相關(guān)數(shù)據(jù)更新時,會查詢數(shù)據(jù)庫以拉取對應用戶的配置信息并與相應的客戶端進行同步,然后由客戶端實現(xiàn)告警功能,以實現(xiàn)多端信息以及需求功能的同步?,F(xiàn)場采集數(shù)據(jù)由下至上進行傳遞,相對的,報警事件也會同時上傳。采集數(shù)據(jù)由現(xiàn)場設備采集后傳送到服務端并儲存起來,客戶端通過服務端提供的接口進行查詢等數(shù)據(jù)操作。告警事件則是在服務端通過接收到mqtt服務器分發(fā)而來的實時數(shù)據(jù)時,服務端根據(jù)告警規(guī)則與對應函數(shù)實時與閾值范圍做比較,若采集數(shù)據(jù)不在閾值范圍內(nèi),則會立即產(chǎn)生告警事件,同時儲存相關(guān)信息。整個系統(tǒng)以節(jié)點的方式劃分數(shù)據(jù)、用戶與服務節(jié)點,多層服務共同協(xié)作以實現(xiàn)所需的功能,以下將對各層的主要任務以及相關(guān)的設計進行闡述。數(shù)據(jù)層設計物理層數(shù)據(jù)設計需要明確系統(tǒng)中牽涉到的實體,并理清其中的關(guān)系。本系統(tǒng)中,實體有以下幾個部分:采集設備,采集屬性,節(jié)點,用戶,權(quán)限,告警規(guī)則。E-R圖如圖所示,以下將對各個主要實體進行詳細的分析和表的物理結(jié)構(gòu)設計,并為其建立相應的表。(插圖x.x分布式監(jiān)控系統(tǒng)的數(shù)據(jù)模型)數(shù)據(jù)采集相關(guān)表的設計采集設備部分,為采集設備構(gòu)造實體表,采集設備相關(guān)的表設計如REF_Ref104049187\h表31所示:設備擁有設備編號(主鍵)、設備名,此外,還需要記錄設備的類型與所在節(jié)點作為外鍵,并為其建立索引,方便用戶進行多表查詢。設備類型有數(shù)種,分別用來執(zhí)行不同的采集屬性任務。表STYLEREF1\s3SEQ表\*ARABIC\s11采集設備表設計名稱說明id采集設備編號dvcdesc采集設備描述dvcname采集設備名稱dvctype_id采集設備類型org_id采集設備所在節(jié)點采集屬性部分,為采集屬性構(gòu)造實體表,采集屬性表設計如REF_Ref104049193\h表32所示:采集屬性擁有采集屬性編號(主鍵)、采集屬性,采集地址和采集數(shù)據(jù)有效范圍,采集屬性的類型用來描述采集屬性所屬分類,本系統(tǒng)中,將采集屬性分為了三類:設備效率、本月生產(chǎn)效率與預備性防護。采集屬性的數(shù)據(jù)類型有以下三種情況:INT16、INT32、BOOL。用于描述采集屬性的數(shù)據(jù)格式,以便用戶對其進行處理。表STYLEREF1\s3SEQ表\*ARABIC\s12采集屬性表設計名稱說明id采集屬性編號dvcattributeaddress采集屬性地址dvcattributedesc采集屬性描述dvcattributename采集屬性名稱dvcattributevalidrange采集屬性數(shù)據(jù)范圍dvcattributedatatype_id采集屬性數(shù)據(jù)類型dvcattributetype_id采集屬性類型采集設備采集到的信息將被記錄到歷史采集數(shù)據(jù)表中,歷史采集數(shù)據(jù)表設計如REF_Ref104049251\h表33所示,其中采集信息的設備id與采集屬性id也將作為外鍵,以方便用戶進行多表聯(lián)合查詢。表STYLEREF1\s3SEQ表\*ARABIC\s13歷史采集數(shù)據(jù)表設計名稱說明rid歷史采集數(shù)據(jù)編號attr_id采集數(shù)據(jù)對應采集屬性dvcid采集數(shù)據(jù)源(設備id)rtime采集時間rvalue采集值rtime_rangestart采集起始時間rtime_rangeend采集結(jié)束時間用戶相關(guān)表的設計采集設備與用戶實際工作在(廠區(qū))節(jié)點中,因此需要為節(jié)點建立實體表。節(jié)點數(shù)據(jù)采用樹狀結(jié)構(gòu)進行渲染,故使用父節(jié)點編號的屬性對其進行記錄,采用廣度優(yōu)先遍歷算法即可獲取整個節(jié)點樹。節(jié)點表的物理設計與對應解釋如REF_Ref104049200\h表34所示:表STYLEREF1\s3SEQ表\*ARABIC\s14節(jié)點表的設計名稱說明id節(jié)點編號orgdesc節(jié)點描述orgname節(jié)點名稱orgparent父節(jié)點編號用戶層面,角色表設計如REF_Ref104049206\h表35所示。系統(tǒng)通過角色劃分,將用戶分為不同的角色類型,這影響著管理權(quán)限的分發(fā)。表STYLEREF1\s3SEQ表\*ARABIC\s15角色表設計名稱說明id角色name角色名稱roledesc角色描述管理權(quán)限用來描述用戶對每個頁面的訪問與操作權(quán)限。權(quán)限表的設計如REF_Ref104049231\h表36所示,管理權(quán)限被分為5類,分別是菜單權(quán)限、寫權(quán)限、讀權(quán)限、售后服務權(quán)限、監(jiān)控權(quán)限。Key值則是用來在服務端進行權(quán)限驗證用的字段。表STYLEREF1\s3SEQ表\*ARABIC\s16權(quán)限表的設計名稱說明Id權(quán)限編號Name權(quán)限名稱permissiondesc權(quán)限描述permissiontype_id權(quán)限類型編號Key權(quán)限驗證用字段用戶表設計如REF_Ref104049244\h表37所示。用戶表主要記錄了系統(tǒng)中所有用戶的主要信息,主要用以區(qū)分各個用戶的職責劃分,并說明其所屬單位,即用戶所在節(jié)點的編號。表STYLEREF1\s3SEQ表\*ARABIC\s17用戶表的設計名稱說明id用戶編號email用戶郵箱地址password用戶密碼username用戶名稱org_id用戶所在節(jié)點告警功能相關(guān)表的設計當數(shù)據(jù)超出報警閾值時,服務端在發(fā)出告警信息的同時,也會將告警日志記錄到數(shù)據(jù)庫中。告警日志表中記錄了告警信息提示、告警事件、觸發(fā)告警規(guī)則、告警設備id、告警采集屬性id。其中告警規(guī)則id、告警設備id、告警采集屬性id作為索引。告警日志記錄表的物理結(jié)構(gòu)設計與對應解釋如REF_Ref104049260\h表38所示:表STYLEREF1\s3SEQ表\*ARABIC\s18告警日志記錄表的物理結(jié)構(gòu)設計名稱說明id告警日志編號alarmeventmsg告警事件提示信息alarmtime告警時間alarmrule_id告警規(guī)則編號alarmstatus告警級別alarm_device_attr_id觸發(fā)告警的采集屬性編號alarm_device_id告警設備編號告警規(guī)則由用戶設定,經(jīng)服務端處理后存儲在數(shù)據(jù)庫中。告警規(guī)則記錄表包含了告警提示信息,告警規(guī)則名,告警閾值,告警函數(shù)id與告警規(guī)則適用范圍。告警函數(shù)描述了告警規(guī)則應當怎樣進行判斷,結(jié)合報警閾值,即可實現(xiàn)對采集屬性數(shù)據(jù)的范圍的限制。告警規(guī)則記錄表的物理結(jié)構(gòu)設計與對應解釋如REF_Ref104049271\h表39所示:表STYLEREF1\s3SEQ表\*ARABIC\s19告警規(guī)則記錄表的物理結(jié)構(gòu)設計名稱說明id告警規(guī)則編號alarmruledesc告警規(guī)則描述alarmrulemsg告警規(guī)則對應提示信息alarmrulename告警規(guī)則名稱alarmrulevalue告警閾值arf_id告警函數(shù)dvcattr_id告警規(guī)則對應的采集屬性經(jīng)過以上的分析和設計,本系統(tǒng)所牽涉到的實體對象已經(jīng)有了清晰的功能和屬性劃分,接下來就可以對實體間的關(guān)系進行功能上的實現(xiàn)。邏輯層設計邏輯層在物理意義上即是后端服務器。后端服務器采用Spring框架進行開發(fā),并需要實現(xiàn)與前端的交互邏輯,并向外開放標準接口。服務端對的客戶端發(fā)來的請求進行應答和實現(xiàn),例如數(shù)據(jù)查詢,數(shù)據(jù)修改等常規(guī)數(shù)據(jù)操作,或者向前端傳遞監(jiān)控數(shù)據(jù)與告警記錄。邏輯層的模塊有以下幾項:獲取采集數(shù)據(jù)、標準數(shù)據(jù)接口、告警服務模塊。相關(guān)模塊間的數(shù)據(jù)交流與處理的流程如圖4.2所示(插圖:圖4.2:邏輯層主要模塊圖)標準數(shù)據(jù)接口模塊,包括所有的數(shù)據(jù)請求以及頁面請求,例如查詢設備列表,設定采集屬性組,查詢告警日志等操作;告警服務模塊,告警規(guī)則是根據(jù)用戶在展示層自定義的告警規(guī)則抽象出的邏輯概念。邏輯層將用戶提交的配置信息保存在相應的告警規(guī)則中,由用戶登錄時進行多端數(shù)據(jù)同步。在此之后,邏輯層會每隔一段時間拉取相關(guān)的數(shù)據(jù)并進行閾值判斷,若滿足報警條件,則根據(jù)預設定的報警級別產(chǎn)生報警信號,以通知相關(guān)負責人進行處理。獲取實時采集數(shù)據(jù)部分,本系統(tǒng)采用了MQTT協(xié)議與現(xiàn)場的采集設備通過mqtt服務器來進行數(shù)據(jù)消息的接受和處理,包括采集屬性消息隊列的處理,對采集數(shù)據(jù)的分析與預警等操作。與數(shù)據(jù)層的數(shù)據(jù)庫的交互,邏輯層為實現(xiàn)前后端接口的功能,訪問數(shù)據(jù)庫是必要的流程。包括數(shù)據(jù)的存儲與查詢,展示層設計展示層在物理上即是用戶所使用的客戶端,主要用來渲染數(shù)據(jù)并為用戶提供方便的交互界面,且需要實現(xiàn)前后端交互邏輯。因此在設計本系統(tǒng)的移動端app時需要考慮以下人們使用移動設備的特點:1.用戶時間碎片化。由于移動設備方便攜帶,很多時候人們常在短暫的時間內(nèi)完成一個事件的一部分然后被中斷去做其他事件。在吃飯,坐公交,上班等日常生活的過程中等短短5-20分鐘的時間里,移動設備常常被拿起幾分鐘然后放下。因此,移動設備上的app設計需要實現(xiàn)高效和輕交互的特點。2.用戶操作方式的變化。與傳統(tǒng)網(wǎng)頁端的設計不同,移動端使用觸摸代替鼠標進行各種操作。移動觸屏中各種手勢的配搭相比于鍵盤和鼠標,有著更快的響應效果和更低的學習成本,且用戶與軟件的交互成本也更低。與此同時,觸摸方式帶來的精準度降低,也無法實現(xiàn)類似網(wǎng)頁中的hover與懸停等常規(guī)鼠標操作效果。3.移動端屏幕小。在要考慮平臺系統(tǒng)間的規(guī)范差異之外,移動平臺的設計還需要考慮移動端屏幕較小的問題,無法展示像網(wǎng)頁端那樣豐富的元素以及內(nèi)容??紤]到人們觸摸點位的模糊性,更需要APP設計的單個界面要簡潔且扼要,并且使交互盡量輕量化,使各元素間的層級更加淺顯。在本系統(tǒng)的實現(xiàn)過程中,需要著重考慮移動端屏幕窄小與觸摸操作方式帶來的影響。無法使用網(wǎng)頁端表格展現(xiàn)數(shù)據(jù)的情況下,系統(tǒng)需要一個支持移動端的豐富的觸摸操作形式的可操作數(shù)據(jù)列表組件,而uniapp框架中并沒有提供這樣的組件,因此本系統(tǒng)設計并實現(xiàn)了一個滿足需求的列表組件,設計過程將在下文中詳細說明。此外,還需要考慮告警功能的通知功能的實現(xiàn),不管用戶在哪個應用的頁面,當用戶收到告警信息時,均需要對用戶進行通知。本章小結(jié)本章通過為分布式監(jiān)控系統(tǒng)進行了主要的分析和整體上的設計。其中包括了對整體的和數(shù)據(jù)處理、數(shù)據(jù)告警以及數(shù)據(jù)可視化三個重要部分的需求分析,并簡要設計了系統(tǒng)架構(gòu),分為數(shù)據(jù)層,邏輯層與展示層,并分別對各層的要點與實現(xiàn)邏輯進行簡要的描述。系統(tǒng)詳細設計與實現(xiàn)將本文所述的分布式監(jiān)控系統(tǒng)分為以下部分:采集信息獲取、數(shù)據(jù)處理和存儲、客戶端UI組件的設計與實現(xiàn)、客戶端渲染數(shù)據(jù)實現(xiàn)操作面板、可視化數(shù)據(jù)監(jiān)視面板、告警處理。以下將一一說明。圖STYLEREF1\s圖STYLEREF1\s5.SEQ圖\*ARABIC\s11客戶端連接服務器示意圖在采集設備與服務端間,依靠mqtt服務器進行消息的訂閱、發(fā)布和接受。本系統(tǒng)中MQTT工作流程主要有以下4部分:服務端連接mqtt服務器、訂閱主題、取消訂閱、斷開連接。以下將對其過程以及處理進行詳細的解釋。引入mqtt相關(guān)依賴后,分布式監(jiān)控系統(tǒng)的服務端(以下簡稱服務端)需要連接mqtt服務器。編寫連接方法并設定好與mqtt服務器連接的相關(guān)參數(shù)后,作為mqtt通信的客戶端,如REF_Ref103645871\h圖5.1所示,服務器在收到connect報文以后,必須以應答報文進行回復,至此,連接服務器部分完成。若建立會話失敗,則會在應答報文中給出會話建立失敗原因?qū)腻e誤代碼。圖STYLEREF1\s5.SEQ圖\*ARABIC\s12MQTT訂閱消息示意圖通過查詢數(shù)據(jù)庫,服務器可以獲得所有采集設備的id以及對應的采集屬性組。在訂閱消息的方法中對其進行遍歷即可產(chǎn)生相應的SUBSCRIBE報文。該報文的有效載荷部分包含著一個列表,該列表具體說明了服務端想要訂閱的采集設備的相關(guān)信息。如圖STYLEREF1\s5.SEQ圖\*ARABIC\s12MQTT訂閱消息示意圖在服務器刪除設備等操作時,實際是取消了對該采集設備的綁定。此時UNSUBSCRIBE報文被服務端發(fā)送到服務器。此外根據(jù)MQTT協(xié)議,UNSUBSCRIBE報文的低四位必須設置為0X2,否則會被認定為非法值并被關(guān)閉連接。與SUBSCRIBE報文相似的,UNSUBSCRIBE報文中一個列表,用于描述服務端當前需要退訂的設備的相關(guān)信息。在即將關(guān)機時,DISCONNECT報文將被用于與服務器斷開連接。此時所有還沒有發(fā)布的與當前連接相關(guān)的遺囑消息都會被服務端丟棄。數(shù)據(jù)處理和存儲在配置文件中添加postgres數(shù)據(jù)庫驅(qū)動、sevlet、spring等依賴,設置好數(shù)據(jù)庫url地址,數(shù)據(jù)庫賬號、數(shù)據(jù)庫密碼以后,即可成功連接數(shù)據(jù)庫。服務端受理客戶端的請求并進行處理以后將數(shù)據(jù)的實際變化反映到postgres數(shù)據(jù)庫中進行數(shù)據(jù)持久化。參考SpringMVC架構(gòu),本系統(tǒng)主要分為四層:控制層、業(yè)務層、展示層、數(shù)據(jù)訪問層。服務端使用業(yè)務層與數(shù)據(jù)訪問層來代替?zhèn)鹘y(tǒng)的模型層的功能以實現(xiàn)松耦合、模塊分離的效果。這樣在業(yè)務層就可以通過java中的各種注解來聲明式操作數(shù)據(jù)訪問層的同時為非關(guān)系型數(shù)據(jù)庫的使用提供條件,以拓展系統(tǒng)的功能。系統(tǒng)具體工作流程以及數(shù)據(jù)的處理過程如REF_Ref103777658\h圖5.4所示。以數(shù)據(jù)查詢操作為例,用戶通過客戶端的操作界面(即視圖層)以get方式發(fā)送url請求到前端控制器,Spring框架會為該請求自動處理映射關(guān)系,然后處理器根據(jù)url地址與方法類中的注解例如getmapping等找到對應的方法并返回給控制器。對參數(shù)轉(zhuǎn)化格式以后,控制器開始執(zhí)行Service層的方法,對數(shù)據(jù)庫進行查詢操作。Service層處理完成后,將結(jié)果返回控制器,隨后控制器根據(jù)處理結(jié)果對url進行響應。此時若查詢操作成功,則返回信息的data字段就會包含控制器返回的結(jié)果,這就是大致前后端交互的流程。圖STYLEREF1\s5.SEQ圖\*ARABIC\s14服務端數(shù)據(jù)處理流程(示意圖,需更換)圖STYLEREF1\s5.SEQ圖\*ARABIC\s14服務端數(shù)據(jù)處理流程(示意圖,需更換)表STYLEREF1\s4SEQ表\*ARABIC\s11查詢功能的控制器偽代碼@GetMapping("/devices")GetAllDevices(請求參數(shù)){try{newresponse;//新建應答用對象newdevices;//新建數(shù)據(jù)對象devices=deviceRepo.findAll();//獲取所有的設備(要查詢的信息)if(devices為空){賦值response對象(狀態(tài)碼200,信息:查詢結(jié)果為空)}else{賦值response對象(狀態(tài)碼200,信息:查詢結(jié)果)}return對http請求進行應答,內(nèi)容為response對象}catch(異常){賦值response對象,(狀態(tài)碼40000,信息:異常信息)return對http請求進行應答,內(nèi)容為response對象}}對于其他的數(shù)據(jù)訪問,例如增加修改刪除,只需要將對應注解的map方式修改以實現(xiàn)Restful風格的代碼編寫,并將查詢部分的代碼實現(xiàn)改為對應功能的代碼實現(xiàn)即可。本系統(tǒng)中Restful風格對應的mapping的注解如下REF_Ref103798957\h表42所示:表STYLEREF1\s4SEQ表\*ARABIC\s12訪問類型與注解對應表訪問類型請求方式對應注解查詢GETGetmapping刪除DELETEDeletemapping新增POSTPostmapping修改PUTPutmapping通過創(chuàng)建實體對象以映射實際的表(例如device表),Service層直接負責對實際數(shù)據(jù)的操作,通過使用數(shù)據(jù)訪問層的對象并使用注解來訪問數(shù)據(jù)庫,來完成對實際數(shù)據(jù)的數(shù)據(jù)庫。Service層查詢函數(shù)的偽代碼如下REF_Ref103797977\h表43所示:表STYLEREF1\s4SEQ表\*ARABIC\s13查詢功能的Service層偽代碼publicinterfaceDeviceRepository<Device,Long>{Device格式的參數(shù)}@Query("select*_id=:orgId")對查詢結(jié)果進行排序return查詢結(jié)果}以上就是對整個查詢過程的詳細介紹,其他類型的數(shù)據(jù)操作同理,不再贅述??蛻舳薝I組件設計與實現(xiàn)移動端的UI框架與操作需求與傳統(tǒng)的網(wǎng)頁端的需求極為不同,不能直接采用網(wǎng)頁端的數(shù)據(jù)展現(xiàn)方式(表格),而uni-ui庫中并沒有滿足現(xiàn)有需求的組件,故根據(jù)第4章的系統(tǒng)設計,我們需要自己設計并實現(xiàn)一個支持左右滑動操作以及折疊展開功能的列表,并考慮到移動端列表的需求,我們還需要進行長列表劃出屏幕的資源回收。根據(jù)uni-moudle組件風格,如圖所示,將列表功能分為兩個組件進行開發(fā),并分別取名為lys-list和lys-list-item。Lys-list組件作為外層包裝,作為整個列表的父組件,用來管理整個列表,實現(xiàn)子列表元素間的聯(lián)動操作(例如滑動一個列表子組件的時候,另外的已經(jīng)滑動的列表子組件會自動關(guān)閉),lys-list-item組件用于實現(xiàn)具體的頁面元素布局以及向上傳遞事件,并提供豐富的插槽,以便對組件進行擴展以滿足靈活的使用需求。Lys-list組件Lys-list組件向外暴露的API有兩類,分為prop屬性(即可以接受的從父組件傳來的參數(shù))與事件。其中設計的prop屬性如下REF_Ref103803621\h表44所示:表STYLEREF1\s4SEQ表\*ARABIC\s14Lys-list組件的prop屬性Prop屬性說明Border是否顯示邊框Value當前激活面板改變時觸發(fā)Accordion是否設為最多只有一個展開的子組件然后在lys-list組件的使用中就通過這些prop屬性來控制其外觀以及總體的功能。Lys-list組件向外提供的事件類型如下REF_Ref103805315\h表45所示:表STYLEREF1\s4SEQ表\*ARABIC\s15Lys-list組件的事件類型事件稱名說明@change切換面板或左右滑動時觸發(fā)@input輸入時觸發(fā)在lys-list組件的created()的生命周期,lys-list會初始化兩個空數(shù)組childrens,names,并提供給子組件lys-list-item,以記錄子組件的名稱和個數(shù),為子元素間的聯(lián)動操作提供基礎(chǔ)。此外,lys-list組件還為用戶提供了以下幾個方法:closeAll()關(guān)閉所有的組件的滑動狀態(tài);closeOther()關(guān)閉其他組件的滑動狀態(tài),此函數(shù)也是滑動操作的聯(lián)動關(guān)閉的基礎(chǔ),子組件lys-list-item在滑動操作時即是調(diào)用的這個函數(shù)以關(guān)閉其他組件;setOpen(),設定某個子組件滑動狀態(tài)關(guān)閉;setAccordion(self)關(guān)閉其他組件的折疊狀態(tài),此函數(shù)也是手風琴效果的實現(xiàn);resize()計算子組件的大小,為長列表的優(yōu)化提供基礎(chǔ)。Lys-list-item組件Lys-list-item組件與lys-list組件必須配套使用,單獨使用lys-list-item是無效的。在lys-list組件的包裹下,lys-list-item在頁面元素上實際上就是一組列表,這樣更方便uniapp框架對其的管理。Lys-list-item組件里實現(xiàn)了相當豐富的預置功能,并提供了6個插槽以支持用戶擴展功能,以下將以功能分組,分為基礎(chǔ)列表功能,左右滑動功能,折疊功能,數(shù)字角標,額外功能以及插槽拓展,對其進行詳細的介紹?;A(chǔ)列表功能部分如下REF_Ref103811151\h表46所示,作為一個列表元素,標題title是左邊的主體文字,通常用來放名字、基地址等主要信息,note則作為主題的補充說明,位于主題下,默認以灰色的小字進行展示。RightText是列表元素靠右的字體元素,用來展示稍次要的信息。最后控制用的五個prop屬性,disabled設為true后,整個組件元素不會再對任何操作產(chǎn)生反應。其余的功能在表中都有詳細介紹。表STYLEREF1\s4SEQ表\*ARABIC\s16Lys-list-item組件的基礎(chǔ)列表功能部分props屬性屬性名稱說明title標題note主要文字的注釋rightText右側(cè)顯示的文字disabled是否禁用ellipsis是否溢出隱藏,可選值,0:默認;1:顯示一行;2:顯示兩行;showArrow是否顯示向下和向左的箭頭圖標clickable是否開啟點擊反饋direction排版方向,可選值,row:水平排列;column:垂直排列;此屬性也控制3個插槽的排列方向在組件掛載完畢后,lys-list-item組件會調(diào)用getLysList()方法。當父元素實例的組件名為lys-list時,該方法可以返回父元素實例,否則為空。獲取到父元素實例對象后,即可進行子組件數(shù)統(tǒng)計以及在lys-list組件中的names和childrens數(shù)組中進行注冊等一系列操作。在組件銷毀時,lys-list-item會調(diào)用組件內(nèi)的uninstall函數(shù)進行銷毀。具體銷毀流程為:使用js的foreach方法遍歷父元素實例中的names和childrens數(shù)組,并一一進行清空?;A(chǔ)列表提供的長列表性能優(yōu)化的實現(xiàn)依靠uniapp框架提供的預編譯方式,若運行環(huán)境為app-nvue端,則使用<cell>標簽對整個lys-list-item組件進行包裹,以告訴原生引擎lys-list-item組件是可重用的,原生引擎在渲染lys-list-item組件時,則會對其進行相應的優(yōu)化。Lys-list-item組件的滑動相關(guān)的prop屬性如REF_Ref103811674\h表47所示,在預想的效果中,lys-list-item組件應該支持左右滑動,并且出現(xiàn)相應的選項。故lys組件在水平方向上應該有三種定位:左、右、中,這個狀態(tài)由show屬性進行控制。左右選項通過left-options與right-options屬性由父組件傳入,若傳入類型為字符串的數(shù)組,則數(shù)組元素的內(nèi)容將依次被渲染成對應的選項列表,若傳入類型為對象,則該對象的格式應當如REF_Ref103812605\h表48所示,然后lys-list-item組件會根據(jù)該對象的內(nèi)容去渲染組件的左右選項的內(nèi)容。Threshold屬性用于控制滑動距離多大時才觸發(fā)滑動。autoClose屬性用于控制同時最多只有一個組件元素處于左右滑動的狀態(tài)。表STYLEREF1\s4SEQ表\*ARABIC\s17Lys-list-item組件的滑動功能部分props屬性屬性名說明show開啟關(guān)閉組件,auto-close=false時生效left-options左側(cè)選項內(nèi)容及樣式right-options右側(cè)選項內(nèi)容及樣式threshold滑動的閾值autoClose其他組件開啟的時候,當前組件是否自動關(guān)閉表STYLEREF1\s4SEQ表\*ARABIC\s18左右按鈕參數(shù)格式參數(shù)說明text按鈕中的文字style其對應的樣式,應作為對象賦值在實現(xiàn)滑動效果的api上,Lys-list-item組件采用了微信提供的腳本語言wxs(WeiXinScript)進行實現(xiàn)。通過wxsswipe對象上的touchstart、touchmove、touchend三個方法來獲取用戶觸摸點位的變化,然后與滑動閾值threshold作比較,若滿足則會觸發(fā)相應的事件(滑動)。然后向父組件傳遞change事件,表示子組件被滑動了。父組件即可在change事件發(fā)生時做出對應的響應(可選)。當用戶點擊lys-list-item組件左右兩側(cè)的按鈕時,組件會向父組件傳遞click事件,并默認傳遞一個對象作為事件參數(shù),包含當前點擊的內(nèi)容、下標、位置信息。用戶即可根據(jù)事件參數(shù)判斷哪個按鈕被點擊了,并做出相應的響應處理。Lys-list-item組件的折疊相關(guān)的prop屬性如REF_Ref103813555\h表49所示。在預想的效果中,點擊lys-list-item組件時,組件應該切換折疊與否的狀態(tài)。Open屬性用來控制面板的展開與否??紤]到app端性能優(yōu)化的問題,采用uniapp預編譯的方式實現(xiàn)在app端不啟用折疊動畫,在非app端時啟用。此外title-border則控制折疊面板與標題的分隔線。表STYLEREF1\s4SEQ表\*ARABIC\s19Lys-list-item組件的折疊功能部分props屬性屬性名說明open是否展開面板show-animation開啟動畫title-border折疊面板標題分隔線,取值:auto,分隔線自動顯示;none,不顯示分隔線;show,一直顯示分隔線組件在初始化完畢時會調(diào)用獲取組件高度的方法,若運行環(huán)境為app-nvue端,則使用getCollapseHeight函數(shù),否則為getNvueHwight函數(shù)。這兩個函數(shù)分別結(jié)合對應平臺的特點對組件高度進行獲取,以實現(xiàn)性能的優(yōu)化。獲取到組件高度后,通過css屬性對折疊內(nèi)容進行控制,即可實現(xiàn)折疊功能。默認情況下,點擊lys-list-item組件會切換組件的展開狀態(tài),同時會觸發(fā)click事件,以便用戶對事件進行捕獲。數(shù)字角標的功能用于實現(xiàn)消息列表,可在列表元素的左上角顯示數(shù)字角標,具體prop屬性如REF_Ref103815889\h表410所示。表STYLEREF1\s4SEQ表\*ARABIC\s110Lys-list-item組件的數(shù)字角標的部分props屬性屬性名說明showBadge是否顯示數(shù)字角標badgeText數(shù)字角標的內(nèi)容badgeType數(shù)字角標的類型badgeStyle數(shù)字角標的樣式為考慮以后組件的其他使用場景,lys-list-item還提供額外功能,包含左側(cè)縮略圖功能(類似QQ聊天列表頭像);超鏈接功能(點擊列表元素跳轉(zhuǎn)),跳轉(zhuǎn)功能支持Uniapp的五種跳轉(zhuǎn)頁面的方法;左側(cè)開關(guān)功能;具體prop屬性如REF_Ref103815291\h表411所示。表STYLEREF1\s4SEQ表\*ARABIC\s111Lys-list-item組件的額外功能部分props屬性屬性名說明thumb左側(cè)縮略圖,若thumb有值,則不會顯示擴展圖標thumbSize縮略圖的尺寸,可選值,lg:大圖;medium:一般;sm:小圖;link新頁面跳轉(zhuǎn)方式to新頁面跳轉(zhuǎn)地址,如填寫此屬性,click會返回頁面是否跳轉(zhuǎn)成功showSwitch是否顯示SwitchswitchCheckedSwitch是否被選中除以上已經(jīng)實現(xiàn)的功能外,lys-list-item還提供了6個可擴展的插槽,用以支持用戶個性化的需求,用戶只需要滿足vue使用插槽的規(guī)范即可對其進行使用。插槽名與說明如下REF_Ref103817822\h表412所示:表STYLEREF1\s4SEQ表\*ARABIC\s112lys-list-item的插槽名稱說明header左/上的內(nèi)容插槽,可完全自定義默認顯示body中間內(nèi)容插槽,可完全自定義中間內(nèi)容Footer右/下的內(nèi)容插槽,可完全自定義右側(cè)內(nèi)容Left左側(cè)滑動內(nèi)容,會覆蓋leftOptions內(nèi)容Right右側(cè)滑動內(nèi)容,會覆蓋rightOptions內(nèi)容Wrapper折疊內(nèi)容插槽,為折疊面板提供更豐富的內(nèi)容至此lys-list-item組件的功能以及提供的接口介紹完畢,也成功實現(xiàn)了支持預想操作方式的新組件??蛻舳虽秩緮?shù)據(jù)并實現(xiàn)操作面板基于REF_Ref103894952\r\h4.3節(jié)的成果,我們即可進行數(shù)據(jù)渲染與前端操作面板的實現(xiàn)。如圖5.5所示的工作流程。在數(shù)據(jù)渲染之前,客戶端需要對服務端發(fā)送各種方式的url請求。(插圖5.5客戶端頁面的渲染流程)在頁面剛加載時,頁面會執(zhí)行初始化函數(shù)InitDataList以獲取要渲染的數(shù)據(jù)列表,初始化函數(shù)通過調(diào)用datamethod.js中的LoadDataByParams方法以GET方式發(fā)送url請求,獲得響應以后,通過編寫排序方法對數(shù)據(jù)列表進行排序,以作為最基礎(chǔ)的數(shù)據(jù)源。實際渲染到頁面中的數(shù)據(jù)列表是數(shù)據(jù)源的一個視圖,頁面通過vue的計算屬性對數(shù)據(jù)源進行監(jiān)聽與視圖映射,當數(shù)據(jù)源產(chǎn)生變化時,vue的監(jiān)聽生效,視圖也會響應式的更新,這樣在客戶端進行排序與查詢等操作時,不需要反復向后端查詢數(shù)據(jù),以提升性能。Datamethod.js中封裝了基礎(chǔ)的數(shù)據(jù)訪問操作與數(shù)據(jù)操作反饋提示。其中包括有參數(shù)和無參數(shù)的獲取數(shù)據(jù)列表操作以及刪除、更新與新增數(shù)據(jù)項的方法。其中采用了vue的插件vue-resource提供的$http對象的request方法,按照REF_Ref103798957\h表42中的請求方式對url進行請求以對應服務端的數(shù)據(jù)訪問接口。操作反饋則是根據(jù)url請求的返回結(jié)果并結(jié)合頁面元素對用戶進行相應的消息提示。圖STYLEREF1\s5.SEQ圖\*ARABIC\s15客戶端常規(guī)數(shù)據(jù)管理頁面的渲染結(jié)果通過使用lys-list組件與lys-list-item組件對數(shù)據(jù)視圖進行渲染,在常規(guī)的數(shù)據(jù)管理頁面中,需要同時用到滑動功能與折疊功能。通過查詢REF_Ref103811151\h表46、REF_Ref103811674\h表47與REF_Ref103813555\h表49中的prop屬性,對數(shù)據(jù)進行依次渲染。渲染的結(jié)果如REF_Ref104123578\h圖5.5所示:圖STYLEREF1\s5.SEQ圖\*ARABIC\s15客戶端常規(guī)數(shù)據(jù)管理頁面的渲染結(jié)果根據(jù)數(shù)據(jù)處理的需求,還加入了分頁功能、搜索框與多功能菜單。分頁功能采用uni-ui組件庫中的uni-pagination組件,提供了頁面基本元素并對頁碼進行自動管理。搜索框在現(xiàn)有的組件上進行修改,添加了一些互動性的操作內(nèi)容,例如其在默認狀態(tài)下隱藏,當用戶點擊搜索按鈕時才會出現(xiàn),以改善移動端屏幕小,元素擁擠帶來的弊端,搜索功能只在當前頁面內(nèi)進行查詢,無數(shù)據(jù)交互部分,因此消耗資源少,性能較優(yōu)。多功能菜單部分,點擊菜單在屏幕下方即可彈出功能按鈕,功能分類包括根據(jù)頁面內(nèi)不同關(guān)鍵字排序、跳轉(zhuǎn)數(shù)據(jù)頁功能。跳轉(zhuǎn)功能采用基礎(chǔ)組件slider實現(xiàn),用戶只需要滑動滑塊即可實現(xiàn)頁面跳轉(zhuǎn),無需手動輸入頁碼,以優(yōu)化用戶的使用體驗。其余的常規(guī)數(shù)據(jù)操作功能(修改,刪除等功能)位于列表元素的右列表中,通過lys-list-item的prop屬性中的right-option屬性,通過綁定click事件,在用戶點擊右側(cè)按鈕時即可獲取到點擊事件與相應的參數(shù),根據(jù)事件參數(shù)即可判斷點擊的位置。用戶點擊刪除按鈕時,調(diào)用uni提供的模態(tài)彈窗函數(shù)uni.showModal對進行二次刪除確認,若用戶確認刪除,則調(diào)用datamethod.js中的刪除數(shù)據(jù)請求以DELETE方式對服務端進行刪除數(shù)據(jù)的請求。新增與修改數(shù)據(jù)需要用到輸入表單,故需要跳轉(zhuǎn)到輸入表單頁面進行具體的處理。輸入表單頁面加載時會異步調(diào)用自己的初始化函數(shù),通常為輸入表單需要用到的數(shù)據(jù)規(guī)范,例如參數(shù)列表、備選項列表、樹狀數(shù)據(jù)對象等。對象信息中通常有不能直接渲染到頁面中的元素,此時需要賦值到以上相應的數(shù)據(jù)結(jié)構(gòu)中才能進行渲染。并接受上個頁面?zhèn)鱽淼膮?shù)即要修改的對象信息,如果獲取到的頁面參數(shù)不為空,則此頁面的功能為修改信息,并對數(shù)據(jù)建立數(shù)據(jù)結(jié)構(gòu)上的映射,以對輸入表單的頁面信息進行初始化;若頁面參數(shù)為空,則為新建數(shù)據(jù)項。此時無需操作。在表單頁面元素的渲染中,以下幾種數(shù)據(jù)形式的渲染最為常用:數(shù)據(jù)復選框,樹形數(shù)據(jù),待選列表。數(shù)據(jù)復選框功能采用了uni-ui框架提供的數(shù)據(jù)綁定型組件uni-data-checkbox,該組件可以通過localdata綁定一個數(shù)組型的數(shù)據(jù),從而以固定格式對其進行渲染。value屬性與用戶設定的用來接收選中列表的數(shù)組進行雙向數(shù)據(jù)綁定,會當用戶進行選中操作時,該數(shù)組也會進行響應式的更新,以獲取用戶的實時輸入。樹形數(shù)據(jù)的渲染依賴ly-tree組件。ly-tree也是數(shù)據(jù)綁定型的組件。在表單頁初始化方法獲取到樹形數(shù)據(jù)后,樹形數(shù)據(jù)單向綁定到ly-tree的prop屬性tree-data中,ly-tree組件會根據(jù)其他設定的prop屬性值來渲染出樹形的數(shù)據(jù)選擇框。若頁面為修改數(shù)據(jù)項的表單,則應該初始化數(shù)據(jù)選擇框的默認選中列表。Ly-tree組件提供了.tree.setCheckedKeys()方法以修改選擇框的默認選擇與否。在用戶點擊樹狀結(jié)構(gòu)的數(shù)據(jù)選擇框時,會觸發(fā)@check事件,事件將默認參數(shù)傳遞給用戶自定義的方法,tree.getNodePath()方法也是ly-tree組件提供的方法,用于獲取當前選中節(jié)點的節(jié)點路徑,通過此函數(shù)以實現(xiàn)對數(shù)據(jù)項元素的某項屬性的修改。待選列表采用基礎(chǔ)組件的選擇器picker組件進行實現(xiàn)。Picker組件由數(shù)組型的數(shù)據(jù)驅(qū)動,并對其進行渲染。該數(shù)組也是在頁面加載的生命周期完成數(shù)據(jù)初始化,如果有數(shù)據(jù)項,則賦值待選列表的默認選項,否則不進行操作,顯示“請輸入待選項”。通過基礎(chǔ)組件的表單from組件來對表單中的元素進行輸入格式的檢查以及提交與清空等功能的管理。當用戶點擊提交按鈕時,Uniapp會調(diào)用提交事件。所有表單中的元素與其對應的字段名將被提取成一組組的鍵值對,作為對應方法的事件默認傳遞參數(shù)(參數(shù)格式為對象)。方法中需要根據(jù)用戶自定義的數(shù)據(jù)檢查規(guī)則,通過graceChecker.js文件中的graceChecker對象提供的check方法進行輸入格式檢查。若數(shù)據(jù)格式檢查通過,根據(jù)數(shù)據(jù)項原來是否存在(id是否為空)進行相應的操作(修改或刪除)。至此,通過對頁面工作流程的分解,實現(xiàn)了基礎(chǔ)數(shù)據(jù)操作以及對應的操作面板??梢暬瘮?shù)據(jù)監(jiān)控面板服務端通過消息隊列傳輸協(xié)議從在現(xiàn)場的采集設備獲取采集數(shù)據(jù)后,將其儲存在數(shù)據(jù)庫中。此時用戶可以根據(jù)采集設備查看相應的數(shù)據(jù)監(jiān)控面板。監(jiān)控面板的本質(zhì)即是對于監(jiān)控設備的查詢,并通過一定的方式對監(jiān)控數(shù)據(jù)進行進一步的分組過濾和排序,使數(shù)據(jù)更加直觀,對應流程圖如所示(插圖:圖x.x可視化數(shù)據(jù)監(jiān)控面板創(chuàng)建流程圖)數(shù)據(jù)監(jiān)控面板由客戶端默認渲染,用以展示當前選中設備的實時狀態(tài),通常有以下幾類信息:表STYLEREF1\s4SEQ表\*ARABIC\s113數(shù)據(jù)監(jiān)控面板參數(shù)表字段說明ID設備IDAttribute采集屬性名稱AttributeID采集屬性idOrg設備所在節(jié)點CurTime采集時間CurValue采集值ChartTitle監(jiān)控面板標題ChartOrder監(jiān)控面板順序ChartXDivision監(jiān)控面板X軸刻度值ChartYDivision監(jiān)控面板Y軸刻度值根據(jù)不同的設備于不同的采集任務與采集屬性,監(jiān)控面板的具體展現(xiàn)形式也會有所不同。主要體現(xiàn)在CurValue采集值的圖標展現(xiàn)形式不同。此外,用戶可以自定義監(jiān)控面板的X、Y軸的刻度大小,其余的面板參數(shù)均由頁面自動繼承而來。當用戶選擇監(jiān)控目標(即采集設備時),客戶端會將被選擇的采集設備的實時數(shù)據(jù)以及在數(shù)據(jù)庫中時間段相近的數(shù)據(jù)動態(tài)請求到前端??蛻舳送ㄟ^以get方式發(fā)送URL請求到后端,根據(jù)注解,控制層即會對該請求做出響應,調(diào)用相關(guān)的服務層方法使用SQL注解進行查詢操作,獲取到查詢信息后,控制層即對請求做出響應,前端即可獲取到實時數(shù)。然后客戶端采用秋云圖表組件庫,對數(shù)據(jù)進行圖表可視化渲染。作為多端適配的UI組件庫,秋云圖表組件庫為多樣化的圖表展現(xiàn)形式提供了qiun-data-charts組件。本系統(tǒng)中,最常采用的是各種形式的折線圖與柱狀圖。通過prop屬性將數(shù)據(jù)的標簽進行映射后,組件的數(shù)據(jù)綁定就完成了,此時組件會對綁定的數(shù)據(jù)自動進行渲染。告警處理告警處理的時序如圖x.x所示,告警處理分為兩部分:用戶自定義告警規(guī)則,服客戶端發(fā)出告警信息。告警規(guī)則由系統(tǒng)開放的告警管理接口提供給用戶,用戶可以通過該接口自定義告警需求,然后服務端接收到配置信息后進行儲存。監(jiān)控系統(tǒng)初始化或告警規(guī)則數(shù)據(jù)表變化時,通過查詢數(shù)據(jù)庫中的告警規(guī)則表,服務端可以獲得告警規(guī)則。當設備的采集屬性的值被mqtt服務器分發(fā)到服務端時,服務端依據(jù)告警規(guī)則計算對應數(shù)據(jù)是否超出閾值,如果滿足對比條件,則發(fā)生告警事件,同時將告警事件寫入到數(shù)據(jù)庫中進行存檔。此模塊將前端用戶設置的告警規(guī)則進行數(shù)據(jù)持久化,并進行實時計算和對比,以實現(xiàn)用戶的需求。(插圖圖x.x告警處理時序圖)在數(shù)據(jù)庫中的告警規(guī)則記錄表的物理結(jié)構(gòu)如REF_Ref104049271\h表39所示。當告警任務新增時,服務端需要保存告警配置信息和告警規(guī)則,以便后續(xù)的告警通知。在告警方式的實現(xiàn)上,并不能采用uniapp框架的消息推送push組件。因為該組件常常無法獲得開機自啟的權(quán)限,且推送消息的進程常會被清理軟件殺掉。且本軟件沒有獲得廠商和清理軟件相關(guān)的赦免名單,故放棄此實現(xiàn)方式。在實現(xiàn)告警消息的通知上,本系統(tǒng)采用了前端通知組件uni-notice-bar組件,在main.js中引用并注冊后,在需要引入該組件的頁面中添加組件標記。由于各個tabbar的頁面間無法通訊,所以也無法獲取該組件標記,即使調(diào)用頁面通訊也無法實現(xiàn)全局通知的效果,因此需要用全局變量保存通知數(shù)據(jù),并在每一個頁面組件中對該全局變量進行維護。將global.js的配置變量存儲到Vue實例中,并在main.js文件添加業(yè)務方法后,由于無法跨tabbar通知為了模擬全局消息在特定頁面都能顯示,需要在每個page頁面的頁面加載時注冊頁面通訊事件,方便產(chǎn)生消息時及時通知,在頁面卸載時中注銷事件,并在應用保持前端時添加處理事件的動作。以上即可實現(xiàn)應用內(nèi)全局的消息通知,并不會受到通知權(quán)限的限制。在告警功能的實現(xiàn)上,本系統(tǒng)設置了告警靜默和告警自動分組功能,當告警事件產(chǎn)生,系統(tǒng)通過以上實現(xiàn)的全局消息組件對用戶進行告警。如果該事件緊急等級為一般,則只會在應用內(nèi)進行通知,若更高,則會進行短信通知,若為更高等級的告警,則進行電話通知。若系統(tǒng)相關(guān)負責人對其進行處理,則相應告警會被靜默。同以告警規(guī)則下的告警事件在一定時間間隔內(nèi)重復出現(xiàn)時,系統(tǒng)會對其進行事件聚合,只對告警事件進行記錄,不會重復發(fā)送相對應的告警通知。經(jīng)過以上流程,與設備相關(guān)的負責人會接收到相應的通知,但依然要考慮通知不成功的情況。當前的解決方案是在服務端設定一個線程定時讀取數(shù)據(jù)庫中的告警事件表。獲取對應告警失敗的事件并再次進行相應的告警通知。用戶同樣可以對告警日志進行查詢,在分布式監(jiān)控系統(tǒng)中,各個節(jié)點的服務端在產(chǎn)生告警日志時會同步
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標準離婚合同全文
- 新能源汽車銷售代理合同
- 商品房買賣合同示例
- 畢業(yè)生檔案托管合同協(xié)議書
- 廣告投放合同「樣本」
- 多人合伙經(jīng)營合同范例大全
- 屋頂防水修繕項目合同
- 戶外廣告LED大屏租賃合同
- 稻谷購銷合同樣本
- 腎性貧血的治療課件
- 男襯衫縫制工藝課件
- 小學語文中高學段單元整體教學的實踐研究課題中期報告
- 《木蘭詩》第二課時(公開課)課件
- 核電項目人橋吊車抗震計算書版
- 淺談簽證合同索賠培訓課件
- 2023年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學院單招職業(yè)適應性測試筆試題庫及答案解析
- 揭陽市基層診所醫(yī)療機構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務中心村衛(wèi)生室地址信息
- 晉中項目投決會報告
- 二年級下冊數(shù)學課件-1.3 分草莓 北師大版(共14張PPT)
- 2022年中小學心理健康教育指導綱要
- 高架橋梁混凝土工程專項施工方案
評論
0/150
提交評論