国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Activiti的工作流引擎在中小企業(yè)中的應(yīng)用研究

2015-03-27 21:03:41任銘亮楊之垚高永祥
中國高新技術(shù)企業(yè) 2015年11期
關(guān)鍵詞:表單引擎部署

任銘亮 楊之垚 高永祥

摘要:隨著中小企業(yè)信息化的不斷發(fā)展,企業(yè)內(nèi)部業(yè)務(wù)流程越來越復(fù)雜,流程變化也越來越頻繁,傳統(tǒng)工作流引擎不能及時滿足業(yè)務(wù)發(fā)展的需要。Activiti開源工作流引擎具有快速穩(wěn)定的優(yōu)勢特征,基于Activiti引擎快速構(gòu)建符合企業(yè)發(fā)展業(yè)務(wù)流程的解決方案,可以使流程隨著企業(yè)發(fā)展而實時變化。

關(guān)鍵詞:工作流引擎;Activiti;BPMN2.0;中小企業(yè);工作流模型 文獻(xiàn)標(biāo)識碼:A

中圖分類號:TP301 文章編號:1009-2374(2015)11-0051-03 DOI:10.13535/j.cnki.11-4406/n.2015.11.026

工作流模型是由工作流管理聯(lián)盟于1994年提出的工作流管理的體系模型。工作流的概念來源于生產(chǎn)組織和辦公自動化領(lǐng)域,通過將工作分解成定義良好的任務(wù)、角色,按照一定的規(guī)則和過程來執(zhí)行這些任務(wù),達(dá)到提高工作效率和經(jīng)營管理水平的目標(biāo)。企業(yè)應(yīng)用工作流管理能提高企業(yè)運營效率、改善企業(yè)資源利用、提高企業(yè)運作的靈活性和適應(yīng)性等。

眾所周知,企業(yè)中應(yīng)用系統(tǒng)的最大特點是不斷變化,這種變化常常會帶給適應(yīng)性不強的系統(tǒng)以致命的打擊。本文通過深入研究,給出了一種基于Activiti工作流引擎,能夠快速構(gòu)建適應(yīng)企業(yè)流程多變的解決方案。

1 相關(guān)理論介紹

1.1 Activiti引擎系統(tǒng)服務(wù)結(jié)構(gòu)

Activiti服務(wù)包含倉庫服務(wù)、定義文件、部署文件和支撐數(shù)據(jù)(如XML流程文件、流程圖文件等)。該服務(wù)對此提供了存取服務(wù)。運行時服務(wù),該服務(wù)提供了啟動流程、查詢流程實例、設(shè)置獲取流程實例變量等服務(wù)功能。任務(wù)服務(wù),該服務(wù)提供了對用戶任務(wù)和表單相關(guān)的操作服務(wù),如運行時任務(wù)查詢、認(rèn)領(lǐng)、完成、刪除等功能。標(biāo)識服務(wù),該服務(wù)提供了對系統(tǒng)中的用戶和組的管理功能。管理服務(wù),該服務(wù)提供了對流程引擎的管理和維護(hù)功能,通過獲取上下文資源后,對所需處理的事務(wù)以命令模式進(jìn)行攔截處理。歷史服務(wù),該服務(wù)用于獲取正在運行或已經(jīng)完成的流程實例的信息,并對查詢進(jìn)行了優(yōu)化。表單服務(wù),該服務(wù)可以存取啟動和完成任務(wù)所需的表單數(shù)據(jù)并且根據(jù)需要來渲染表單。

1.2 Activiti引擎的優(yōu)勢

