林鈺杰, 關兆雄
(1. 廣東電網有限責任公司佛山供電局, 佛山 528000)
基于Activiti的流程管理系統在電網企業中的應用研究
林鈺杰1, 關兆雄1
(1. 廣東電網有限責任公司佛山供電局, 佛山 528000)
目前,電網企業發展正快速進入專業化、信息化、精益化管理的新階段,但日常的運營管理仍然存在工作分派紊亂、過程跟蹤困難、文檔缺失嚴重等問題,為改善這些狀況,設計并實現了基于Activiti工作流引擎的流程管理系統。介紹了Activiti工作流引擎的技術特點,然后描述了以B/S模式為基礎并應用三層架構的系統總體框架,其中,用戶層采用Spring MVC框架,應用層和業務數據層以Activiti為核心,兩者通過Spring配置有機結合起來。實踐證明,基于Activiti的流程管理系統具有減少運行成本,提高工作效率,增強部門協同能力的優點。
Activiti; 流程管理; 電網企業; Spring MVC
隨著“互聯網+”時代的到來,信息技術正逐步滲入電網企業運營管理的各個環節,促進電網運行管理“從被動到主動、從靜態到動態、從手動到自動”的管理模式轉變。但目前,電網企業的運營管理仍然存在以下主要問題:
1)管理計劃往往靠人為經驗進行編排,隨著業務量越來越多,既容易造成任務分配不均,又難以保證準確性和實時性;
2)管理過程未能實現完整的信息跟蹤、過程控制以及質量管理,管理人員不能便捷地掌握各業務工作當前的狀態;
3)業務運行過程會產生大量關鍵文檔,但這些文檔往往沒有被及時收集和歸檔。
工作流技術在多個行業的自動化辦公中被廣泛應用[1]。工作流是一種計算模型,可將業務流程中的邏輯和規則轉化為計算機中恰當的模型并對其實施計算。簡而言之,工作流就是一系列相互連接、自動流轉的業務活動和任務[2]。
針對電網運行管理復雜繁瑣、涉及業務部門多、行政處理周期長等特點,將工作流技術應用到電網企業的運營管理工作中,能夠使各部門權責分明,各司其職,相互協調,進而提高各部門的工作效率。本文將Activiti工作流引擎技術引入到電網企業的流程管理系統中,用以理清業務管理界面,促進業務流程的規范化和標準化,提升電網運行管理的水平。
Activiti是一個輕量級的、支持Bpmn2.0流程模型的工作流引擎,在著名的工作流管理系統jBPM4的基礎上發展而來,由Java語言開發,可運行于Java應用程序與服務器上[3]。Activiti的組件包括核心引擎、流程建模器、協作工具等,可與其他框架進行集成[4],各組件間的協作關系,如圖1所示。
專用工具(Dedicated Tools)包括內容管理系統(Alfres-co)、Web建模器(Activiti Modeler)、Eclipse插件式建模器(Activiti Designer)、管理監控(Activiti Probe)、任務管理(Activiti Explorer)這5個組件:

圖1 Activiti組件協作圖
1)Alfresco是一個開源的企業級內容管理系統,具有文檔管理、知識庫管理、記錄管理、Web內容管理等功能;
2)Activiti Modeler是基于開源的Signavio流程編輯器開發的Web建模工具,其提供了對Bpmn2.0圖形化規范的支持。設計后的流程模型以文件格式進行存儲,并且可在Modeler后端進行導入導出;
3)Activiti Designer是一個Eclipse插件形式的建模器,此組件使得開發人員能夠在Eclipse IDE中進行流程建模,其建模功能與Modeler相同;
4)Activiti Probe是一個能夠對流程引擎運行時的實例進行管理和監控的應用程序,具有流程定義管理、部署管理、日志查看、數據庫檢視、事務管理等功能;
5)Activiti Explorer是一個用于任務管理的Web應用程序,提供任務管理、基于歷史數據的統計分析、報表生成等功能。
內容存儲工具(Stored Content)包括文檔倉庫(Documents Repository)、模型倉庫(Model Repository)、SVN倉庫(SVN Repository)、MVN倉庫(MVN Repository)、Activiti引擎(Activiti Engine)這5個組件,這些組件為協作工具Activiti Cycle提供底層支撐。例如,工作流開發過程中的文檔,可采用文檔倉庫進行存儲,采用SVN進行版本管理,采用MVN作為項目構建和管理工具。模型倉庫是Activiti建模器的后端存儲組件,其負責對建模器生成的流程定義文件進行存儲管理[5]。
協作工具(Collaboration Tool)主要有Activiti Cycle這一新類型的BPM組件,其是一個可促進業務人員、開發人員和運維人員協作的Web應用程序。例如,業務人員持有業務文檔,開發團隊管理軟件程序,運維人員管理被部署的軟件應用,三者之間往往不能很好地協作。而Activiti Cycle通過BusinessLink將與流程相關的業務人員、開發人員和運維人員關聯起來,實現他們之間的有效協作。
本文的業務流程管理系統采用B/S模式的三層架構,如圖2所示。

