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

?

JBPM工作流引擎在OA中的應(yīng)用研究

2012-03-17 07:20:54羅金濤
電子設(shè)計(jì)工程 2012年17期
關(guān)鍵詞:數(shù)據(jù)表實(shí)例代碼

張 瑞,羅金濤

(1.商丘師范學(xué)院 計(jì)算機(jī)與信息技術(shù)學(xué)院,河南 商丘 476000;2.東莞威遠(yuǎn)職業(yè)高級(jí)中學(xué) 廣東 東莞 523909)

工作流(WorkFlow)就是工作流程的計(jì)算模型,即將工作流程中的工作如何前后組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示并對(duì)其實(shí)施計(jì)算,其表現(xiàn)為參與者對(duì)文件、信息或者任務(wù)按照預(yù)定的規(guī)定來(lái)采用行動(dòng),并令其在參與者之間進(jìn)行傳遞。工作流要解決的主要問(wèn)題是:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),在多個(gè)參與者之間,利用計(jì)算機(jī),按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。簡(jiǎn)單地說(shuō),工作流就是一系列相互銜接、自動(dòng)進(jìn)行的業(yè)務(wù)活動(dòng)或任務(wù),它需要人的參與[1]。工作流管理的最大優(yōu)點(diǎn)是將應(yīng)用邏輯和過(guò)程邏輯分離,可以不修改具體功能實(shí)現(xiàn)而只修改過(guò)程模型來(lái)改變系統(tǒng)功能,實(shí)現(xiàn)對(duì)生產(chǎn)經(jīng)營(yíng)部分或全部過(guò)程的集成管理,有效地把人、信息和應(yīng)用工具合理地組織在一起,提高軟件的重用率,發(fā)揮系統(tǒng)的最大效能。

1 JBPM介紹

管理),它是一個(gè)基于Java的工作流管理系統(tǒng)[2]。JBPM最大的特色就是它的邏輯定義沒(méi)有采用目前的一些規(guī)范,如XPDL、BPEL等,而是采用了它自己定義的JBoss JBPM Process Definition Language(JPDL)。JPDL認(rèn)為一個(gè)商務(wù)流程可以被看作是一個(gè)UML狀態(tài)圖[3]。JPDL就是詳細(xì)定義了這個(gè)狀態(tài)圖的每個(gè)部分,如起始、結(jié)束狀態(tài),狀態(tài)之間的轉(zhuǎn)換等。

JBPM底層所采用的持久層技術(shù)是Hibernate[4],Hibernate是開(kāi)源社區(qū)非常優(yōu)秀的持久層技術(shù),使用非常廣泛,它能夠方便的將數(shù)據(jù)對(duì)象和底層數(shù)據(jù)庫(kù)進(jìn)行映射,它能夠支持包括oracle,mysql,MSSqlServer在內(nèi)的各種主流數(shù)據(jù)庫(kù)系統(tǒng),并且提供緩存管理等多項(xiàng)其它優(yōu)化技術(shù),使用它可以更加方便的操作數(shù)據(jù)庫(kù)。而JBPM采用Hibernate作為持久層訪問(wèn)技術(shù),無(wú)疑是更加增強(qiáng)了JBPM的易用性和可擴(kuò)展性[5]。

2 系統(tǒng)功能分析

JBPM (Java Business Process Management,Java 業(yè)務(wù)流程

根據(jù)需求,本實(shí)例采用powerdesigner工具設(shè)計(jì)出users、application和checkup 3張用戶(hù)表,其物理數(shù)據(jù)模型如圖1所示。

圖1 用戶(hù)表數(shù)據(jù)模型Fig.1 User table datamodel

2.1 JBPM系統(tǒng)數(shù)據(jù)庫(kù)的生成

JBPM的所有操作對(duì)象以及操作狀態(tài)都會(huì)存儲(chǔ)到系統(tǒng)數(shù)據(jù)庫(kù)當(dāng)中,因此系統(tǒng)數(shù)據(jù)庫(kù)是JBPM工作流引擎的核心,并且JBPM是采用Hibernate來(lái)進(jìn)行持久層操作。有以下幾種方法可以生成系統(tǒng)數(shù)據(jù)表:

1)手工方式

