完整工作流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...