圖2 系統架構
第一層的用戶層是用戶與系統的接口,用戶通過瀏覽器在網頁上錄入信息并提交給后臺,即第二層的應用層。應用服務器將啟用相應的進程來響應這一請求,然后動態生成HTML代碼并嵌入處理結果,最后返回給用戶層的瀏覽器。第三層的業務數據層支持著系統的整體結構,其對應的數據庫服務器與應用服務器共同完成用戶請求及相應的數據存取操作。
2.1 用戶層
系統的用戶層采用Spring MVC框架來實現。Spring MVC框架是J2EE Web應用開發中主流的MVC框架,其通過實現Model-View-Controller模式來將數據、視圖、業務三者進行分離[6]。從功能來看,Spring MVC與Struts非常相似,但在設計上Spring MVC是圍繞前端控制器來展開的,即將請求先派送到指定的Controller,再通過配置的View Resolution、Theme Resolution和Locale來處理請求,最后跳轉到對應的視圖。Spring MVC的主要原理,如圖3所示。

圖3 Spring MVC原理圖
在容器Servlet Engine里,前端控制器Dispatcher會根據定義選擇合適的控制器Controller和視圖View來完成請求和回應,Controller負責處理請求和創建模型Model,View的主要功能是響應與反饋,Model負責管理系統的邏輯對象,它把數據源和對這些數據的所有操作封裝起來,以表示數據狀態和操作方法。
2.2 應用層
應用層的核心組件是Activiti工作流引擎,主要負責解析并執行各流程實例,并負責對所有流程實例的執行進行控制,包括任務指派、事件監聽、事務管理、歷史記錄、參數存取等,同時提供BpmnActivityBehavior 等接口以因應業務應用需求來擴展。而且,通過對各工作流的監控,應用層還可實現各項工作任務及工作人員的完成及時率、完成進度、完成結果等高級統計功能。
2.3 業務數據層
業務數據層負責管理企業運營各類數據,包括業務數據和流程數據,其中使用MyBatis工具來屏蔽異構數據庫的影響。Acitiviti數據庫中的表名均以“ACT_”開頭的,此命名方法與Acitiviti的API接口方法類似:
l)ACT_RE_*:“RE”是Repository的簡寫,含此前綴的數據表,如ACT_RE_PROCDEF、ACT_RE_DEPLOYMENT、ACT_RE_MODEL等,分別用于存儲流程定義、流程部署、流程模型等靜態信息;
2)ACT_RU_*:“RU”是Runtime的簡寫,含此前綴的數據表用于存儲流程變量、用戶任務、執行流等運行時數據。Activiti 只存儲流程實例運行期間產生的動態數據,當實例結束時,將刪除這些記錄,例如,ACT_RU_VARIABLE 保存了流程實例運行時產生的變量和參數;
3)ACT_ID_*:“ID”是Identity的簡寫,含此前綴的數據表存儲了用戶信息、用戶組信息以及用戶和用戶組的關聯關系;
4)ACT_HI_*:“HI”是History的簡寫,含此前綴的數據表存儲了流程實例執行歷史的相關數據,如結束的流程實例、流程變量和用戶任務等;
5)ACT_GE_*:“GE”是General的簡寫,含此前綴的數據表用于存儲普通數據。例如,ACT_GE_BYTEARRAY 數據表保存了流程模型的源文件、流程部署的定義文件和流程圖片等文件數據。
工作流是系統的核心,系統有效運行的前提是將業務流程逐一梳理并融入到系統實現中。下面以電網企業中常用的收文流程和發文流程,如圖4所示。

(a) 收文流程

(b) 發文流程
3.1 收文流程
當文件到達本單位時,辦公室先進行文書登記,然后根據文件指示,決定是否將文件送辦公室主任擬辦。不需要送擬辦的,直接把文件歸檔并結束流程。需要送擬辦的,還需根據文件的性質,判斷文件是批閱還是傳閱。如果是批閱,則根據其等級和重要性,由部門領導或局領導審批,形成文書后,交由指定人員辦理;如果是傳閱,則將文件傳閱給相關人員閱讀。最后,把文件歸檔,結束流程。完整的收文流程如圖4所示。
3.2 發文流程
當文件要發出時,需有嚴格的流程來限制其涉及本單位的責任和對外單位的影響。開始時,擬稿人要做好擬稿登記,如果是重要文件,則交由部門領導審批和局領導審批;如果是一般文件,則交由部門相關人員會簽即可。兩種方式處理后,由辦公室統一對發送的文件進行審核,然后返回給擬稿人進行校對并發送文件,最后把文件歸檔,結束流程。完整的發文流程如圖5所示。
基于第2節設計的系統架構,利用Activiti技術實現流程管理,關鍵是整合Activiti和Spring并實現流程管理編碼。
4.1 Activiti與Spring整合
整合Activiti和Spring需引用的jar包包括spring-aop.jar、spring-webmvc.jar、activiti-spring.jar等[7],它們分工明確,支撐著整個系統高效有序地開展各項任務。整合兩者還需要在系統文件“applicationContext.xml”中進行配置,主要配置代碼如下:
1)定義數據庫連接;

