|
這里使用的是mysql數(shù)據(jù)庫
開發(fā)工具是eclipse 首先我們需要初始化話數(shù)據(jù)庫 Java代碼
相關(guān)的配置文件 可以在jbpm的程序包中找到 hibernate.cfg.xml要與你的數(shù)據(jù)庫配置相匹配。 接下來我們繪制一個(gè)工作流,這里基本上用到j(luò)bpm的一個(gè)工作流繪制的插件。 我們繪制了一個(gè)簡單的流程: 大體過程如下 起始狀態(tài)--》任務(wù)1--》任務(wù)2--》結(jié)束 Java代碼
這里的actor-id 是一個(gè)查看權(quán)限 現(xiàn)在我們將流程定義發(fā)布上去 Java代碼
發(fā)布之后我們?cè)跀?shù)據(jù)庫中已經(jīng)可以看到相關(guān)的配置了。
下面我們創(chuàng)建一個(gè)流程實(shí)例。 Java代碼
signal();方法是將狀態(tài)進(jìn)行轉(zhuǎn)換,由于轉(zhuǎn)至第二個(gè)狀態(tài),所以apply任務(wù)在結(jié)束完起始狀態(tài)的時(shí)候會(huì)被同步創(chuàng)建創(chuàng)建。 由于apply任務(wù)是分配給actorId=1進(jìn)行處理的,下面我們看看autorId=1的任務(wù)列表 Java代碼
我們可以看到該用戶權(quán)限下的任務(wù)列表 ID :1 ActorId :1 任務(wù)名稱 :apply 開始時(shí)間 :2009-06-25 16:59:05.0 開始時(shí)間 :null 結(jié)束時(shí)間 :null 下面我們開始任務(wù)該任務(wù) 我的id已經(jīng)在之前獲取到,這里就直接用了,實(shí)際應(yīng)用中則應(yīng)通過傳參獲取 Java代碼
ID :1 ActorId :1 任務(wù)名稱 :apply 開始時(shí)間 :2009-06-25 16:59:05.0 開始時(shí)間 :2009-06-25 19:25:52.0 結(jié)束時(shí)間 :null 此時(shí)已經(jīng)開始 下面我們進(jìn)行任務(wù)的完成 Java代碼
完成之后在任務(wù)列表中已經(jīng)沒有任務(wù)了。 下面我們看一下數(shù)據(jù)庫,第一個(gè)任務(wù)已經(jīng)完成,第二個(gè)任務(wù)已經(jīng)創(chuàng)建
接下來我們對(duì)ActorId=2的任務(wù)進(jìn)行執(zhí)行,等同上面的,這里不進(jìn)行重復(fù) Java代碼
當(dāng)?shù)诙€(gè)任務(wù)執(zhí)行完成之后,你會(huì)看到任務(wù)已經(jīng)整個(gè)流程已經(jīng)完成,db中流程的end字段已經(jīng)賦值
之所以這樣分步來說,就是希望可以深入了解jbpm的執(zhí)行流程 在實(shí)際的項(xiàng)目中往往開始和結(jié)束都是同時(shí)進(jìn)行的 比如已經(jīng)請(qǐng)假(star--填單--審批--end):往往是請(qǐng)假表單的填寫的提交的瞬間(創(chuàng)建實(shí)例,填寫請(qǐng)假單),審批的成功與否也是瞬間而且同時(shí)結(jié)束流程 即只有兩步操作。 |
|
|