完整工作流JBPM專案實戰全過程教程3

2021-06-06 08:45:07 字數 3272 閱讀 4238

完整工作流jbpm專案實戰全過程教程3----專案後續diy

從資料庫中表的定義不難看出,每篇文章的審批將新建乙個jbpm流程例項來跟蹤。

文章的表article中,利用piid來關聯乙個流程例項,並且定義state欄位來表示文章的當前狀態(編輯中,審批中,審批通過,nulll),定義auditstate欄位來表示文章當前由何許可權的人員來審批(一級審批,二級審批,**審批,四級審批,當然還可以自定義許可權)

下面就來演示如何自定義許可權

首先在資料庫中插入自己定義的許可權

insert  into userduty(`name`,`dutytype`,`dutyvalue`)

values ('自定義流程許可權1','自定義流程許可權1','自定義流程許可權1');

insert  into userduty(`name`,`dutytype`,`dutyvalue`)

values ('自定義流程許可權2','自定義流程許可權2','自定義流程許可權2');

insert  into userduty(`name`,`dutytype`,`dutyvalue`)

values ('自定義流程許可權3','自定義流程許可權3','自定義流程許可權3');

insert  into userduty(`name`,`dutytype`,`dutyvalue`)

values ('自定義流程許可權4','自定義流程許可權4','自定義流程許可權4');

insert  into userduty(`name`,`dutytype`,`dutyvalue`)

values ('自定義流程許可權5','自定義流程許可權5','自定義流程許可權5');

insert  into userduty(`name`,`dutytype`,`dutyvalue`)

values ('自定義流程許可權6','自定義流程許可權6','自定義流程許可權6');

然後就是插入自定義使用者(需要注意使用者與許可權之間的關聯關係)

insert  into user(dutyno,`loginname`,`password`,`username`)

values (7,'zpchen1','zpchen1','zpchen1_自定義流程許可權1');

insert  into user(dutyno,`loginname`,`password`,`username`)

values (8,'zpchen2','zpchen1','zpchen2_自定義流程許可權2');

insert  into user(dutyno,`loginname`,`password`,`username`)

values (9,'zpchen3','zpchen3','zpchen3_自定義流程許可權3');

insert  into user(dutyno,`loginname`,`password`,`username`)

values (10,'zpchen4','zpchen4','zpchen4_自定義流程許可權4');

insert  into user(dutyno,`loginname`,`password`,`username`)

values (11,'zpchen5','zpchen15,'zpchen5_自定義流程許可權5');

insert  into user(dutyno,`loginname`,`password`,`username`)

values (12,'zpchen6','zpchen6','zpchen6_自定義流程許可權6');

(注意,如果直接copy上面的mysql語句,需要修改下藍色部分標記的dutyno,與你自己機子上的值對應起來,上面為我自己機子上資料的值)

ok,資料庫要做的變化就是這些了!

接著就是自定義流程定義檔案了.借助jbpm的eclipse外掛程式輕鬆實現之。

定義好的流程定義檔案如下:

<?xml version="1.0" encoding="utf-8"?>

成">

class="c20.jbpm.action.audityesactionhandler">

class="c20.jbpm.action.audityesactionhandler">

class="c20.jbpm.action.audityesactionhandler">

class="c20.jbpm.action.audityesactionhandler">

class="c20.jbpm.action.audityesactionhandler">

class="c20.jbpm.action.auditfinishyesactionhandler">

class="c20.jbpm.action.auditfinishnoactionhandler">

從流程定義的檔案中可以看出,流程的定義相當的靈活。

那麼,系統是怎麼將乙個文章的審批過程按照這個流程定義來執行了?

本文開頭就指出了,article表中定義了auditstate欄位來表示文章當前由何許可權的人員

來審批,當流程在運作當中,利用jbpm的actionhandler控制代碼來動態的改變文章的

auditstate狀態。然後當oa系統的使用者(這裡應該是具有文章審批等操作許可權的使用者,

而非guest,或manager)登入系統後,判斷該使用者的許可權,如果該使用者的許可權正好和

article表中auditstate相同時候,就將這些許可權級別的文章展現給該登入使用者審批。這

樣就達到了每篇文章的級級審批的過程了。

不過到這裡,你登入管理員後可以發布這個自定義流程,guest使用者也可以發布文章了,

但是當你以自己定義的使用者zpchen1,zpchen2。。。。登入後頁面會顯示不了審批文章

的選單,

你可以檢視下menu.jsp的**就會發現問題所在了,

找到如下**:

<%

}//如果具有管理員許可權

if(usersession != null && usersession.getdutyvalue() != null &&

usersession.getdutytype().equals("審批員"))

//如果具有管理員許可權

if(usersession != null && usersession.getdutyvalue() != null &&

(usersession.getdutytype().equals("審批員")||usersession.getdutytype

().contains("自定義流程許可權"))){

%> 

ok,到這裡應用就完成了。

over!

JBPM工作流 一

好了,吐槽了一番覺得心情頓時開朗了,那麼,接下來就進入正題把 jbpm,學技術首先知道這個技術是做什麼用的,否則學起來你就會沒頭沒腦了.這裡,個人的解釋不是很全面,大家可以在網上搜尋一下.知道個大概意思就行了 那麼,如何使用jbpm進行開發呢?首先,匯入相關的jbpm的jar包檔案,如果不知道匯入那...

近日專案整合了JBPM工作流引擎

03年的時候,由於專案需要,曾經整合了乙個開源的工作流引擎,那時候用的是ofbiz.ofbiz是乙個大的框架,我們從中抽出了其workflow部分,加了很多改動,最後整合到了當時的專案中.感覺工作量還是挺大的.經過充分思考,這次打算在專案中再次應用workflow engine,這次採用的是jbos...

JBPM工作流簡單步驟

啟動流程 獲取最新的流程定義 jbpmcontext.getcurrentjbpmcontext getgraphsession findlatestprocessdefinitions 返回list 獲取指定流程定義 processdefinition processdefinition grap...