馬自強
(天津市通卡公用網絡系統有限公司,天津市 300384)
公交智能調度系統的設計與開發
馬自強
(天津市通卡公用網絡系統有限公司,天津市 300384)
近年,隨著我國公共交通的迅猛發展,公交公司對公交車輛的管理難度卻越來越高。如何管理龐大數量的車輛以及如何安排錯綜復雜的線路,就成為了公交公司的當務之急。通過對公交公司運營模式的理解,進行了系統的需求分析,并按照功能將系統劃分為“車輛運營計劃生成”、“車輛發車調度”、“統計報表查詢”、“基礎信息管理”、“系統角色維護”五個功能模塊。公交智能調度系統采用B/S開發模式,根據對系統整體架構的設計,系統采用目前JAVA WEB項目中普遍使用的企業級框架SSH(Struts + Hibernate + Spring),完成了系統中不同層次間的集成。通過使用公交智能調度系統,公交調度人員只需要錄入一次排班時刻表和輪換規則等數據,則可讓系統自動生成每天的車輛計劃,調度員無需在每月末集中安排下月的車輛計劃。同時,本系統會自動記錄車輛每天的運營情況并進行數據匯總,省去了調度員計算運營數據的工作,大大降低了其工作強度。本系統的應用也大大降低了公交公司對紙張的需求,形成無紙化辦公,這不僅降低了成本,也間接地進行了環境的保護。
公交智能調度;無紙化辦公;JAVA WEB;SSH框架
本文著錄格式:馬自強. 公交智能調度系統的設計與開發[J]. 軟件,2016,37(11):41-46
隨著我國對公共交通行業的大力發展,我國各個城市的公共交通能力有著大幅度的提高,這其中的一個表現就是公交車數量已有顯著的提升。據統計,截止至2014年,上海市共有19900輛公交車。面對這么龐大數量的公交車,隨之而來的則是車輛管理的問題,如何能夠合理地安排車輛在線路中的發車情況,如何能夠有序地進行車輛上班順序的輪換,這些都是車輛管理的主要問題。在公交公司傳統的運營模式中,從發車計劃的制定到計劃執行情況的統計,再到運營數據的匯總,這些工作全部需
要由公交公司的工作人員手動計算和統計。這不僅需要消耗大量的人力物力,又不可避免的會產生統計的錯誤。因此,智能調度系統的核心目標在于使用計算機完成公交公司的運營模式,調度人員在系統的頁面上即可進行車輛的排班、發車以及公交公司運營報表查詢等工作,數據的統計均由計算機來完成,極大地提高了工作人員的工作效率,降低了其工作強度。同時,公交智能調度系統的應用,也減少了公交公司對于紙張的大量需求,間接地促進了對環境的保護。
城市公共交通作為城市賴以生存的公共設施,因其安全高效、經濟舒適、準點和低能耗等優點越來越受到世界各國的重視[1]。隨著我國對公共交通行業的大力發展,我國各個城市的公共交通能力有著大幅度的提高,這其中的一個表現就是公交車數量已有顯著的提升。據統計,截止至2014年,上海市共有19900輛公交車。面對這么龐大數量的公交車,隨之而來的則是車輛管理的問題,如何能夠合理地安排車輛在線路中的發車情況,如何能夠有序地進行車輛上班順序的輪換,這些都是車輛管理的主要問題。
公交智能調度系統使用計算機技術來實現公交公司工作人員的諸如車輛排班,車輛調度,報表查詢等操作,使工作人員不再需要進行大量重復單一的車輛安排與數據統計,由計算機來完成這些繁瑣的操作,工作人員只需要在系統中進行相應操作,即可獲得操作的結果。
在傳統的公交運營管理模式中,線路下每輛車每個月的發車順序、發車時間等都需要調度員在前一個月的月末,手動統計出來,然后再打印成紙制形式發送給司機,讓司機提前知道每個月的上班時間。這樣做的弊端在于,調度員在月末的統計工作量將會非常大,同時,由于不可避免地統計的疏漏,導致有可能部分發車計劃的安排不合理。
通過對傳統公交運營管理模式的分析,公交智能調度系統主要面對以下幾種用戶:
1. 調度員用戶。調度人員工作使用的用戶,具有車輛排班、發車調度、基礎報表查詢等功能。
2. 系統管理員用戶。該用戶具有系統最全面的功能,并可以設置其他角色所具有的功能。該用戶一般為系統維護人員使用。
3. 基礎信息維護用戶。該用戶具有基礎信息查詢與設置的功能,用于維護人員維護公司、線路、車輛、站點跑法等基礎信息。
4. 公交公司領導用戶。該用戶下只有查看公交公司領導所關心的報表的權限。通過查看這些報表可以查詢到公交公司一段時間內的整體運營情況。
5. 報表審計用戶。該用戶可以看到系統的全部報表,用于統計人員根據相關報表數據計算每月駕駛員的工資等。
將公交智能調度系統按照功能劃分,系統可分為“車輛運營計劃生成”、“車輛發車調度”、“統計報表查詢”、“基礎信息管理”及“系統角色維護”這五大功能,每項大功能下均具有相關的子功能。具體功能模塊設計圖如圖3.1所示。
3.1 車輛運營計劃生成
該模塊主要包含五個子模塊:“班次模板導入”、“車輛輪換設置”、“模板使用日期設置”、“車輛計劃生成”和“運營計劃查詢”。具體模塊設計圖如圖3.2所示。
調度用戶在使用系統生成車輛排班時,首先從系統中下載班次時刻表模板,然后將公交公司下發的時刻表填寫成至模板的發車時間中,并使用系統的班次模板導入功能上傳時刻表。班次時刻表上傳成功后,在系統中則記錄了時間表中每個班次的發車時間。這時,還需要設置該模板的使用日期和車輛的輪換規則。
經過上述操作后,系統則可以根據使用模板的日期和輪換規則來自動生成車輛上班計劃。與此同時,系統也允許在指定日期不使用系統自動生成的排班,而是使用調度員手動設置的車輛排班。此時,需要進行車輛排班的手動設定,設定指定日期下車輛與班次的綁定情況。設置成功后,則可以進行手動生成計劃,生成指定日期的車輛運營計劃。
在車輛計劃生成結束后,調度人員可以使用系統的“車輛排班報表”進行查詢,查詢車輛在指定日期的運營計劃,可以查詢到每個班次對應的車輛、發車趟次等信息。
3.2 車輛發車調度模塊

