國網安徽省電力公司淮北供電公司 梁后健 李孝天 胡賀軍
JAVA工作流引擎的開發和設計
國網安徽省電力公司淮北供電公司 梁后健 李孝天 胡賀軍
工作流在業務開發中占據了重要的地位,而工作流系統的核心部件就是工作流引擎,直接影響著系統質量。信息技術在不斷的發展,在企業工作中,辦公自動化系統應用越來越廣泛,這也是企業現代化水平的重要衡量標準。工作流技術在應用中較為深入,出現了很多工作流產品的變更,但是缺少靈活性和適應性,因此這一問題不可忽視。本文從技術背景入手,具體闡述JAVA工作流引擎的開發和設計,希望本文的研究對相關工作有所幫助。
JAVA;工作流;工作流引擎;開發;設計
目前工作流系統較為普遍,應用也較為廣泛,市場用戶數量較多,不過目前相關的工作流產品還很難在各個領域實現流通,也很難滿足市場用戶的各種需求。面對客戶需求越來越特殊,工作流系統也得到了普及,工作流引擎在很多的企業中都已經實現了應用,開展了具有企業特色的工作流系統,也能滿足不同用戶的特殊需求。
JAVA是一種程序設計語言,在互聯網、數據中心、PC端等應用極為普遍,通用性和安全性能優異。JAVA和一般的程序語言不同,屬于一種開放性語言,各個軟件相互兼容,可以面向對象進行多線程動態分布。
工作流一詞來源于英語單詞Work fl ow,產生于生產辦公自動化領域,提出這一概念,主要是將整體性的工作進行分解,分解成為一個個的子任務,按照一定的規則進行各個子任務完成情況監控,有效的提高任務完成效率,也能明顯降低生產成本,提高企業的生產水平,簡單來說,工作流就是企業業務流程的自動化。
工作流引擎能為工作流提供必要的運行環境和服務,這也就是“引擎”,具體來說,工作流引擎可以控制整個工作的運行過程,并且進行相應的過程定義,同時,可以對各個活動進行操作和解釋的轉換,在用戶和應用之間傳遞工作流控制相關數據,提供工作流操作界面,實現對工作流操作的管理和監督。
JAVA工作流引擎是一種能為工作流提供必要環境和服務的引擎,功能較為突出,如圖1所示。

圖1 JAVA工作流引擎總體架構示意圖
如圖所示,這是本文提出的JAVA工作流引擎的整體架構,在其中準確描述了工作流引擎在整個系統中的功能以及具體的工作方式。引擎核心是流程中央控制器,能控制系統的各個組件,實現核心路由的功能,也能通過對子系統的功能限定,進行數據的存儲和處理。引擎接口可以對流程進行重新定義,實現對流程的整體維護和管理。在引擎核心的設計上,可以從產品的具體需求和模型建設角度進行處理,確定不同的管理器,展現不同的功能,而利用一個JAVA工作流引擎管理器就可以實現對所有管理器的控制,這樣能展現出JAVA工作流引擎的功能,也方便了企業管理工作。
工作流模型是工作流實現的重要前提,這也是對業務處理的重要基礎,能將企業工作業務進行抽象處理,并且借助計算機用一種全新的方式表達出來。
(1)設計對象模型
在編輯程序的過程中,最為重要的就是找到對象,根據具體的需求,將具體的概念轉化成為對象模型。設計對象模型,更加方便工作流操作執行,而工作流的操作執行的開始和結束就是這些對象之間相互處理的結果。
(2)設計數據模型
根據不同類型的JAVA工作流引擎可以選擇不同的數據模型。在機構模型選擇條件下,可以確定法企業或者各個部門之間的組織結構關系,展現了企業內部的人員結構規劃,也能分析JAVA工作流引擎中的各種控制數據。根據數據模型的要求,可以對企業的關鍵業務進行更為準確細致的描述,也能根據數據模型的要求,選擇不同的業務規則,這樣重新定義雙方關系結構。
從工作流引擎的定義來看,能為工作流提供必要的運行環境和服務,在其中提供了必要的工作流定義和相關活動,針對JAVA工作流引擎的各種功能,具體闡述JAVA工作流引擎關鍵技術的實現。
JAVA工作流引擎在關鍵算法和技術要點都集中在算法設計上,工作流系統本身很可能出現業務流程規則上的問題,而業務流轉就可以借助路由算法來實現。工作流系統可以按照預先設定好的業務流程規則進行自動流轉,而根據路由算法的不同進行不同的判斷,路由算法的功能和路由其這一硬件設備基本相同,其質量直接決定這工作流系統的運轉情況。工作流模式較多,而對于不同的建模語言進行處理,很難具體確定哪一種模式。根據事務執行模式的不同,可以選擇不同的工作流模式,常見的工作流模式如表1所示。

