亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MVC架構的輕量級工作流引擎研究與設計

        2011-03-14 05:12:46丁蒼峰
        電子設計工程 2011年10期
        關鍵詞:引擎組件架構

        丁蒼峰

        (延安大學計算中心陜西延安716000)

        工作流從提出至今,經(jīng)過幾十年的發(fā)展,取得一定的成果,但在實際應用中,應用的企業(yè)還是較少,應用的范圍窄,效果不理想[1]。這主要是目前與工作流管理系統(tǒng)的全面性、集成性有關,也與企業(yè)應用的狀況有關,最重要的原因是目前工作流產(chǎn)品功能齊全,結構龐大,系統(tǒng)復雜,標準化程度差,靈活性差,實現(xiàn)復雜,難于在不同系統(tǒng)之間進行交互,集成的效果不理想,不能很好地將SCM、CRM、ERP、和OA等具體業(yè)務流程處理系統(tǒng)緊密地聯(lián)系在一起[2],多數(shù)產(chǎn)品的開發(fā)由于沒有清楚地理解用戶的需求,而不能滿足用戶的迫切需要,也不能靈活地集成到企業(yè)具體系統(tǒng)中。

        為了克服當前工作流在應用中的不足,提出了一個基于整合MVC架構的輕量級工作流引擎,來進行系統(tǒng)的設計和應用。本文在設計引擎時主要考慮一個輕量級的核心,提供工作流管理系統(tǒng)所需要的基本功能,在此基礎上,利用組件靈活的可拔可插特性,根據(jù)需要來添加各種工作流組件進行擴展工作流管理系統(tǒng)的功能。

        新西蘭Massey大學的Tagg等學者對工作流引擎的相信曾經(jīng)使用過”輕量級”[3]這一術語,但是側重點在于如何構造一個“瘦客戶端”。而本文的設計重點則是設計一個基于MVC架構的充分支持工作流技術的小型內(nèi)核,可以耦合到具體不同應用的MIS系統(tǒng)中,達到靈活應用的目的。

        1 整合MVC的輕量級的引擎設計

        miniFlow是基于整合MVC架構的Web環(huán)境系統(tǒng),整個系統(tǒng)參照了J2EE架構,采用了Brower/ActionServlet控制器/BO業(yè)務邏輯層/Hibernate DAO層/DBMS數(shù)據(jù)庫服務層多層的框架結構。輕量級是設計miniFlow系統(tǒng)所一直圍繞的核心任務,為此,利用目前很流行的Struts2[4]、Hibernate[5]開源框架和Ajax[6]異步請求/響應技術來設計,主要采用了組件能拔能插的特性來容易地擴展工作流管理系統(tǒng)的其他功能。本文利用這些技術設計的miniFlow系統(tǒng)整體架構如圖1所示。

        圖1清楚地描述了MVC架構基礎上的工作流管理系統(tǒng)和應用進行集成的多層模型,分為客戶端應用層、表示邏輯層、業(yè)務邏輯層,持久層和數(shù)據(jù)庫服務層。

        1)數(shù)據(jù)庫服務層為工作流管理系統(tǒng)和業(yè)務系統(tǒng)通過持久層提供數(shù)據(jù)。

        2)持久層用Hibernate進行數(shù)據(jù)庫的完全封裝,使軟件開發(fā)者真正對數(shù)據(jù)庫的操作是面向對象的操作,完全實現(xiàn)了面向對象的設計思想,并且在該層進行了對通用公共方法的封裝,使整個系統(tǒng)都可以調(diào)用該公共方法,在進行對方法封裝時,也設置了開關控制等操作,不僅提高了整個開發(fā)系統(tǒng)的效率,大大節(jié)約了項目的成本,也使系統(tǒng)開發(fā)的代碼易于維護和便于以后的升級。

        圖1 miniFlow系統(tǒng)整體架構Fig.1Overall framework of miniFlow

        3)業(yè)務邏輯層是由工作流管理和系統(tǒng)業(yè)務兩部分構成。工作流管理系統(tǒng)是由工作流引擎組成,其中引擎是通過引擎調(diào)度中心進行控制,該中心可以根據(jù)業(yè)務邏輯對工作流引擎進行調(diào)用所對應的組件,組件分別由轉發(fā)控制組建,任務指派組件,引擎調(diào)度規(guī)則組件等一些可以調(diào)度中心進行調(diào)度的組件,工作流引擎主要用來解釋工作流建模工具所定義的業(yè)務流程。

        業(yè)務邏輯層主要是處理業(yè)務信息的組件,它與工作流管理系統(tǒng)的組件進行松散耦合而形成表現(xiàn)層的控制邏輯ActionServlet調(diào)用的中間層組件。

        4)客戶應用層和表現(xiàn)邏輯層提供用戶客戶端界面,根據(jù)用戶的權限不同而顯示不同的信息,通過一系列的動態(tài)頁面表現(xiàn),這些Web頁面由服務器JSP腳本創(chuàng)建,JSP腳本在Struts的ActionServlet控制器下通過WEB容器的ActionForm表單和業(yè)務邏輯層的工作流管理系統(tǒng)組件和系統(tǒng)業(yè)務組件進行交互,根據(jù)用戶調(diào)用相應的工作流執(zhí)行服務來執(zhí)行組件的調(diào)用。

        1.1 引擎控制器

        引擎控制器是工作流引擎在運行時的控制中心,圖2給出了引擎控制器的結構圖。

        引擎控制器接受從Action控制器發(fā)送過來有關流程控制的請求(如業(yè)務初始化、獲取任務以及結束任務),然后根據(jù)不同的請求類型調(diào)用相應的組件或處理模塊與本次請求相關的操作并將結果返回,由于是在DBMS內(nèi)部實現(xiàn)工作流引擎的控制模型,因此有關請求的并發(fā)處理等問題完全可以交給數(shù)據(jù)庫管理系統(tǒng)來完成,也不需要諸如請求隊列等形式的數(shù)據(jù)結構。因此,可以將引擎控制器看成一個多線程的并發(fā)服務器,它可以對多個Action控制的外部請求提供并發(fā)服務。對外部請求的處理過程肯定會涉及到對內(nèi)部數(shù)據(jù)結構中有關數(shù)據(jù)的讀寫和更改操作,這些數(shù)據(jù)的完整性和互斥操作可以通過持久層Hibernate提供的各種加鎖機制來實現(xiàn),從而實現(xiàn)了多個外部請求之間的獨立性。

        圖2 引擎控制器的結構圖Fig.2Framework of engine controller

        1.2 引擎流程定義管理和解析組件

        1)流程定義管理miniFlow使用流程定制工具,通過Ajax和JSON語言描述,在客戶端進行業(yè)務流程定義的時候將該流程存在于JSON的對象數(shù)組類JSONArray的一個對象jsonArray中,然后通過Ajax的XMLHttpRequest一個對象類的send(“json=”+jsonArray.toJSPMString())方法,將jsonArray從客戶端發(fā)送到服務器端。miniFlow的核心部分不涉及如何實現(xiàn)流程的定制,而是專注于將定制好的jsonArray數(shù)組字符串文件在服務器端讀入,存儲到數(shù)據(jù)庫中。采用這樣的解決方式,主要考慮到了系統(tǒng)的效率性能問題。在流程執(zhí)行階段,將會經(jīng)常需要對流程的定義讀取和解析,如果每次都直接讀取jsonArray文件,將會導致系統(tǒng)性能的瓶頸。而每次讀取jsonArray文件后,將會根據(jù)在客戶端存儲jsonArray文件的結構進行解析,獲取流程、活動的相應信息,這也會降低系統(tǒng)的效率。

        miniFlow在第一實例化流程時,通用在服務器端獲取已經(jīng)定義好的jsonArray文件,然后通過引擎流程定義管理和解析組件提供的repository接口中提供的save(String source)方法讀取和解析文件,存儲相關數(shù)據(jù)到數(shù)據(jù)庫中,以后每次對定義的應用直接讀取數(shù)據(jù)庫。

        2)流程定義解析miniFlow的引擎用Ajax和JSON語言描述的流程定義文件jsonArray讀入,存儲到數(shù)據(jù)庫中,對于流程的定義信息,在設計工作流信息模型中設計了5個表來存儲,分別是節(jié)點定義表TB_WF_NODE_DEFINE、前續(xù)節(jié)點集表TB_WF_PRE_NODE_SET、后續(xù)節(jié)點集表TB_WF_NEXT_N ODE_SET、流程角色表TB_WF_ROLE和節(jié)點類型表TB_WF_NODE_TYPE。

        1.3 引擎規(guī)則控制組件

        上面的介紹我們知道,工作流引擎程序運行在業(yè)務邏輯層,位于表示邏輯層的Action控制器調(diào)用業(yè)務邏輯層的引擎控制器,引擎控制器調(diào)用引擎規(guī)則組件和轉發(fā)控制組件,通過檢索業(yè)務流程的定義,與各模塊業(yè)務表現(xiàn)邏輯層(客戶端應用層)數(shù)據(jù)交互,引導業(yè)務流程的走向。在上面的miniFlow的數(shù)據(jù)模型的信息模型中,給出的表結構中有這樣一個表NODE_TYPE,NODE_TYPE就是節(jié)點類型表,引擎規(guī)則控制組件就是根據(jù)節(jié)點的類型進行設計來流轉業(yè)務的。

        1)引擎規(guī)則組件類分析在設計引擎規(guī)則組件時候,首先定義了一個引擎規(guī)則接口Rule。根據(jù)節(jié)點類型定義,為此在開發(fā)引擎規(guī)則組件時,為每一節(jié)點類型都定義了一個類,該類都實現(xiàn)引擎規(guī)則接口Rule,返回的結果為任務狀態(tài),代碼如下。

        public interface Rule

        {

        public String isRule(EngineParam engineParam)throws Exception;

        }

        2)引擎規(guī)則控制器由上述可知,根據(jù)節(jié)點類型設計引擎規(guī)則組件時,針對每個節(jié)點類型都設計了相應的類,引擎規(guī)則控制器就是根據(jù)實際傳入的節(jié)點類型,實例化相應的規(guī)則。由上述知識可清楚的得到引擎規(guī)則控制器Rule Ctr調(diào)用各個引擎規(guī)則類的圖,如圖3所示。

        圖3 引擎規(guī)則控制器調(diào)用引擎規(guī)則結構圖Fig.3Engine rule controller calls engine rules structure

        1.4 引擎轉發(fā)控制組件

        在miniFlow架構的核心部分,流程轉發(fā)控制組件提供執(zhí)行機制和環(huán)境,流程可以按照定義執(zhí)行操作,也就是實現(xiàn)工作流的目標。一系列的節(jié)點操作構成一個流程,一個流程實例根據(jù)定義執(zhí)行相應的操作,完成相應的任務。多個實例可以共同使用同一個流程定義,也就是說,一個流程定義模板可以使用多個流程實例,可以同時實例化多個實例。

        轉發(fā)控制組件采用動態(tài)實例化的方式,即流程開始的時候,只是實例化該流程的第一活動。第一個活動完成后,實例化后續(xù)活動。一是節(jié)省資源的開銷,二是允許動態(tài)修改流程。這個組件主要實現(xiàn)流程運行期間的轉發(fā)控制流向,包括流程啟動(即流程實例化),任務跳轉,任務終止等信息。

        由上所知,工作流引擎控制中這些方法中又引用了接口FlowCtrl,該接口有executeFlow()靜態(tài)方法,該FlowCtrl接口被FlowStartUp、FlowStep、FlowStop、GetFlowIdList、FlowCancel和FlowPause類型實現(xiàn)。由上述關系可以設計出工作流引擎轉發(fā)控制組件和上述方法以及類之間的關系圖,如圖4所示。

        圖4 工作流引擎轉發(fā)控制組件結構圖Fig.4Workflow engine forward and control component framework

        1.5 引擎權限控制組件

        miniFlow權限控制組件是采用RBAC(Role-based Access Control Model)訪問控制模型實現(xiàn)的[7],可以提供多層次的授權。角色為樹狀遞歸結構,功能也用樹狀遞歸結構實現(xiàn),這樣可以實現(xiàn)較復雜的用戶權限管理。目前系統(tǒng)權限可以細分到專責一級,并且不同專責的權限可以由系統(tǒng)管理員靈活地、動態(tài)地分配。一方面保證了系統(tǒng)信息的保密性,系統(tǒng)的安全性,另一方面也增加了系統(tǒng)的靈活性和擴展性。

        2 引擎可擴展組件

        2.1 可視化流程定義工具

        可視化流程定義工具獨立于架構的核心部分,只是提供給用戶可視化的操作界面,方便用戶流程的定義。本課題在設計工作流可視化定義工具的時候,不是用工作流聯(lián)盟所要求基于XML的流程定義語言XPDL,而是用JavaScript、Ajax和JSON等語言實現(xiàn)的定制流程的開發(fā)工具。它將用戶可視化設計的流程定義以JSON的對象數(shù)組JSONArray或JSON對象JSONObject形式存儲起來,該存儲的形式是字符形式的,通過Ajax中XMLHttpRequest對象的方法send(),把JSON的字符串發(fā)送到服務器端進行解析,存儲到數(shù)據(jù)庫。

        我們提出用JavaScript、Ajax和JSON來實現(xiàn)流程定義的語言,簡化了流程定義中各種繁瑣的設定。流程定義工具可以提供靈活的流程定義功能,該流程定義工具達到了設計miniFlow輕量級的要求,具有重用性、可移植性高的特點,幾乎在所有的瀏覽器都可以實現(xiàn)流程定制的功能。

        2.2 任務列表組件

        這個組件包含標準的任務列表處理器和應用開發(fā)的任務列表處理器。其中標準的任務列表處理器包含了在標準規(guī)范定義中,用于工作流核心部分和參與流程執(zhí)行。miniFlow的任務組件與WFMC規(guī)范中Worklist的接口要求有所不同,在miniFlow的任務列表組件中設計了3個接口,3個接口分別實現(xiàn)待處理工作,已提交工作和已完成工作,這3個接口提供了與工作流管理系統(tǒng)的交互界面。其含義如下:

        1)待處理工作:表示當前用戶要等待用戶處理的工作,其任務狀態(tài)為WAITING,等待用戶來處理。

        2)已提交工作:表示當前用戶處理了等待用戶處理的工作,在用戶處理完后就表示已提交工作,其任務狀態(tài)為除WAITING外的其他狀態(tài)(RUNNING、CANCEL和SUSPENDED等)。

        3)已完成工作:表示當前工作已經(jīng)處理完畢或由于別的原因取消工作的執(zhí)行,其任務狀態(tài)為COMPLETED或FAI LURE或CANCEL等。

        應用開發(fā)的任務列表處理器就是上面的3個接口的工作列表處理器,則是根據(jù)具體的應用系統(tǒng)開發(fā)的,用于應用系統(tǒng)的具體業(yè)務和引擎之間的交互。

        2.3 日志信息組件

        工作流管理系統(tǒng)存儲流程的執(zhí)行日志記錄,在建立miniFlow架構的時候,顯示日志信息的組件并不屬于架構的核心部分。miniFlow通過增加一個獨立的顯示日志信息的組件來擴展架構。和傳統(tǒng)的工作流架構不一樣,這個組件并不是系統(tǒng)的一個組成部分,只是在應用需要的時候,把這部分功能集成。

        每個應用系統(tǒng),需要顯示的日志信息會各有各的特殊要求,miniFlow架構的核心部分不包含顯示日志信息功能,確保了架構的核心在輕量級別。這樣,顯示日志信息的功能可以靈活地集成也可以靈活地定制。

        3 結論

        本文介紹了基于MVC架構的輕量級工作流引擎,引擎的核心部分,提供了工作流最基本的功能,與核心的引擎規(guī)則和任務指派以及權限分配組件一起構成工作流的引擎。miniFlow基于MVC架構實現(xiàn),還包括易于增加和裁減提供各種的工作流特性的擴展。采用該引擎系統(tǒng)可以進行二次開發(fā)的應用系統(tǒng),提高企業(yè)運作的靈活性和適應性、為企業(yè)在激烈的市場競爭中贏得了更多的時間和機會,實踐證明該設計是切實可行的。

        [1]伍慶林,王加.基于J2EE框架的工作流管理系統(tǒng)設計與實現(xiàn)[J].計算機技術與發(fā)展,2008,18(4):107-110.WU Qing-lin,WANG Jia.Design and implementation of J2EE framework based on workflow management system[J].ComputerTechnologyandDevelopment,2008,18(4):107-110.

        [2]牟軍,呂立.使用輕量級框架進行J2EE應用開發(fā)[J].小型微型計算機系統(tǒng),2006,27(6):1149-1152.MU Jun,LV li.J2EE application development based on lightweight framework[J].Mini-micro Systems,2006,27(6):1149-1152.

        [3]Tagg R,et al.Preliminary design of a lightweight workflow server[C].In:8th Australasian Confon Information Systems,Australia,1997.

        [4]Roughley I.Starting Struts 2[M].C4Media Inc,2008.

        [5]孫衛(wèi)琴.精通Hibernate:Java對象持久化技術詳解[M].北京:電子工業(yè)出版社,2005.

        [6]Asleson R,Nathaniel T.Schutt.Foundation of Ajax[M].金陵,等譯.北京:人民郵電出版社,2006.

        [7]Chandramouli R.Application of XML tools for enterprisewide RBAC implementation tasks[C]//Proceedings of the fifth ACM workshop on Role-based access control,Berlin,Germany,2000:11-18.

        猜你喜歡
        引擎組件架構
        基于FPGA的RNN硬件加速架構
        無人機智能巡檢在光伏電站組件診斷中的應用
        能源工程(2022年2期)2022-05-23 13:51:50
        功能架構在電子電氣架構開發(fā)中的應用和實踐
        汽車工程(2021年12期)2021-03-08 02:34:30
        新型碎邊剪刀盤組件
        重型機械(2020年2期)2020-07-24 08:16:16
        U盾外殼組件注塑模具設計
        藍谷: “涉藍”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        LSN DCI EVPN VxLAN組網(wǎng)架構研究及實現(xiàn)
        電信科學(2017年6期)2017-07-01 15:45:17
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        風起新一代光伏組件膜層:SSG納米自清潔膜層
        太陽能(2015年11期)2015-04-10 12:53:04
        一種基于FPGA+ARM架構的μPMU實現(xiàn)
        国产人在线成免费视频麻豆| 亚洲av乱码一区二区三区林ゆな | 日本一区二区免费看片| 插鸡网站在线播放免费观看| 精品国产sm捆绑最大网免费站| 免费毛片在线视频| 国产精品一级黄色大片| 美女很黄很色国产av| 国产一区二区女内射| 在线亚洲综合| 中文天堂一区二区三区| 日本一区二区三区视频网站| 日本高清h色视频在线观看| 无码AV高潮喷水无码专区线| 蜜桃精品国产一区二区三区| 国产情侣一区二区三区| 日本做受高潮好舒服视频| 呦泬泬精品导航| 日本大片一区二区三区| 国产果冻豆传媒麻婆精东| 久久国产精久久精产国| 免费 无码 国产精品| 久久精品国产黄片一区| 蜜臀亚洲av无码精品国产午夜.| 天天爽天天爽天天爽| AV无码人妻一区二区三区牛牛| 一道之本加勒比热东京| 国产色xx群视频射精| 欧美一级三级在线观看| 亚洲天堂一区二区精品| 中国娇小与黑人巨大交| 毛片在线播放a| 精品国产日韩无 影视| gg55gg国产成人影院| 午夜福利院电影| 亚洲成a∨人片在线观看无码| 按摩少妇高潮在线一区| 国产欧美亚洲精品第一页| 中文字幕无码免费久久| 日韩精品极品在线观看视频| 国产精品一区二区久久国产|