圖3.1 系統功能模塊設計圖

圖3.2 車輛運營計劃生成模塊設計

圖3.3 車輛發車調度模塊設計圖
本模塊共分為三個子模塊:“發車時間調整”、“發車順序調整”、“增加刪除計劃”。模塊設計圖如圖3.3所示。
調整車輛發車是調度人員的主要工作。調度人員可以在發車調度模塊中,針對當天線路的車輛發車情況,進行車輛后續發車計劃的調整。發車順序調整功能主要用于調整在始發站或終點站等待發車車輛的發車順序。同時,調度人員還可以使用增加刪除計劃功能,為車輛臨時增加或刪除需要執行的計劃。
3.3 統計報表查詢
本模塊用于車輛運營情況的報表查詢,根據報表使用者的不同,本模塊共包分為兩個子模塊:“公里查詢報表模塊”和“趟次查詢報表模塊”。
公里查詢報表模塊:該模塊的報表查詢主要用于公交公司領導查看,可以查看車輛、線路及分公司在一段日期內的運營情況。公里查詢報表模塊設計圖如圖3.4所示。

圖3.4 公里查詢報表模塊設計圖
趟次查詢報表模塊:該模塊主要用于調度人員查詢車輛每趟的運營情況,包括發車準點、發車間隔、運營公里等。趟次查詢報表模塊的模塊設計圖如圖3.5所示。
3.4 基礎信息管理模塊
該模塊主要用于基礎信息維護人員對系統中的公司、線路、車輛、員工、站點及跑法等基礎信息進行查詢、添加、修改、刪除操作。該模塊共分為:“公司管理模塊”、“線路管理模塊”、“車輛管理模
塊”、“員工管理模塊”和“站點跑法管理模塊”。
(1)公司管理模塊:維護人員可以在該頁面下完成公司的查詢、添加、修改和刪除功能。該模塊的設計圖如圖3.6所示。
(2)線路、車輛、員工管理模塊:模塊的設計方式與公司管理模塊相似,同樣是分為相應基礎信息的查詢、添加、修改和刪除功能,此處則不再贅述。
(3)站點跑法管理模塊:站點跑法模塊用于設置線路下的站點和跑法信息。“跑法”的定義為線路從起始站至終點站之間,經過的站點的順序。該模塊的設計圖如圖3.7所示。

圖3.5 趟次查詢報表模塊設計圖

圖3.6 公司管理模塊設計圖
3.5 系統角色維護模塊
系統角色維護模塊用于維護系統中每個角色可以使用的功能以及每個角色可以訪問的線路。該模塊主要共分為以下兩個子模塊:“角色權限管理”和“角色線路管理”。

圖3.7 站點跑法模塊設計圖