手動(dòng)地把所需表的sql腳本通過(guò)MySQL的命令行方式來(lái)生成數(shù)據(jù)表,而且由于在JBPM套件包中的db目錄中,已經(jīng)自帶了各種版本數(shù)據(jù)庫(kù)系統(tǒng)的代碼,mysql的對(duì)應(yīng)代碼腳本為:jbpm.jpdl.mysql.sql,通過(guò)簡(jiǎn)單修改,就可以通過(guò)命令行方式生成JBPM系統(tǒng)數(shù)據(jù)表,最后可以生成32張系統(tǒng)數(shù)據(jù)表。 但是對(duì)于用戶(hù)數(shù)據(jù)表,也需要去單獨(dú)生成。

2)調(diào)用JBPM內(nèi)部方法

在配置好JBPM運(yùn)行環(huán)境以及Hibernate映射關(guān)系的情況下,通過(guò)語(yǔ)句:

JbpmConfiguration.getInstance().createSchema(); 就 可 以在指定的數(shù)據(jù)庫(kù)中生成32張系統(tǒng)表以及users、application和checkup 3張用戶(hù)表。

2.2 業(yè)務(wù)流程設(shè)計(jì)

通過(guò)系統(tǒng)業(yè)務(wù)流程的分析描述,可以通過(guò)JBPM在Eclipse下的圖形化插件設(shè)計(jì)出如圖2所示的流程定義[6]。

圖2 JBPM流程定義Fig.2 JBPM process definition

2.3 流程發(fā)布

JBPM流程的發(fā)布,有兩種方式,第1種是簡(jiǎn)單的方式,只發(fā)布流程定義文件,第2種是完整的發(fā)布方式,就是將流程定義文件,gpd.xml已經(jīng) processimage.jpg 3 個(gè)文件進(jìn)行打包成zip格式,然后再進(jìn)行發(fā)布,以發(fā)布zip格式為例,其核心代碼如下:

2.4 系統(tǒng)核心功能的實(shí)現(xiàn)

1)報(bào)銷(xiāo)單的提交

在以Hibernate作為數(shù)據(jù)庫(kù)持久層技術(shù)的JBPM工作流開(kāi)發(fā)中,表單的提交處理和采用純JDBC方式操作數(shù)據(jù)庫(kù)時(shí)有了很大的變化。Hibernate是JDBC的輕量級(jí)的對(duì)象封裝,它是一個(gè)獨(dú)立的對(duì)象持久層框架,通過(guò)它可以簡(jiǎn)化對(duì)數(shù)據(jù)庫(kù)操作。 Hibernate可以用在任何JDBC可以使用的場(chǎng)合,從某種意義上來(lái)說(shuō),Hibernate可以在任何場(chǎng)合下取代JDBC.以下是本例中對(duì)于報(bào)銷(xiāo)申請(qǐng)單的提交處理代碼片段:

//對(duì)報(bào)銷(xiāo)單內(nèi)容進(jìn)行持久化操作,在實(shí)際當(dāng)中,這些數(shù)據(jù)是從前臺(tái)表單取得,然后通過(guò)JavaBean中的setter方式,就可以將數(shù)據(jù)放入app中

2)流程實(shí)例的生成

流程實(shí)例就是業(yè)務(wù)的一次實(shí)際流轉(zhuǎn)過(guò)程,流程和流程實(shí)例的關(guān)系相當(dāng)于對(duì)象和類(lèi)的關(guān)系,創(chuàng)建流程實(shí)例以后,還需要和公務(wù)進(jìn)行綁定。該方法實(shí)現(xiàn)如下:

流程實(shí)例擁有自己的ContextInstance環(huán)境變量對(duì)象。它實(shí)際上是一個(gè)HashMap,以key-value方式記錄了流程的上下文變量值,它以鍵值對(duì)的方式出現(xiàn)的,代碼中的 processIns tance.getContext