Activiti引擎最大的優(yōu)勢是采用了PVM(流程虛擬機),支持除了BPMN2.0規(guī)范之外的流程格式,與外部服務(wù)有良好的集成能力,服務(wù)接口清晰,鏈?zhǔn)紸PI更為優(yōu)雅。Activiti與其他引擎比較,在開發(fā)構(gòu)建方面優(yōu)勢尤為明顯,主要體現(xiàn)在:使用Spring進(jìn)行引擎配置以及各個Bean的管理,綜合使用IoC和AOP技術(shù),使用CXF作為Web服務(wù)實現(xiàn)的基礎(chǔ),使用MyBatis進(jìn)行底層數(shù)據(jù)庫ORM的管理,預(yù)先提供Bundle化包能較容易地與OSGI進(jìn)行集成,通過與Mule ESB的集成和對外部服務(wù)的接口,可以構(gòu)建全面的SOA應(yīng)用。

2 理論研究

2.1 自定義建模

Activiti modeler是基于開源Signavio web流程編輯器的一個定制版本,提供了對BPMN2.0圖形化的規(guī)范支持,建模后的流程以json格式進(jìn)行存儲。用戶只需要了解業(yè)務(wù)流程就可以輕松地建立出復(fù)雜的工作流程。

2.1.1 動態(tài)表單。與業(yè)務(wù)流程相關(guān)的信息有兩種方式:一種包含在自身的流程變量中,另一種是通過流程變量引用的外部信息。Activiti允許存儲復(fù)雜的Java對象作為流程變量,如序列化對象、XML文檔等。用戶都是在啟動流程和完成用戶任務(wù)時與流程進(jìn)行交互的。而表單需要在前臺解析顯示之后才能與用戶進(jìn)行交互。表單所需要顯示的屬性可以通過表單服務(wù)獲取。為了能夠使前臺顯示表單變得容易,將流程定義中包含的對流程變量對象存儲到Map中,然后在前臺使用JSTL和EL對Map內(nèi)容根據(jù)類型不同循環(huán)遍歷展示。通過獲取前臺請求的參數(shù),所有被提交的屬性都將會作為流程變量存儲在數(shù)據(jù)庫中。這意味著在一個表單中新添加一個簡單的字段,也會被作為一個新的變量存儲。通過表單服務(wù)可以從數(shù)據(jù)庫中取出表單屬性并交付給前臺顯示。

2.1.2 外置表單。該種方式常用于基于工作流平臺開發(fā)的方式,開發(fā)人員只需要把表單內(nèi)容配置好保存到.form文件中即可,然后配置每個節(jié)點需要的表單名稱,實際運行時通過引擎提供的API讀取任務(wù)對應(yīng)的表單內(nèi)容進(jìn)行輸出。此種方式對于在經(jīng)常添加新流程的需求較為適用,可以快速發(fā)布新流程,把流程設(shè)計出來之后再設(shè)計表單,最后將兩者進(jìn)行關(guān)聯(lián)。

2.1.3 普通表單。普通表單是最靈活的一種方式,常應(yīng)用在業(yè)務(wù)較為復(fù)雜的系統(tǒng)中。普通表單的特點是把表單的內(nèi)容單獨存放在一個文件中,存放方式也有兩種:一種是把整個流程涉及到的表單放在一個文件,然后根據(jù)處理的環(huán)節(jié)的不同,根據(jù)環(huán)節(jié)名稱匹配顯示;另一種是每個任務(wù)對應(yīng)一個處理頁面,提交任務(wù)時根據(jù)任務(wù)的ID動態(tài)指定表單頁面。

2.2 模型部署

通過一個壓縮文件(Zip、Bar)部署業(yè)模型,也可以通過一個獨立資源(例如bpmn、xml等)構(gòu)建部署,部署過程中要注意編碼格式,防止出現(xiàn)亂碼情況。

2.3 模型熱遷移

一個企業(yè)在流程模型建立運行一段時間后,業(yè)務(wù)規(guī)則發(fā)生變化,需要再添加一個流程節(jié)點,此時先修改模型,然后部署,部署成功后,將原有流程中未完結(jié)的流程通過遷移的方式,可以遷移到新的流程模型上。在遷移過程中,需要修改Activiti的運行表,將流程任務(wù)表中的流程定義ID修改為新的流程定義ID,同時修改運行流程表中的流程定義ID,修改運行時定時任務(wù)數(shù)據(jù)表和運行時流程人員與節(jié)點關(guān)聯(lián)表,最后修改歷史流程實例表。通過攔截器對原有任務(wù)的修改,可以實現(xiàn)未完成的流程熱遷移功能。