圖3.8 角色權限管理模塊設計圖
(1)角色權限管理:維護人員進入角色權限管理頁面,選中需要修改權限的角色,再設置該角色需要訪問和不能訪問的功能。設置完成后,點擊“保存”即可完成對角色權限的設定。該模塊的設計圖如圖3.8所示。
(2)角色線路管理:該模塊與“角色權限管理模塊”的設計相同,此處則不再贅述。
4.1 SPRING集成STRUTS和HIBERNATE
本系統使用JAVA語言進行開發,是JAVA WEB項目。系統的核心框架使用的是Spring + Struts + Hibernate框架。整個架構利用Spring的核心思想—IoC和AOP,整合Struts和Hibernate,達到層次和組件之間的松散耦合,提高系統的可重用性和可維護性[2]。Struts處于系統的控制層,用于集中處理用戶的請求并根據請求地址和Strtus的配置文件將請求分發給具體的Action類進行業務邏輯的處理。Action類在收到處理業務邏輯的請求并處理完成后,需要使用數據庫訪問層,進行與數據庫的交互
(例如查詢、修改數據表等操作),此時則需要使用由Hibernate代表的數據庫訪問層的程序(即系統的DAO類)。那么,如何能讓兩個相對獨立的模塊進行通信則是一個關鍵的問題。在Action類中直接依賴DAO類,創建DAO類的實例會使程序過于僵硬,因此使用Spring的一個主要目的則是用于集成Struts和Hibernate這兩層模塊。
集成的思路為:設計Action類關聯DAO類,擁有DAO類的實例。將創建Action的責任從Struts的控制器改為Spring的代理控制器,即可在創建時進行DAO類屬性的依賴注入。由Spring去創建Aciton類實例的方法為:將Struts的控制器轉換為Spring的代理控制器。同時,向Struts中添加Spring的加載容器插件。這樣,在收到用戶請求后,Spring代理控制器負責進行Action的創建,那么則可以根據配置,對Action類中的DAO類的實例變量進行依賴注入。這樣,在Action創建完畢后,則可以直接使用關聯的DAO類的實例進行數據庫的訪問。
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完成事務管理
在系統中,經常會有對數據庫中數據的添加、修改、刪除等操作。例如修改車輛基礎信息、添加跑法基礎信息等操作。因此,一旦產生對數據庫的DDL操作,必然會涉及到事務并發的問題。
在數據庫運行中,多個事務并發執行會產生的常見問題為丟失更新、臟讀、不可重復讀和幻讀。為了解決相應的問題,數據庫中共有四種事務隔離機制,分別為未提交讀、提交度、可重復讀和序列化。通過控制隔離,每個事務在其行動時間里都像
是修改數據庫的惟一事務[3]。事務隔離級別越高,數據庫并發處理事務的能力越低。通常情況下,使用提交讀隔離級別既可以滿足系統對數據庫并發執行事務能力的需要,又可以保證數據的一致性。
本系統中使用Spring管理事務,配置事務的隔離級別與事務的傳播。Spring提供了多樣化的事務編程支持,包括編程式事務和聲明式事務[4]。本系統使用聲明式的事務管理,既節省了代碼的開發量,又使得事務的管理配置更為直觀。
事務管理的核心配置如圖4.4所示。

圖4.4 使用Spring進行事務管理的配置
4.3 使用LOG4J和SPRING AOP技術完成日志記錄
在編程時,經常會使用到一些日志操作,在開發階段需要大量的調試語句,在開發完成時需要查找并移除[5]。LOG4J是Apache公司開發的日志記錄的開源包,具有讀寫效率高,使用方便和配置簡單等優點。本系統則使用了LOG4J包進行日志的記錄工作。在確定了記錄日志的工具后,還需要確定何時進行日志的記錄。在傳統的使用上,日志的記錄是由DAO層在執行完成數據庫的交互后,主動進行日志記錄,但是此種方式的DAO類與日志記錄類的聯系過于僵硬。
Spring AOP模塊直接將面向切面的編程功能集成到了Spring框架中,所以可以很容易的使Spring框架管理的任何對象支持AOP[6]。因此,可以使用Spring的AOP功能,當執行到DAO類的不同方法時,執行織入切面的對應日志記錄方法。使用此種方式,實現了DAO類與日志記錄類的脫耦,DAO類只需要進行數據庫操作即可,不需要關心日志何時記錄,何時記錄日志取決于AOP的配置。
本文通過對公交公司運營模式的分析,給出了公交智能調度系統的需求分析、模塊設計以及系統開發所使用的核心技術。公交智能調度系統的實現使公交公司脫離了傳統的運營模式,公交各部門間不再只能使用紙張作為信息傳遞的載體。通過使用本系統,公交調度員可以在計算機中完成包括車輛每天運營計劃的生成、線路運營情況的調度等的調度工作,而這些工作在以往的運營模式中往往需要使用大量紙張并且使用電話通知司機的方式才能完成。與此同時,為了滿足公交公司不同層面對報表數據的需求,本系統提供了查詢車輛每趟運營數據、公司每月運營數據等多種形式的報表,使用人員僅需要訪問系統中相應報表頁面即可查看,無需人工統計。因此,通過對智能調度系統的使用,既降低了公交工作人員的工作強度,提高了調度員的工作效率,也減少了公交公司對紙張的過度依賴,從而間接地進行了環境的保護。
[1] 許文娟. 城市公共交通與城市發展的適應性評價研究[D].北京: 北京交通大學, 2014.
[2] 廖勝軍. 基于SSH整合架構的應用研究[D]. 武漢: 武漢理工大學, 2008.
[3] 程建坤. 數據庫隔離級別研究與應用[J]. 金融電子化, 2008, 01: 68-70.
[4] 丁振凡. Spring 3.x的事務處理機制的研究比較[J]. 微型機與應用, 2012, 10: 4-6.
[5] 李軍, 聞紅華. JAVA編程下的日志管理[J]. 電腦知識與技術, 2006, 08: 141-143.
[6] 王曉君, 張佃龍. AOP在Spring框架中的應用[J]. 電腦知識與技術, 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