表1 常見工作流模式表
本次JAVA工作流引擎設計選擇的為并發聚合路由。
數據模型數據提供源為過程定義工具,流程定義完成之后,相關的信息都會存儲在工作流數據庫中,這也就是過程定義的職能,然后JAVA工作流引擎就可以進行后續操作。JAVA工作流引擎可以算是一個抽象接口,直接與數據模型相連。
JAVA工作流引擎流程控制器是流程控制管理的核心輔助對象,對于流程進行全新的解釋,而各個節點和路由算法可以進行全新的調度實現,這也是其核心內容,通過核心節點可以實現對其他節點的調度。JAVA工作流引擎權限控制管理器可以實現工作流角色和系統角色關系的處理,借助工作流引擎核心的功能進行權限的解釋,這樣就可以改變其運行結果,進行引擎優化。
(1)事務機制方法
在應用系統開發過程中,事務是單個工作單元,需要重點考慮,每個步驟之間需要密切聯系,并且作為一個整體看待,這樣事務之間的每一個步驟都需要在上一個步驟成功之后方可繼續處理。根據事務處理的要求,兩個操作需要保持一致,都成功或者失敗,這樣才能滿足要求。
①事務屬性
從事務屬性來看,企業在應用程序開發上,需要進行全方位的數據訪問,而事務可以控制多個程序訪問相同的數據,協調管理數據訪問過程,根據客戶的需求,可以選擇對數據的不同處理方式,無論是讀取還是寫入,都可以根據用戶需求進行。
②事務協議
在階段初始,和事務相關的所有信息資源都需要提前提交,而事務涉及到的資源還可以選擇一次就叫異常結束事務的機會。在事務執行上,可以進行兩個階段的處理,兩個階段本身就具有統一性,如果發送過來的資源出現的異常,那么整個事務都會取消,而資源不進行更新的狀況下,事務會正常執行。只有第一個階段沒有發生任何異常,第二個階段才能正常的開展。在這一狀況下,資源管理都可以進行數據更新,而事務提交可以選擇不同的階段進行,這時兩個階段之間的事務協議也就顯得極為重要。事務協議可以讓多個事務管理和資源管理都整合到一個事務中,這樣如果一個部分出現事務異常,那么所有事務都會回滾。
③事務控制
和之前的事務形式不同,新的事務控制可以選擇聲明式的事務,可以讓組件自動參與其中,事務框架組件不會聲明事務的進行狀況,可以借鑒這一內容,程序員在編程控制上,直接控制邏輯,就可以減少編碼時間,這樣在事務優化的時候,不需要直接改動源代碼,節省了很多編碼時間,也能避免客戶端程序出現誤差。這一事務控制類型,在應用上效果較好,而且組件程序和應用程序并不需要真正了解事務就可以進行編程處理。目前在JAVA事務控制框架選擇上,聲明式事務經過實踐之后能很好的支持企業應用。
(2)異常處理方法
在JAVA工作流引擎工作過程中,會出現以下兩種異常情況:
①系統級日常
在出現網絡故障的時候,客戶端可以向服務器發送請求,而出現網絡崩潰的時候,很容易造成客戶端并不能準確確定網絡崩潰的時間段,這樣客戶的判斷準確度也就很難保障,并不知道客戶請求到底是在服務器處理之前還是處理之后的信息傳遞過程出現網絡故障,也不能判斷數據庫中數據是否經過修改。網絡故障是較為常見的故障形式,但是并不是唯一的故障形式,數據庫自身也能發生崩潰故障,而數據庫出現問題的時候,在數據的寫入上就會出現偏差,影響到數據庫的正常處理。
②應用級異常
在用戶訪問上,不同的分布可以有不同的結構表現,而如果多個用戶同時訪問同一個數據庫的時候,很容易出現記錄上的沖撞,而如果兩個用戶都更改產品記錄,不適用事務的時候就會造成數據的存儲出現問題。只要應用事務,那么兩個數據就會發生排斥,這樣就會讓數據庫在操作上保持唯一,保證數據庫數據完整統一。在特定的邏輯狀態下,根據特定的需求出現系統異常,發生邏輯錯誤的時候,程序員在運行上很容易出現異常。這些異常方式都會造成JAVA工作流引擎系統出現異常。
綜上所述,借助工作流模型可以確定其核心內容,也就是工作流引擎的實現,在JAVA體系結構平臺下,采取全新的技術架構方式,可以完成JAVA工作流引擎核心技術。工作流管理系統較為復雜,其核心內容JAVA工作流引擎更加復雜,在開發設計上,架構更加清晰,實現也更加方便,應用效果良好,關鍵步驟基本上得以實現,在未來還有很大的發展空間。
[1]王瑾.J2EE開發環境下的輕量級工作流引擎構件的設計與實現[J].科技創新導報,2008,36:39.
[2]袁雄偉,鐘寶榮.Spring MVC框架下公文審批中應用JBPM工作流引擎[J].信息系統工程,2013,03:88-90.
[3]陳思蒙,譚慧敏.基于工作流引擎構建高等學校本科專業設置預測系統[J].沈陽師范大學學報(自然科學版),2015,04:555-558.
[4]譚善偉,唐軍.基于SSI架構的建筑質量監督系統的設計與實現[J].物聯網技術,2017,02:100-101+104.