陸遠征
(大慶油田有限責任公司第九采油廠信息中心,黑龍江 大慶 163853)
目前,工作流引擎技術在國內已經(jīng)得到了廣泛應用,Activiti是一個業(yè)務流程管理(Business Process Management,BPM)平臺和工作流系統(tǒng),主要面向開發(fā)人員。它是基于Java 語言的開源工作流引擎,功能強大,具有開源、靈活、易擴展等特點,其使用BPMN 2.0 規(guī)范,可以發(fā)布設計好的流程定義,并通過應用程序接口(Application Programming Interface,API)進行流程調度。采用Eclipse 流程設計器,開發(fā)人員可以通過插件直接繪制出業(yè)務流程圖,通過可視化的流程圖實現(xiàn)流程管理。Activiti 工作流引擎為業(yè)務流程管理、工作流轉、服務協(xié)作提供了一個完整的框架。
電力調度系統(tǒng)采用瀏覽器/服務器(Browser/Server,B/S)運行模式,可以實現(xiàn)電力業(yè)務操作指令網(wǎng)上下達、接收,建立兩級流程審核機制,實現(xiàn)業(yè)務管理流程追蹤,確保業(yè)務操作的準確性和流程的規(guī)范性。
Activiti 采用了“Struts 2+Spring 4+Hibernnate 4”開發(fā)框架。技術人員將Activiti 工作流引擎技術與Spring 和Hibernnate 框架相結合,完成框架處理與數(shù)據(jù)存儲過程。開發(fā)框架采取了數(shù)據(jù)層、持久層、業(yè)務邏輯層、表示層的設計模式(見圖1),具體如下。

圖1 開發(fā)框架架構圖
(1)數(shù)據(jù)層。Activiti 開發(fā)采用了Oracle 數(shù)據(jù)庫,用來保存流程產(chǎn)生、運行、結束等相關數(shù)據(jù)。Oracle 數(shù)據(jù)庫采用標準結構化查詢語言(Structured Query Language,SQL),支持多種數(shù)據(jù)類型,提供面向對象的數(shù)據(jù)支持,可以滿足工作流數(shù)據(jù)存儲需求。
(2)持久層。Activiti 開發(fā)選 用Hibernnate 作為持久層,Hibernate 可以自動生成SQL 語句,自動執(zhí)行,具有方便、快捷、安全穩(wěn)定的特點,實現(xiàn)對系統(tǒng)數(shù)據(jù)的存取和增刪改等操作。
(3)業(yè)務邏輯層。該層為開發(fā)框架的核心部分,實現(xiàn)了Activiti 工作流引擎與Spring 框架、Hibernnate 框架的整合,共同完成業(yè)務邏輯處理。Activiti 工作流引擎的核心是Process Engine,負責生成流程運行時的各種實例及數(shù)據(jù),監(jiān)控和管理流程的運行,將該對象引用到Spring 框架中進行配置。Activiti 的7 個核心服務接口應用于Spring 容器,可以實現(xiàn)很好地控制效果。采用Activiti Designer 流程設計器設計流程,支持可視化操作的方法定義工作流程并自動部署,減少了源代碼的開發(fā)量。
(4)表示層。表示層主要采用JQuery、BootStrap 等主流框架,主要為用戶提供一個與系統(tǒng)交互的操作界面。
Activiti 執(zhí)行國家電網(wǎng)標準電力線路工作票和倒閘操作票,主要功能包括兩票的網(wǎng)上填報、兩級審核、流程追蹤,實現(xiàn)了電力調度指令內容可定制,指令下達的流程化管理。流程由廠級電力部門基層用戶發(fā)起,創(chuàng)建工作票后,通過線上填報工作負責人、檢修線路和設備、工作地段、工作任務等內容上報啟動流程,設置電力大隊和廠電力運行調度兩級審核節(jié)點,大隊級和廠級審核用戶對工作票的內容進行確認,并增加流程節(jié)點駁回機制,根據(jù)實際情況可對工作票流程進行取消上報或駁回至上一個節(jié)點進行修改。流程審核通過后,形成電子簽名加蓋電力部門公章,結束流程。操作人員接收指令可打印導出并按照指令進行操作,確保電力調度指令的規(guī)范性和準確性。
系統(tǒng)應用Activiti 工作流引擎技術的作用如下。一是建立業(yè)務流轉機制,工作票管理設置了包括基層用戶、大隊級用戶和廠級用戶三層工作流節(jié)點,通過讀取流程基本信息判斷當前工作處在整個工作流程的哪一個流程節(jié)點,并連接上下工作節(jié)點,對流程節(jié)點實時跟蹤,實現(xiàn)流程追蹤。二是采用流程設計器設計業(yè)務流程,這種可視化、圖形化的設計方式能夠快速適應工作票和操作票標準的變化需求,從而在業(yè)務上可以優(yōu)化兩票管理。
應按照電力調度業(yè)務流程繪制審核流程圖(見圖2),利用Eclipse流程設計器,按照BPMN2.0 規(guī)范對電力線路工作票流程建模。

圖2 電力調度工作票審核流程圖
2.3.1 流程部署
首先,通過Eclipse 開發(fā)環(huán)境繪制流程圖,在src/main/resources 目錄下創(chuàng)建一個diagrams 流程定義文件存放流程圖。該流程使用的BPMN2.0 的結構主要包括:開始事件(Start Events)、結束事件(End Events)、排他網(wǎng)關(Exclusive Gateways)、人工任務(User Tasks)、序列流(Sequence Flows)。
將配置好的流程圖部署到Activiti 環(huán)境中,通過調用Repository Service 接口將流程定義文件部署到Activiti 流程引擎中,關鍵代碼如下:

部署完成后,在act_re_deployment 流程部署表、act_re_procdef 流程定義表中會有對應的數(shù)據(jù)信息。
2.3.2 流程啟動
工作票指令上報后,流程被啟動,調用運行服務開啟流程,關鍵代碼如下:


2.3.3 流程審批
流程啟動后,指定流程處理人獲取任務,用戶可在待辦任務中進行查詢和審核操作,關鍵代碼如下:

Activiti 根據(jù)任務唯一編碼(Identity document,ID)對應act_ru_task 表的主鍵ID,從而獲取辦理人的姓名和批注,并添加到批注信息表中。
通過對油田電力調度業(yè)務管理的分析與設計,開發(fā)人員構建了一套基于Activiti 工作流引擎的電力調度系統(tǒng)。該系統(tǒng)實現(xiàn)了油田電力調度業(yè)務管理,工作票、操作票的管理,具有良好的用戶體驗,能夠隨著業(yè)務的變更重新調整流程,減少開發(fā)人員維護系統(tǒng)的工作量,充分適應油田電力業(yè)務的發(fā)展需求。該系統(tǒng)能夠有效規(guī)范和優(yōu)化電力調度業(yè)務管理,提升油田電力業(yè)務的管理水平和工作效率。