2.4 核心功能

2.4.1 會簽,會簽表示同一個任務(wù)節(jié)點需要多人協(xié)同處理,在配置過程中,可以選擇并行處理也可以選擇順序處理。處理過程中可以設(shè)置處理通過率,如果設(shè)置為60%,則審批通過率大于等于該數(shù)時即可流轉(zhuǎn)到下一節(jié)點。會簽符合中小企業(yè)的具體辦公情況,具有一定的應(yīng)用場景。

2.4.2 加減簽。在某一會簽節(jié)點,也存在一種特殊的情況,即在審批過程中,需要新加入審批成員或者減少審批成員,此為加減簽功能。其中加減簽過程,不會改變原有配置。加減簽過程中需要修改循環(huán)次數(shù),集合人員ID等相關(guān)信息。

2.4.3 指派。流程在流轉(zhuǎn)過程中,如果任務(wù)處理人有事不能處理時,管理員可以通過指派功能將任務(wù)強制性的指派給某人進(jìn)行處理。指派過程中需要注意業(yè)務(wù)規(guī)則以及人員的組織結(jié)構(gòu)關(guān)系。

2.4.4 任務(wù)提醒方式??梢栽O(shè)置任務(wù)的提醒時刻,Activiti支持郵件方式提醒。

2.4.5 任務(wù)駁回。任務(wù)審批過程中,如果審批者任務(wù)申請者條件不符合,不能繼續(xù)流轉(zhuǎn),可以選擇駁回到申請人,由申請人重新修改后再次提交。

2.4.6 代理。代理可以分為轉(zhuǎn)派和協(xié)助兩種方式。轉(zhuǎn)派類似于指派,區(qū)別是轉(zhuǎn)派是由任務(wù)處理人發(fā)起的行為,任務(wù)處理人將任務(wù)轉(zhuǎn)派給其他人處理,其他人處理后任務(wù)會繼續(xù)向下一個節(jié)點流轉(zhuǎn)。協(xié)助處理是把任務(wù)轉(zhuǎn)給其他人處理,其他人處理之后,任務(wù)會回到原任務(wù)處理人的代辦事項下,而不是繼續(xù)流轉(zhuǎn)到下一個節(jié)點。

3 實例驗證

基于上面的分析,給出了基于Activiti引擎實現(xiàn)工作流開發(fā)的通用方案。本文以Java EE平臺進(jìn)行設(shè)計開發(fā),數(shù)據(jù)庫使用mysql數(shù)據(jù)庫。以請假流程為示例,通過對請假流程的建模、設(shè)計、開發(fā)、測試,來演示Activiti是如何快速構(gòu)建企業(yè)工作流程的。

3.1 系統(tǒng)設(shè)計

總體結(jié)構(gòu)圖如圖1所示:

圖1 系統(tǒng)結(jié)構(gòu)圖

首先是管理員登錄后,建立工作流模型圖,在建模過程中,需要設(shè)置節(jié)點的處理人變量及表單字段。生成模型后對模型進(jìn)行部署,此過程也可以是對原有模型進(jìn)行修改并重新部署。模型部署成功后,需要根據(jù)具體業(yè)務(wù)情況對節(jié)點處理人進(jìn)行配置。都配置完成后,應(yīng)用程序可以調(diào)用工作流引擎接口實現(xiàn)流程的啟動、表單數(shù)據(jù)的讀取以及任務(wù)的提交處理與駁回處理等。由于activiti集成了Modeler模型編輯界面,所以在Modeler中即可快速建立流程圖。本文采用內(nèi)置表單方式,即在建模過程中,將表單內(nèi)容在節(jié)點圖標(biāo)中設(shè)置完成。

