完整工作流JBPM項目實戰全過程教程1

完整工作流JBPM項目實戰全過程教程1---準備工作

      偶然機會,認識了工作流系統,並且在www.open-open.com(相當不錯的開源項目站點,極力推薦!)上了解了些相當出色的工作流系統,不過呼聲最高的應該屬JBoss 的JBPM工作流組件了。

    正好有個項目需要用到工作流機制,遂學習了下JBPM,感受了下JBPM帶來的的便捷體驗。現在我就把我的學習經歷記錄下來。和大家共同分享,也希望對那些剛研究JBPM的同仁們有所幫助。

     ok,那就開始吧!

一。對於沒有接觸過JBPM的,可以先了解下JBPM應用場合,和JBPM的相關概念。我想如下這些東西將對你的JBPM學習很有幫助。

   1。JBPM開發指南.pdf---------http://dl2.csdn.net/fd.php?i=12492886032537&s=020d83ba442aba86919657b97e51a699----對JBPM中的配置進行了比較詳細的闡述。

   2。還有就是大師級人物--陳剛 的教程http://www.blogjava.net/chengang/archive/2006/07/13/57986.html

,不過,這個教程只是簡單的介紹了下JBPM的使用。對於初次接觸JBPM的學習者來說,是個很好的選擇。它將讓你對JBPM有個較清晰的認識。

   3。還有就是傳智播客的一套關於JBPM的視頻,verycd上就可以search到。這裏就不給地址了。自己動手找找吧。

   好了,如果你對JBPM有些認識了,那就開始來做個Struts+Hibernate+Spring+JBPM的文章審批系統吧。

 

首先介紹下該系統具體做些什麼吧!

          用戶在該系統中發表文章,然後請求發佈,該文章需要經過層層審批,再確定是否能發佈。就像一個出版社中,當要出版一篇文章,需要經過 一級審批,二級審批,三級審批.......最終確定發表該文章。需要說明的是,爲了體現JBPM對流程的適配的特性,我們做的系統會定義4個不同的流程來展示JBPM的這一特性。對於不同的流程,系統會自動按照不同的流程定義文件來執行。

         準備工作:

  該系統的數據庫環境爲MySQL,如果要在其他數據庫上完成也很簡單,只需要在目標數據庫建立起JBPM的表結構和業務表就可以,這裏,就可以參考前面陳剛老師的教程了。就不再贅述了(如果需要可到附件中獲得)。業務表建表語句如下:

/*==============================================================*/
/* Table: Article                                               */
/*==============================================================*/
create table Article
(
   ArticleNo            int AUTO_INCREMENT not null comment '文章號',
   UserNo               int comment '用戶號',
   TypeNo               int comment '文章類型號',
   ArticleName          varchar(128) comment '文章名稱',
   Content              text comment '文章內容',
   PiId                 bigint comment '對應流程實例號',
   AuditState           varchar(64) comment '審批狀態',
   AuditComment         varchar(255) comment '審批說明',
   State                int comment '文章狀態',
   primary key (ArticleNo)
);

alter table Article comment '文章表';

/*==============================================================*/
/* Table: ArticleType                                           */
/*==============================================================*/
create table ArticleType
(
   TypeNo               int AUTO_INCREMENT not null comment '文章類型號',
   PdName               varchar(255) comment '流程名稱',
   TypeName             varchar(40) comment '類型名稱',
   primary key (TypeNo)
);

alter table ArticleType comment '文章類型表';

/*==============================================================*/
/* Table: User                                                  */
/*==============================================================*/
create table User
(
   UserNo               int AUTO_INCREMENT not null comment '用戶號',
   DutyNo               int comment '職責號',
   LoginName            varchar(50) not null comment '賬號',
   Password             varchar(32) comment '密碼',
   UserName             varchar(50) comment '姓名',
   primary key (UserNo)
);

alter table User comment '用戶表';

/*==============================================================*/
/* Table: UserDuty                                              */
/*==============================================================*/
create table UserDuty
(
   DutyNo               int AUTO_INCREMENT not null comment '職責號',
   Name                 varchar(255) comment '名稱',
   DutyType             varchar(20) comment '職責類型',
   DutyValue            varchar(64) comment '職責值',
   primary key (DutyNo)
);

alter table UserDuty comment '用戶職責表';

alter table Article add constraint FK_Relationship_1 foreign key (TypeNo)
      references ArticleType (TypeNo) on delete restrict on update restrict;

alter table Article add constraint FK_Relationship_2 foreign key (UserNo)
      references User (UserNo) on delete restrict on update restrict;

alter table User add constraint FK_Relationship_3 foreign key (DutyNo)
      references UserDuty (DutyNo) on delete restrict on update restrict;

insert  into `userduty`(`DutyNo`,`Name`,`DutyType`,`DutyValue`) 
   values (1,'管理員','管理員','管理員');
insert  into `userduty`(`DutyNo`,`Name`,`DutyType`,`DutyValue`) 
   values (2,'普通用戶','普通用戶','普通用戶');
insert  into `userduty`(`DutyNo`,`Name`,`DutyType`,`DutyValue`) 
   values (3,'一級審批員','審批員','一級審批');
insert  into `userduty`(`DutyNo`,`Name`,`DutyType`,`DutyValue`) 
   values (4,'二級審批員','審批員','二級審批');
insert  into `userduty`(`DutyNo`,`Name`,`DutyType`,`DutyValue`) 
   values (5,'三級審批員','審批員','三級審批');
insert  into `userduty`(`DutyNo`,`Name`,`DutyType`,`DutyValue`) 
   values (6,'四級審批員','審批員','四級審批');
insert  into `user`(`UserNo`,`DutyNo`,`LoginName`,`Password`,`UserName`) 
   values (1,1,'manager','manager','管理員');
insert  into `user`(`UserNo`,`DutyNo`,`LoginName`,`Password`,`UserName`) 
   values (2,2,'guest','guest','普通用戶');
insert  into `user`(`UserNo`,`DutyNo`,`LoginName`,`Password`,`UserName`) 
   values (3,3,'one','one','一級審批員');
insert  into `user`(`UserNo`,`DutyNo`,`LoginName`,`Password`,`UserName`) 
   values (4,4,'two','two','二級審批員');
insert  into `user`(`UserNo`,`DutyNo`,`LoginName`,`Password`,`UserName`) 
   values (5,5,'three','three','三級審批員');
insert  into `user`(`UserNo`,`DutyNo`,`LoginName`,`Password`,`UserName`) 
   values (6,6,'four','four','四級審批員');

 

OK,今天到此爲止,需要休息了,明天續。。。 轉載至http://blog.csdn.net/myjava_024

發佈了16 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章