2)定義事務管理;

3)定義Activiti配置;

4)定義流程引擎;

5)定義流程中的服務。

在Controller中需要引用相關流程服務時,只需聲明服務對象并添加標注@Autowired即可。
4.2 流程管理編碼
工作流運行是流程管理系統的核心內容,系統通過流程配置文件來調配各功能模塊以實現流程控制,并應用Activiti所提供的服務接口,實現工作流運轉,主要實現代碼如下:
1)部署流程,根據第3節設計的業務流程來編制流程定義文件并進行部署,部署時可使用源文件或壓縮包;

2)啟動流程,可使用流程定義中的id或name來啟動,并通過businessKey來與業務數據表進行關聯;

3)查詢任務,例如,在流程定義中,將某一任務分派給“leader”組處理,組內的任意用戶均可領取;

4)領取任務,在Controller中根據接收的參數taskId和userId來領取任務,其中,userId需屬于leader組;

5)完成任務,在Controller中根據接收的參數taskId和其他參數值,執行相關操作并完成任務。

本文研究的流程管理系統采用B/S設計模式并與Spring MVC框架相結合,具有良好的擴展性和重用性。系統的分層結構實現了每層與各模塊的松耦合,系統功能和業務邏輯相分離,開發人員可快速構建應用。同時,通過集成輕量級工作流引擎Activiti,實現了從創建模型、資源部署到流程運行均易于與系統相結合,功能發布迅速。通過實際應用,以Activiti 工作流引擎為核心的流程管理系統彌補了電網企業日常管理中的不足和弊端,促進了業務流程的規范化和標準化,有效提高了資源利用率和工作效率,充分發揮了現有計算機網絡資源的作用。
[1] 陳廣智, 潘嶸, 李磊. 工作流建模技術綜述及其研究趨勢[J]. 計算機科學, 2014, 41(6A): 11-17.
[2] 何源, 徐福緣, 何建佳, 顧忠偉. 供需網環境下基于角色的工作流建模研究[J]. 計算機應用研究, 2012, 29(4): 1387-1390.
[3] 徐亦楠, 葛志輝, 潘海源. Activiti5工作流在OA系統中的應用[J]. 大眾科技, 2014, 16(173): 5-8.
[4] 韓紅云, 陳燕, 李桃迎. 工作流系統中會簽功能的設計與實現[J]. 計算機與現代化, 2014, 9: 86-89.
[5] 高寧, 劉洋. 流程虛擬機在企業產品研發平臺中的應用[J]. 計算機應用, 2013, 33(S2): 256-258, 262.
[6] 徐雯, 高建華. 基于Spring MVC及MyBatis的Web應用框架研究[J]. 微型電腦應用, 2012, 28(7): 1-4, 10.
Application and Research of the Process Management System Based on Activiti in Power Grid Enterprises
Lin Yujie1,Guan Zhaoxiong1
(1. Foshan Power Supply Bureau,Guangdong Power Grid Limited Corporation,Foshan 528000,China)
At present, the development of power grid enterprises is entering a new stage of specialization, informatization and lean management. But there are still many problems such as disordered work assignment, process tracking difficulty and missing files in daily operation and management. In order to improve these conditions, a process management system based on Activiti is designed and implemented in this paper. Firstly, the technical characteristics of Activiti are introduced. Secondly, the overall framework of the system based on the B/S model with the three-tier architecture is described. Among them, Spring MVC is adopted in user layer, and Activiti is the core of application layer and business data layer. Both of them are combined organically by Spring configuration. It has been proved that the process management system based on Activiti has the advantages of reducing operating costs, improving work efficiency, and enhancing the ability of department coordination.
Activiti; Process management; Power grid enterprise; Spring MVC
林鈺杰(1987-),男,通信作者,碩士研究生,研究方向:信息系統開發和管理、營配信息集成,佛山 528000 關兆雄(1987-),男,碩士研究生,研究方向:信息系統開發和管理、局域網與虛擬化平臺,佛山 528000
1007-757X(2017)01-0046-05
2016.06.08)