馬自強
(天津市通卡公用網(wǎng)絡(luò)系統(tǒng)有限公司,天津市 300384)
公交智能調(diào)度系統(tǒng)的設(shè)計與開發(fā)
馬自強
(天津市通卡公用網(wǎng)絡(luò)系統(tǒng)有限公司,天津市 300384)
近年,隨著我國公共交通的迅猛發(fā)展,公交公司對公交車輛的管理難度卻越來越高。如何管理龐大數(shù)量的車輛以及如何安排錯綜復雜的線路,就成為了公交公司的當務(wù)之急。通過對公交公司運營模式的理解,進行了系統(tǒng)的需求分析,并按照功能將系統(tǒng)劃分為“車輛運營計劃生成”、“車輛發(fā)車調(diào)度”、“統(tǒng)計報表查詢”、“基礎(chǔ)信息管理”、“系統(tǒng)角色維護”五個功能模塊。公交智能調(diào)度系統(tǒng)采用B/S開發(fā)模式,根據(jù)對系統(tǒng)整體架構(gòu)的設(shè)計,系統(tǒng)采用目前JAVA WEB項目中普遍使用的企業(yè)級框架SSH(Struts + Hibernate + Spring),完成了系統(tǒng)中不同層次間的集成。通過使用公交智能調(diào)度系統(tǒng),公交調(diào)度人員只需要錄入一次排班時刻表和輪換規(guī)則等數(shù)據(jù),則可讓系統(tǒng)自動生成每天的車輛計劃,調(diào)度員無需在每月末集中安排下月的車輛計劃。同時,本系統(tǒng)會自動記錄車輛每天的運營情況并進行數(shù)據(jù)匯總,省去了調(diào)度員計算運營數(shù)據(jù)的工作,大大降低了其工作強度。本系統(tǒng)的應(yīng)用也大大降低了公交公司對紙張的需求,形成無紙化辦公,這不僅降低了成本,也間接地進行了環(huán)境的保護。
公交智能調(diào)度;無紙化辦公;JAVA WEB;SSH框架
本文著錄格式:馬自強. 公交智能調(diào)度系統(tǒng)的設(shè)計與開發(fā)[J]. 軟件,2016,37(11):41-46
隨著我國對公共交通行業(yè)的大力發(fā)展,我國各個城市的公共交通能力有著大幅度的提高,這其中的一個表現(xiàn)就是公交車數(shù)量已有顯著的提升。據(jù)統(tǒng)計,截止至2014年,上海市共有19900輛公交車。面對這么龐大數(shù)量的公交車,隨之而來的則是車輛管理的問題,如何能夠合理地安排車輛在線路中的發(fā)車情況,如何能夠有序地進行車輛上班順序的輪換,這些都是車輛管理的主要問題。在公交公司傳統(tǒng)的運營模式中,從發(fā)車計劃的制定到計劃執(zhí)行情況的統(tǒng)計,再到運營數(shù)據(jù)的匯總,這些工作全部需
要由公交公司的工作人員手動計算和統(tǒng)計。這不僅需要消耗大量的人力物力,又不可避免的會產(chǎn)生統(tǒng)計的錯誤。因此,智能調(diào)度系統(tǒng)的核心目標在于使用計算機完成公交公司的運營模式,調(diào)度人員在系統(tǒng)的頁面上即可進行車輛的排班、發(fā)車以及公交公司運營報表查詢等工作,數(shù)據(jù)的統(tǒng)計均由計算機來完成,極大地提高了工作人員的工作效率,降低了其工作強度。同時,公交智能調(diào)度系統(tǒng)的應(yīng)用,也減少了公交公司對于紙張的大量需求,間接地促進了對環(huán)境的保護。
城市公共交通作為城市賴以生存的公共設(shè)施,因其安全高效、經(jīng)濟舒適、準點和低能耗等優(yōu)點越來越受到世界各國的重視[1]。隨著我國對公共交通行業(yè)的大力發(fā)展,我國各個城市的公共交通能力有著大幅度的提高,這其中的一個表現(xiàn)就是公交車數(shù)量已有顯著的提升。據(jù)統(tǒng)計,截止至2014年,上海市共有19900輛公交車。面對這么龐大數(shù)量的公交車,隨之而來的則是車輛管理的問題,如何能夠合理地安排車輛在線路中的發(fā)車情況,如何能夠有序地進行車輛上班順序的輪換,這些都是車輛管理的主要問題。
公交智能調(diào)度系統(tǒng)使用計算機技術(shù)來實現(xiàn)公交公司工作人員的諸如車輛排班,車輛調(diào)度,報表查詢等操作,使工作人員不再需要進行大量重復單一的車輛安排與數(shù)據(jù)統(tǒng)計,由計算機來完成這些繁瑣的操作,工作人員只需要在系統(tǒng)中進行相應(yīng)操作,即可獲得操作的結(jié)果。
在傳統(tǒng)的公交運營管理模式中,線路下每輛車每個月的發(fā)車順序、發(fā)車時間等都需要調(diào)度員在前一個月的月末,手動統(tǒng)計出來,然后再打印成紙制形式發(fā)送給司機,讓司機提前知道每個月的上班時間。這樣做的弊端在于,調(diào)度員在月末的統(tǒng)計工作量將會非常大,同時,由于不可避免地統(tǒng)計的疏漏,導致有可能部分發(fā)車計劃的安排不合理。
通過對傳統(tǒng)公交運營管理模式的分析,公交智能調(diào)度系統(tǒng)主要面對以下幾種用戶:
1. 調(diào)度員用戶。調(diào)度人員工作使用的用戶,具有車輛排班、發(fā)車調(diào)度、基礎(chǔ)報表查詢等功能。
2. 系統(tǒng)管理員用戶。該用戶具有系統(tǒng)最全面的功能,并可以設(shè)置其他角色所具有的功能。該用戶一般為系統(tǒng)維護人員使用。
3. 基礎(chǔ)信息維護用戶。該用戶具有基礎(chǔ)信息查詢與設(shè)置的功能,用于維護人員維護公司、線路、車輛、站點跑法等基礎(chǔ)信息。
4. 公交公司領(lǐng)導用戶。該用戶下只有查看公交公司領(lǐng)導所關(guān)心的報表的權(quán)限。通過查看這些報表可以查詢到公交公司一段時間內(nèi)的整體運營情況。
5. 報表審計用戶。該用戶可以看到系統(tǒng)的全部報表,用于統(tǒng)計人員根據(jù)相關(guān)報表數(shù)據(jù)計算每月駕駛員的工資等。
將公交智能調(diào)度系統(tǒng)按照功能劃分,系統(tǒng)可分為“車輛運營計劃生成”、“車輛發(fā)車調(diào)度”、“統(tǒng)計報表查詢”、“基礎(chǔ)信息管理”及“系統(tǒng)角色維護”這五大功能,每項大功能下均具有相關(guān)的子功能。具體功能模塊設(shè)計圖如圖3.1所示。
3.1 車輛運營計劃生成
該模塊主要包含五個子模塊:“班次模板導入”、“車輛輪換設(shè)置”、“模板使用日期設(shè)置”、“車輛計劃生成”和“運營計劃查詢”。具體模塊設(shè)計圖如圖3.2所示。
調(diào)度用戶在使用系統(tǒng)生成車輛排班時,首先從系統(tǒng)中下載班次時刻表模板,然后將公交公司下發(fā)的時刻表填寫成至模板的發(fā)車時間中,并使用系統(tǒng)的班次模板導入功能上傳時刻表。班次時刻表上傳成功后,在系統(tǒng)中則記錄了時間表中每個班次的發(fā)車時間。這時,還需要設(shè)置該模板的使用日期和車輛的輪換規(guī)則。
經(jīng)過上述操作后,系統(tǒng)則可以根據(jù)使用模板的日期和輪換規(guī)則來自動生成車輛上班計劃。與此同時,系統(tǒng)也允許在指定日期不使用系統(tǒng)自動生成的排班,而是使用調(diào)度員手動設(shè)置的車輛排班。此時,需要進行車輛排班的手動設(shè)定,設(shè)定指定日期下車輛與班次的綁定情況。設(shè)置成功后,則可以進行手動生成計劃,生成指定日期的車輛運營計劃。
在車輛計劃生成結(jié)束后,調(diào)度人員可以使用系統(tǒng)的“車輛排班報表”進行查詢,查詢車輛在指定日期的運營計劃,可以查詢到每個班次對應(yīng)的車輛、發(fā)車趟次等信息。
3.2 車輛發(fā)車調(diào)度模塊
圖3.1 系統(tǒng)功能模塊設(shè)計圖
圖3.2 車輛運營計劃生成模塊設(shè)計
圖3.3 車輛發(fā)車調(diào)度模塊設(shè)計圖
本模塊共分為三個子模塊:“發(fā)車時間調(diào)整”、“發(fā)車順序調(diào)整”、“增加刪除計劃”。模塊設(shè)計圖如圖3.3所示。
調(diào)整車輛發(fā)車是調(diào)度人員的主要工作。調(diào)度人員可以在發(fā)車調(diào)度模塊中,針對當天線路的車輛發(fā)車情況,進行車輛后續(xù)發(fā)車計劃的調(diào)整。發(fā)車順序調(diào)整功能主要用于調(diào)整在始發(fā)站或終點站等待發(fā)車車輛的發(fā)車順序。同時,調(diào)度人員還可以使用增加刪除計劃功能,為車輛臨時增加或刪除需要執(zhí)行的計劃。
3.3 統(tǒng)計報表查詢
本模塊用于車輛運營情況的報表查詢,根據(jù)報表使用者的不同,本模塊共包分為兩個子模塊:“公里查詢報表模塊”和“趟次查詢報表模塊”。
公里查詢報表模塊:該模塊的報表查詢主要用于公交公司領(lǐng)導查看,可以查看車輛、線路及分公司在一段日期內(nèi)的運營情況。公里查詢報表模塊設(shè)計圖如圖3.4所示。
圖3.4 公里查詢報表模塊設(shè)計圖
趟次查詢報表模塊:該模塊主要用于調(diào)度人員查詢車輛每趟的運營情況,包括發(fā)車準點、發(fā)車間隔、運營公里等。趟次查詢報表模塊的模塊設(shè)計圖如圖3.5所示。
3.4 基礎(chǔ)信息管理模塊
該模塊主要用于基礎(chǔ)信息維護人員對系統(tǒng)中的公司、線路、車輛、員工、站點及跑法等基礎(chǔ)信息進行查詢、添加、修改、刪除操作。該模塊共分為:“公司管理模塊”、“線路管理模塊”、“車輛管理模
塊”、“員工管理模塊”和“站點跑法管理模塊”。
(1)公司管理模塊:維護人員可以在該頁面下完成公司的查詢、添加、修改和刪除功能。該模塊的設(shè)計圖如圖3.6所示。
(2)線路、車輛、員工管理模塊:模塊的設(shè)計方式與公司管理模塊相似,同樣是分為相應(yīng)基礎(chǔ)信息的查詢、添加、修改和刪除功能,此處則不再贅述。
(3)站點跑法管理模塊:站點跑法模塊用于設(shè)置線路下的站點和跑法信息?!芭芊ā钡亩x為線路從起始站至終點站之間,經(jīng)過的站點的順序。該模塊的設(shè)計圖如圖3.7所示。
圖3.5 趟次查詢報表模塊設(shè)計圖
圖3.6 公司管理模塊設(shè)計圖
3.5 系統(tǒng)角色維護模塊
系統(tǒng)角色維護模塊用于維護系統(tǒng)中每個角色可以使用的功能以及每個角色可以訪問的線路。該模塊主要共分為以下兩個子模塊:“角色權(quán)限管理”和“角色線路管理”。
圖3.7 站點跑法模塊設(shè)計圖
圖3.8 角色權(quán)限管理模塊設(shè)計圖
(1)角色權(quán)限管理:維護人員進入角色權(quán)限管理頁面,選中需要修改權(quán)限的角色,再設(shè)置該角色需要訪問和不能訪問的功能。設(shè)置完成后,點擊“保存”即可完成對角色權(quán)限的設(shè)定。該模塊的設(shè)計圖如圖3.8所示。
(2)角色線路管理:該模塊與“角色權(quán)限管理模塊”的設(shè)計相同,此處則不再贅述。
4.1 SPRING集成STRUTS和HIBERNATE
本系統(tǒng)使用JAVA語言進行開發(fā),是JAVA WEB項目。系統(tǒng)的核心框架使用的是Spring + Struts + Hibernate框架。整個架構(gòu)利用Spring的核心思想—IoC和AOP,整合Struts和Hibernate,達到層次和組件之間的松散耦合,提高系統(tǒng)的可重用性和可維護性[2]。Struts處于系統(tǒng)的控制層,用于集中處理用戶的請求并根據(jù)請求地址和Strtus的配置文件將請求分發(fā)給具體的Action類進行業(yè)務(wù)邏輯的處理。Action類在收到處理業(yè)務(wù)邏輯的請求并處理完成后,需要使用數(shù)據(jù)庫訪問層,進行與數(shù)據(jù)庫的交互
(例如查詢、修改數(shù)據(jù)表等操作),此時則需要使用由Hibernate代表的數(shù)據(jù)庫訪問層的程序(即系統(tǒng)的DAO類)。那么,如何能讓兩個相對獨立的模塊進行通信則是一個關(guān)鍵的問題。在Action類中直接依賴DAO類,創(chuàng)建DAO類的實例會使程序過于僵硬,因此使用Spring的一個主要目的則是用于集成Struts和Hibernate這兩層模塊。
集成的思路為:設(shè)計Action類關(guān)聯(lián)DAO類,擁有DAO類的實例。將創(chuàng)建Action的責任從Struts的控制器改為Spring的代理控制器,即可在創(chuàng)建時進行DAO類屬性的依賴注入。由Spring去創(chuàng)建Aciton類實例的方法為:將Struts的控制器轉(zhuǎn)換為Spring的代理控制器。同時,向Struts中添加Spring的加載容器插件。這樣,在收到用戶請求后,Spring代理控制器負責進行Action的創(chuàng)建,那么則可以根據(jù)配置,對Action類中的DAO類的實例變量進行依賴注入。這樣,在Action創(chuàng)建完畢后,則可以直接使用關(guān)聯(lián)的DAO類的實例進行數(shù)據(jù)庫的訪問。
Spring集成Struts與Hibernate的核心配置如圖4.1、4.2、4.3所示。
圖4.1 Struts配置中增加Spring容器插件
圖4.2 使用Spring向Action實例注入DAO實例的配置
圖4.3 Spring生成DAO實例的配置
4.2 使用SPRING完成事務(wù)管理
在系統(tǒng)中,經(jīng)常會有對數(shù)據(jù)庫中數(shù)據(jù)的添加、修改、刪除等操作。例如修改車輛基礎(chǔ)信息、添加跑法基礎(chǔ)信息等操作。因此,一旦產(chǎn)生對數(shù)據(jù)庫的DDL操作,必然會涉及到事務(wù)并發(fā)的問題。
在數(shù)據(jù)庫運行中,多個事務(wù)并發(fā)執(zhí)行會產(chǎn)生的常見問題為丟失更新、臟讀、不可重復讀和幻讀。為了解決相應(yīng)的問題,數(shù)據(jù)庫中共有四種事務(wù)隔離機制,分別為未提交讀、提交度、可重復讀和序列化。通過控制隔離,每個事務(wù)在其行動時間里都像
是修改數(shù)據(jù)庫的惟一事務(wù)[3]。事務(wù)隔離級別越高,數(shù)據(jù)庫并發(fā)處理事務(wù)的能力越低。通常情況下,使用提交讀隔離級別既可以滿足系統(tǒng)對數(shù)據(jù)庫并發(fā)執(zhí)行事務(wù)能力的需要,又可以保證數(shù)據(jù)的一致性。
本系統(tǒng)中使用Spring管理事務(wù),配置事務(wù)的隔離級別與事務(wù)的傳播。Spring提供了多樣化的事務(wù)編程支持,包括編程式事務(wù)和聲明式事務(wù)[4]。本系統(tǒng)使用聲明式的事務(wù)管理,既節(jié)省了代碼的開發(fā)量,又使得事務(wù)的管理配置更為直觀。
事務(wù)管理的核心配置如圖4.4所示。
圖4.4 使用Spring進行事務(wù)管理的配置
4.3 使用LOG4J和SPRING AOP技術(shù)完成日志記錄
在編程時,經(jīng)常會使用到一些日志操作,在開發(fā)階段需要大量的調(diào)試語句,在開發(fā)完成時需要查找并移除[5]。LOG4J是Apache公司開發(fā)的日志記錄的開源包,具有讀寫效率高,使用方便和配置簡單等優(yōu)點。本系統(tǒng)則使用了LOG4J包進行日志的記錄工作。在確定了記錄日志的工具后,還需要確定何時進行日志的記錄。在傳統(tǒng)的使用上,日志的記錄是由DAO層在執(zhí)行完成數(shù)據(jù)庫的交互后,主動進行日志記錄,但是此種方式的DAO類與日志記錄類的聯(lián)系過于僵硬。
Spring AOP模塊直接將面向切面的編程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何對象支持AOP[6]。因此,可以使用Spring的AOP功能,當執(zhí)行到DAO類的不同方法時,執(zhí)行織入切面的對應(yīng)日志記錄方法。使用此種方式,實現(xiàn)了DAO類與日志記錄類的脫耦,DAO類只需要進行數(shù)據(jù)庫操作即可,不需要關(guān)心日志何時記錄,何時記錄日志取決于AOP的配置。
本文通過對公交公司運營模式的分析,給出了公交智能調(diào)度系統(tǒng)的需求分析、模塊設(shè)計以及系統(tǒng)開發(fā)所使用的核心技術(shù)。公交智能調(diào)度系統(tǒng)的實現(xiàn)使公交公司脫離了傳統(tǒng)的運營模式,公交各部門間不再只能使用紙張作為信息傳遞的載體。通過使用本系統(tǒng),公交調(diào)度員可以在計算機中完成包括車輛每天運營計劃的生成、線路運營情況的調(diào)度等的調(diào)度工作,而這些工作在以往的運營模式中往往需要使用大量紙張并且使用電話通知司機的方式才能完成。與此同時,為了滿足公交公司不同層面對報表數(shù)據(jù)的需求,本系統(tǒng)提供了查詢車輛每趟運營數(shù)據(jù)、公司每月運營數(shù)據(jù)等多種形式的報表,使用人員僅需要訪問系統(tǒng)中相應(yīng)報表頁面即可查看,無需人工統(tǒng)計。因此,通過對智能調(diào)度系統(tǒng)的使用,既降低了公交工作人員的工作強度,提高了調(diào)度員的工作效率,也減少了公交公司對紙張的過度依賴,從而間接地進行了環(huán)境的保護。
[1] 許文娟. 城市公共交通與城市發(fā)展的適應(yīng)性評價研究[D].北京: 北京交通大學, 2014.
[2] 廖勝軍. 基于SSH整合架構(gòu)的應(yīng)用研究[D]. 武漢: 武漢理工大學, 2008.
[3] 程建坤. 數(shù)據(jù)庫隔離級別研究與應(yīng)用[J]. 金融電子化, 2008, 01: 68-70.
[4] 丁振凡. Spring 3.x的事務(wù)處理機制的研究比較[J]. 微型機與應(yīng)用, 2012, 10: 4-6.
[5] 李軍, 聞紅華. JAVA編程下的日志管理[J]. 電腦知識與技術(shù), 2006, 08: 141-143.
[6] 王曉君, 張佃龍. AOP在Spring框架中的應(yīng)用[J]. 電腦知識與技術(shù), 2009, 26: 7420-7421.
Design and Development of Intelligent Dispatcher System of Public Transportation
MA Zi-qiang
(Tianjin ic card public network system co., LTD., Tianjin 30038, China)
In recent years, It becomes more and more difficult for public transportation companies to manage the public traffic vehicles with the fast development. How to manage the huge amount vehicles and intricate traffic routes has been the urgent affairs for public transportation companies. The system was devided into 5 function modules—“schedule generation”, “departure dispatch”, “statistic report inquiry”, “basic information management” and “system roles maintenance”—through understanding the mode of public transportation companies’ operation and analysis of the demands. The system utilised B/S developing mode. According to the design of overall structure, the system used enterprise framework SSH (Struts + Hibernate + Spring), which is utilised normally in JAVA WEB projects nowadays and help to combine different level of the system. Public transport intelligent dispatching system can generate daily vehicles schedules automatically after dispatcher inputs the schedule and rotation rules for one time, and there is no need to arrange next month’s schedule at the end of the month. Meanwhile, the system will record and summarize everyday's operational data automatically, thus lower the workload of management officers. The system can also decrease the public transportation companies' demand for paper, forms paperless office which not only reduces cost but also protects the environment indirectly.
Public transportation intelligent operation; Paperless office; Java web; SSH framework
TP311
A
10.3969/j.issn.1003-6970.2016.11.010