3.2 系統(tǒng)實現(xiàn)

建立好模型之后,需要對模型進(jìn)行部署,部署成功之后就可以正常使用流程了。申請人啟動流程后即可看到設(shè)計過程中內(nèi)置表單的內(nèi)容字段。填寫表單提交后流程即可正常流轉(zhuǎn)。通過如下代碼即可取到表單內(nèi)的內(nèi)容并顯示到前臺頁面。提交任務(wù)時通過如下代碼即可完成任務(wù)的提交,流轉(zhuǎn)到下一環(huán)節(jié)。

3.3 結(jié)果分析

通過如上的框架設(shè)計,如果企業(yè)中需要添加或修改流程,只需建立新的模型或者修改原有模型并重新部署即可。對于新建立部署的模型,可以直接進(jìn)行使用;對于修改的模型,部署后還需要對原有模型的流程進(jìn)行遷移即可。采用上述設(shè)計的解決方案,可以明顯地提高工作效率,降低維護(hù)成本。通過Loadrunner對該流程進(jìn)行了壓力測試,結(jié)果

顯示性能良好,與其他工作流引擎比較具有一定的優(yōu)勢。

4 結(jié)語

本文對基于Activiti的工作流引擎在企業(yè)中的實際應(yīng)用作了深入研究,給出了完整快速地建立工作流模型的解決方案,結(jié)合員工請假流程的例子,首先建立員工請假流程模型,即UML活動圖,然后對建立的模型進(jìn)行部署,部署成功后該流程即可以正常使用。但是對于復(fù)雜流程的遷移還存在問題,比如遷移后的流程圖顯示不準(zhǔn)確等。下一步的工作是深入完善工作流框架的設(shè)計,使該框架具有更廣泛的適用性和應(yīng)用性。

參考文獻(xiàn)

[1] 李海波,戰(zhàn)德臣,徐曉飛.基于工作流引擎的構(gòu)件組裝體系結(jié)構(gòu)[J].軟件學(xué)報,2006,(6).

[2] 金正曄,蔡月茹,馬偉勤,柳西玲.工作流系統(tǒng)的構(gòu)件化開發(fā)[J].計算機工程與設(shè)計,2006,27(23).

作者簡介:任銘亮(1983-),男,供職于河南新飛金信計算機有限公司,碩士,研究方向:軟件工程、面向?qū)ο蟮姆治龊驮O(shè)計;楊之垚(1982-),男,河南新飛金信計算機有限公司系統(tǒng)集成工程師,研究方向:計算機系統(tǒng)集成。

(責(zé)任編輯:秦遜玉)

猜你喜歡
表單引擎部署
一種基于Kubernetes的Web應(yīng)用部署與配置系統(tǒng)
電子表單系統(tǒng)應(yīng)用分析
華東科技(2021年9期)2021-09-23 02:15:24
晉城:安排部署 統(tǒng)防統(tǒng)治
部署
淺談網(wǎng)頁制作中表單的教學(xué)
藍(lán)谷: “涉藍(lán)”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
部署“薩德”意欲何為?
太空探索(2016年9期)2016-07-12 10:00:02
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發(fā)
基于Infopath實現(xiàn)WEB動態(tài)表單的研究
電子世界(2012年24期)2012-12-17 10:49:06
洛浦县| 永修县| 名山县| 仲巴县| 什邡市| 安丘市| 慈溪市| 平乡县| 搜索| 三明市| 石楼县| 清流县| 隆安县| 哈密市| 江都市| 东乡县| 门源| 玉田县| 镇赉县| 公主岭市| 竹溪县| 界首市| 农安县| 馆陶县| 通海县| 丘北县| 宿迁市| 马关县| 普陀区| 沙湾县| 乳山市| 嘉定区| 武穴市| 察雅县| 婺源县| 周至县| 凌海市| 宿州市| 宝应县| 河间市| 台南县|