Instance().createVariable("application",app.getAppid ());就是向環(huán)境變量中添加一個(gè)key為application的對(duì)象。每個(gè)流程實(shí)例都擁有自己令牌(token)對(duì)象,主流程有自己的根令牌 (RootToken),子流程也擁有自己的子Token。父流程的Token和子流程的 Token相互關(guān)聯(lián),形成Token樹(shù)。 Token對(duì)象表示流程運(yùn)行的當(dāng)前位置,即流程運(yùn)行到哪個(gè)節(jié)點(diǎn)了。最后通過(guò)對(duì)Token對(duì)象的signal()方法調(diào)用,可以使流程向下運(yùn)行。

3 結(jié) 論

最近幾年企業(yè)對(duì)于過(guò)程建模的需求為工作流提供了一個(gè)廣闊的市場(chǎng),使得工作流產(chǎn)品得以迅速發(fā)展。文中選擇了開(kāi)源領(lǐng)域當(dāng)前最流行的JBPM工作流作為研究對(duì)象,并將其應(yīng)用于OA領(lǐng)域,主要完成了以下研究工作:

1)研究了工作流管理系統(tǒng)的作用,意義,重點(diǎn)研究了標(biāo)準(zhǔn)工作流參考模型以及JBPM的系統(tǒng)架構(gòu)以及軟件體系結(jié)構(gòu)。

2)分析設(shè)計(jì)了OA系統(tǒng)中的一個(gè)典型工作流模塊,并給出了核心實(shí)現(xiàn)代碼,業(yè)務(wù)流程的實(shí)現(xiàn)嚴(yán)格按照J(rèn)BPM標(biāo)準(zhǔn)。

[1]王春華,吳業(yè)福,吳亞芳.工作流原理及應(yīng)用[J].電腦知識(shí)與技術(shù),2005(10):106.

WANG Chun-hua,WU Ye-fu,WU Ya-fang.The principle and application ofworkflow[J].Computer Knowledge and Technology,2005(10):106.

[2]JBoss Enterprise.JBPM Overview[EB/OL].(2010-04).http://www.jboss.org/jbpm.

[3]宋波.UML面向?qū)ο蠹夹g(shù)與實(shí)踐[M].北京:北京科學(xué)出版社,2006.

[4]夏昕,曹曉鋼,唐勇.深入淺出Hibernate[M].北京:電子工業(yè)出版社,2005.

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

[6]顧文軒,王瓊,徐汀榮.基于JBPM的工作流管理系統(tǒng)的研究與設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(5):104-106.GU Wen-xuan,WANG Qiong,XU Ting-rong.Study and design of JBPM based workflow management system[J].Computer Applications and Software,2009,26(5):104-106.

猜你喜歡
數(shù)據(jù)表實(shí)例代碼
湖北省新冠肺炎疫情數(shù)據(jù)表
黨員生活(2020年2期)2020-04-17 09:56:30
基于列控工程數(shù)據(jù)表建立線(xiàn)路拓?fù)潢P(guān)系的研究
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
圖表
完形填空Ⅱ
完形填空Ⅰ
基于VSL的動(dòng)態(tài)數(shù)據(jù)表應(yīng)用研究
河南科技(2014年24期)2014-02-27 14:19:25
建昌县| 乌鲁木齐市| 江孜县| 定结县| 延津县| 托里县| 吉安市| 乌拉特中旗| 宁波市| 成都市| 朝阳区| 永丰县| 巴中市| 乌恰县| 文安县| 政和县| 东莞市| 茶陵县| 株洲县| 区。| 彰化县| 阿荣旗| 卢龙县| 宣武区| 玛纳斯县| 昌江| 镇远县| 滕州市| 虹口区| 奎屯市| 定襄县| 仙桃市| 泽库县| 彭泽县| 河间市| 巫溪县| 桃园县| 西乌珠穆沁旗| 平度市| 滁州市| 义乌市|